JHUGen MELA
v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
|
Go to the documentation of this file.
18 using namespace TUtil;
27 const char* pathtoXSW,
double ebeam,
const char* pathtoPDFSet,
int PDFMember,
TVar::VerbosityLevel verbosity_
29 pathtoPDFSet_(pathtoPDFSet),
30 PDFMember_(PDFMember),
31 verbosity(verbosity_),
43 pathtoPDFSet_(other.pathtoPDFSet_),
44 PDFMember_(other.PDFMember_),
45 verbosity(other.verbosity),
153 const double GeV=1./100.;
155 int init_nl, init_nf;
158 if (
verbosity>=
TVar::DEBUG)
MELAout <<
"TEvtProb::TEvtProb: Initializing the PDF with initial Q=" << init_Q <<
", nloops=" << init_nl <<
", nf=" << init_nf << endl;
159 SetAlphaS(init_Q, init_Q, 1, 1, init_nl, init_nf,
"cteq6_l");
186 char path_nnpdf_c[200];
187 sprintf(path_nnpdf_c,
"%s", path);
188 int pathLength = strlen(path_nnpdf_c);
219 if (whichResonance==1 || whichResonance==-1){
240 if (whichResonance==2){
257 else if (whichResonance==-1){
266 <<
"TEvtProb::SetHiggsMass(" << mass <<
", " << wHiggs <<
", " << whichResonance <<
"):\n"
289 if (
verbosity>=
TVar::INFO)
MELAout <<
"TEvtProb::AppendTopCandidate: No MELACandidates are present to append this top!" << endl;
306 if (
verbosity>=
TVar::INFO &&
GetCurrentCandidateIndex()<0)
MELAout <<
"TEvtProb::SetCurrentCandidate: The current candidate is not in the list of candidates. It is the users' responsibility to delete this candidate and all of its associated particles." << endl;
327 void TEvtProb::ResetMCFM_EWKParameters(
double ext_Gf,
double ext_aemmz,
double ext_mW,
double ext_mZ,
double ext_xW,
int ext_ewscheme){
SetEwkCouplingParameters(ext_Gf, ext_aemmz, ext_mW, ext_mZ, ext_xW, ext_ewscheme); }
379 for (
unsigned int icand=0; icand<
candList.size(); icand++){
392 <<
"TEvtProb::CheckInputPresent: melaCand==" <<
melaCand <<
" is nullPtr!"
414 bool calculateME=
false;
415 bool needBSMHiggs=
false;
436 else if (
verbosity>=
TVar::INFO)
MELAout <<
"TEvtProb::XsecCalc_XVV: MCFM_chooser failed to determine the process configuration." << endl;
442 double Hggcoupl[
SIZE_HGG][2] ={ { 0 } };
443 double Hvvcoupl[
SIZE_HVV][2] ={ { 0 } };
447 double Hvvpcoupl[
SIZE_HVV][2] = { { 0 } };
448 double Hvpvpcoupl[
SIZE_HVV][2] = { { 0 } };
450 double Zqqcoupl[
SIZE_ZQQ][2] ={ { 0 } };
451 double Zvvcoupl[
SIZE_ZVV][2] ={ { 0 } };
453 double Gqqcoupl[
SIZE_GQQ][2] ={ { 0 } };
454 double Gggcoupl[
SIZE_GGG][2] ={ { 0 } };
455 double Gvvcoupl[
SIZE_GVV][2] ={ { 0 } };
456 double Gvvpcoupl[
SIZE_GVV][2] ={ { 0 } };
457 double Gvpvpcoupl[
SIZE_GVV][2] ={ { 0 } };
459 double Zpffcoupl[
SIZE_Vpff][2] ={ { 0 } };
460 double Wpffcoupl[
SIZE_Vpff][2] ={ { 0 } };
461 double M_Zprime = -1;
462 double Ga_Zprime = 0;
463 double M_Wprime = -1;
464 double Ga_Wprime = 0;
466 double AZffcoupl[
SIZE_AZff][2] ={ { 0 } };
467 for (
int j=0; j<2; j++){
491 bool isSpinZero =
false;
492 bool isSpinOne =
false;
493 bool isSpinTwo =
false;
536 for (
int j=0; j<2; j++){
551 for (
int j=0; j<2; j++){
580 for (
int j=0; j<2; j++){
654 for (
int j=0; j<2; j++){
668 for (
int j=0; j<2; j++){
680 for (
int j=0; j<2; j++){
710 <<
"TEvtProb::XsecCalc_XVV: JHUGen ME is not spin zero, one or two! The process is described by "
736 bool needBSMHiggs=
false;
737 bool needATQGC=
false;
738 bool calculateME=
false;
755 else if (
verbosity>=
TVar::INFO)
MELAout <<
"TEvtProb::XsecCalc_VVXVV: MCFM_chooser failed to determine the process configuration." << endl;
761 <<
" TEvtProb::XsecCalc_VVXVV: dXsec=" << dXsec
788 double Hggcoupl[
SIZE_HGG][2] ={ { 0 } };
792 for (
int j=0; j<2; j++){
799 double Hzzcoupl[
SIZE_HVV][2] ={ { 0 } };
800 double Hwwcoupl[
SIZE_HVV][2] ={ { 0 } };
805 double Hzzpcoupl[
SIZE_HVV][2] = { { 0 } };
806 double Hzpzpcoupl[
SIZE_HVV][2] = { { 0 } };
807 double Zpffcoupl[
SIZE_Vpff][2] = { { 0 } };
808 double Hwwpcoupl[
SIZE_HVV][2] = { { 0 } };
809 double Hwpwpcoupl[
SIZE_HVV][2] = { { 0 } };
810 double Wpffcoupl[
SIZE_Vpff][2] = { { 0 } };
811 double M_Zprime = -1;
812 double Ga_Zprime = 0;
813 double M_Wprime = -1;
814 double Ga_Wprime = 0;
829 for (
int j=0; j<2; j++){
877 double Hggcoupl[
SIZE_HGG][2] ={ { 0 } };
881 for (
int j=0; j<2; j++){
900 bool includeHiggsDecay
911 double Hvvcoupl[
SIZE_HVV][2] ={ { 0 } };
914 double Hvvpcoupl[
SIZE_HVV][2] = { { 0 } };
915 double Hvpvpcoupl[
SIZE_HVV][2] = { { 0 } };
916 double Zpffcoupl[
SIZE_Vpff][2] = { { 0 } };
917 double Wpffcoupl[
SIZE_Vpff][2] = { { 0 } };
918 double M_Zprime = -1;
919 double Ga_Zprime = 0;
920 double M_Wprime = -1;
921 double Ga_Wprime = 0;
936 for (
int j=0; j<2; j++){
944 for (
int j=0; j<2; j++){
976 int topProcess,
int topDecay
984 double Hqqcoupl[
SIZE_HQQ][2]={ { 0 } };
989 for (
int j=0; j<2; j++){
1000 else if (
verbosity >=
TVar::ERROR)
MELAout <<
"TEvtProb::XsecCalc_TTX only supports ttH and bbH productions for the moment." << endl;
1021 for (
int vv = 0; vv <
SIZE_HGG; vv++){
1032 for (
int vv = 0; vv <
SIZE_HGG; vv++){
1046 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1055 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1067 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1078 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1092 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1103 for (
int vv = 0; vv <
SIZE_HQQ; vv++){
1117 for (
int vv = 0; vv <
SIZE_HVV; vv++){
1128 for (
int vv = 0; vv <
SIZE_HVV; vv++){
int HzzCLambda_qsq[SIZE_HVV_CQSQ]
double XsecCalc_TTX(int topProcess, int topDecay)
std::vector< MELAParticle * > particleList
double Hwpwpcoupl[SIZE_HVV][2]
TVar::LeptonInterference leptonInterf
double ResonancePropagator(double const &sqrts, TVar::ResonancePropagatorScheme scheme)
void SetJHUGenSpinZeroGGCouplings(double Hggcoupl[SIZE_HGG][2])
void SetCandidateDecayMode(TVar::CandidateDecayMode mode)
double GetHiggsWidthAtPoleMass(double mass)
void ResetRenFacScaleMode()
aTQGCCouplings * GetSelfDaTQGCCouplings()
VprimeCouplings * GetSelfDVprimeCouplings()
double H2zzcoupl[SIZE_HVV][2]
TVar::VerbosityLevel verbosity
double BBHiggsMatEl(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, int botProcess, TVar::VerbosityLevel verbosity)
std::vector< MELACandidate * > candList
bool CheckSelfDCouplings_Hgg()
void SetHiggsMass(double mass, double wHiggs=-1., int whichResonance=-1)
void SetJHUGenHiggsMassWidth(double MReso, double GaReso)
double HJJMatEl(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, TVar::VerbosityLevel verbosity)
void SetMCFMAZffCouplings(bool useBSM, AZffCouplings const *Zcouplings)
double Zqqcoupl[SIZE_ZQQ][2]
double aTQGCcoupl[SIZE_ATQGC][2]
double Ht4t4coupl[SIZE_HQQ][2]
std::vector< MELATopCandidate_t * > * GetTopCandidates()
TString ProductionName(TVar::Production temp)
SpinOneCouplings * GetSelfDSpinOneCouplings()
double GetPrimaryWidth(int ipart)
void SetAlphaS(double &Q_ren, double &Q_fac, double multiplier_ren, double multiplier_fac, int mynloop, int mynflav, std::string mypartons)
bool CheckSelfDCouplings_Htt()
double GetPrimaryHiggsMass()
void ResetMCFM_EWKParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
void SetWprimeMassWidth(double inmass, double inwidth)
void SetMass(double inmass, int ipart)
bool isAHiggs(const int id)
void SetJHUGenVprimeContactCouplings(double Zpffcoupl[SIZE_Vpff][2], double Wpffcoupl[SIZE_Vpff][2])
double H2b4b4coupl[SIZE_HQQ][2]
double HwwLambda_qsq[SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
double Zpffcoupl[SIZE_Vpff][2]
double Gvpvpcoupl[SIZE_GVV][2]
void SetMCFMSpinZeroCouplings(bool useBSM, SpinZeroCouplings const *Hcouplings, bool forceZZ)
void nnpdfdriver_(char *gridfilename, int *lenfilename)
void SetJHUGenSpinOneCouplings(double Zqqcoupl[SIZE_ZQQ][2], double Zvvcoupl[SIZE_ZVV][2])
void InitializeJHUGen(const char *pathtoPDFSet, int PDFMember)
void AppendTopCandidate(SimpleParticleCollection_t *TopDaughters)
double Zvvcoupl[SIZE_ZVV][2]
bool CheckSelfDCouplings_Hbb()
bool separateWWZZcouplings
double Httcoupl[SIZE_HQQ][2]
void SetDecayWidth(double inwidth, int ipart)
SpinZeroCouplings selfDSpinZeroCoupl
double Hzzpcoupl[SIZE_HVV][2]
VprimeCouplings selfDVprimeCoupl
TString ProcessName(TVar::Process temp)
TVar::event_scales_type event_scales
void SetRenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
MELAOutputStreamer MELAout
double Hg4g4coupl[SIZE_HGG][2]
void SetLeptonInterf(TVar::LeptonInterference tmp)
MELAHXSWidth const * GetHXSWidthEstimator() const
void SetJHUGenSpinTwoCouplings(double Gacoupl[SIZE_GGG][2], double Gvvcoupl[SIZE_GVV][2], double Gvvpcoupl[SIZE_GVV][2], double Gvpvpcoupl[SIZE_GVV][2], double qLeftRightcoupl[SIZE_GQQ][2])
TVar::Production production
MELACandidate * ConvertVectorFormat(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated, SimpleParticleCollection_t *pMothers, bool isGen, std::vector< MELAParticle * > *particleList, std::vector< MELACandidate * > *candList)
void SetCurrentCandidateFromIndex(unsigned int icand)
double Hzpzpcoupl[SIZE_HVV][2]
SpinTwoCouplings * getRef()
void SetJHUGenSpinZeroVVCouplings(double Hvvcoupl[SIZE_HVV][2], double Hvvpcoupl[SIZE_HVV][2], double Hvpvpcoupl[SIZE_HVV][2], int Hvvcoupl_cqsq[SIZE_HVV_CQSQ], double HvvLambda_qsq[SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ], bool useWWcoupl)
double HiggsWidth(double mH) const
void SetJHUGenDistinguishWWCouplings(bool doAllow)
VprimeCouplings * getRef()
void SetInputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
void SetJHUGenAZffCouplings(bool needAZff, double AZffcoupl[SIZE_AZff][2])
TVar::MatrixElement matrixElement
AZffCouplings selfDAZffCoupl
void mcfm_init_(char *inputfile, char *workdir)
double Hbbcoupl[SIZE_HQQ][2]
double AZffcoupl[SIZE_AZff][2]
bool CheckSelfDCouplings_AZff()
SpinTwoCouplings * GetSelfDSpinTwoCouplings()
double Hqqcoupl[SIZE_HQQ][2]
bool CheckSelfDCouplings_HVV()
double GetDecayWidth(int ipart)
aTQGCCouplings * getRef()
SpinOneCouplings selfDSpinOneCoupl
double Hzzcoupl[SIZE_HVV][2]
double H2wwcoupl[SIZE_HVV][2]
void SetEwkCouplingParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme)
double Wpffcoupl[SIZE_Vpff][2]
void ResetMass(double inmass, int ipart)
void SetProcess(TVar::Process proc, TVar::MatrixElement me, TVar::Production prod)
double Hwwpcoupl[SIZE_HVV][2]
SpinTwoCouplings selfDSpinTwoCoupl
void setCandidateDecayMode(TVar::CandidateDecayMode mode)
void addAssociatedTop(MELATopCandidate_t *myParticle)
TVar::EventScaleScheme factorizationScheme
void allow_WWZZSeparation(bool doAllow=true)
double HzzLambda_qsq[SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
SpinZeroCouplings * getRef()
const char * pathtoPDFSet_
double GetPrimaryMass(int ipart)
int GetCurrentCandidateIndex()
double Hwwcoupl[SIZE_HVV][2]
void SetVerbosity(TVar::VerbosityLevel tmp)
void Set_LHAgrid(const char *path, int pdfmember=0)
MELAThreeBodyDecayCandidate * ConvertThreeBodyDecayCandidate(SimpleParticleCollection_t *tbdDaughters, std::vector< MELAParticle * > *particleList, std::vector< MELAThreeBodyDecayCandidate * > *tbdCandList)
double H2g4g4coupl[SIZE_HGG][2]
double GetMass(int ipart)
aTQGCCouplings selfDaTQGCCoupl
MELAOutputStreamer MELAerr
double H2bbcoupl[SIZE_HQQ][2]
void SetZprimeMassWidth(double inmass, double inwidth)
struct @43 spinzerohiggs_anomcoupl_
ResonancePropagatorScheme
double Gvvcoupl[SIZE_GVV][2]
void SetMCFMaTQGCCouplings(bool useBSM, aTQGCCouplings const *couplings)
SpinZeroCouplings * GetSelfDSpinZeroCouplings()
MELACandidate * GetCurrentCandidate()
double Gqqcoupl[SIZE_GQQ][2]
double TTHiggsMatEl(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, int topDecay, int topProcess, TVar::VerbosityLevel verbosity)
void ResetWidth(double inwidth, int ipart)
double __modparameters_MOD_ckmbare(int *id1in, int *id2in)
void AllowSeparateWWCouplings(bool doAllow=false)
double Gvvpcoupl[SIZE_GVV][2]
void InitJHUGenMELA(const char *pathtoPDFSet, int PDFMember, double collider_sqrts)
SpinOneCouplings * getRef()
double SumMatrixElementPDF(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, const TVar::LeptonInterference &leptonInterf, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, TVar::VerbosityLevel verbosity)
void SetPrimaryHiggsMass(double mass)
double XsecCalc_VX(bool includeHiggsDecay)
AZffCouplings * GetSelfDAZffCouplings()
int HwwCLambda_qsq[SIZE_HVV_CQSQ]
bool CheckSelfDCouplings_Hqq()
bool CheckSelfDCouplings_aTQGC()
TVar::EventScaleScheme renomalizationScheme
void nninitpdf_(int *irep)
void SetJHUGenSpinZeroQQCouplings(double Hqqcoupl[SIZE_HQQ][2])
std::vector< SimpleParticle_t > SimpleParticleCollection_t
double H2ttcoupl[SIZE_HQQ][2]
std::vector< MELATopCandidate_t * > topCandList
void SetCurrentCandidate(MELACandidate *cand)
double GetXPropagator(TVar::ResonancePropagatorScheme scheme)
double H2t4t4coupl[SIZE_HQQ][2]
double Hb4b4coupl[SIZE_HQQ][2]
void __modjhugenmela_MOD_getpdfconstants(double *pdfzmass, int *pdfnloops, int *pdfnf)
double Gggcoupl[SIZE_GGG][2]
double Hggcoupl[SIZE_HGG][2]
TString MatrixElementName(TVar::MatrixElement temp)
double JHUGenMatEl(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, TVar::VerbosityLevel verbosity)
double VHiggsMatEl(const TVar::Process &process, const TVar::Production &production, const TVar::MatrixElement &matrixElement, TVar::event_scales_type *event_scales, MelaIO *RcdME, const double &EBEAM, bool includeHiggsDecay, TVar::VerbosityLevel verbosity)
double H2qqcoupl[SIZE_HQQ][2]
double H2ggcoupl[SIZE_HGG][2]
void ResetAmplitudeIncludes()