|
|
|||
File indexing completed on 2026-08-06 09:24:16
0001 // -*- C++ -*- 0002 #ifndef HERWIG_MEPP2WHPowheg_H 0003 #define HERWIG_MEPP2WHPowheg_H 0004 // 0005 // This is the declaration of the MEPP2WHPowheg class. 0006 // 0007 0008 #include "Herwig/MatrixElement/Hadron/MEPP2WH.h" 0009 #include "ThePEG/PDF/BeamParticleData.h" 0010 0011 namespace Herwig { 0012 0013 using namespace ThePEG; 0014 0015 /** 0016 * The MEPP2WHPowheg class provides the next-to-leading order 0017 * matrix elements for \f$W^\pm\f$ in assoication with a Higgs boson 0018 * in the PoOWHEG scheme. 0019 * 0020 * @see \ref MEPP2WHPowhegInterfaces "The interfaces" 0021 * defined for MEPP2WHPowheg. 0022 */ 0023 class MEPP2WHPowheg: public MEPP2WH { 0024 0025 public: 0026 0027 /** 0028 * Default constructor 0029 */ 0030 MEPP2WHPowheg(); 0031 0032 /** @name Virtual functions required by the MEBase class. */ 0033 //@{ 0034 /** 0035 * Return the scale associated with the last set phase space point. 0036 */ 0037 virtual Energy2 scale() const; 0038 0039 /** 0040 * The number of internal degreed of freedom used in the matrix 0041 * element. 0042 */ 0043 virtual int nDim() const; 0044 0045 /** 0046 * Generate internal degrees of freedom given 'nDim()' uniform 0047 * random numbers in the interval ]0,1[. To help the phase space 0048 * generator, the 'dSigHatDR()' should be a smooth function of these 0049 * numbers, although this is not strictly necessary. Return 0050 * false if the chosen points failed the kinematical cuts. 0051 */ 0052 virtual bool generateKinematics(const double * r); 0053 0054 /** 0055 * Return the matrix element for the kinematical configuation 0056 * previously provided by the last call to setKinematics(). Uses 0057 * me(). 0058 */ 0059 virtual CrossSection dSigHatDR() const; 0060 //@} 0061 0062 public: 0063 0064 /** @name Functions used by the persistent I/O system. */ 0065 //@{ 0066 /** 0067 * Function used to write out object persistently. 0068 * @param os the persistent output stream written to. 0069 */ 0070 void persistentOutput(PersistentOStream & os) const; 0071 0072 /** 0073 * Function used to read in object persistently. 0074 * @param is the persistent input stream read from. 0075 * @param version the version number of the object when written. 0076 */ 0077 void persistentInput(PersistentIStream & is, int version); 0078 //@} 0079 0080 /** 0081 * The standard Init function used to initialize the interfaces. 0082 * Called exactly once for each class by the class description system 0083 * before the main function starts or 0084 * when this class is dynamically loaded. 0085 */ 0086 static void Init(); 0087 0088 protected: 0089 0090 /** 0091 * Calculate the correction weight with which leading-order 0092 * configurations are re-weighted. 0093 */ 0094 double NLOweight() const; 0095 0096 /** 0097 * Calculate the variable \f$x=M_{B}^2/s\f$ from the integration variables. 0098 */ 0099 double x(double xt, double v) const; 0100 0101 /** 0102 * Calculate the momentum fraction of the first parton. 0103 */ 0104 double x_a(double x, double v) const; 0105 0106 /** 0107 * Calculate the momentum fraction of second parton. 0108 */ 0109 double x_b(double x, double v) const; 0110 0111 /** 0112 * Calculate the minimum of \f$x\f$. 0113 */ 0114 double xbar(double v) const; 0115 0116 /** 0117 * Calculate the ratio of the radiative luminosity funcion to the 0118 * Born luminosity function for the \f$qg\f$ initiated channel. 0119 */ 0120 double Ltilde_qg(double x, double v) const; 0121 0122 /** 0123 * Calculate the ratio of the radiative luminosity funcion to the 0124 * Born luminosity function for the \f$g\bar{q}\f$ initiated channel. 0125 */ 0126 double Ltilde_gq(double x, double v) const; 0127 0128 /** 0129 * Calculate the ratio of the radiative luminosity funcion to the 0130 * Born luminosity function for the \f$q\bar{q}\f$ initiated channel. 0131 */ 0132 double Ltilde_qq(double x, double v) const; 0133 0134 /** 0135 * Calculate the soft-virtual contribution to the NLO weight. 0136 */ 0137 double Vtilde_qq() const; 0138 0139 /** 0140 * Function for calculation of the \f$g\bar{q}\f$ and \f$g\bar{q}\f$ 0141 * initiated real contribution. 0142 */ 0143 double Ccalbar_qg(double x) const; 0144 0145 /** 0146 * Function for calculation of the \f$qg\f$ 0147 * initiated real contribution. 0148 */ 0149 double Fcal_qg(double x, double v) const; 0150 0151 /** 0152 * Function for calculation of the \f$g\bar{q}\f$ initiated real 0153 * contribution. 0154 */ 0155 double Fcal_gq(double x, double v) const; 0156 0157 /** 0158 * Function for calculation of the \f$q\bar{q}\f$ initiated real 0159 * contribution. 0160 */ 0161 double Fcal_qq(double x, double v) const; 0162 0163 /** 0164 * Function for calculation of the \f$qg\f$ initiated real 0165 * contribution. 0166 */ 0167 double Ftilde_qg(double xt, double v) const; 0168 0169 /** 0170 * Function for calculation of the \f$g\bar{q}\f$ initiated real 0171 * contribution. 0172 */ 0173 double Ftilde_gq(double xt, double v) const; 0174 0175 /** 0176 * Function for calculation of the \f$q\bar{q}\f$ initiated real 0177 * contribution. 0178 */ 0179 double Ftilde_qq(double xt, double v) const; 0180 0181 /** 0182 * Function for calculation of the \f$qg\f$ initiated real 0183 * contribution. 0184 */ 0185 double Ctilde_qg(double x, double v) const; 0186 0187 /** 0188 * Function for calculation of the \f$g\bar{q}\f$ initiated real 0189 * contribution. 0190 */ 0191 double Ctilde_gq(double x, double v) const; 0192 0193 /** 0194 * Function for calculation of the \f$q\bar{q}\f$ initiated real 0195 * contribution. 0196 */ 0197 double Ctilde_qq(double x, double v) const; 0198 0199 protected: 0200 0201 /** @name Clone Methods. */ 0202 //@{ 0203 /** 0204 * Make a simple clone of this object. 0205 * @return a pointer to the new object. 0206 */ 0207 virtual IBPtr clone() const { return new_ptr(*this); } 0208 0209 /** Make a clone of this object, possibly modifying the cloned object 0210 * to make it sane. 0211 * @return a pointer to the new object. 0212 */ 0213 virtual IBPtr fullclone() const { return new_ptr(*this); } 0214 //@} 0215 0216 protected: 0217 0218 /** @name Standard Interfaced functions. */ 0219 //@{ 0220 /** 0221 * Initialize this object after the setup phase before saving an 0222 * EventGenerator to disk. 0223 * @throws InitException if object could not be initialized properly. 0224 */ 0225 virtual void doinit(); 0226 //@} 0227 0228 private: 0229 0230 /** 0231 * The assignment operator is private and must never be called. 0232 * In fact, it should not even be implemented. 0233 */ 0234 MEPP2WHPowheg & operator=(const MEPP2WHPowheg &) = delete; 0235 0236 private: 0237 0238 /** 0239 * The momentum fraction of the first parton in the Born process 0240 */ 0241 mutable double _xb_a; 0242 0243 /** 0244 * The momentum fraction of the second parton in the Born process 0245 */ 0246 mutable double _xb_b; 0247 0248 /** 0249 * The ParticleData object for the first parton in the Born process 0250 */ 0251 mutable tcPDPtr _parton_a; 0252 0253 /** 0254 * The ParticleData object for the second parton in the Born process 0255 */ 0256 mutable tcPDPtr _parton_b; 0257 0258 /** 0259 * The BeamParticleData object for the first hadron 0260 */ 0261 mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_A; 0262 0263 /** 0264 * The BeamParticleData object for the second hadron 0265 */ 0266 mutable Ptr<BeamParticleData>::transient_const_pointer _hadron_B; 0267 0268 /** 0269 * the ParticleData object for the gluon 0270 */ 0271 tcPDPtr _gluon; 0272 0273 /** 0274 * The \f$T_R\f$ colour factor 0275 */ 0276 const double TR_; 0277 0278 /** 0279 * The \f$C_F\f$ colour factor 0280 */ 0281 const double CF_; 0282 0283 /** 0284 * The value of \f$\frac{\alpha_S}{2\pi}\f$ used for the calculation 0285 */ 0286 mutable double _alphaS2Pi; 0287 0288 /** 0289 * The mass squared of the lepton pair 0290 */ 0291 mutable Energy2 _mll2; 0292 0293 /** 0294 * The renormalization/factorization scale 0295 */ 0296 mutable Energy2 _mu2; 0297 0298 /** 0299 * Parameters for the NLO weight 0300 */ 0301 //@{ 0302 /** 0303 * Whether to generate the positive, negative or leading order contribution 0304 */ 0305 unsigned int _contrib; 0306 0307 /** 0308 * Whether to use a fixed or a running QCD coupling for the NLO weight 0309 */ 0310 unsigned int _nlo_alphaS_opt; 0311 0312 /** 0313 * The value of alphaS to use for the nlo weight if _nloalphaSopt=1 0314 */ 0315 double _fixed_alphaS; 0316 0317 /** 0318 * The magnitude of the correction term to reduce the negative contribution 0319 */ 0320 double _a; 0321 0322 /** 0323 * The power of the correction term to reduce the negative contribution 0324 */ 0325 double _p; 0326 0327 //@} 0328 0329 /** 0330 * Choice of the scale 0331 */ 0332 //@{ 0333 /** 0334 * Type of scale 0335 */ 0336 unsigned int _scaleopt; 0337 0338 /** 0339 * Fixed scale if used 0340 */ 0341 Energy _fixedScale; 0342 0343 /** 0344 * Prefactor if variable scale used 0345 */ 0346 double _scaleFact; 0347 //@} 0348 0349 /** 0350 * Radiation variables 0351 */ 0352 //@{ 0353 /** 0354 * The \f$\tilde{x}\f$ variable 0355 */ 0356 double _xt; 0357 0358 /** 0359 * The \f$v\f$ angular variable 0360 */ 0361 double _v; 0362 //@} 0363 0364 /** 0365 * Values of the PDF's before radiation 0366 */ 0367 //@{ 0368 /** 0369 * For the quark 0370 */ 0371 mutable double _oldq; 0372 0373 /** 0374 * For the antiquark 0375 */ 0376 mutable double _oldqbar; 0377 //@} 0378 }; 0379 0380 } 0381 0382 #endif /* HERWIG_MEPP2WHPowheg_H */
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|