Page MenuHomeHEPForge

No OneTemporary

diff --git a/MatrixElement/BlobMEBase.cc b/MatrixElement/BlobMEBase.cc
new file mode 100644
--- /dev/null
+++ b/MatrixElement/BlobMEBase.cc
@@ -0,0 +1,79 @@
+// -*- C++ -*-
+//
+// This is the implementation of the non-inlined, non-templated member
+// functions of the BlobMEBase class.
+//
+
+#include "BlobMEBase.h"
+#include "ThePEG/Interface/ClassDocumentation.h"
+#include "ThePEG/EventRecord/Particle.h"
+#include "ThePEG/Repository/UseRandom.h"
+#include "ThePEG/Repository/EventGenerator.h"
+#include "ThePEG/Utilities/DescribeClass.h"
+
+using namespace ThePEG;
+
+BlobMEBase::BlobMEBase() {}
+
+BlobMEBase::~BlobMEBase() {}
+
+
+#include "ThePEG/PDT/EnumParticles.h"
+#include "ThePEG/MatrixElement/BlobDiagram.h"
+
+void BlobMEBase::getDiagrams() const {
+ map<tcPDPair,tcPDVector> proc = processes();
+ int id = 1;
+ for ( auto it = proc.begin(); it != proc.end(); ++it, ++id ) {
+ BlobDiagram diag(id,it->first.first,it->first.second);
+ for ( auto pit = it->second.begin(); pit != it->second.end(); ++pit )
+ diag.operator,(*pit);
+ add(new_ptr(diag));
+ }
+}
+
+Selector<MEBase::DiagramIndex>
+BlobMEBase::diagrams(const DiagramVector & diags) const {
+ assert(diags.size()==1);
+ Selector<DiagramIndex> sel;
+ sel.insert(1.0, 0);
+ return sel;
+}
+
+Selector<const ColourLines *>
+BlobMEBase::colourGeometries(tcDiagPtr) const {
+ map<size_t,size_t> connections =
+ colourConnections();
+ ostringstream clines;
+ for ( auto it = connections.begin(); it != connections.end(); ++it ) {
+ int cid = it->first+1; int acid = -(it->second+1);
+ if ( it->first < 2 ) cid = -cid;
+ if ( it->second < 2 ) acid = -acid;
+ clines << cid << " " << acid;
+ auto nit = it; ++nit;
+ if ( nit != connections.end() )
+ clines << ",";
+ }
+ theColourLines.reset(clines.str());
+ Selector<const ColourLines *> sel;
+ sel.insert(1.0,&theColourLines);
+ return sel;
+}
+
+CrossSection BlobMEBase::dSigHatDR() const {
+ if ( !lastXCombPtr()->willPassCuts() )
+ return ZERO;
+ return
+ (sqr(hbarc)/(2.*lastSHat())) *
+ jacobian() * me2();
+}
+
+AbstractNoPIOClassDescription<BlobMEBase> BlobMEBase::initBlobMEBase;
+
+void BlobMEBase::Init() {
+
+ static ClassDocumentation<BlobMEBase> documentation
+ ("BlobMEBase is the base class for matrix elements producing blobs.");
+
+}
+
diff --git a/MatrixElement/BlobMEBase.h b/MatrixElement/BlobMEBase.h
new file mode 100644
--- /dev/null
+++ b/MatrixElement/BlobMEBase.h
@@ -0,0 +1,153 @@
+// -*- C++ -*-
+#ifndef ThePEG_BlobMEBase_H
+#define ThePEG_BlobMEBase_H
+//
+// This is the declaration of the BlobMEBase class.
+//
+
+#include "ThePEG/MatrixElement/MEBase.h"
+
+namespace ThePEG {
+
+/**
+ * Here is the documentation of the BlobMEBase class.
+ *
+ * @see \ref BlobMEBaseInterfaces "The interfaces"
+ * defined for BlobMEBase.
+ */
+class BlobMEBase: public MEBase {
+
+public:
+
+ /** @name Standard constructors and destructors. */
+ //@{
+ /**
+ * The default constructor.
+ */
+ BlobMEBase();
+
+ /**
+ * The destructor.
+ */
+ virtual ~BlobMEBase();
+ //@}
+
+public:
+
+ /** @name Virtual functions required by the MEBase class. */
+ //@{
+ /**
+ * Add all possible diagrams with the add() function.
+ */
+ virtual void getDiagrams() const;
+
+ /**
+ * Get diagram selector. With the information previously supplied with the
+ * setKinematics method, a derived class may optionally
+ * override this method to weight the given diagrams with their
+ * (although certainly not physical) relative probabilities.
+ * @param dv the diagrams to be weighted.
+ * @return a Selector relating the given diagrams to their weights.
+ */
+ virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const;
+
+ /**
+ * Return a Selector with possible colour geometries for the selected
+ * diagram weighted by their relative probabilities.
+ * @param diag the diagram chosen.
+ * @return the possible colour geometries weighted by their
+ * relative probabilities.
+ */
+ virtual Selector<const ColourLines *>
+ colourGeometries(tcDiagPtr diag) const;
+
+ /**
+ * Return the matrix element squared differential in the variables
+ * given by the last call to generateKinematics().
+ */
+ virtual CrossSection dSigHatDR() const;
+ //@}
+
+ /**
+ * Return the possible processes this matrix element will be able to handle,
+ * as a map incoming to outgoing; it is assumed that the number of outgoing
+ * partons does not vary.
+ */
+ virtual map<tcPDPair,tcPDVector> processes() const = 0;
+
+ /**
+ * Return the colour connections for the process as pairs of id's of
+ * external legs connecting colour to anticolour; id's of incoming partons
+ * (0 and 1) have the meaning of colour and anti-colour eversed (crossed to
+ * the final state).
+ */
+ virtual map<size_t,size_t> colourConnections() const = 0;
+
+public:
+
+ /**
+ * Describe an abstract base class without persistent data.
+ */
+ static AbstractNoPIOClassDescription<BlobMEBase> initBlobMEBase;
+
+ /**
+ * The standard Init function used to initialize the interfaces.
+ * Called exactly once for each class by the class description system
+ * before the main function starts or
+ * when this class is dynamically loaded.
+ */
+ static void Init();
+
+
+// If needed, insert declarations of virtual function defined in the
+// InterfacedBase class here (using ThePEG-interfaced-decl in Emacs).
+
+
+private:
+
+ /**
+ * The assignment operator is private and must never be called.
+ * In fact, it should not even be implemented.
+ */
+ BlobMEBase & operator=(const BlobMEBase &);
+
+ /**
+ * The colour lines object used as a proxy to connect colours in
+ * BlobDiagram::construct
+ */
+ mutable ColourLines theColourLines;
+
+};
+
+}
+
+namespace ThePEG {
+
+/** @cond TRAITSPECIALIZATIONS */
+
+/**
+ * This template specialization informs ThePEG about the base class of
+ * BlobMEBase.
+ */
+template <>
+struct BaseClassTrait<BlobMEBase,1>: public ClassTraitsType {
+ /** Typedef of the base class of BlobMEBase. */
+ typedef MEBase NthBase;
+};
+
+/**
+ * This template specialization informs ThePEG about the name of the
+ * BlobMEBase class.
+ */
+template <>
+struct ClassTraits<BlobMEBase>: public ClassTraitsBase<BlobMEBase> {
+ /** Return the class name. */
+ static string className() { return "ThePEG::BlobMEBase"; }
+};
+
+/** @endcond */
+
+}
+
+
+#endif /* ThePEG_BlobMEBase_H */
diff --git a/MatrixElement/Makefile.am b/MatrixElement/Makefile.am
--- a/MatrixElement/Makefile.am
+++ b/MatrixElement/Makefile.am
@@ -1,48 +1,48 @@
mySOURCES = Amplitude.cc ColourLines.cc DiagramBase.cc Tree2toNDiagram.cc BlobDiagram.cc \
- MEBase.cc MEGroup.cc ReweightBase.cc ME2to2Base.cc ME2to2QCD.cc
+ MEBase.cc BlobMEBase.cc MEGroup.cc ReweightBase.cc ME2to2Base.cc ME2to2QCD.cc
myQCDSOURCES =
DOCFILES = Amplitude.h ColourLines.h DiagramBase.h Tree2toNDiagram.h BlobDiagram.h MEBase.h \
- MEGroup.h ReweightBase.h ME2to2Base.h ME2to2QCD.h
+ BlobMEBase.h MEGroup.h ReweightBase.h ME2to2Base.h ME2to2QCD.h
INCLUDEFILES = $(DOCFILES) ColourLines.xh \
DiagramBase.xh DiagramBase.fh \
Tree2toNDiagram.xh MEBase.fh MEGroup.fh
noinst_LTLIBRARIES = libThePEGME.la
pkglib_LTLIBRARIES = MEQCD.la MEee2gZ2qq.la MENCDIS.la \
ReweightConstant.la ReweightMinPT.la
libThePEGME_la_SOURCES = $(mySOURCES) $(INCLUDEFILES)
# Version info should be updated if any interface or persistent I/O
# function is changed
MEQCD_la_LDFLAGS = $(AM_LDFLAGS) -module $(LIBTOOLVERSIONINFO)
MEQCD_la_SOURCES = MEGG2GG.cc MEQG2QG.cc MEQQ2QQ3.cc MEQq2Qq4.cc MEGG2QQ.cc \
MEQQ2GG.cc MEQQ2qq2.cc MEqq2qq1.cc MEGG2GG.h MEQG2QG.h \
MEQQ2QQ3.h MEQq2Qq4.h MEGG2QQ.h MEQQ2GG.h MEQQ2qq2.h \
MEqq2qq1.h
# Version info should be updated if any interface or persistent I/O
# function is changed
MEee2gZ2qq_la_LDFLAGS = $(AM_LDFLAGS) -module $(LIBTOOLVERSIONINFO)
MEee2gZ2qq_la_SOURCES = MEee2gZ2qq.cc MEee2gZ2qq.h
# Version info should be updated if any interface or persistent I/O
# function is changed
ReweightConstant_la_LDFLAGS = $(AM_LDFLAGS) -module $(LIBTOOLVERSIONINFO)
ReweightConstant_la_SOURCES = ReweightConstant.cc ReweightConstant.h
# Version info should be updated if any interface or persistent I/O
# function is changed
ReweightMinPT_la_LDFLAGS = $(AM_LDFLAGS) -module $(LIBTOOLVERSIONINFO)
ReweightMinPT_la_SOURCES = ReweightMinPT.cc ReweightMinPT.h
# Version info should be updated if any interface or persistent I/O
# function is changed
MENCDIS_la_LDFLAGS = $(AM_LDFLAGS) -module $(LIBTOOLVERSIONINFO)
MENCDIS_la_SOURCES = MENCDIS.cc MENCDIS.h
include $(top_srcdir)/Config/Makefile.aminclude

File Metadata

Mime Type
text/x-diff
Expires
Wed, May 14, 10:26 AM (1 d, 17 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5111124
Default Alt Text
(8 KB)

Event Timeline