|
|
|||
File indexing completed on 2026-08-06 09:24:09
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEPP2SingleTop_H 0003 #define HERWIG_MEPP2SingleTop_H 0004 // 0005 // This is the declaration of the MEPP2SingleTop class. 0006 // 0007 0008 #include "Herwig/MatrixElement/HwMEBase.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0010 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0011 0012 namespace Herwig { 0013 0014 using namespace ThePEG; 0015 0016 /** 0017 * The MEPP2SingleTop class implements the matrix element for the 0018 * production of a single top quark. 0019 * 0020 * @see \ref MEPP2SingleTopInterfaces "The interfaces" 0021 * defined for MEPP2SingleTop. 0022 */ 0023 class MEPP2SingleTop: public HwMEBase { 0024 0025 public: 0026 0027 /** 0028 * The default constructor. 0029 */ 0030 MEPP2SingleTop(); 0031 0032 /** @name Virtual functions required by the MEBase class. */ 0033 //@{ 0034 /** 0035 * Return the order in \f$\alpha_S\f$ in which this matrix 0036 * element is given. 0037 */ 0038 virtual unsigned int orderInAlphaS() const; 0039 0040 /** 0041 * Return the order in \f$\alpha_{EW}\f$ in which this matrix 0042 * element is given. 0043 */ 0044 virtual unsigned int orderInAlphaEW() const; 0045 0046 /** 0047 * The matrix element for the kinematical configuration 0048 * previously provided by the last call to setKinematics(), suitably 0049 * scaled by sHat() to give a dimension-less number. 0050 * @return the matrix element scaled with sHat() to give a 0051 * dimensionless number. 0052 */ 0053 virtual double me2() const; 0054 0055 /** 0056 * Return the scale associated with the last set phase space point. 0057 */ 0058 virtual Energy2 scale() const; 0059 0060 /** 0061 * Add all possible diagrams with the add() function. 0062 */ 0063 virtual void getDiagrams() const; 0064 0065 /** 0066 * Get diagram selector. With the information previously supplied with the 0067 * setKinematics method, a derived class may optionally 0068 * override this method to weight the given diagrams with their 0069 * (although certainly not physical) relative probabilities. 0070 * @param dv the diagrams to be weighted. 0071 * @return a Selector relating the given diagrams to their weights. 0072 */ 0073 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 0074 0075 /** 0076 * Return a Selector with possible colour geometries for the selected 0077 * diagram weighted by their relative probabilities. 0078 * @param diag the diagram chosen. 0079 * @return the possible colour geometries weighted by their 0080 * relative probabilities. 0081 */ 0082 virtual Selector<const ColourLines *> 0083 colourGeometries(tcDiagPtr diag) const; 0084 0085 /** 0086 * Construct the vertex of spin correlations. 0087 */ 0088 virtual void constructVertex(tSubProPtr); 0089 //@} 0090 0091 public: 0092 0093 /** @name Functions used by the persistent I/O system. */ 0094 //@{ 0095 /** 0096 * Function used to write out object persistently. 0097 * @param os the persistent output stream written to. 0098 */ 0099 void persistentOutput(PersistentOStream & os) const; 0100 0101 /** 0102 * Function used to read in object persistently. 0103 * @param is the persistent input stream read from. 0104 * @param version the version number of the object when written. 0105 */ 0106 void persistentInput(PersistentIStream & is, int version); 0107 //@} 0108 0109 /** 0110 * The standard Init function used to initialize the interfaces. 0111 * Called exactly once for each class by the class description system 0112 * before the main function starts or 0113 * when this class is dynamically loaded. 0114 */ 0115 static void Init(); 0116 0117 protected: 0118 0119 /** 0120 * Matrix Elements ofr the different processes 0121 */ 0122 //@{ 0123 /** 0124 * Matrix element for \f$q\bar{q}\to W \to t\bar{f}\f$. 0125 * @param fin Spinors for incoming quark 0126 * @param ain Spinors for incoming antiquark 0127 * @param fout Spinors for incoming quark 0128 * @param aout Spinors for incoming antiquark 0129 * @param me Whether or not to calculate the matrix element for spin correlations 0130 */ 0131 double sChannelME(vector<SpinorWaveFunction> & fin , 0132 vector<SpinorBarWaveFunction> & ain , 0133 vector<SpinorBarWaveFunction> & fout, 0134 vector<SpinorWaveFunction> & aout, 0135 bool me) const; 0136 0137 /** 0138 * Matrix element for \f$qq\to t q\f$. 0139 * @param f1 Spinors for incoming quark 0140 * @param a1 Spinors for incoming antiquark 0141 * @param f2 Spinors for incoming quark 0142 * @param a2 Spinors for incoming antiquark 0143 * @param me Whether or not to calculate the matrix element for spin correlations 0144 */ 0145 double tChannelME(vector<SpinorWaveFunction> & f1 , 0146 vector<SpinorBarWaveFunction> & a1 , 0147 vector<SpinorWaveFunction> & f2, 0148 vector<SpinorBarWaveFunction> & a2, 0149 bool me) const; 0150 0151 /** 0152 * Matrix element for \f$qg\to t W\f$. 0153 * @param fin Spinors for incoming quark 0154 * @param gin Polarization vectors for the incoming gluon 0155 * @param fout Spinors for outgoing quark 0156 * @param Wout Polarization vectors for the outgoing W 0157 * @param me Whether or not to calculate the matrix element for spin correlations 0158 */ 0159 double tWME(vector<SpinorWaveFunction> & fin, 0160 vector<VectorWaveFunction> & gin, 0161 vector<SpinorBarWaveFunction> & fout, 0162 vector<VectorWaveFunction> & Wout, 0163 bool me) const; 0164 //@} 0165 0166 protected: 0167 0168 /** @name Clone Methods. */ 0169 //@{ 0170 /** 0171 * Make a simple clone of this object. 0172 * @return a pointer to the new object. 0173 */ 0174 virtual IBPtr clone() const; 0175 0176 /** Make a clone of this object, possibly modifying the cloned object 0177 * to make it sane. 0178 * @return a pointer to the new object. 0179 */ 0180 virtual IBPtr fullclone() const; 0181 //@} 0182 0183 protected: 0184 0185 /** @name Standard Interfaced functions. */ 0186 //@{ 0187 /** 0188 * Initialize this object after the setup phase before saving an 0189 * EventGenerator to disk. 0190 * @throws InitException if object could not be initialized properly. 0191 */ 0192 virtual void doinit(); 0193 //@} 0194 0195 private: 0196 0197 /** 0198 * The assignment operator is private and must never be called. 0199 * In fact, it should not even be implemented. 0200 */ 0201 MEPP2SingleTop & operator=(const MEPP2SingleTop &) = delete; 0202 0203 private: 0204 0205 /** 0206 * Vertices 0207 */ 0208 //@{ 0209 /** 0210 * FFWVertex 0211 */ 0212 AbstractFFVVertexPtr FFWvertex_; 0213 0214 /** 0215 * FFGVertex 0216 */ 0217 AbstractFFVVertexPtr FFGvertex_; 0218 //@} 0219 0220 /** 0221 * Which processes to include 0222 */ 0223 unsigned int process_; 0224 0225 /** 0226 * Allowed flavours of the incoming quarks 0227 */ 0228 int maxflavour_; 0229 0230 /** 0231 * Treatment of the top quark mass 0232 */ 0233 int topOption_; 0234 0235 /** 0236 * Treatment of the W mass 0237 */ 0238 int wOption_; 0239 0240 /** 0241 * The matrix element 0242 */ 0243 mutable ProductionMatrixElement me_; 0244 0245 }; 0246 0247 } 0248 0249 #endif /* HERWIG_MEPP2SingleTop_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|