Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F11221423
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
8 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
rTHEPEGHG thepeghg
Event Timeline
Log In to Comment