Herwig++
2.7.0
|
00001 // -*- C++ -*- 00002 #ifndef HERWIG_SMHiggsFermionsPOWHEGDecayer_H 00003 #define HERWIG_SMHiggsFermionsPOWHEGDecayer_H 00004 // 00005 // This is the declaration of the SMHiggsFermionsPOWHEGDecayer class. 00006 // 00007 00008 #include "SMHiggsFermionsDecayer.h" 00009 #include "Herwig++/Utilities/Maths.h" 00010 #include "Herwig++/Shower/Couplings/ShowerAlpha.fh" 00011 00012 namespace Herwig { 00013 00014 using namespace ThePEG; 00015 00022 class SMHiggsFermionsPOWHEGDecayer: public SMHiggsFermionsDecayer { 00023 00024 public: 00025 00029 SMHiggsFermionsPOWHEGDecayer(); 00030 00039 virtual POWHEGType hasPOWHEGCorrection() {return FSR;} 00040 00044 virtual HardTreePtr generateHardest(ShowerTreePtr); 00046 00047 virtual double me2(const int ichan, const Particle & part, 00048 const ParticleVector & decay, MEOption meopt) const; 00049 00050 public: 00051 00058 void persistentOutput(PersistentOStream & os) const; 00059 00065 void persistentInput(PersistentIStream & is, int version); 00067 00074 static void Init(); 00075 00076 protected: 00077 00084 virtual IBPtr clone() const; 00085 00090 virtual IBPtr fullclone() const; 00092 00093 protected: 00094 00102 virtual void doinit(); 00104 00105 private: 00106 00111 static ClassDescription<SMHiggsFermionsPOWHEGDecayer> initSMHiggsFermionsPOWHEGDecayer; 00112 00117 SMHiggsFermionsPOWHEGDecayer & operator=(const SMHiggsFermionsPOWHEGDecayer &); 00118 00122 double calculateLambda(double x, double y, double z) const; 00123 00127 InvEnergy2 dipoleSubtractionTerm(double x1, double x2) const; 00128 00132 InvEnergy2 calculateRealEmission(double x1, double x2) const; 00133 00137 double calculateVirtualTerm() const; 00138 00142 double calculateNonSingletTerm(double beta, double L) const; 00143 00147 bool checkZMomenta(double x1, double x2, double x3, double y, Energy pT) const; 00148 00152 InvEnergy calculateJacobian(double x1, double x2, Energy pT) const; 00153 00157 bool getEvent(); 00158 00159 private: 00160 00164 double CF_; 00165 00169 mutable Energy mHiggs_; 00170 00174 mutable double mu_; 00175 00179 mutable double mu2_; 00180 00184 mutable double aS_; 00185 00193 ShowerAlphaPtr alphaS_; 00194 00198 tcPDPtr gluon_; 00199 00203 Energy pTmin_; 00204 00205 // radiative variables (pt,y) 00206 Energy pT_; 00207 00211 vector<tcPDPtr> partons_; 00212 00216 vector<Lorentz5Momentum> quark_; 00217 00221 Lorentz5Momentum gauge_; 00222 00226 PPtr higgs_; 00227 00231 Energy2 mh2_; 00233 }; 00234 00235 } 00236 00237 #include "ThePEG/Utilities/ClassTraits.h" 00238 00239 namespace ThePEG { 00240 00245 template <> 00246 struct BaseClassTrait<Herwig::SMHiggsFermionsPOWHEGDecayer,1> { 00248 typedef Herwig::SMHiggsFermionsDecayer NthBase; 00249 }; 00250 00253 template <> 00254 struct ClassTraits<Herwig::SMHiggsFermionsPOWHEGDecayer> 00255 : public ClassTraitsBase<Herwig::SMHiggsFermionsPOWHEGDecayer> { 00257 static string className() { return "Herwig::SMHiggsFermionsPOWHEGDecayer"; } 00265 static string library() { return "HwPerturbativeHiggsDecay.so"; } 00266 }; 00267 00270 } 00271 00272 #endif /* HERWIG_SMHiggsFermionsPOWHEGDecayer_H */