|
|
|||
File indexing completed on 2026-08-06 09:24:16
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEfftoVH_H 0003 #define HERWIG_MEfftoVH_H 0004 // 0005 // This is the declaration of the MEfftoVH class. 0006 // 0007 0008 #include "DrellYanBase.h" 0009 #include "ThePEG/Helicity/Vertex/AbstractFFVVertex.h" 0010 #include "ThePEG/Helicity/Vertex/AbstractVVSVertex.h" 0011 #include "Herwig/MatrixElement/ProductionMatrixElement.h" 0012 #include "Herwig/PDT/GenericMassGenerator.h" 0013 0014 namespace Herwig { 0015 using namespace ThePEG; 0016 0017 /** 0018 * The MEfftoVH class is the base class for \f$f\bar{f}\to VH\f$ processes. 0019 * This base class handles the phase-space integration while 0020 * the inheriting classes implement the matrix element 0021 * 0022 * @see \ref MEfftoVHInterfaces "The interfaces" 0023 * defined for MEfftoVH. 0024 */ 0025 class MEfftoVH: public DrellYanBase { 0026 0027 public: 0028 0029 /** 0030 * The default constructor. 0031 */ 0032 MEfftoVH() : _shapeopt(2), _maxflavour(5), _mh(), _wh() {} 0033 0034 /** @name Virtual functions required by the MEBase class. */ 0035 //@{ 0036 /** 0037 * Return the order in \f$\alpha_S\f$ in which this matrix 0038 * element is given. 0039 */ 0040 virtual unsigned int orderInAlphaS() const; 0041 0042 /** 0043 * Return the order in \f$\alpha_{EW}\f$ in which this matrix 0044 * element is given. 0045 */ 0046 virtual unsigned int orderInAlphaEW() const; 0047 0048 /** 0049 * The matrix element for the kinematical configuration 0050 * previously provided by the last call to setKinematics(), suitably 0051 * scaled by sHat() to give a dimension-less number. 0052 * @return the matrix element scaled with sHat() to give a 0053 * dimensionless number. 0054 */ 0055 virtual double me2() const; 0056 0057 /** 0058 * Return the scale associated with the last set phase space point. 0059 */ 0060 virtual Energy2 scale() const; 0061 0062 /** 0063 * Set the typed and momenta of the incoming and outgoing partons to 0064 * be used in subsequent calls to me() and colourGeometries() 0065 * according to the associated XComb object. If the function is 0066 * overridden in a sub class the new function must call the base 0067 * class one first. 0068 */ 0069 virtual void setKinematics(); 0070 0071 /** 0072 * The number of internal degrees of freedom used in the matrix 0073 * element. 0074 */ 0075 virtual int nDim() const; 0076 0077 /** 0078 * Generate internal degrees of freedom given nDim() uniform 0079 * random numbers in the interval \f$ ]0,1[ \f$. To help the phase space 0080 * generator, the dSigHatDR should be a smooth function of these 0081 * numbers, although this is not strictly necessary. 0082 * @param r a pointer to the first of nDim() consecutive random numbers. 0083 * @return true if the generation succeeded, otherwise false. 0084 */ 0085 virtual bool generateKinematics(const double * r); 0086 0087 /** 0088 * Return the matrix element squared differential in the variables 0089 * given by the last call to generateKinematics(). 0090 */ 0091 virtual CrossSection dSigHatDR() const; 0092 0093 /** 0094 * Get diagram selector. With the information previously supplied with the 0095 * setKinematics method, a derived class may optionally 0096 * override this method to weight the given diagrams with their 0097 * (although certainly not physical) relative probabilities. 0098 * @param dv the diagrams to be weighted. 0099 * @return a Selector relating the given diagrams to their weights. 0100 */ 0101 virtual Selector<DiagramIndex> diagrams(const DiagramVector & dv) const; 0102 0103 /** 0104 * Return a Selector with possible colour geometries for the selected 0105 * diagram weighted by their relative probabilities. 0106 * @param diag the diagram chosen. 0107 * @return the possible colour geometries weighted by their 0108 * relative probabilities. 0109 */ 0110 virtual Selector<const ColourLines *> 0111 colourGeometries(tcDiagPtr diag) const; 0112 0113 /** 0114 * Construct the vertex of spin correlations. 0115 */ 0116 virtual void constructVertex(tSubProPtr); 0117 //@} 0118 0119 0120 public: 0121 0122 /** @name Functions used by the persistent I/O system. */ 0123 //@{ 0124 /** 0125 * Function used to write out object persistently. 0126 * @param os the persistent output stream written to. 0127 */ 0128 void persistentOutput(PersistentOStream & os) const; 0129 0130 /** 0131 * Function used to read in object persistently. 0132 * @param is the persistent input stream read from. 0133 * @param version the version number of the object when written. 0134 */ 0135 void persistentInput(PersistentIStream & is, int version); 0136 //@} 0137 0138 /** 0139 * The standard Init function used to initialize the interfaces. 0140 * Called exactly once for each class by the class description system 0141 * before the main function starts or 0142 * when this class is dynamically loaded. 0143 */ 0144 static void Init(); 0145 0146 protected: 0147 0148 /** 0149 * Matrix element for \f$f\bar{f}\to V h^0\to f'\bar{f'} h^0\f$. 0150 * @param fin Spinors for incoming fermion 0151 * @param ain Spinors for incoming antifermion 0152 * @param fout Spinors for incoming fermion 0153 * @param aout Spinors for incoming antifermion 0154 * @param me Whether or not to calculate the matrix element for spin correlations 0155 */ 0156 double helicityME(vector<SpinorWaveFunction> & fin , 0157 vector<SpinorBarWaveFunction> & ain , 0158 vector<SpinorBarWaveFunction> & fout, 0159 vector<SpinorWaveFunction> & aout, 0160 bool me) const; 0161 0162 /** 0163 * Access to the vector ParticleData objects 0164 */ 0165 //@{ 0166 /** 0167 * Access to the \f$W^+\f$ data 0168 */ 0169 PDPtr WPlus() const { return _wplus; } 0170 0171 /** 0172 * Access to the \f$W^-\f$ data 0173 */ 0174 PDPtr WMinus() const { return _wminus; } 0175 0176 /** 0177 * Access to the \f$Z^0\f$ data 0178 */ 0179 PDPtr Z0() const { return _z0; } 0180 0181 /** 0182 * Access to the higgs data 0183 */ 0184 PDPtr higgs() const { return _higgs; } 0185 0186 /** 0187 * Set the higgs data 0188 */ 0189 void higgs(PDPtr in) {_higgs =in;} 0190 //@} 0191 0192 /** 0193 * Set the pointer to the vector-vector-Higgs vertex 0194 */ 0195 void setWWHVertex(AbstractVVSVertexPtr in) { 0196 _vertexWWH = in; 0197 } 0198 0199 /** 0200 * Set the line shape treatment 0201 */ 0202 void lineShape(unsigned int in) {_shapeopt=in;} 0203 0204 /** 0205 * Maximum flavour of the incoming partons 0206 */ 0207 unsigned int maxFlavour() const {return _maxflavour;} 0208 0209 protected: 0210 0211 /** @name Standard Interfaced functions. */ 0212 //@{ 0213 /** 0214 * Initialize this object after the setup phase before saving an 0215 * EventGenerator to disk. 0216 * @throws InitException if object could not be initialized properly. 0217 */ 0218 virtual void doinit(); 0219 //@} 0220 0221 private: 0222 0223 /** 0224 * The assignment operator is private and must never be called. 0225 * In fact, it should not even be implemented. 0226 */ 0227 MEfftoVH & operator=(const MEfftoVH &) = delete; 0228 0229 private: 0230 0231 /** 0232 * Defines the Higgs resonance shape 0233 */ 0234 unsigned int _shapeopt; 0235 0236 /** 0237 * The allowed flavours of the incoming quarks 0238 */ 0239 unsigned int _maxflavour; 0240 0241 /** 0242 * The intermediate vector bosons 0243 */ 0244 //@{ 0245 /** 0246 * \f$W^+\f$ 0247 */ 0248 PDPtr _wplus; 0249 0250 /** 0251 * \f$W^-\f$ 0252 */ 0253 PDPtr _wminus; 0254 0255 /** 0256 * \f$Z^0\f$ 0257 */ 0258 PDPtr _z0; 0259 0260 /** 0261 * The higgs bosom 0262 */ 0263 PDPtr _higgs; 0264 //@} 0265 0266 /** 0267 * The vertices for the calculation of the matrix element 0268 */ 0269 //@{ 0270 /** 0271 * Vertex for fermion-fermion-W 0272 */ 0273 AbstractFFVVertexPtr _vertexFFW; 0274 0275 /** 0276 * Vertex for fermion-fermion-Z 0277 */ 0278 AbstractFFVVertexPtr _vertexFFZ; 0279 0280 /** 0281 * Vertex for vector-vector-Higgs 0282 */ 0283 AbstractVVSVertexPtr _vertexWWH; 0284 //@} 0285 0286 /** 0287 * On-shell mass for the higgs 0288 */ 0289 Energy _mh; 0290 0291 /** 0292 * On-shell width for the higgs 0293 */ 0294 Energy _wh; 0295 0296 /** 0297 * The mass generator for the Higgs 0298 */ 0299 GenericMassGeneratorPtr _hmass; 0300 0301 /** 0302 * Matrix element for spin correlations 0303 */ 0304 ProductionMatrixElement _me; 0305 }; 0306 0307 } 0308 0309 #endif /* HERWIG_MEfftoVH_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|