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.
3 #include "TLorentzRotation.h"
13 const char* pathtoPDFSet,
15 const char* pathtoHiggsCSandWidth,
19 processVerbosity(verbosity),
22 Xcal2(pathtoHiggsCSandWidth, EBEAM, pathtoPDFSet, PDFMember, verbosity),
30 processVerbosity(other.processVerbosity),
31 processLeptonInterference(other.processLeptonInterference),
69 phi1=TMath::Pi()-Phi1;
75 gamma1=(Mx*Mx+M1*M1-M2*M2)/(2*Mx*M1);
76 beta1=sqrt(1.-1./(gamma1*gamma1));
79 gamma2=(Mx*Mx-M1*M1+M2*M2)/(2*Mx*M2);
80 beta2=sqrt(1.-1./(gamma2*gamma2));
84 TLorentzVector p1CM(0, 0, Mx/2, Mx/2);
85 TLorentzVector p2CM(0, 0, -Mx/2, Mx/2);
88 TLorentzVector kZ1(gamma1*M1*sin(theta)*
beta1, 0, gamma1*M1*cos(theta)*
beta1, gamma1*M1);
89 TLorentzVector kZ2(-gamma2*M2*sin(theta)*
beta2, 0, -gamma2*M2*cos(theta)*
beta2, gamma2*M2);
93 TLorentzRotation Z1ToZ, Z2ToZ;
95 Z1ToZ.Boost(0, 0,
beta1);
96 Z2ToZ.Boost(0, 0,
beta2);
98 Z2ToZ.RotateY(TMath::Pi()+theta);
103 TLorentzVector p3Z1((M1/2)*sin(theta1)*cos(phi1), (M1/2)*sin(theta1)*sin(phi1), (M1/2)*cos(theta1), (M1/2)*1);
104 TLorentzVector p4Z1(-(M1/2)*sin(theta1)*cos(phi1), -(M1/2)*sin(theta1)*sin(phi1), -(M1/2)*cos(theta1), (M1/2)*1);
105 TLorentzVector p5Z2((M2/2)*sin(theta2)*cos(phi2), (M2/2)*sin(theta2)*sin(phi2), (M2/2)*cos(theta2), (M2/2)*1);
106 TLorentzVector p6Z2(-(M2/2)*sin(theta2)*cos(phi2), -(M2/2)*sin(theta2)*sin(phi2), -(M2/2)*cos(theta2), (M2/2)*1);
110 TLorentzVector p3CM, p4CM, p5CM, p6CM;
117 vector<TLorentzVector>
p;
181 if (index<nSupportedHiggses && index>=0)
mHiggs[index] = mh_;
182 else MELAerr <<
"ZZMatrixElement::set_mHiggs: Only resonances 0 (regular) and 1 (additional, possibly high-mass) are supported" << endl;
185 if (index<nSupportedHiggses && index>=0)
wHiggs[index] = (double)gah_;
186 else MELAerr <<
"ZZMatrixElement::set_wHiggs: Only resonances 0 (regular) and 1 (additional, possibly high-mass) are supported" << endl;
189 if (index<nSupportedHiggses && index>=0){
193 else MELAerr <<
"ZZMatrixElement::set_mHiggs_wHiggs: Only resonances 0 (regular) and 1 (additional, possibly high-mass) are supported" << endl;
414 bool includeHiggsDecay
double XsecCalc_TTX(int topProcess, int topDecay)
void SetWPrimeMassWidth(double inmass, double inwidth)
void reset_Width(double inmass, int ipart)
double selfDHg4g4coupl[nSupportedHiggses][SIZE_HGG][2]
void SetGQQCouplings(unsigned int index, double c_real, double c_imag)
void SetGVVpCouplings(unsigned int index, double c_real, double c_imag)
void SetCandidateDecayMode(TVar::CandidateDecayMode mode)
double GetHiggsWidthAtPoleMass(double mass)
double selfDHzzpcoupl[SIZE_HVV][2]
aTQGCCouplings * GetSelfDaTQGCCouplings()
VprimeCouplings * GetSelfDVprimeCouplings()
double selfDaTQGCcoupl[SIZE_ATQGC][2]
std::vector< MELAParticle * > tmpPartList
double selfDHzzLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
double selfDGggcoupl[SIZE_GGG][2]
void get_XPropagator(TVar::ResonancePropagatorScheme scheme, float &prop)
double selfDZpffcoupl[SIZE_Vpff][2]
void set_mHiggs_wHiggs(double mh_, double gah_, int index)
double selfDHb4b4coupl[nSupportedHiggses][SIZE_HQQ][2]
void SetGVVCouplings(unsigned int index, double c_real, double c_imag)
double selfDZqqcoupl[SIZE_ZQQ][2]
void SetHiggsMass(double mass, double wHiggs=-1., int whichResonance=-1)
std::vector< MELATopCandidate_t * > * get_TopCandidateCollection()
void reset_Mass(double inmass, int ipart)
void SetHQQCouplings(unsigned int index, double c_real, double c_imag, int qid=0, int whichResonance=1)
TVar::LeptonInterference processLeptonInterference
double selfDGqqcoupl[SIZE_GQQ][2]
std::vector< MELATopCandidate_t * > * GetTopCandidates()
SpinOneCouplings * GetSelfDSpinOneCouplings()
real *8, dimension(3:6) beta2
double GetPrimaryWidth(int ipart)
void SetZVVCouplings(unsigned int index, double c_real, double c_imag)
double selfDHt4t4coupl[nSupportedHiggses][SIZE_HQQ][2]
void computeProdXS_JH(float &mevalue)
void SetAZffCouplings(unsigned int index, double c_real, double c_imag)
double GetPrimaryHiggsMass()
void ResetMCFM_EWKParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2]
double wHiggs[nSupportedHiggses]
void SetHGGCouplings(unsigned int index, double c_real, double c_imag, int whichLoop=1, int whichResonance=1)
void set_Verbosity(TVar::VerbosityLevel verbosity_)
void set_SpinZeroContact(double selfDHzzpcoupl[SIZE_HVV][2], double selfDHzpzpcoupl[SIZE_HVV][2], double selfDHwwpcoupl[SIZE_HVV][2], double selfDHwpwpcoupl[SIZE_HVV][2])
void set_SpinOneCouplings(double selfDZqqcoupl[SIZE_ZQQ][2], double selfDZvvcoupl[SIZE_ZVV][2])
TVar::Process processModel
double get_HiggsWidthAtPoleMass(double mass)
double selfDHzpzpcoupl[SIZE_HVV][2]
std::vector< TLorentzVector > Calculate4Momentum(double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
double mHiggs[nSupportedHiggses]
void AppendTopCandidate(SimpleParticleCollection_t *TopDaughters)
void set_SpinZeroCouplings(double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2], double selfDHg4g4coupl[nSupportedHiggses][SIZE_HGG][2], double selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHb4b4coupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHt4t4coupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2], double selfDHzzLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ], double selfDHwwLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ], int selfDHzzCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ], int selfDHwwCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ], bool diffHWW=false)
int selfDHwwCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ]
void SetHVVCouplings(unsigned int index, double c_real, double c_imag, bool setWW=false, int whichResonance=1)
TVar::MatrixElement processME
std::vector< MELACandidate * > tmpCandList
void append_TopCandidate(SimpleParticleCollection_t *TopDaughters)
void set_TempCandidate(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
void set_CandidateDecayMode(TVar::CandidateDecayMode mode)
double get_PrimaryMass(int ipart)
void set_AZffCouplings(double selfDAZffcoupl[SIZE_AZff][2])
void set_SpinTwoCouplings(double selfDGqqcoupl[SIZE_GQQ][2], double selfDGggcoupl[SIZE_GGG][2], double selfDGvvcoupl[SIZE_GVV][2])
int get_CurrentCandidateIndex()
void set_Process(TVar::Process process_, TVar::MatrixElement me_, TVar::Production production_)
MELACandidate * get_CurrentCandidate()
void SetRenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
void SetGVpVpCouplings(unsigned int index, double c_real, double c_imag)
void SetVpffCouplings(unsigned int index, double c_real, double c_imag, bool setWpff=false, int whichResonance=1)
MELAOutputStreamer MELAout
double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2]
void SetLeptonInterf(TVar::LeptonInterference tmp)
void set_mHiggs(double mh_, int index)
void set_VprimeContactCouplings(double selfDZpffcoupl[SIZE_Vpff][2], double selfDWpffcoupl[SIZE_Vpff][2], double M_Zprime, double Ga_Zprime, double M_Wprime, double Ga_Wprime)
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 selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2]
void SetHVVSignCQ2(unsigned int index, int csign, bool setWW=false, int whichResonance=1)
AZffCouplings * selfD_AZffCouplings
TVar::VerbosityLevel processVerbosity
void SetZPrimeMassWidth(double inmass, double inwidth)
void SetInputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
VprimeCouplings * selfD_VprimeCouplings
void set_InputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
SpinTwoCouplings * GetSelfDSpinTwoCouplings()
void set_CurrentCandidateFromIndex(unsigned int icand)
int selfDHzzCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ]
void computeProdXS_VH(float &mevalue, bool includeHiggsDecay=false)
void computeProdXS_JJH(float &mevalue)
ZZMatrixElement(const char *pathtoPDFSet, int PDFMember, const char *pathtoHiggsCSandWidth, double ebeam, TVar::VerbosityLevel verbosity)
double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2]
void SetATQGCCouplings(unsigned int index, double c_real, double c_imag)
void ResetMass(double inmass, int ipart)
void SetProcess(TVar::Process proc, TVar::MatrixElement me, TVar::Production prod)
void computeProdXS_VVHVV(float &mevalue)
void set_RenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
aTQGCCouplings * selfD_aTQGCCouplings
double GetPrimaryMass(int ipart)
int GetCurrentCandidateIndex()
void SetVerbosity(TVar::VerbosityLevel tmp)
double selfDHwwpcoupl[SIZE_HVV][2]
void Set_LHAgrid(const char *path, int pdfmember=0)
void computeXS(float &mevalue)
void set_LHAgrid(const char *path, int pdfmember=0)
void SetHVVpCouplings(unsigned int index, double c_real, double c_imag, bool setWWp=false, int whichResonance=1)
MELAOutputStreamer MELAerr
double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2]
ResonancePropagatorScheme
void SetHVpVpCouplings(unsigned int index, double c_real, double c_imag, bool setWpWp=false, int whichResonance=1)
SpinZeroCouplings * GetSelfDSpinZeroCouplings()
MELACandidate * GetCurrentCandidate()
void ResetWidth(double inwidth, int ipart)
SpinZeroCouplings * selfD_SpinZeroCouplings
void AllowSeparateWWCouplings(bool doAllow=false)
void SetPrimaryHiggsMass(double mass)
double XsecCalc_VX(bool includeHiggsDecay)
double selfDWpffcoupl[SIZE_Vpff][2]
AZffCouplings * GetSelfDAZffCouplings()
void set_CurrentCandidate(MELACandidate *cand)
double selfDGvpvpcoupl[SIZE_GVV][2]
double selfDAZffcoupl[SIZE_AZff][2]
void set_LeptonInterference(TVar::LeptonInterference myLepInterf)
void set_aTQGCCouplings(double selfDaTQGCcoupl[SIZE_ATQGC][2])
SpinOneCouplings * selfD_SpinOneCouplings
std::vector< SimpleParticle_t > SimpleParticleCollection_t
double selfDHwpwpcoupl[SIZE_HVV][2]
void reset_MCFM_EWKParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
void computeProdXS_ttH(float &mevalue, int topProcess, int topDecay=0)
void SetCurrentCandidate(MELACandidate *cand)
void set_SpinTwoContact(double selfDGvvpcoupl[SIZE_GVV][2], double selfDGvpvpcoupl[SIZE_GVV][2])
double get_PrimaryWidth(int ipart)
double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2]
TVar::Production processProduction
double GetXPropagator(TVar::ResonancePropagatorScheme scheme)
void SetHVVLambdaQ2(unsigned int gType, unsigned int index, double lambda, bool setWW=false, int whichResonance=1)
double selfDGvvpcoupl[SIZE_GVV][2]
void SetGGGCouplings(unsigned int index, double c_real, double c_imag)
double selfDHwwLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
double selfDZvvcoupl[SIZE_ZVV][2]
SpinTwoCouplings * selfD_SpinTwoCouplings
real *8, dimension(3:6) beta1
double selfDGvvcoupl[SIZE_GVV][2]
void SetZQQCouplings(unsigned int index, double c_real, double c_imag)
void set_PrimaryHiggsMass(double mh)
void set_wHiggs(double gah_, int index)