|
|
|||
File indexing completed on 2026-08-06 09:38:27
0001 // -*- C++ -*- 0002 #ifndef ThePEG_BlobMEBase_H 0003 #define ThePEG_BlobMEBase_H 0004 // 0005 // This is the declaration of the BlobMEBase class. 0006 // 0007 0008 #include "ThePEG/MatrixElement/MEBase.h" 0009 0010 namespace ThePEG { 0011 0012 /** 0013 * Here is the documentation of the BlobMEBase class. 0014 * 0015 * @see \ref BlobMEBaseInterfaces "The interfaces" 0016 * defined for BlobMEBase. 0017 */ 0018 class BlobMEBase: public MEBase { 0019 0020 public: 0021 0022 /** @name Standard constructors and destructors. */ 0023 //@{ 0024 /** 0025 * The default constructor. 0026 */ 0027 BlobMEBase(); 0028 0029 /** 0030 * The destructor. 0031 */ 0032 virtual ~BlobMEBase(); 0033 //@} 0034 0035 public: 0036 0037 /** 0038 * Helper struct to represent colour connections. 0039 */ 0040 struct ColourConnection { 0041 0042 /** 0043 * The members of the colour connection 0044 */ 0045 vector<int> members; 0046 0047 /** 0048 * Add a leg's colour to the connection 0049 */ 0050 void addColour(int leg) { 0051 members.push_back(leg+1); 0052 } 0053 0054 /** 0055 * Add a leg's anti-colour to the connection 0056 */ 0057 void addAntiColour(int leg) { 0058 members.push_back(-leg-1); 0059 } 0060 0061 /** 0062 * Write out the connection to the colour lines string 0063 */ 0064 string write(size_t& sourceCount, bool sink) const; 0065 0066 }; 0067 0068 /** @name Virtual functions required by the MEBase class. */ 0069 //@{ 0070 /** 0071 * Add all possible diagrams with the add() function. 0072 */ 0073 virtual void getDiagrams() const; 0074 0075 /** 0076 * Get diagram selector. With the information previously supplied with the 0077 * setKinematics method, a derived class may optionally 0078 * override this method to weight the given diagrams with their 0079 * (although certainly not physical) relative probabilities. 0080 * @param dv the diagrams to be weighted. 0081 * @return a Selector relating the given diagrams to their weights. 0082 */ 0083 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 0084 0085 /** 0086 * Return a Selector with possible colour geometries for the selected 0087 * diagram weighted by their relative probabilities. 0088 * @param diag the diagram chosen. 0089 * @return the possible colour geometries weighted by their 0090 * relative probabilities. 0091 */ 0092 virtual Selector<const ColourLines *> 0093 colourGeometries(tcDiagPtr diag) const; 0094 0095 /** 0096 * Return the matrix element squared differential in the variables 0097 * given by the last call to generateKinematics(). 0098 */ 0099 virtual CrossSection dSigHatDR() const; 0100 //@} 0101 0102 /** 0103 * Return the possible processes this matrix element will be able to handle, 0104 * as a map incoming to outgoing; it is assumed that the number of outgoing 0105 * partons does not vary. 0106 */ 0107 virtual multimap<tcPDPair,tcPDVector> processes() const = 0; 0108 0109 /** 0110 * Return the colour connections for the process. 0111 */ 0112 virtual list<ColourConnection> colourConnections() const = 0; 0113 0114 public: 0115 0116 /** 0117 * Describe an abstract base class without persistent data. 0118 */ 0119 static AbstractNoPIOClassDescription<BlobMEBase> initBlobMEBase; 0120 0121 /** 0122 * The standard Init function used to initialize the interfaces. 0123 * Called exactly once for each class by the class description system 0124 * before the main function starts or 0125 * when this class is dynamically loaded. 0126 */ 0127 static void Init(); 0128 0129 0130 // If needed, insert declarations of virtual function defined in the 0131 // InterfacedBase class here (using ThePEG-interfaced-decl in Emacs). 0132 0133 0134 private: 0135 0136 /** 0137 * The assignment operator is private and must never be called. 0138 * In fact, it should not even be implemented. 0139 */ 0140 BlobMEBase & operator=(const BlobMEBase &) = delete; 0141 0142 /** 0143 * The colour lines object used as a proxy to connect colours in 0144 * BlobDiagram::construct 0145 */ 0146 mutable ColourLines theColourLines; 0147 0148 }; 0149 0150 } 0151 0152 namespace ThePEG { 0153 0154 /** @cond TRAITSPECIALIZATIONS */ 0155 0156 /** 0157 * This template specialization informs ThePEG about the base class of 0158 * BlobMEBase. 0159 */ 0160 template <> 0161 struct BaseClassTrait<BlobMEBase,1>: public ClassTraitsType { 0162 /** Typedef of the base class of BlobMEBase. */ 0163 typedef MEBase NthBase; 0164 }; 0165 0166 /** 0167 * This template specialization informs ThePEG about the name of the 0168 * BlobMEBase class. 0169 */ 0170 template <> 0171 struct ClassTraits<BlobMEBase>: public ClassTraitsBase<BlobMEBase> { 0172 /** Return the class name. */ 0173 static string className() { return "ThePEG::BlobMEBase"; } 0174 }; 0175 0176 /** @endcond */ 0177 0178 } 0179 0180 0181 #endif /* ThePEG_BlobMEBase_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|