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.
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
Mela Class Reference

#include <Mela.h>

Collaboration diagram for Mela:
Collaboration graph
[legend]

Public Member Functions

 Mela (double LHCsqrts_=13., double mh_=125., TVar::VerbosityLevel verbosity_=TVar::ERROR)
 the MELA constructor More...
 
 Mela (const Mela &other)
 Copy constructor for MELA. More...
 
 ~Mela ()
 MELA destructor. More...
 
void build (double mh_)
 This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor. More...
 
void setProcess (TVar::Process myModel, TVar::MatrixElement myME, TVar::Production myProduction)
 Sets the process, matrix element, and production that MELA is to use for this event. Calls ZZMatrixElement::set_Process, which calls TEvtProb::SetProcess. More...
 
void setVerbosity (TVar::VerbosityLevel verbosity_=TVar::ERROR)
 Sets the verbosity for MELA outside of the initial constructor. More...
 
TVar::VerbosityLevel getVerbosity ()
 Gets the current verbosity level for MELA. More...
 
void setMelaLeptonInterference (TVar::LeptonInterference myLepInterf=TVar::DefaultLeptonInterf)
 Sets the MELA Lepton Interference. More...
 
void setRemoveLeptonMasses (bool MasslessLeptonSwitch=true)
 either permits or forbids massive leptons. More...
 
void setRemoveJetMasses (bool MasslessLeptonSwitch=true)
 either permits or forbids massive jets. More...
 
void setMelaPrimaryHiggsMass (double myHiggsMass)
 Sets the mass of the "primary" higgs. More...
 
void setMelaHiggsMass (double myHiggsMass, int index=0)
 Sets the mass of your chosen Higgs. More...
 
void setMelaHiggsWidth (double myHiggsWidth=-1, int index=0)
 Sets the width of your chosen Higgs. More...
 
void setMelaHiggsMassWidth (double myHiggsMass, double myHiggsWidth, int index)
 a combination of setMelaHiggsMass and setMelaHiggsWidth. More...
 
void setRenFacScaleMode (TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
 Sets the renormalization and the factorization schemes. More...
 
void setCandidateDecayMode (TVar::CandidateDecayMode mode)
 Sets the decay mode for your event. More...
 
void setCurrentCandidateFromIndex (unsigned int icand)
 Switches the candidate that you are working on to another candidate based off of an index. More...
 
void setCurrentCandidate (MELACandidate *cand)
 Switches the candidate that you are working on to another candidate object specified. More...
 
void setInputEvent (SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
 Sets the input event for MELA. MELA cannot run without this. More...
 
void resetInputEvent ()
 Resets the event in preparation for the next iteration of the event loop. More...
 
void setTempCandidate (SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
 Sets a temporary MELA candidate, by setting melaCand in Xcal2 to a temporary candidate without pushing this candidate to the candList of Xcal2. More...
 
void appendTopCandidate (SimpleParticleCollection_t *TopDaughters)
 Adds a top quark as a MELA candidate. More...
 
void resetMass (double inmass, int ipart)
 Resets the mass for a particle that is an electroweak parameter according to its id. More...
 
void resetWidth (double inwidth, int ipart)
 Resets the width for a particle that is an electroweak parameter according to its id. More...
 
void resetQuarkMasses ()
 Resets the masses of each quark to their original values. More...
 
void resetMCFM_EWKParameters (double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
 Resets the electroweak parameters back to their defaults. More...
 
double getPrimaryMass (int ipart)
 A function to get the current primary EW/QCD parameters from MELA. More...
 
double getPrimaryWidth (int ipart)
 A function to get the current primary EW/QCD parameters from MELA. More...
 
double getHiggsWidthAtPoleMass (double mass)
 Returns the width of the Higgs at a given pole mass as a calculation. More...
 
MelaIOgetIORecord ()
 Returns the MELAIO object, and by consequence, the entire parton-by-parton matrix element record. More...
 
MELACandidategetCurrentCandidate ()
 Gets the current MELA top-level (input) candList object. More...
 
int getCurrentCandidateIndex ()
 Returns the index of the current MELA candidate - returns -1 if there is no candidate to be found. More...
 
int getNCandidates ()
 Returns the size of the candidate list TEvtProb::candList. More...
 
std::vector< MELATopCandidate_t * > * getTopCandidateCollection ()
 Same as getNCandidates but specifically for Top Quark Candidates. More...
 
void getConstant (float &prob)
 This function returns a multiplicative constant to the matrix element calculation. More...
 
void getPAux (float &prob)
 
RooSpin::modelMeasurables getMeasurablesRRV ()
 Returns a RooSpin::modelMeasureables object containing many observable quantities. More...
 
void computeDecayAngles (float &qH, float &m1, float &m2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1)
 computes the decay angles for gg -> H -> ZZ as defined in Figure 1 of arXiv:1001.3396 More...
 
void computeVBFAngles (float &Q2V1, float &Q2V2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1)
 computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018 More...
 
void computeVBFAngles_ComplexBoost (float &Q2V1, float &Q2V2, float &costheta1_real, float &costheta1_imag, float &costheta2_real, float &costheta2_imag, float &Phi, float &costhetastar, float &Phi1)
 
void computeVHAngles (float &mVstar, float &mV, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1)
 computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018 More...
 
void computeTTHAngles (int topDecay, float &mT1, float &mW1, float &mT2, float &mW2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1, float &hbb, float &hWW, float &Phibb, float &Phi1bb, float &hWplusf, float &PhiWplusf, float &hWminusf, float &PhiWminusf)
 
void computeP_selfDspin0 (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true)
 This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 0. More...
 
void computeP_selfDspin1 (double selfDZqqcoupl_input[SIZE_ZQQ][2], double selfDZvvcoupl_input[SIZE_ZVV][2], float &prob, bool useConstant=true)
 This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1. More...
 
void computeP_selfDspin1 (double selfDZvvcoupl_input[SIZE_ZVV][2], float &prob, bool useConstant=true)
 This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings. More...
 
void computeP_selfDspin2 (double selfDGggcoupl_input[SIZE_GGG][2], double selfDGqqcoupl_input[SIZE_GQQ][2], double selfDGvvcoupl_input[SIZE_GVV][2], float &prob, bool useConstant=true)
 This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 2. More...
 
void computeP_selfDspin2 (double selfDGggcoupl_input[SIZE_GGG][2], double selfDGvvcoupl_input[SIZE_GVV][2], float &prob, bool useConstant=true)
 This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings. More...
 
void computeP (float &prob, bool useConstant=true)
 Computes the probability for the probabilities on the decay side of things using the constituent daughter 4 vectors along with any jets that could exist. More...
 
void computeD_CP (TVar::MatrixElement myME, TVar::Process myType, float &prob)
 computes the value of D_CP More...
 
void computeProdDecP (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDaTQGCcoupl_input[SIZE_ATQGC][2], double selfDAZffcoupl_input[SIZE_AZff][2], float &prob, bool useConstant=true)
 computes the combined production and decay probability while taking in coupling arrays More...
 
void computeProdDecP (float &prob, bool useConstant=true)
 computes the combined production and decay probability, with couplings set beforehand More...
 
void computeProdP (double selfDHggcoupl_input[SIZE_HGG][2], double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true)
 computes Production side probabilities while taking in coupling arrays More...
 
void computeProdP (float &prob, bool useConstant=true)
 computes Production side probabilities using couplings set beforehand More...
 
void computeProdP_VH (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool includeHiggsDecay=false, bool useConstant=true)
 
void computeProdP_VH (float &prob, bool includeHiggsDecay=false, bool useConstant=true)
 
void computeProdP_ttH (float &prob, int topProcess=2, int topDecay=0, bool useConstant=true)
 
void compute4FermionWeight (float &w)
 
void getXPropagator (TVar::ResonancePropagatorScheme scheme, float &prop)
 
void computePM4l (TVar::SuperMelaSyst syst, float &prob)
 
void computeDijetConvBW (float &prob, bool useTrueBW=false)
 
void computeD_gg (TVar::MatrixElement myME, TVar::Process myType, float &prob)
 
std::vector< TLorentzVector > calculate4Momentum (double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
 

Static Public Member Functions

static void cleanLinkedFiles ()
 

Public Attributes

TRandom3 melaRandomNumber
 
RooRealVar * mzz_rrv
 
RooRealVar * z1mass_rrv
 
RooRealVar * z2mass_rrv
 
RooRealVar * costhetastar_rrv
 
RooRealVar * costheta1_rrv
 
RooRealVar * costheta2_rrv
 
RooRealVar * phi_rrv
 
RooRealVar * phi1_rrv
 
RooRealVar * Y_rrv
 
RooRealVar * upFrac_rrv
 
RooAbsPdf * pdf
 
ScalarPdfFactory_HVVggSpin0Model
 
VectorPdfFactoryspin1Model
 
TensorPdfFactory_ppHVVspin2Model
 
RooqqZZ_JHU_ZgammaZZ_fastqqZZmodel
 
SuperMELAsuper
 
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 differentiate_HWW_HZZ
 
double selfDHzzpcoupl [SIZE_HVV][2]
 
double selfDHzpzpcoupl [SIZE_HVV][2]
 
double selfDZpffcoupl [SIZE_Vpff][2]
 
double selfDHwwpcoupl [SIZE_HVV][2]
 
double selfDHwpwpcoupl [SIZE_HVV][2]
 
double selfDWpffcoupl [SIZE_Vpff][2]
 
double selfDM_Zprime
 
double selfDGa_Zprime
 
double selfDM_Wprime
 
double selfDGa_Wprime
 
double selfDZqqcoupl [SIZE_ZQQ][2]
 
double selfDZvvcoupl [SIZE_ZVV][2]
 
double selfDGqqcoupl [SIZE_GQQ][2]
 
double selfDGggcoupl [SIZE_GGG][2]
 
double selfDGvvcoupl [SIZE_GVV][2]
 
double selfDGvvpcoupl [SIZE_GVV][2]
 
double selfDGvpvpcoupl [SIZE_GVV][2]
 
double selfDaTQGCcoupl [SIZE_ATQGC][2]
 
double selfDAZffcoupl [SIZE_AZff][2]
 

Protected Member Functions

void printLogo () const
 
void setSpinZeroCouplings ()
 
void setSpinOneCouplings ()
 
void setSpinTwoCouplings ()
 
void setATQGCCouplings ()
 
void setAZffCouplings ()
 
bool configureAnalyticalPDFs ()
 
void reset_SelfDCouplings ()
 
void reset_PAux ()
 
void reset_CandRef ()
 
void constructDggr (float bkg_VAMCFM_noscale, float ggzz_VAMCFM_noscale, float ggHZZ_prob_pure_noscale, float ggHZZ_prob_int_noscale, float widthScale, float &myDggr)
 
void getPConstantHandles ()
 
void deletePConstantHandles ()
 
MelaPConstantgetPConstantHandle (TVar::MatrixElement me_, TVar::Production prod_, TVar::Process proc_, TString relpath, TString spname, const bool useSqrts=false)
 
void deletePConstantHandle (MelaPConstant *&handle)
 
void computeConstant (float &prob)
 
void setConstant ()
 
float getConstant_JHUGenUndecayed ()
 
float getConstant_4l ()
 
float getConstant_2l2q ()
 
float getConstant_4q ()
 
float getConstant_FourFermionDecay (const int &decid)
 

Protected Attributes

double LHCsqrts
 
TVar::Process myModel_
 
TVar::MatrixElement myME_
 
TVar::Production myProduction_
 
TVar::LeptonInterference myLepInterf_
 
TVar::VerbosityLevel myVerbosity_
 
ZZMatrixElementZZME
 
SuperDijetMelasuperDijet
 
float auxiliaryProb
 
MELACandidatemelaCand
 
MelaPConstantpAvgSmooth_JHUGen_JQCD_HSMHiggs [TVar::nFermionMassRemovalSchemes-1]
 
MelaPConstantpAvgSmooth_JHUGen_JJQCD_HSMHiggs [TVar::nFermionMassRemovalSchemes-1]
 
MelaPConstantpAvgSmooth_JHUGen_JJVBF_HSMHiggs [TVar::nFermionMassRemovalSchemes-1]
 
MelaPConstantpAvgSmooth_JHUGen_Had_ZH_HSMHiggs [TVar::nFermionMassRemovalSchemes-1]
 
MelaPConstantpAvgSmooth_JHUGen_Had_WH_HSMHiggs [TVar::nFermionMassRemovalSchemes-1]
 
MelaPConstantpAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu
 
MelaPConstantpAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e
 
MelaPConstantpAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_HSMHiggs_4e
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4mu
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4e
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_S_HSMHiggs_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4mu
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4e
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4mu
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4e
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_S_HSMHiggs_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_ZZQQB_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_JJVBF_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_Had_ZH_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_Had_WH_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_JJQCD_bkgZZ_4mu
 
MelaPConstantpAvgSmooth_MCFM_JJQCD_bkgZZ_4e
 
MelaPConstantpAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e
 
MelaPConstantpAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q
 

Detailed Description

Definition at line 48 of file Mela.h.

Constructor & Destructor Documentation

◆ Mela() [1/2]

Mela::Mela ( double  LHCsqrts_ = 13.,
double  mh_ = 125.,
TVar::VerbosityLevel  verbosity_ = TVar::ERROR 
)

the MELA constructor

Parameters
[in]LHCsqrts_The luminosity of your collider in TeV. Default is LHC at 13 TeV.
[in]mh_The mass of the Higgs in GeV. Default is 125 GeV
[in]verbosity_The verbosity of MELA that you desire, as defined in TVar::ERROR

Definition at line 94 of file Mela.cc.

98  :
99  melaRandomNumber(35797),
100  LHCsqrts(LHCsqrts_),
101  myVerbosity_(verbosity_),
102  ZZME(0),
103  auxiliaryProb(0.),
104  melaCand(0)
105 {
106  this->printLogo();
107  if (myVerbosity_>=TVar::DEBUG) MELAout << "Start Mela constructor" << endl;
108  build(mh_);
109  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela constructor" << endl;
110 }

◆ Mela() [2/2]

Mela::Mela ( const Mela other)

Copy constructor for MELA.

Parameters
[in]otheranother MELA instance

Definition at line 111 of file Mela.cc.

111  :
112 melaRandomNumber(35797),
113 LHCsqrts(other.LHCsqrts),
115 ZZME(0),
116 auxiliaryProb(0.),
117 melaCand(0)
118 {
119  double mh_ = other.ZZME->get_PrimaryHiggsMass();
120  build(mh_);
121 }

◆ ~Mela()

Mela::~Mela ( )

MELA destructor.

Definition at line 122 of file Mela.cc.

122  {
123  if (myVerbosity_>=TVar::DEBUG) MELAout << "Begin Mela destructor" << endl;
124 
125  //setRemoveLeptonMasses(false); // Use Run 1 scheme for not removing lepton masses. Notice the switch itself is defined as an extern, so it has to be set to default value at the destructor!
126  setRemoveLeptonMasses(true); // Use Run 2 scheme for removing lepton masses. Notice the switch itself is defined as an extern, so it has to be set to default value at the destructor!
127 
128  // Delete the derived RooFit objects first...
129  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying analytical PDFs" << endl;
130  delete ggSpin0Model;
131  delete spin1Model;
132  delete spin2Model;
133  delete qqZZmodel;
134  // ...then delete the observables.
135  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying analytical PDFs observables" << endl;
136  delete mzz_rrv;
137  delete z1mass_rrv;
138  delete z2mass_rrv;
139  delete costhetastar_rrv;
140  delete costheta1_rrv;
141  delete costheta2_rrv;
142  delete phi_rrv;
143  delete phi1_rrv;
144  delete Y_rrv;
145  delete upFrac_rrv;
146 
147  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying SuperDijetMELA" << endl;
148  delete superDijet;
149  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying SuperMELA" << endl;
150  delete super;
151  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying ZZME" << endl;
152  delete ZZME;
153 
154  // Delete ME constant handles
155  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying PConstant handles" << endl;
157 
158  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela destructor" << endl;
159 }

Member Function Documentation

◆ appendTopCandidate()

void Mela::appendTopCandidate ( SimpleParticleCollection_t TopDaughters)

Adds a top quark as a MELA candidate.

See also
Wrapper for ZZMatrixElement::append_TopCandidate, which is a wrapper for TEvtProb::AppendTopCandidate
Parameters
[in]TopDaughtersA SimpleParticleCollection_t of the top's daughters, or decay products

Definition at line 363 of file Mela.cc.

363 { ZZME->append_TopCandidate(TopDaughters); }

◆ build()

void Mela::build ( double  mh_)

This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor.

Parameters
mh_This is the mass of the Higgs in GeV

Definition at line 175 of file Mela.cc.

175  {
176  if (myVerbosity_>=TVar::DEBUG) MELAout << "Start Mela::build" << endl;
177  //setRemoveLeptonMasses(false); // Use Run 1 scheme for not removing fermion masses
178  setRemoveLeptonMasses(true); // Use Run 2 scheme for removing fermion masses to compute MEs that expect massless fermions properly
179 
180  const double maxSqrts = 8.;
181 
182  // Create symlinks to the required files, if these are not already present (do nothing otherwise)
183  if (myVerbosity_>=TVar::DEBUG) MELAout << "Create symlinks to the required files if these are not already present:" << endl;
184 
185  const string MELAPKGPATH = TVar::GetMELAPath();
186  if (myVerbosity_>=TVar::DEBUG) MELAout << "\t- MELA package path: " << MELAPKGPATH << endl;
187 
188  const string mcfmWarning = MELAPKGPATH + "data/ffwarn.dat"; symlink(mcfmWarning.c_str(), "ffwarn.dat");
189  const string mcfm_brsm_o = MELAPKGPATH + "data/br.sm1"; symlink(mcfm_brsm_o.c_str(), "br.sm1");
190  const string mcfm_brsm_t = MELAPKGPATH + "data/br.sm2"; symlink(mcfm_brsm_t.c_str(), "br.sm2");
191  const string mcfmInput1 = MELAPKGPATH + "data/input.DAT"; symlink(mcfmInput1.c_str(), "input.DAT");
192  const string mcfmInput2 = MELAPKGPATH + "data/process.DAT"; symlink(mcfmInput2.c_str(), "process.DAT");
193  if (myVerbosity_>=TVar::DEBUG) MELAout << "\t- MCFM symlinks are done" << endl;
194  mkdir("Pdfdata", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
195  const string mcfmInput3 = MELAPKGPATH + "data/Pdfdata/cteq6l1.tbl"; symlink(mcfmInput3.c_str(), "Pdfdata/cteq6l1.tbl");
196  const string mcfmInput4 = MELAPKGPATH + "data/Pdfdata/cteq6l.tbl"; symlink(mcfmInput4.c_str(), "Pdfdata/cteq6l.tbl");
197  if (myVerbosity_>=TVar::DEBUG) MELAout << "\t- PDF symlinks are done" << endl;
198 
199  if (myVerbosity_>=TVar::DEBUG) MELAout << "Create variables used in anaMELA" << endl;
200  mzz_rrv = new RooRealVar("mzz", "m_{ZZ}", mh_, 0., 1000.);
201  z1mass_rrv = new RooRealVar("z1mass", "m_{Z1}", 0., 160.);
202  z2mass_rrv = new RooRealVar("z2mass", "m_{Z2}", 0., 200.);
203  costhetastar_rrv = new RooRealVar("costhetastar", "cos#theta^{*}", -1., 1.);
204  costheta1_rrv = new RooRealVar("costheta1", "cos#theta_{1}", -1., 1.);
205  costheta2_rrv = new RooRealVar("costheta2", "cos#theta_{2}", -1., 1.);
206  phi_rrv= new RooRealVar("phi", "#Phi", -TMath::Pi(), TMath::Pi());
207  phi1_rrv= new RooRealVar("phi1", "#Phi_{1}", -TMath::Pi(), TMath::Pi());
208  Y_rrv = new RooRealVar("Yzz", "#Y_{ZZ}", 0, -4, 4);
209  upFrac_rrv = new RooRealVar("upFrac", "fraction up-quarks", .5, 0., 1.);
210 
211  RooSpin::modelMeasurables measurables_;
212  measurables_.h1 = costheta1_rrv;
213  measurables_.h2 = costheta2_rrv;
214  measurables_.Phi = phi_rrv;
215  measurables_.m1 = z1mass_rrv;
216  measurables_.m2 = z2mass_rrv;
217  measurables_.m12 = mzz_rrv;
218  measurables_.hs = costhetastar_rrv;
219  measurables_.Phi1 = phi1_rrv;
220  measurables_.Y = Y_rrv;
221 
222  if (myVerbosity_>=TVar::DEBUG) MELAout << "Create anaMELA PDF factories" << endl;
223  ggSpin0Model = new ScalarPdfFactory_HVV(measurables_, false, RooSpin::kVdecayType_Zll, RooSpin::kVdecayType_Zll); // RooSpin::kVdecayType_Zll,RooSpin::kVdecayType_Zll==ZZ4l
227 
228  if (myVerbosity_>=TVar::DEBUG) MELAout << "Paths for ZZMatrixElement" << endl;
229  const string path_HiggsWidthFile = MELAPKGPATH + "data/HiggsTotalWidth_YR3.txt";
230  if (myVerbosity_>=TVar::DEBUG) MELAout << "\t- Cross section/width file: " << path_HiggsWidthFile << endl;
231  const string path_nnpdf = MELAPKGPATH + "data/Pdfdata/NNPDF30_lo_as_0130.LHgrid";
232  char path_nnpdf_c[] = "Pdfdata/NNPDF30_lo_as_0130.LHgrid";
233  int pdfmember = 0;
234  if (myVerbosity_>=TVar::DEBUG) MELAout << "\t- Linking NNPDF path " << path_nnpdf.c_str() << " -> " << path_nnpdf_c << endl;
235  symlink(path_nnpdf.c_str(), path_nnpdf_c);
236  if (myVerbosity_>=TVar::DEBUG) MELAout << "Start ZZMatrixElement" << endl;
237  ZZME = new ZZMatrixElement(path_nnpdf_c, pdfmember, path_HiggsWidthFile.substr(0, path_HiggsWidthFile.length()-23).c_str(), 1000.*LHCsqrts/2., myVerbosity_);
238  if (myVerbosity_>=TVar::DEBUG) MELAout << "Set ZZMatrixElement masses" << endl;
240  setMelaHiggsMass(mh_, 0); setMelaHiggsMass(-1., 1);
241  setMelaHiggsWidth(-1., 0); setMelaHiggsWidth(-1., 1);
243  setCandidateDecayMode(TVar::CandidateDecay_ZZ); // Default decay mode is ZZ at the start
244 
245 
246  /***** CONSTANTS FOR MATRIX ELEMENTS *****/
248 
249 
250  /***** SuperMELA *****/
251  // Deactivate generation messages
252  RooMsgService::instance().getStream(1).removeTopic(NumIntegration);
253  RooMsgService::instance().setStreamStatus(1, kFALSE);
254  RooMsgService::instance().setStreamStatus(0, kFALSE);// silence also the error messages, but should really be looked at.
255 
256  if (myVerbosity_>=TVar::DEBUG) MELAout << "Start superMELA" << endl;
257  int superMELA_LHCsqrts = LHCsqrts;
258  if (superMELA_LHCsqrts > maxSqrts) superMELA_LHCsqrts = maxSqrts;
259  super = new SuperMELA(mh_, "4mu", superMELA_LHCsqrts); // preliminary intialization, we adjust the flavor later
260  char cardpath[500];
261  sprintf(cardpath, "data/CombinationInputs/SM_inputs_%dTeV/inputs_4mu.txt", superMELA_LHCsqrts);
262  string cardfile = MELAPKGPATH + cardpath;
263  super->SetPathToCards(cardfile.substr(0, cardfile.length()-14).c_str());
265  super->init();
266 
267 
268  /***** SuperDijetMela *****/
269  float superDijetSqrts = LHCsqrts;
270  if (superDijetSqrts<13.) superDijetSqrts=13.; // Dijet resolution does not exist for 7 or 8 TeV
271  superDijet = new SuperDijetMela(superDijetSqrts, myVerbosity_);
272 
273  // Initialize the couplings to 0 and end Mela constructor
275  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela::build" << endl;
276 }

◆ calculate4Momentum()

std::vector< TLorentzVector > Mela::calculate4Momentum ( double  Mx,
double  M1,
double  M2,
double  theta,
double  theta1,
double  theta2,
double  Phi1,
double  Phi 
)

Definition at line 524 of file Mela.cc.

524  {
525  return ZZME->Calculate4Momentum(Mx, M1, M2, theta, theta1, theta2, Phi1, Phi);
526 }

◆ compute4FermionWeight()

void Mela::compute4FermionWeight ( float &  w)

Definition at line 1807 of file Mela.cc.

1807  { // Lepton interference using JHUGen
1808  reset_PAux();
1809 
1811  if (melaCand){
1812  bool hasFailed=false;
1813  int id_original[2][2];
1814  for (int iv=0; iv<2; iv++){
1815  MELAParticle* Vi = melaCand->getSortedV(iv);
1816  int ndau=Vi->getNDaughters();
1817  if (ndau!=2 || !(PDGHelpers::isAZBoson(Vi->id) || PDGHelpers::isAPhoton(Vi->id))){ w=1; hasFailed=true; break; } // Veto WW, ZG, GG
1818  for (int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->getDaughter(ivd)->id;
1819  }
1820  if (
1821  !PDGHelpers::isALepton(id_original[0][0])
1822  ||
1823  !PDGHelpers::isALepton(id_original[0][1])
1824  ||
1825  !PDGHelpers::isALepton(id_original[1][0])
1826  ||
1827  !PDGHelpers::isALepton(id_original[1][1])
1828  ){
1829  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeWeight: Function is not implemented for decay states other than 4l/2l2l." << endl;
1830  w=0;
1831  hasFailed=true;
1832  }
1833  /*
1834  if (
1835  (id_original[0][0]==0 && id_original[0][1]==0)
1836  ||
1837  (id_original[1][0]==0 && id_original[1][1]==0)
1838  ){ // Return 1 if any pairs of quarks are unknown
1839  w=1;
1840  hasFailed=true;
1841  }
1842  */
1843 
1844  if (!hasFailed){
1845  float dXsec_HZZ_JHU, dXsec_HZZ_JHU_interf; // temporary prob
1846 
1847  // Calculate dXsec ratio by directly modifying the candidate
1848  computeP(dXsec_HZZ_JHU, false);
1849  for (int ivd=0; ivd<2; ivd++) melaCand->getSortedV(1)->getDaughter(ivd)->id=id_original[0][0]*(1-2*ivd);
1850  computeP(dXsec_HZZ_JHU_interf, false);
1851  for (int ivd=0; ivd<2; ivd++) melaCand->getSortedV(1)->getDaughter(ivd)->id=id_original[1][ivd];
1852 
1853  w = dXsec_HZZ_JHU_interf / dXsec_HZZ_JHU;
1854  // protect against anomalously large weights
1855  if (w>5.) w=25./w;
1856  }
1857  }
1858 
1860  reset_CandRef();
1861 }

◆ computeD_CP()

void Mela::computeD_CP ( TVar::MatrixElement  myME,
TVar::Process  myType,
float &  prob 
)

computes the value of D_CP

See also
calls Mela::computeP_selfDspin0
Parameters
[in]myMEthe matrix element you want to use, set as a TVar::MatrixElement
[in]myTypethe process you want to use, set as a TVar::Process
[out]probThis is the value of the output probability - edited by reference

Definition at line 1339 of file Mela.cc.

1343  {
1344  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeD_CP" << endl;
1345  double coupl_mix[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1346  double coupl_1[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1347  double coupl_2[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1348 
1349  switch (myType){
1350  case TVar::D_g1g4:
1351  coupl_mix[0][0][0] =1.;
1352  coupl_mix[0][3][0] =2.521;
1353  coupl_1[0][0][0] =1.;
1354  coupl_2[0][3][0] =2.521;
1355  break;
1356  case TVar::D_g1g4_pi_2:
1357  coupl_mix[0][0][0] =1.;
1358  coupl_mix[0][3][1] =2.521;
1359  coupl_1[0][0][0] =1.;
1360  coupl_2[0][3][1] =2.521;
1361  break;
1362  case TVar::D_g1g2:
1363  coupl_mix[0][0][0] =1.;
1364  coupl_mix[0][1][0] = 1.638;
1365  coupl_1[0][0][0] =1.;
1366  coupl_2[0][1][0] = 1.638;
1367  break;
1368  case TVar::D_g1g2_pi_2:
1369  coupl_mix[0][0][0] =1.;
1370  coupl_mix[0][1][1] = 1.638;
1371  coupl_1[0][0][0] =1.;
1372  coupl_2[0][1][1] = 1.638;
1373  break;
1374  case TVar::D_g1g1prime2:
1375  coupl_mix[0][0][0] =1.;
1376  coupl_mix[0][11][0] = 12046.01;
1377  coupl_1[0][0][0] =1.;
1378  coupl_2[0][11][0] = 12046.01;
1379  break;
1380  case TVar::D_zzzg:
1381  coupl_mix[0][0][0] =1.;
1382  coupl_mix[0][4][0] = 0.0688;
1383  coupl_1[0][0][0] =1.;
1384  coupl_2[0][4][0] = 0.0688;
1385  break;
1386  case TVar::D_zzgg:
1387  coupl_mix[0][0][0] =1.;
1388  coupl_mix[0][7][0] = -0.0898;
1389  coupl_1[0][0][0] =1.;
1390  coupl_2[0][7][0] = -0.0898;
1391  break;
1392  case TVar::D_zzzg_PS:
1393  coupl_mix[0][0][0] =1.;
1394  coupl_mix[0][6][0] = 0.0855;
1395  coupl_1[0][0][0] =1.;
1396  coupl_2[0][6][0] = 0.0855;
1397  break;
1398  case TVar::D_zzgg_PS:
1399  coupl_mix[0][0][0] =1.;
1400  coupl_mix[0][9][0] = -0.0907;
1401  coupl_1[0][0][0] =1.;
1402  coupl_2[0][9][0] = -0.0907;
1403  break;
1404  case TVar::D_zzzg_g1prime2:
1405  coupl_mix[0][0][0] =1.;
1406  coupl_mix[0][30][0] = -7591.914;
1407  coupl_1[0][0][0] =1.;
1408  coupl_2[0][30][0] = -7591.914;
1409  break;
1411  coupl_mix[0][0][0] =1.;
1412  coupl_mix[0][30][1] = -7591.914;
1413  coupl_1[0][0][0] =1.;
1414  coupl_2[0][30][1] = -7591.914;
1415  break;
1416  default:
1417  MELAout <<"Error: Not supported!"<<endl;
1418  }
1419 
1420  float pMix, p1, p2;
1422  computeP_selfDspin0(coupl_mix, pMix, true);
1423  computeP_selfDspin0(coupl_1, p1, true);
1424  computeP_selfDspin0(coupl_2, p2, true);
1425  prob = pMix- p1- p2;
1426  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeD_CP" << endl;
1427 }

◆ computeD_gg()

void Mela::computeD_gg ( TVar::MatrixElement  myME,
TVar::Process  myType,
float &  prob 
)

Definition at line 1934 of file Mela.cc.

1938  {
1939  prob=-99;
1940  if (myME != TVar::MCFM || myType != TVar::D_gg10){
1941  MELAout << "Only support MCFM and D_gg10"<<endl;
1942  return;
1943  }
1944 
1946  if (melaCand){
1947  float bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, bkgHZZ_prob_noscale;
1948  float ggScale=0;
1949  setProcess(TVar::bkgZZ, myME, TVar::ZZGG); computeP(ggzz_VAMCFM_noscale, false);
1950  setProcess(TVar::HSMHiggs, myME, TVar::ZZGG); computeP(ggHZZ_prob_pure_noscale, false);
1951  setProcess(TVar::bkgZZ_SMHiggs, myME, TVar::ZZGG); computeP(bkgHZZ_prob_noscale, false); setConstant(); getConstant(ggScale);
1952  if (ggScale>0.){
1953  bkgHZZ_prob_noscale /= ggScale;
1954  ggHZZ_prob_pure_noscale /= ggScale;
1955  ggzz_VAMCFM_noscale /= ggScale;
1956  }
1957  ggHZZ_prob_int_noscale = bkgHZZ_prob_noscale - ggHZZ_prob_pure_noscale - ggzz_VAMCFM_noscale;
1958 
1959  setProcess(TVar::bkgZZ, myME, TVar::ZZQQB); computeP(bkg_VAMCFM, true);
1960 
1961  constructDggr(bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, 10., prob); // Use 10 for Dgg10
1962  }
1963 
1965  reset_CandRef();
1966 }

◆ computeDecayAngles()

void Mela::computeDecayAngles ( float &  qH,
float &  m1,
float &  m2,
float &  costheta1,
float &  costheta2,
float &  Phi,
float &  costhetastar,
float &  Phi1 
)

computes the decay angles for gg -> H -> ZZ as defined in Figure 1 of arXiv:1001.3396

See also
Calls TUtil::computeAngles to fully calculate angles
Use TUtil::computeAngles if you would like to calculate the angles through inputting your own 4-vectors and quantities rather than through the MELA event loop
Attention
This function requires there to be an input event already defined
Warning
This function will edit all values inplace. Every value is technically an output.
The selection for m1 and m2 are based upon which of the leptons is closer to the z mass. $m_1 \leq m_2$.
Parameters
[out]qHThe mass of the "Higgs" as reconstructed by the constituent 4 leptons
[out]m1The mass of the first decay particle as reconstructed by 2 of the leptons
[out]m2The mass of the first decay particle as reconstructed by 2 of the leptons
[out]costheta1$\cos(\theta_1)$
[out]costheta2$\cos(\theta_2)$
[out]Phi$\phi$
[out]costhetastar$\cos(\theta*)$
[out]Phi1$\phi_1$

Definition at line 558 of file Mela.cc.

567  {
569  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeDecayAngles" << endl;
570 
571  qH=0; m1=0; m2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
572 
574  if (melaCand){
575  TLorentzVector const nullVector(0, 0, 0, 0);
576 
577  int partIncCode=TVar::kNoAssociated; // Only use associated partons in the pT=0 frame boost
578  simple_event_record mela_event;
579  mela_event.AssociationCode=partIncCode;
581  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
582 
583  if (daughters.size()<2 || daughters.size()>4 || mela_event.intermediateVid.size()!=2){
584  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeDecayAngles: Number of daughters " << daughters.size() << " or number of intermediate Vs " << mela_event.intermediateVid << " not supported!" << endl;
585  return;
586  }
587 
588  // Make sure there are exactly 4 daughters, null or not
589  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
590  else if (daughters.size()==2){
591  daughters.push_back(SimpleParticle_t(-9000, nullVector));
592  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
593  }
594  qH = (daughters.at(0).second+daughters.at(1).second+daughters.at(2).second+daughters.at(3).second).M();
595  m1 = (daughters.at(0).second+daughters.at(1).second).M();
596  m2 = (daughters.at(2).second+daughters.at(3).second).M();
597 
599  costhetastar, costheta1, costheta2, Phi, Phi1,
600  daughters.at(0).second, daughters.at(0).first,
601  daughters.at(1).second, daughters.at(1).first,
602  daughters.at(2).second, daughters.at(2).first,
603  daughters.at(3).second, daughters.at(3).first
604  );
605 
606  // Protect against NaN
607  if (!std::isfinite(costhetastar)) costhetastar=0;
608  if (!std::isfinite(costheta1)) costheta1=0;
609  if (!std::isfinite(costheta2)) costheta2=0;
610  if (!std::isfinite(Phi)) Phi=0;
611  if (!std::isfinite(Phi1)) Phi1=0;
612  }
613  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeDecayAngles: No possible melaCand in TEvtProb to compute angles." << endl;
614 
615  reset_CandRef();
616  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeDecayAngles" << endl;
617 }

◆ computeDijetConvBW()

void Mela::computeDijetConvBW ( float &  prob,
bool  useTrueBW = false 
)

Definition at line 2792 of file Mela.cc.

2792  {
2794  prob = superDijet->GetConvBW(myProduction_, melaCand, useTrueBW);
2795  reset_CandRef();
2796 }

◆ computeP()

void Mela::computeP ( float &  prob,
bool  useConstant = true 
)

Computes the probability for the probabilities on the decay side of things using the constituent daughter 4 vectors along with any jets that could exist.

See also
Mela::computeDecayAngles
Attention
All matrix elements (JHUGen, MCFM, or analytic), productions, and processes can be used here
Parameters
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1183 of file Mela.cc.

1186  {
1187  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeP" << endl;
1188  reset_PAux();
1189 
1191  if (melaCand){
1192  TLorentzVector const nullVector(0, 0, 0, 0);
1193  float mZZ=0, mZ1=0, mZ2=0, costheta1=0, costheta2=0, Phi=0, costhetastar=0, Phi1=0;
1194 
1195  if (myME_ == TVar::ANALYTICAL){
1197  mZZ, mZ1, mZ2,
1198  costheta1, costheta2, Phi,
1199  costhetastar, Phi1
1200  );
1201  costhetastar_rrv->setVal(costhetastar);
1202  costheta1_rrv->setVal(costheta1);
1203  costheta2_rrv->setVal(costheta2);
1204  phi_rrv->setVal(Phi);
1205  phi1_rrv->setVal(Phi1);
1206  z1mass_rrv->setVal(mZ1);
1207  z2mass_rrv->setVal(mZ2);
1208  mzz_rrv->setVal(mZZ);
1209  Y_rrv->setConstant(true); // Just to avoid integrating over this variable unnecessarily
1210 
1211  bool computeAnaMELA = configureAnalyticalPDFs();
1212  if (computeAnaMELA){
1214  RooAbsPdf* integral = (RooAbsPdf*)pdf->createIntegral(RooArgSet(*costhetastar_rrv, *phi1_rrv));
1215  prob = integral->getVal();
1216  delete integral;
1217  }
1218  else prob = pdf->getVal();
1219  }
1220  else if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeP: The specified anaMELA configuration is not valid!" << endl;
1221 
1222  Y_rrv->setConstant(false);
1223  }
1224  else if (myME_ == TVar::JHUGen || myME_ == TVar::MCFM){
1225  setAZffCouplings();
1230  ZZME->computeXS(prob);
1231  }
1232  else{
1234  mZZ, mZ1, mZ2,
1235  costheta1, costheta2, Phi,
1236  costhetastar, Phi1
1237  );
1238 
1239  if (myVerbosity_>=TVar::DEBUG){ // Notify first
1240  MELAout << "Mela::computeP: Condition (myME_ == TVar::MCFM && myProduction_ == TVar::ZZINDEPENDENT && myModel_ == TVar::bkgZZ/WW/ZGamma/ZJJ/GammaGamma)." << endl;
1241  vector<TLorentzVector> pDauVec = calculate4Momentum(mZZ, mZ1, mZ1, acos(costhetastar), acos(costheta1), acos(costheta2), Phi1, Phi);
1242  MELAout
1243  << "\tOriginal mZZ=" << mZZ << " "
1244  << "m1=" << mZ1 << " "
1245  << "m2=" << mZ2 << " "
1246  << "h1=" << costheta1 << " "
1247  << "h2=" << costheta2 << " "
1248  << "Phi=" << Phi << " "
1249  << "hs=" << costhetastar << " "
1250  << "Phi1=" << Phi1 << endl;
1251  MELAout << "\tfor daughters:" << endl;
1252  for (int iv=0; iv<2; iv++){
1253  for (int idau=0; idau<min(2, melaCand->getSortedV(iv)->getNDaughters()); idau++){
1254  MELAout
1255  << "id=" << melaCand->getSortedV(iv)->getDaughter(idau)->id << " "
1256  << "x=" << pDauVec.at(2*iv+idau).X() << " "
1257  << "y=" << pDauVec.at(2*iv+idau).Y() << " "
1258  << "z=" << pDauVec.at(2*iv+idau).Z() << " "
1259  << "t=" << pDauVec.at(2*iv+idau).T() << endl;
1260  }
1261  }
1262 
1263  }
1264 
1265  prob = 0;
1266  int gridsize_hs = 5;
1267  double hs_min = 0; //-1.;
1268  double hs_max = 1;
1269  double hs_step = (hs_max - hs_min) / double(gridsize_hs);
1270 
1271  int gridsize_phi1 = 5;
1272  double phi1_min = 0; //-TMath::Pi();
1273  double phi1_max = TMath::Pi();
1274  double phi1_step = (phi1_max - phi1_min) / double(gridsize_phi1);
1275 
1276  for (int i_hs = 0; i_hs < gridsize_hs + 1; i_hs++){
1277  double hs_val = hs_min + i_hs * hs_step;
1278  for (int i_phi1 = 0; i_phi1 < gridsize_phi1 + 1; i_phi1++){
1279  double phi1_val = phi1_min + i_phi1 * phi1_step;
1280  float temp_prob=0;
1281 
1282  // Get identical 4-vectors
1284  vector<TLorentzVector> pDauVec = calculate4Momentum(mZZ, mZ1, mZ2, acos(hs_val), acos(costheta1), acos(costheta2), phi1_val, Phi);
1285  for (int iv=0; iv<2; iv++){
1286  for (int idau=0; idau<min(2, melaCand->getSortedV(iv)->getNDaughters()); idau++){
1287  SimpleParticle_t tmpPair(melaCand->getSortedV(iv)->getDaughter(idau)->id, pDauVec.at(2*iv+idau));
1288  daughters.push_back(tmpPair);
1289  }
1290  }
1291  if (myVerbosity_>=TVar::DEBUG){ // Summarize the integrated particles
1292  MELAout << "Mela::computeP: hs, Phi1 are now " << hs_val << " " << phi1_val << endl;
1293  unsigned int idau=1;
1294  for (SimpleParticle_t const& tmpPart:daughters){
1295  MELAout << "Dau " << idau << " "
1296  << "id=" << tmpPart.first << " "
1297  << "x=" << tmpPart.second.X() << " "
1298  << "y=" << tmpPart.second.Y() << " "
1299  << "z=" << tmpPart.second.Z() << " "
1300  << "t=" << tmpPart.second.T() << endl;
1301  idau++;
1302  }
1303  }
1304  vector<MELAParticle*> partList_tmp;
1305  vector<MELACandidate*> candList_tmp;
1307  &daughters,
1308  0,
1309  0,
1310  false,
1311  &partList_tmp,
1312  &candList_tmp
1313  );
1314  if (myVerbosity_>=TVar::ERROR && !cand_tmp) MELAerr << "Mela::computeP: Failed to construct temporary candidate!" << endl;
1315  setCurrentCandidate(cand_tmp);
1316  if (myVerbosity_>=TVar::DEBUG && cand_tmp){ MELAout << "Mela::computeP: ZZINDEPENDENT calculation produces candidate:" << endl; TUtil::PrintCandidateSummary(cand_tmp); }
1317  // calculate the ME
1318  ZZME->computeXS(temp_prob);
1319  // Delete the temporary particles
1320  for (MELACandidate* tmpPart:candList_tmp) delete tmpPart; // Only one candidate should really be here
1321  for (MELAParticle* tmpPart:partList_tmp) delete tmpPart;
1323  prob += temp_prob;
1324  }
1325  }
1326  prob = prob / float((gridsize_hs + 1) * (gridsize_phi1 +1));
1327  }
1328  }
1329 
1330  if (useConstant) computeConstant(prob);
1331  }
1332 
1334  reset_CandRef();
1335  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeP" << endl;
1336 }

◆ computeP_selfDspin0()

void Mela::computeP_selfDspin0 ( double  selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2],
float &  prob,
bool  useConstant = true 
)

This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 0.

See also
Mela::computeP, Mela::selfDHqqcoupl, Mela::selfDHggcoupl, Mela::selfDHttcoupl, Mela::selfDHbbcoupl, Mela::selfDHzzcoupl, Mela::selfDHwwcoupl
Warning
I (Mohit Srivastav) would personally avoid using this function, as it obfuscates the couplings you are really using .
It is always a good idea to set couplings yourself so that you know what you're really doing.
Parameters
[in]selfDHvvcoupl_inputan array corresponding to the couplings of Mela::selfDHzzcoupl (between the Higgs and the Z Boson), Mela::selfDHwwcoupl using the indices in TCouplingsBase.hh
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1077 of file Mela.cc.

1081  {
1082  //remove this line, it's here for counting purposes. Zpffcoupl
1083  // Don't set these, and you will get 0.
1084  if (myME_==TVar::JHUGen){
1085  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1086  // JHUGen ME production side is Hqq=1, Hgg=1
1087  selfDHqqcoupl[jh][0][0] = 1.0;
1088  selfDHggcoupl[jh][0][0] = 1.0;
1089  }
1090  }
1091  else if (myME_==TVar::MCFM){
1092  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1093  // MCFM ME production side is Htt=Hbb=1
1094  selfDHttcoupl[jh][0][0] = 1.0;
1095  selfDHbbcoupl[jh][0][0] = 1.0;
1096  }
1097  }
1098  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1099  for (int im=0; im<2; im++){
1100  for (int ic=0; ic<SIZE_HVV; ic++){
1101  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1102  selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1103  }
1104  }
1105  }
1106 
1107  computeP(
1108  prob,
1109  useConstant
1110  );
1111 }

◆ computeP_selfDspin1() [1/2]

void Mela::computeP_selfDspin1 ( double  selfDZqqcoupl_input[SIZE_ZQQ][2],
double  selfDZvvcoupl_input[SIZE_ZVV][2],
float &  prob,
bool  useConstant = true 
)

This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1.

See also
Mela::computeP, Mela::selfDHqqcoupl, Mela::selfDHggcoupl, Mela::selfDHttcoupl, Mela::selfDHbbcoupl, Mela::selfDHzzcoupl, Mela::selfDHwwcoupl
Warning
I (Mohit Srivastav) would personally avoid using this function, as it obfuscates the couplings you are really using .
It is always a good idea to set couplings yourself so that you know what you're really doing.
Parameters
[in]selfDZqqcoupl_inputan array corresponding to the couplings of Mela::selfDZqqcoupl (between the Higgs and quarks) using the indices in TCouplingsBase.hh
[in]selfDZvvcoupl_inputan array corresponding to the couplings of Mela::selfDZvvcoupl (between the Higgs and the Z/W Bosons) using the indices in TCouplingsBase.hh
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1112 of file Mela.cc.

1117  {
1118  for (int im=0; im<2; im++){
1119  for (int ic=0; ic<SIZE_ZQQ; ic++) selfDZqqcoupl[ic][im] = selfDZqqcoupl_input[ic][im];
1120  for (int ic=0; ic<SIZE_ZVV; ic++) selfDZvvcoupl[ic][im] = selfDZvvcoupl_input[ic][im];
1121  }
1122 
1123  computeP(
1124  prob,
1125  useConstant
1126  );
1127 }

◆ computeP_selfDspin1() [2/2]

void Mela::computeP_selfDspin1 ( double  selfDZvvcoupl_input[SIZE_ZVV][2],
float &  prob,
bool  useConstant = true 
)

This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings.

See also
Mela::computeP, Mela::selfDHqqcoupl, Mela::selfDHggcoupl, Mela::selfDHttcoupl, Mela::selfDHbbcoupl, Mela::selfDHzzcoupl, Mela::selfDHwwcoupl
Warning
I (Mohit Srivastav) would personally avoid using this function, as it obfuscates the couplings you are really using .
It is always a good idea to set couplings yourself so that you know what you're really doing.
Parameters
[in]selfDZvvcoupl_inputan array corresponding to the couplings of Mela::selfDZvvcoupl (between the Higgs and the Z/W Bosons) using the indices in TCouplingsBase.hh
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1128 of file Mela.cc.

1132  {
1133  // Initialize the quark_left_right couplings
1134  selfDZqqcoupl[0][0]=1.0;
1135  selfDZqqcoupl[1][0]=1.0;
1136 
1137  for (int im=0; im<2; im++){
1138  for (int ic=0; ic<SIZE_ZVV; ic++) selfDZvvcoupl[ic][im] = selfDZvvcoupl_input[ic][im];
1139  }
1140 
1141  computeP(
1142  prob,
1143  useConstant
1144  );
1145 }

◆ computeP_selfDspin2() [1/2]

void Mela::computeP_selfDspin2 ( double  selfDGggcoupl_input[SIZE_GGG][2],
double  selfDGqqcoupl_input[SIZE_GQQ][2],
double  selfDGvvcoupl_input[SIZE_GVV][2],
float &  prob,
bool  useConstant = true 
)

This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 2.

See also
Mela::computeP, Mela::selfDGggcoupl, Mela::selfDGqqcoupl, Mela::selfDGvvcoupl
Warning
I (Mohit Srivastav) would personally avoid using this function, as it obfuscates the couplings you are really using .
It is always a good idea to set couplings yourself so that you know what you're really doing.
Parameters
[in]selfDGggcoupl_inputan array corresponding to the couplings of Mela::selfDGggcoupl (between the "graviton" and gluons) using the indices in TCouplingsBase.hh
[in]selfDGqqcoupl_inputan array corresponding to the couplings of Mela::selfDGqqcoupl (between the "graviton" and quarks) using the indices in TCouplingsBase.hh
[in]selfDGvvcoupl_inputan array corresponding to the couplings of Mela::selfDGvvcoupl (between the "graviton" and the W/Z bosons) using the indices in TCouplingsBase.hh
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1146 of file Mela.cc.

1152  {
1153  for (int im=0; im<2; im++){
1154  for (int ic=0; ic<SIZE_GGG; ic++) selfDGggcoupl[ic][im] = selfDGggcoupl_input[ic][im];
1155  for (int ic=0; ic<SIZE_GQQ; ic++) selfDGqqcoupl[ic][im] = selfDGqqcoupl_input[ic][im];
1156  for (int ic=0; ic<SIZE_GVV; ic++) selfDGvvcoupl[ic][im] = selfDGvvcoupl_input[ic][im];
1157  }
1158 
1159  computeP(
1160  prob,
1161  useConstant
1162  );
1163 }

◆ computeP_selfDspin2() [2/2]

void Mela::computeP_selfDspin2 ( double  selfDGggcoupl_input[SIZE_GGG][2],
double  selfDGvvcoupl_input[SIZE_GVV][2],
float &  prob,
bool  useConstant = true 
)

This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings.

See also
Mela::computeP, Mela::selfDGggcoupl, Mela::selfDGqqcoupl, Mela::selfDGvvcoupl
Warning
I (Mohit Srivastav) would personally avoid using this function, as it obfuscates the couplings you are really using .
It is always a good idea to set couplings yourself so that you know what you're really doing.
Parameters
[in]selfDGggcoupl_inputan array corresponding to the couplings of Mela::selfDGggcoupl (between the "graviton" and gluons) using the indices in TCouplingsBase.hh
[in]selfDGvvcoupl_inputan array corresponding to the couplings of Mela::selfDGvvcoupl (between the "graviton" and the W/Z bosons) using the indices in TCouplingsBase.hh
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1164 of file Mela.cc.

1169  {
1170  selfDGqqcoupl[0][0]=1.0; // Set these incorrectly, and you see left-right asymmetries in qqG (or nothing)
1171  selfDGqqcoupl[1][0]=1.0;
1172 
1173  for (int im=0; im<2; im++){
1174  for (int ic=0; ic<SIZE_GGG; ic++) selfDGggcoupl[ic][im] = selfDGggcoupl_input[ic][im];
1175  for (int ic=0; ic<SIZE_GVV; ic++) selfDGvvcoupl[ic][im] = selfDGvvcoupl_input[ic][im];
1176  }
1177 
1178  computeP(
1179  prob,
1180  useConstant
1181  );
1182 }

◆ computePM4l()

void Mela::computePM4l ( TVar::SuperMelaSyst  syst,
float &  prob 
)

Definition at line 1864 of file Mela.cc.

1864  {
1865  reset_PAux();
1866  prob=-99;
1867 
1869  if (melaCand){
1870  bool hasFailed=false;
1871  int id_original[2][2];
1872  for (int iv=0; iv<2; iv++){
1873  MELAParticle* Vi = melaCand->getSortedV(iv);
1874  int ndau=Vi->getNDaughters();
1875  if (ndau!=2 || !(PDGHelpers::isAZBoson(Vi->id) || PDGHelpers::isAPhoton(Vi->id))){ hasFailed=true; break; } // Veto WW, ZG, GG
1876  for (int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->getDaughter(ivd)->id;
1877  }
1878 
1879  if (!hasFailed){
1880  if (abs(id_original[0][0])==11 && abs(id_original[1][0])==11 && abs(id_original[0][1])==11 && abs(id_original[1][1])==11) super->SetDecayChannel("4e");
1881  else if (abs(id_original[0][0])==13 && abs(id_original[1][0])==13 && abs(id_original[0][1])==13 && abs(id_original[1][1])==13) super->SetDecayChannel("4mu");
1882  else if (
1883  (abs(id_original[0][0])==11 && abs(id_original[0][1])==11 && abs(id_original[1][0])==13 && abs(id_original[1][1])==13)
1884  ||
1885  (abs(id_original[0][0])==13 && abs(id_original[0][1])==13 && abs(id_original[1][0])==11 && abs(id_original[1][1])==11)
1886  ) super->SetDecayChannel("2e2mu");
1887  else{ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computePM4l: SuperMELA is currently not implemented for decay states other than 4e. 4mu, 2e2mu." << endl; hasFailed=true; }
1888  }
1889 
1890  if (!hasFailed){
1891  double mZZ = melaCand->m();
1892  // currently only supported signal is ggH(0+), only supported background is summed paramterization
1893  if (syst == TVar::SMSyst_None){
1894  std::pair<double, double> m4lP = super->M4lProb(mZZ);
1895  if (myModel_ == TVar::HSMHiggs) prob = m4lP.first;
1896  else if (myModel_ == TVar::bkgZZ) prob = m4lP.second;
1897  }
1898  else{
1899  //systematics for p(m4l)
1900  float mZZtmp=mZZ;
1901  float meanErr=float(super->GetSigShapeSystematic("meanCB"));
1902  float sigmaErr=float(super->GetSigShapeSystematic("sigmaCB"));
1903  float sigmaCB=float(super->GetSigShapeParameter("sigmaCB"));
1904  if (syst == TVar::SMSyst_ScaleUp) mZZtmp = mZZ*(1.0+meanErr);
1905  else if (syst == TVar::SMSyst_ScaleDown) mZZtmp = mZZ*(1.0-meanErr);
1906  else if (syst == TVar::SMSyst_ResUp || syst == TVar::SMSyst_ResDown) mZZtmp=melaRandomNumber.Gaus(mZZ, sigmaErr*sigmaCB);
1907 
1908  std::pair<double, double> m4lP = super->M4lProb(mZZtmp);
1909  if (myModel_ == TVar::HSMHiggs) prob = m4lP.first;
1910  else if (myModel_ == TVar::bkgZZ) prob = m4lP.second;
1911  }
1912  }
1913  }
1914 
1916  reset_CandRef();
1917 }

◆ computeProdDecP() [1/2]

void Mela::computeProdDecP ( double  selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2],
double  selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2],
double  selfDaTQGCcoupl_input[SIZE_ATQGC][2],
double  selfDAZffcoupl_input[SIZE_AZff][2],
float &  prob,
bool  useConstant = true 
)

computes the combined production and decay probability while taking in coupling arrays

Attention
The JHUGen Matrix element is not supported
See also
Calls Mela::computeProdDecP(prob, useConstant)
Mela::selfDHvvcoupl, Mela::selfDHwwcoupl, Mela::selfDaTQGCcoupl, Mela::selfDAZffcoupl
Parameters
[in]selfDHvvcoupl_inputinput for the couplings set in Mela::selfDHvvcoupl
[in]selfDHwwcoupl_inputinput for the couplings set in Mela::selfDHwwcoupl
[in]selfDaTQGCcoupl_inputinput for the couplings set in Mela::selfDaTQGCcoupl
[in]selfDAZffcoupl_inputinput for the couplings set in Mela::selfDAZffcoupl
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1430 of file Mela.cc.

1437  {
1438  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1439  for (int im=0; im<2; im++){
1440  for (int ic=0; ic<SIZE_HVV; ic++){
1441  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1442  selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1443  }
1444  }
1445  }
1446  for (int im=0; im<2; im++){
1447  for (int ic=0; ic<SIZE_ATQGC; ic++) selfDaTQGCcoupl[ic][im] = selfDaTQGCcoupl_input[ic][im];
1448  }
1449  for (int im=0; im<2; im++){
1450  for (int ic=0; ic<SIZE_AZff; ic++) selfDAZffcoupl[ic][im] = selfDAZffcoupl_input[ic][im];
1451  }
1453  prob,
1454  useConstant
1455  );
1456 }

◆ computeProdDecP() [2/2]

void Mela::computeProdDecP ( float &  prob,
bool  useConstant = true 
)

computes the combined production and decay probability, with couplings set beforehand

Attention
The JHUGen Matrix element is not supported
The following production modes are supported using the MCFM Matrix Element (as named in TVar::Production) TVar::Had_WH TVar::Had_ZH TVar::Had_WH_S TVar::Had_ZH_S TVar::Had_WH_TU TVar::Had_ZH_TU TVar::Lep_ZH TVar::Lep_WH TVar::Lep_ZH_S TVar::Lep_WH_S TVar::Lep_ZH_TU TVar::Lep_WH_TU TVar::JJVBF TVar::JJEW TVar::JJEWQCD TVar::JJQCD TVar::JJVBF_S TVar::JJEW_S TVar::JJEWQCD_S TVar::JJQCD_S TVar::JJVBF_TU TVar::JJEW_TU TVar::JJEWQCD_TU TVar::JJQCD_TU
Parameters
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1457 of file Mela.cc.

1460  {
1461  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdDecP" << endl;
1462  reset_PAux();
1464 
1465  bool hasFailed = false;
1466  if (myME_ != TVar::MCFM){
1467  MELAout << "Mela::computeProdDecP ME is not supported for ME " << myME_ << endl;
1468  hasFailed = true;
1469  }
1470  if (
1471  !(
1481  )
1482  ){
1483  MELAout << "Mela::computeProdDecP production mode is not supported for production " << myProduction_ << endl;
1484  hasFailed = true;
1485  }
1486  if (!melaCand) hasFailed=true;
1487  if (hasFailed) prob=0;
1488  else{
1491  ZZME->computeProdXS_VVHVV(prob);
1492  if (useConstant) computeConstant(prob);
1493  }
1494 
1496  reset_CandRef();
1497  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdDecP" << endl;
1498 }

◆ computeProdP() [1/2]

void Mela::computeProdP ( double  selfDHggcoupl_input[SIZE_HGG][2],
double  selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2],
double  selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2],
float &  prob,
bool  useConstant = true 
)

computes Production side probabilities while taking in coupling arrays

Attention
The MCFM Matrix element is not supported
See also
Calls Mela::computeProdP(prob, useConstant)
Mela:selfDHggcoupl, Mela::selfDHvvcoupl, Mela::selfDHwwcoupl
Parameters
[in]selfDHggcoupl_inputinput for the couplings set in Mela::setlfDHggcoupl
[in]selfDHvvcoupl_inputinput for the couplings set in Mela::selfDHvvcoupl
[in]selfDHwwcoupl_inputinput for the couplings set in Mela::selfDHwwcoupl
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1501 of file Mela.cc.

1507  {
1508  for (int im=0; im<2; im++){ for (int ic=0; ic<SIZE_HGG; ic++) selfDHggcoupl[0][ic][im] = selfDHggcoupl_input[ic][im]; }
1509  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1510  for (int im=0; im<2; im++){
1511  for (int ic=0; ic<SIZE_HVV; ic++){
1512  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1513  selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1514  }
1515  }
1516  }
1517  computeProdP(
1518  prob,
1519  useConstant
1520  );
1521 }

◆ computeProdP() [2/2]

void Mela::computeProdP ( float &  prob,
bool  useConstant = true 
)

computes Production side probabilities using couplings set beforehand

Attention
The MCFM Matrix element is not supported
Parameters
[out]probThis is the value of the output probability - edited by reference
[in]useConstantThis turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true.

Definition at line 1522 of file Mela.cc.

1525  {
1526  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP" << endl;
1527  if (myProduction_ == TVar::ttH || myProduction_ == TVar::bbH) computeProdP_ttH(prob, 2, 0, useConstant);
1529  else{
1530  reset_PAux();
1531 
1533  if (melaCand){
1534  TLorentzVector nullFourVector(0, 0, 0, 0);
1535  bool isJet2Fake = false;
1536  MELACandidate* candOriginal = melaCand;
1537 
1538  unsigned int firstJetIndex=0;
1539  TLorentzVector jet1, higgs;
1540  TLorentzVector jet1massless(0, 0, 0, 0);
1541  TLorentzVector jet2massless(0, 0, 0, 0);
1542  higgs=melaCand->p4;
1544  int njets=0;
1545  {
1546  int ip=0;
1547  for (MELAParticle* tmpPart:melaCand->getAssociatedJets()){
1548  if (tmpPart->passSelection){
1549  njets++;
1550  if (njets==1){
1551  firstJetIndex = ip;
1552  jet1 = tmpPart->p4;
1553  }
1554  }
1555  ip++;
1556  }
1557  }
1558  if (njets==1){
1559  TUtil::scaleMomentumToEnergy(jet1, jet1massless);
1560  TUtil::computeFakeJet(jet1massless, higgs, jet2massless);
1561  isJet2Fake=true;
1562 
1563  // Scale jet2massless pz if necessary
1564  const double threshold = 1000.*LHCsqrts/2.;
1565  TLorentzVector pTotal = higgs+jet1massless+jet2massless;
1566  double sysZ = pTotal.Z();
1567  if (fabs(sysZ)>threshold){
1568  double maxpz2 = threshold - higgs.Z() - jet1massless.Z();
1569  if (fabs(maxpz2)>0.){
1570  double ratio = jet2massless.Z()/maxpz2;
1571  double absp=sqrt(pow(jet2massless.Pt(), 2)+pow(jet2massless.Z()*ratio, 2));
1572  if (myVerbosity_>=TVar::INFO) MELAout << "Mela::computeProdP, isJet2Fake=true case: Rescaling pz of fake jet by " << ratio << " and energy = " << absp << "." << endl;
1573  jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), jet2massless.Z()*ratio, absp);
1574  }
1575  else{
1576  if (myVerbosity_>=TVar::INFO) MELAout << "Mela::computeProdP, isJet2Fake=true case: Unable to rescaling pz of fake jet since max(|pz|)<0. Setting to 0 with appropriate energy = pT = " << jet2massless.Pt() << "." << endl;
1577  jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), 0., jet2massless.Pt());
1578  }
1579  }
1580  }
1581  }
1582 
1583  if (isJet2Fake){ // Do the integration
1584  MELACandidate* candCopy = melaCand->shallowCopy();
1585  MELAParticle* firstJet = candCopy->getAssociatedJet(firstJetIndex);
1586  firstJet->p4.SetXYZT(jet1massless.X(), jet1massless.Y(), jet1massless.Z(), jet1massless.T()); // Re-assign momenta of the first jet. Be careful, it changes candOriginal as well!
1587  MELAParticle fakeJet(0, jet2massless); // jet2massless is the unknown jet
1588  candCopy->addAssociatedJet(&fakeJet);
1589  setCurrentCandidate(candCopy);
1590 
1592  ZZME->computeProdXS_JJH(prob); // Higgs + 2 jets: SBF or WBF main probability
1593 
1594  int nGrid=11;
1595  std::vector<double> etaArray;
1596  std::vector<double> pArray;
1597  double eta_max = 10;
1598  if (jet2massless.Pt()>0.) eta_max = max(eta_max, 1.2*fabs(jet2massless.Eta()));
1599  double eta_min = -eta_max;
1600 
1601  for (int iter=0; iter<nGrid; iter++){
1602  float prob_temp=0;
1603 
1604  double jet2temp_eta = ((double)iter)*(eta_max-eta_min) / (((double)nGrid) - 1.) + eta_min;
1605  etaArray.push_back(jet2temp_eta);
1606  double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1607  double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1608  fakeJet.p4.SetZ(jet2temp_pz);
1609  fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1610 
1611  // Skip case with invalid pz
1612  const double threshold = 1000.*LHCsqrts/2.;
1613  TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1614  double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1615  if (fabs(sys)<threshold){
1617  ZZME->computeProdXS_JJH(prob_temp);
1618  }
1619  pArray.push_back((double)prob_temp);
1620  }
1621 
1622  const double grid_precision = 0.15;
1623  int ctr_iter=0;
1624  for (int iG=0; iG<nGrid-1; iG++){ // For each spacing, first compare the average of end points to spline value
1625  if (pArray[iG]==pArray[iG+1]) continue;
1626  if (etaArray[iG]==etaArray[iG+1]) continue;
1627 
1628  ctr_iter++;
1629 
1630  TGraph interpolator(nGrid, etaArray.data(), pArray.data());
1631  double derivative_first = (pArray[1]-pArray[0])/(etaArray[1]-etaArray[0]);
1632  double derivative_last = (pArray[nGrid-1]-pArray[nGrid-2])/(etaArray[nGrid-1]-etaArray[nGrid-2]);
1633  TSpline3 spline("spline", &interpolator, "b1e1", derivative_first, derivative_last);
1634  double x_middle = (etaArray[iG]+etaArray[iG+1])*0.5;
1635  double y_middle = (pArray[iG]+pArray[iG+1])*0.5;
1636  double y_sp = spline.Eval(x_middle);
1637  if (y_sp<0) y_sp = 0;
1638 
1639  std::vector<double>::iterator gridIt;
1640 
1641  if (fabs(y_sp-y_middle)<grid_precision*fabs(y_middle) || fabs(etaArray[iG+1]-etaArray[iG])<1e-3){
1642  gridIt = pArray.begin()+iG+1;
1643  pArray.insert(gridIt, y_sp);
1644  gridIt = etaArray.begin()+iG+1;
1645  etaArray.insert(gridIt, x_middle);
1646  iG++; // Pass to next bin
1647  }
1648  else{
1649  float prob_temp=0;
1650 
1651  double jet2temp_eta = x_middle;
1652  gridIt = etaArray.begin()+iG+1;
1653  etaArray.insert(gridIt, x_middle);
1654  double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1655  double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1656  fakeJet.p4.SetZ(jet2temp_pz);
1657  fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1658 
1659  // Skip case with invalid pz
1660  const double threshold = 1000.*LHCsqrts/2.;
1661  TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1662  double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1663  if (fabs(sys)<threshold){
1665  ZZME->computeProdXS_JJH(prob_temp);
1666  }
1667  gridIt = pArray.begin()+iG+1;
1668  pArray.insert(gridIt, (double)prob_temp);
1669  iG--; // Do not pass to next bin, repeat until precision is achieved.
1670  }
1671  nGrid++;
1672  }
1673 
1674  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::computeProdP: Number of iterations for JVBF eta integration: " << ctr_iter << endl;
1675 
1676  auxiliaryProb = 0;
1677  int iGFirst=0, iGLast=nGrid-1;
1678  for (int iG=1; iG<nGrid; iG++){
1679  if (pArray[iG]>0 && pArray[iG-1]==0){
1680  iGFirst = iG-1;
1681  break;
1682  }
1683  }
1684  for (int iG=nGrid-2; iG>=0; iG--){
1685  if (pArray[iG]>0 && pArray[iG+1]==0){
1686  iGLast = iG+1;
1687  break;
1688  }
1689  }
1690  double dEtaGrid = etaArray[iGLast] - etaArray[iGFirst];
1691  for (int iG=iGFirst; iG<iGLast-1; iG++){
1692  double dEta = etaArray[iG+1] - etaArray[iG];
1693  double sumProb = pArray[iG]+pArray[iG+1];
1694  sumProb *= 0.5;
1695  dEta = dEta/dEtaGrid;
1696  double addProb = sumProb*dEta;
1697  auxiliaryProb += (float)addProb;
1698  }
1699 
1700  firstJet->p4.SetXYZT(jet1.X(), jet1.Y(), jet1.Z(), jet1.T()); // Re-assign momenta of the first jet to original. Be careful, it changes candOriginal as well!
1701  delete candCopy; // Delete the shallow copy
1702  setCurrentCandidate(candOriginal);
1704  if (myVerbosity_>=TVar::DEBUG){
1705  if (melaCand!=candOriginal) MELAerr << "Mela::computeProdP: melaCand!=candOriginal at the end of the fake jet scenario!" << endl;
1706  }
1707 
1708  if (fabs(prob)>0) auxiliaryProb /= prob;
1709  }
1710  else{
1713  ZZME->computeProdXS_JJH(prob); // Higgs + 2 jets: SBF or WBF
1714  }
1715  else if (myProduction_ == TVar::JQCD){
1716  // No anomalous couplings are implemented in HJ
1717  ZZME->computeProdXS_JH(prob); // Higgs + 1 jet; only SM is supported for now.
1718  }
1719  }
1720  if (useConstant) computeConstant(prob);
1721  }
1722 
1724  reset_CandRef();
1725  }
1726  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP" << endl;
1727 }

◆ computeProdP_ttH()

void Mela::computeProdP_ttH ( float &  prob,
int  topProcess = 2,
int  topDecay = 0,
bool  useConstant = true 
)

Definition at line 1778 of file Mela.cc.

1783  {
1784  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP_ttH" << endl;
1785  reset_PAux();
1786 
1788  if (melaCand){
1790  ZZME->computeProdXS_ttH(prob,topProcess, topDecay);
1791  if (useConstant) computeConstant(prob);
1792  }
1793 
1795  reset_CandRef();
1796  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP_ttH" << endl;
1797 }

◆ computeProdP_VH() [1/2]

void Mela::computeProdP_VH ( double  selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2],
float &  prob,
bool  includeHiggsDecay = false,
bool  useConstant = true 
)

Definition at line 1730 of file Mela.cc.

1735  {
1736  // Dedicated function for VH ME
1737  selfDHggcoupl[0][0][0] = 1.0; // Don't set this, and you might get 0 in the future for ggVH.
1738  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1739  for (int im=0; im<2; im++){
1740  for (int ic=0; ic<SIZE_HVV; ic++){
1741  //remove this line, it's here for counting purposes. Zpffcoupl
1742  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1743  selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1744  }
1745  }
1746  }
1747 
1749  prob,
1750  includeHiggsDecay,
1751  useConstant
1752  );
1753 }

◆ computeProdP_VH() [2/2]

void Mela::computeProdP_VH ( float &  prob,
bool  includeHiggsDecay = false,
bool  useConstant = true 
)

Definition at line 1754 of file Mela.cc.

1758  {
1759  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP_VH" << endl;
1760  reset_PAux();
1761 
1763  if (melaCand){
1766  ZZME->computeProdXS_VH(prob, includeHiggsDecay); // VH
1767 
1768  if (useConstant) computeConstant(prob);
1769  }
1770  }
1771 
1773  reset_CandRef();
1774  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP_VH" << endl;
1775 }

◆ computeTTHAngles()

void Mela::computeTTHAngles ( int  topDecay,
float &  mT1,
float &  mW1,
float &  mT2,
float &  mW2,
float &  costheta1,
float &  costheta2,
float &  Phi,
float &  costhetastar,
float &  Phi1,
float &  hbb,
float &  hWW,
float &  Phibb,
float &  Phi1bb,
float &  hWplusf,
float &  PhiWplusf,
float &  hWminusf,
float &  PhiWminusf 
)

Definition at line 895 of file Mela.cc.

923  {
925  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles" << endl;
926 
927  mT1=mT2=mW1=mW2
928  =costheta1=costheta2=Phi=costhetastar=Phi1
929  =hbb=hWW=Phibb=Phi1bb
930  =hWplusf=PhiWplusf
931  =hWminusf=PhiWminusf=0;
932 
934  if (melaCand){
935  TLorentzVector const nullVector(0, 0, 0, 0);
936 
937  int partIncCode;
938  int nRequested_Tops=1;
939  int nRequested_Antitops=1;
940  if (topDecay>0) partIncCode=TVar::kUseAssociated_UnstableTops; // Look for unstable tops
941  else partIncCode=TVar::kUseAssociated_StableTops; // Look for stable tops
942 
943  simple_event_record mela_event;
944  mela_event.AssociationCode=partIncCode;
945  mela_event.nRequested_Tops=nRequested_Tops;
946  mela_event.nRequested_Antitops=nRequested_Antitops;
948  SimpleParticleCollection_t& mothers = mela_event.pMothers;
949  //SimpleParticleCollection_t& aparts = mela_event.pAssociated;
950  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
951 
952  SimpleParticleCollection_t topDaughters; topDaughters.reserve(3);
953  SimpleParticleCollection_t antitopDaughters; antitopDaughters.reserve(3);
954 
955  if (topDecay>0){
956  // Daughters are assumed to have been ordered as b, Wf, Wfb already.
957  for (unsigned int itd=0; itd<mela_event.pTopDaughters.at(0).size(); itd++) topDaughters.push_back(mela_event.pTopDaughters.at(0).at(itd));
958  for (unsigned int itd=0; itd<mela_event.pAntitopDaughters.at(0).size(); itd++) antitopDaughters.push_back(mela_event.pAntitopDaughters.at(0).at(itd));
959  }
960  else{
961  for (unsigned int itop=0; itop<mela_event.pStableTops.size(); itop++) topDaughters.push_back(mela_event.pStableTops.at(itop));
962  for (unsigned int itop=0; itop<mela_event.pStableAntitops.size(); itop++) antitopDaughters.push_back(mela_event.pStableAntitops.at(itop));
963  }
964 
965  if (topDecay==0 && (mela_event.pStableTops.size()<1 || mela_event.pStableAntitops.size()<1)){
967  << "TUtil::TTHiggsMatEl: Number of stable tops (" << mela_event.pStableTops.size() << ")"
968  << " and number of stable antitops (" << mela_event.pStableAntitops.size() << ")"
969  << " in ttH process are not 1!" << endl;
970  return;
971  }
972  else if (topDecay>0 && (mela_event.pTopDaughters.size()<1 || mela_event.pAntitopDaughters.size()<1)){
974  << "Mela::computeTTHAngles: Number of set of top daughters (" << mela_event.pTopDaughters.size() << ")"
975  << " and number of set of antitop daughters (" << mela_event.pAntitopDaughters.size() << ")"
976  << " in ttH process are not 1!" << endl;
977  return;
978  }
979  else if (topDecay>0 && (mela_event.pTopDaughters.at(0).size()!=3 || mela_event.pAntitopDaughters.at(0).size()!=3)){
981  << "Mela::computeTTHAngles: Number of top daughters (" << mela_event.pTopDaughters.at(0).size() << ")"
982  << " and number of antitop daughters (" << mela_event.pAntitopDaughters.at(0).size() << ")"
983  << " in ttH process are not 3!" << endl;
984  return;
985  }
986  if (topDaughters.size()<3){ for (size_t ip=topDaughters.size(); ip<3; ip++) topDaughters.emplace_back(-9000, nullVector); }
987  if (antitopDaughters.size()<3){ for (size_t ip=antitopDaughters.size(); ip<3; ip++) antitopDaughters.emplace_back(-9000, nullVector); }
988 
989  // Make sure there are exactly 4 daughters, null or not
990  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
991  SimpleParticle_t& firstPart = daughters.at(0);
992  firstPart.first=25;
993  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
994  daughters.erase(daughters.begin()+4, daughters.end());
995  }
996  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
997  else if (daughters.size()==2){
998  daughters.push_back(SimpleParticle_t(-9000, nullVector));
999  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
1000  }
1001 
1002  // Compute masses
1003  {
1004  TLorentzVector pT;
1005  TLorentzVector pW;
1006  for (size_t ip=0; ip<topDaughters.size(); ip++){
1007  if (ip>0){ pT += topDaughters.at(ip).second; pW += topDaughters.at(ip).second; }
1008  else pT += topDaughters.at(ip).second;
1009  }
1010  mT1=pT.M();
1011  mW1=pW.M();
1012  }
1013  {
1014  TLorentzVector pT;
1015  TLorentzVector pW;
1016  for (size_t ip=0; ip<antitopDaughters.size(); ip++){
1017  if (ip>0){ pT += antitopDaughters.at(ip).second; pW += antitopDaughters.at(ip).second; }
1018  else pT += antitopDaughters.at(ip).second;
1019  }
1020  mT2=pT.M();
1021  mW2=pW.M();
1022  }
1023 
1025  costhetastar, costheta1, costheta2, Phi, Phi1,
1026  hbb, hWW, Phibb, Phi1bb,
1027  hWplusf, PhiWplusf,
1028  hWminusf, PhiWminusf,
1029 
1030  daughters.at(0).second, daughters.at(0).first,
1031  daughters.at(1).second, daughters.at(1).first,
1032  daughters.at(2).second, daughters.at(2).first,
1033  daughters.at(3).second, daughters.at(3).first,
1034 
1035  topDaughters.at(0).second, topDaughters.at(0).first,
1036  topDaughters.at(1).second, topDaughters.at(1).first,
1037  topDaughters.at(2).second, topDaughters.at(2).first,
1038 
1039  antitopDaughters.at(0).second, antitopDaughters.at(0).first,
1040  antitopDaughters.at(1).second, antitopDaughters.at(1).first,
1041  antitopDaughters.at(2).second, antitopDaughters.at(2).first,
1042 
1043  &(mothers.at(0).second), mothers.at(0).first,
1044  &(mothers.at(1).second), mothers.at(1).first
1045  );
1046 
1047  // Protect against NaN
1048  if (!std::isfinite(costhetastar)) costhetastar=0;
1049  if (!std::isfinite(costheta1)) costheta1=0;
1050  if (!std::isfinite(costheta2)) costheta2=0;
1051  if (!std::isfinite(Phi)) Phi=0;
1052  if (!std::isfinite(Phi1)) Phi1=0;
1053 
1054  if (!std::isfinite(hbb)) hbb=0;
1055  if (!std::isfinite(hWW)) hWW=0;
1056  if (!std::isfinite(Phibb)) Phibb=0;
1057  if (!std::isfinite(Phi1bb)) Phi1bb=0;
1058 
1059  if (!std::isfinite(hWplusf)) hWplusf=0;
1060  if (!std::isfinite(PhiWplusf)) PhiWplusf=0;
1061 
1062  if (!std::isfinite(hWminusf)) hWminusf=0;
1063  if (!std::isfinite(PhiWminusf)) PhiWminusf=0;
1064 
1066  << "Mela::computeTTHAngles: (h1, h2, Phi, hs, Phi1) = "
1067  << costheta1 << ", " << costheta2 << ", " << Phi << ", "
1068  << costhetastar << ", " << Phi1 << endl;
1069  }
1070  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeTTHAngles: No possible melaCand in TEvtProb to compute angles." << endl;
1071 
1072  reset_CandRef();
1073  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeTTHAngles" << endl;
1074 }

◆ computeVBFAngles()

void Mela::computeVBFAngles ( float &  Q2V1,
float &  Q2V2,
float &  costheta1,
float &  costheta2,
float &  Phi,
float &  costhetastar,
float &  Phi1 
)

computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018

See also
Calls TUtil::computeVBFAngles to fully calculate angles
Use TUtil::computeVBFAngles if you would like to calculate the angles through inputting your own 4-vectors and quantities rather than through the MELA event loop
Attention
This function requires there to be an input event already defined
Warning
This function will edit all values inplace. Every value is technically an output.
The selection for m1 and m2 are based upon which of the leptons is closer to the z mass. $m_1 \leq m_2$.
Parameters
[out]Q2V1The mass of the first decay particle as reconstructed by 2 of the leptons
[out]m2V2The mass of the first decay particle as reconstructed by 2 of the leptons
[out]costheta1$\cos(\theta_1)$
[out]costheta2$\cos(\theta_2)$
[out]Phi$\phi$
[out]costhetastar$\cos(\theta*)$
[out]Phi1$\phi_1$

Definition at line 620 of file Mela.cc.

628  {
630  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles" << endl;
631 
632  Q2V1=0; Q2V2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
633 
635  if (melaCand){
636  TLorentzVector const nullVector(0, 0, 0, 0);
637 
638  int nRequested_AssociatedJets=2;
639  int partIncCode=TVar::kUseAssociated_Jets; // Only use associated partons in the pT=0 frame boost
640  simple_event_record mela_event;
641  mela_event.AssociationCode=partIncCode;
642  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
644  SimpleParticleCollection_t& mothers = mela_event.pMothers;
645  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
646  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
647 
648  if ((int)aparts.size()!=nRequested_AssociatedJets){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVBFAngles: Number of associated particles is not 2!" << endl; return; }
649 
650  // Make sure there are exactly 4 daughters, null or not
651  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
652  SimpleParticle_t& firstPart = daughters.at(0);
653  firstPart.first=25;
654  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
655  daughters.erase(daughters.begin()+4, daughters.end());
656  }
657  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
658  else if (daughters.size()==2){
659  daughters.push_back(SimpleParticle_t(-9000, nullVector));
660  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
661  }
662 
664  MELAout << "Mela::computeVBFAngles: Giving the following particles to TUtil::computeVBFAngles:" << endl;
665  for (unsigned int i=0; i<std::min(daughters.size(), (SimpleParticleCollection_t::size_type) 4); i++) MELAout << daughters.at(i) << endl;
666  for (unsigned int i=0; i<std::min(aparts.size(), (SimpleParticleCollection_t::size_type) 2); i++) MELAout << aparts.at(i) << endl;
667  for (unsigned int i=0; i<std::min(mothers.size(), (SimpleParticleCollection_t::size_type) 2); i++) MELAout << mothers.at(i) << endl;
668  }
669 
671  costhetastar, costheta1, costheta2, Phi, Phi1, Q2V1, Q2V2,
672  daughters.at(0).second, daughters.at(0).first,
673  daughters.at(1).second, daughters.at(1).first,
674  daughters.at(2).second, daughters.at(2).first,
675  daughters.at(3).second, daughters.at(3).first,
676  aparts.at(0).second, aparts.at(0).first,
677  aparts.at(1).second, aparts.at(1).first,
678  &(mothers.at(0).second), mothers.at(0).first,
679  &(mothers.at(1).second), mothers.at(1).first
680  );
681 
682  // Protect against NaN
683  if (!std::isfinite(costhetastar)) costhetastar=0;
684  if (!std::isfinite(costheta1)) costheta1=0;
685  if (!std::isfinite(costheta2)) costheta2=0;
686  if (!std::isfinite(Phi)) Phi=0;
687  if (!std::isfinite(Phi1)) Phi1=0;
688  if (!std::isfinite(Q2V1)) Q2V1=0;
689  if (!std::isfinite(Q2V2)) Q2V2=0;
690 
692  << "Mela::computeVBFAngles: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
693  << Q2V1 << ", " << Q2V2 << ", "
694  << costheta1 << ", " << costheta2 << ", " << Phi << ", "
695  << costhetastar << ", " << Phi1 << endl;
696  }
697  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVBFAngles: No possible melaCand in TEvtProb to compute angles." << endl;
698 
699  reset_CandRef();
700  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVBFAngles" << endl;
701 }

◆ computeVBFAngles_ComplexBoost()

void Mela::computeVBFAngles_ComplexBoost ( float &  Q2V1,
float &  Q2V2,
float &  costheta1_real,
float &  costheta1_imag,
float &  costheta2_real,
float &  costheta2_imag,
float &  Phi,
float &  costhetastar,
float &  Phi1 
)

Definition at line 702 of file Mela.cc.

710  {
712  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles_ComplexBoost" << endl;
713 
714  Q2V1=0; Q2V2=0; costheta1_real=0; costheta2_real=0; costheta1_imag=0; costheta2_imag=0; Phi=0; costhetastar=0; Phi1=0;
715 
717  if (melaCand){
718  TLorentzVector const nullVector(0, 0, 0, 0);
719 
720  int nRequested_AssociatedJets=2;
721  int partIncCode=TVar::kUseAssociated_Jets; // Only use associated partons in the pT=0 frame boost
722  simple_event_record mela_event;
723  mela_event.AssociationCode=partIncCode;
724  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
726  SimpleParticleCollection_t& mothers = mela_event.pMothers;
727  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
728  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
729 
730  if ((int) aparts.size()!=nRequested_AssociatedJets){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVBFAngles_ComplexBoost: Number of associated particles is not 2!" << endl; return; }
731 
732  // Make sure there are exactly 4 daughters, null or not
733  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
734  SimpleParticle_t& firstPart = daughters.at(0);
735  firstPart.first=25;
736  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
737  daughters.erase(daughters.begin()+4, daughters.end());
738  }
739  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
740  else if (daughters.size()==2){
741  daughters.push_back(SimpleParticle_t(-9000, nullVector));
742  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
743  }
744 
746  costhetastar, costheta1_real, costheta1_imag, costheta2_real, costheta2_imag, Phi, Phi1, Q2V1, Q2V2,
747  daughters.at(0).second, daughters.at(0).first,
748  daughters.at(1).second, daughters.at(1).first,
749  daughters.at(2).second, daughters.at(2).first,
750  daughters.at(3).second, daughters.at(3).first,
751  aparts.at(0).second, aparts.at(0).first,
752  aparts.at(1).second, aparts.at(1).first,
753  &(mothers.at(0).second), mothers.at(0).first,
754  &(mothers.at(1).second), mothers.at(1).first
755  );
756 
757  // Protect against NaN
758  if (!std::isfinite(costhetastar)) costhetastar=0;
759  if (!std::isfinite(costheta1_real)) costheta1_real=0;
760  if (!std::isfinite(costheta2_real)) costheta2_real=0;
761  if (!std::isfinite(costheta1_imag)) costheta1_imag=0;
762  if (!std::isfinite(costheta2_imag)) costheta2_imag=0;
763  if (!std::isfinite(Phi)) Phi=0;
764  if (!std::isfinite(Phi1)) Phi1=0;
765  if (!std::isfinite(Q2V1)) Q2V1=0;
766  if (!std::isfinite(Q2V2)) Q2V2=0;
767 
768  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::computeVBFAngles_ComplexBoost: result = " << Q2V1 << ", " << Q2V2
769  << ", " << costheta1_real << " + " << costheta1_imag << "i, "
770  << costheta2_real << " + " << costheta2_imag << "i, " << Phi << ", "
771  << costhetastar << ", " << Phi1 << endl;
773  << "Mela::computeVBFAngles_ComplexBoost: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
774  << Q2V1 << ", " << Q2V2 << ", "
775  << costheta1_real << " + " << costheta1_imag << "i, "
776  << costheta2_real << " + " << costheta2_imag << "i, "
777  << Phi << ", " << costhetastar << ", " << Phi1 << endl;
778  }
779  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVBFAngles_ComplexBoost: No possible melaCand in TEvtProb to compute angles." << endl;
780 
781  reset_CandRef();
782  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVBFAngles_ComplexBoost" << endl;
783 }

◆ computeVHAngles()

void Mela::computeVHAngles ( float &  mVstar,
float &  mV,
float &  costheta1,
float &  costheta2,
float &  Phi,
float &  costhetastar,
float &  Phi1 
)

computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018

See also
Calls TUtil::computeVHAngles to fully calculate angles
Use TUtil::computeVHAngles if you would like to calculate the angles through inputting your own 4-vectors and quantities rather than through the MELA event loop
Attention
This function requires there to be an input event already defined
Warning
This function will edit all values inplace. Every value is technically an output.
The selection for m1 and m2 are based upon which of the leptons is closer to the z mass. $m_1 \leq m_2$.
Parameters
[out]mVstarThe mass of the virtual Z boson in ZH production
[out]mVThe mass of the Z in decay
[out]costheta1$\cos(\theta_1)$
[out]costheta2$\cos(\theta_2)$
[out]Phi$\phi$
[out]costhetastar$\cos(\theta*)$
[out]Phi1$\phi_1$

Definition at line 786 of file Mela.cc.

794  {
796  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVHAngles" << endl;
797 
798  mVstar = 0; mV = 0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
799 
801  if (melaCand){
802  TLorentzVector const nullVector(0, 0, 0, 0);
803 
805  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVHAngles: Production is not supported! " << ProductionName(myProduction_) << endl;
806  return;
807  }
808 
809  int nRequested_AssociatedJets=0;
810  int nRequested_AssociatedLeptons=0;
811  int nRequested_AssociatedPhotons=0;
812  int AssociationVCompatibility=0;
813  int partIncCode=TVar::kNoAssociated; // Just to avoid warnings
814  if (myProduction_ == TVar::Had_ZH || myProduction_ == TVar::Had_WH){ // Only use associated partons
815  partIncCode=TVar::kUseAssociated_Jets;
816  nRequested_AssociatedJets=2;
817  }
818  else if (myProduction_ == TVar::Lep_ZH || myProduction_ == TVar::Lep_WH){ // Only use associated leptons(+)neutrinos
819  partIncCode=TVar::kUseAssociated_Leptons;
820  nRequested_AssociatedLeptons=2;
821  }
822  else if (myProduction_ == TVar::GammaH){ // Only use associated photon
823  partIncCode=TVar::kUseAssociated_Photons;
824  nRequested_AssociatedPhotons=1;
825  }
826  if (myProduction_==TVar::Lep_WH || myProduction_==TVar::Had_WH) AssociationVCompatibility=24;
827  else if (myProduction_==TVar::Lep_ZH || myProduction_==TVar::Had_ZH) AssociationVCompatibility=23;
828  else if (myProduction_==TVar::GammaH) AssociationVCompatibility=22;
829  simple_event_record mela_event;
830  mela_event.AssociationCode=partIncCode;
831  mela_event.AssociationVCompatibility=AssociationVCompatibility;
832  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
833  mela_event.nRequested_AssociatedLeptons=nRequested_AssociatedLeptons;
834  mela_event.nRequested_AssociatedPhotons=nRequested_AssociatedPhotons;
836  SimpleParticleCollection_t& mothers = mela_event.pMothers;
837  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
838  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
839 
840  if ((aparts.size()<(unsigned int) (nRequested_AssociatedJets+nRequested_AssociatedLeptons) && myProduction_!=TVar::GammaH) || (aparts.size()<(unsigned int) nRequested_AssociatedPhotons && myProduction_==TVar::GammaH)){
842  MELAerr << "Mela::computeVHAngles: Number of associated particles (" << aparts.size() << ") is less than ";
843  if (myProduction_!=TVar::GammaH) MELAerr << (nRequested_AssociatedJets+nRequested_AssociatedLeptons);
844  else MELAerr << nRequested_AssociatedPhotons;
845  MELAerr << endl;
846  }
847  return;
848  }
849 
850  // Make sure there are exactly 4 daughters, null or not
851  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
852  SimpleParticle_t& firstPart = daughters.at(0);
853  firstPart.first=25;
854  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
855  daughters.erase(daughters.begin()+4, daughters.end());
856  }
857  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
858  else if (daughters.size()==2){
859  daughters.push_back(SimpleParticle_t(-9000, nullVector));
860  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
861  }
862 
864  costhetastar, costheta1, costheta2, Phi, Phi1, mVstar, mV,
865  daughters.at(0).second, daughters.at(0).first,
866  daughters.at(1).second, daughters.at(1).first,
867  daughters.at(2).second, daughters.at(2).first,
868  daughters.at(3).second, daughters.at(3).first,
869  aparts.at(0).second, aparts.at(0).first,
870  aparts.at(1).second, aparts.at(1).first,
871  &(mothers.at(0).second), mothers.at(0).first,
872  &(mothers.at(1).second), mothers.at(1).first
873  );
874 
875  // Protect against NaN
876  if (!std::isfinite(costhetastar)) costhetastar=0;
877  if (!std::isfinite(costheta1)) costheta1=0;
878  if (!std::isfinite(costheta2)) costheta2=0;
879  if (!std::isfinite(Phi)) Phi=0;
880  if (!std::isfinite(Phi1)) Phi1=0;
881  if (!std::isfinite(mVstar)) mVstar=0;
882  if (!std::isfinite(mV)) mV=0;
883 
885  << "Mela::computeVHAngles: (mVstar, mV, h1, h2, Phi, hs, Phi1) = "
886  << mVstar << ", " << mV << ", " << costheta1 << ", " << costheta2 << ", " << Phi << ", "
887  << costhetastar << ", " << Phi1 << endl;
888  }
889  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVHAngles: No possible melaCand in TEvtProb to compute angles." << endl;
890 
891  reset_CandRef();
892  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVHAngles" << endl;
893 }

◆ getConstant()

void Mela::getConstant ( float &  prob)

This function returns a multiplicative constant to the matrix element calculation.

Attention
if useConstant=True in the following functions the constant will be applied to the matrix element:
  • computeP_selfDspin0
  • computeP_selfDspin1
  • computeP_selfDspin1
  • computeP_selfDspin2
  • computeP_selfDspin2
  • computeP
  • computeProdDecP
  • computeProdDecP
  • computeProdP
  • computeProdP
  • computeProdP_VH
  • computeProdP_VH
  • computeProdP_ttH
  • computePM4l
Parameters
[out]probThis is the number that will be multiplied inplace by the constant.

Definition at line 2168 of file Mela.cc.

2168 { prob = getIORecord()->getMEConst(); }

◆ getCurrentCandidate()

MELACandidate * Mela::getCurrentCandidate ( )

Gets the current MELA top-level (input) candList object.

See also
Wrapper for ZZMatrixElement::get_CurrentCandidate, which is a wrapper for TEvtProb::GetCurrentCandidate, which returns the protected element TEvtProb::melaCand

Definition at line 546 of file Mela.cc.

546 { return ZZME->get_CurrentCandidate(); }

◆ getCurrentCandidateIndex()

int Mela::getCurrentCandidateIndex ( )

Returns the index of the current MELA candidate - returns -1 if there is no candidate to be found.

See also
Wrapper for ZZMatrixElement::get_CurrentCandidateIndex, which is a wrapper for TEvtProb::GetCurrentCandidateIndex

Definition at line 547 of file Mela.cc.

547 { return ZZME->get_CurrentCandidateIndex(); }

◆ getHiggsWidthAtPoleMass()

double Mela::getHiggsWidthAtPoleMass ( double  mass)

Returns the width of the Higgs at a given pole mass as a calculation.

See also
Wrapper for ZZMatrixElement::get_HiggsWidthAtPoleMass, which is a wrapper for TEvtProb::GetHiggsWidthAtPoleMass, which is a wrapper for MELAHXSWidth::HiggsWidth
Attention
This function does an independent calculation for the mass of the Higgs at a certain mass, and does not rely on any other set MELA values
Parameters
[in]massThe value of the Higgs pole mass you want in GeV

Definition at line 517 of file Mela.cc.

517 { return ZZME->get_HiggsWidthAtPoleMass(mass); }

◆ getIORecord()

MelaIO * Mela::getIORecord ( )

Returns the MELAIO object, and by consequence, the entire parton-by-parton matrix element record.

See also
wrapper for ZZMatrixElement::get_IORecord, which is a wrapper for TEvtProb::GetIORecord, which is a wrapper for MelaIO::getRef

Definition at line 544 of file Mela.cc.

544 { return ZZME->get_IORecord(); }

◆ getMeasurablesRRV()

RooSpin::modelMeasurables Mela::getMeasurablesRRV ( )

Returns a RooSpin::modelMeasureables object containing many observable quantities.

Attention
The parameters in question are:
  • $\cos(\theta_1)$
  • $\cos(\theta_2)$
  • $\phi$
  • mass of the first Z boson ($M_{Z1}$)
  • mass of the second Z boson ($M_{Z2}$)
  • mass of the full particle ($M_{ZZ}$)
  • $\cos(\theta*)$
  • $\phi_1$
  • Y
Remarks
these angles are defined in Figure 1 of arXiv:1001.3396 as well as (described more generally) in Figure 1 of arXiv:1208.4018

Definition at line 528 of file Mela.cc.

528  {
529  RooSpin::modelMeasurables measurables;
530  measurables.h1 = costheta1_rrv;
531  measurables.h2 = costheta2_rrv;
532  measurables.Phi = phi_rrv;
533  measurables.m1 = z1mass_rrv;
534  measurables.m2 = z2mass_rrv;
535  measurables.m12 = mzz_rrv;
536  measurables.hs = costhetastar_rrv;
537  measurables.Phi1 = phi1_rrv;
538  measurables.Y = Y_rrv;
539  return measurables;
540 }

◆ getNCandidates()

int Mela::getNCandidates ( )

Returns the size of the candidate list TEvtProb::candList.

See also
Wrapper for ZZMatrixElement::get_NCandidates, which is a wrapper for TEvtProb::GetNCandidates, which returns the size of TEvtProb::candList

Definition at line 548 of file Mela.cc.

548 { return ZZME->get_NCandidates(); }

◆ getPAux()

void Mela::getPAux ( float &  prob)

Definition at line 554 of file Mela.cc.

554 { prob = auxiliaryProb; }

◆ getPrimaryMass()

double Mela::getPrimaryMass ( int  ipart)

A function to get the current primary EW/QCD parameters from MELA.

See also
Wrapper for ZZMatrixElement::get_PrimaryMass, which is a Wrapper for TEvtProb::GetPrimaryMass, which calls TUtil::GetMass.
Warning
(Higgs mass/width used in the Matrix Element could be different). Refer to setMelaHiggsMassWidth or setMELAHiggsMass for explicit references to those.
Attention
You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
In MCFM both the particle and its antiparticle's mass are changed at the same time. In JHUGen this is not the case - they are separate entries.
The particles that you can change when using the MCFM matrix element are as as follow:
absolute value of ipart Particle Name
8 t Prime quark (4th generation)
7 b Prime quark (4th generation)
6 Top Quark
5 Bottom Quark
4 Charm Quark
3 Strange Quark
2 Up Quark
1 Down Quark
11 Electron
13 Muon
15 Tau
23 Z Boson
24 W Boson
25 Higgs Boson
The particles that you can change when using the JHUGen matrix element are as follow:
ipart Particle Name Sign Sensitive
0 OR 21 Gluon No
1 Down Quark Yes
2 Up Quark Yes
3 Strange Quark Yes
4 Charm Quark Yes
5 Bottom Quark Yes
6 Top Quark Yes
11 Electron Yes
22 Photon No
23 Z Boson No
24 W Boson Yes
13 Muon Yes
15 Tau Yes
12 Electron Neutrino Yes
14 Muon Neutrino Yes
16 Tau Neutrino Yes
25 Higgs Boson No
32 Z Prime No
33 Z Prime 2 No
34 W Prime Yes
Parameters
[in]ipartthe particle you would like to get the mass of.

Definition at line 515 of file Mela.cc.

515 { return ZZME->get_PrimaryMass(ipart); }

◆ getPrimaryWidth()

double Mela::getPrimaryWidth ( int  ipart)

A function to get the current primary EW/QCD parameters from MELA.

See also
Wrapper for ZZMatrixElement::get_PrimaryMass, which is a Wrapper for TEvtProb::GetPrimaryMass, which calls TUtil::GetMass.
Warning
(Higgs mass/width used in the Matrix Element could be different). Refer to setMelaHiggsMassWidth or setMELAHiggsMass for explicit references to those.
Attention
You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
In MCFM both the particle and its antiparticle's mass are changed at the same time. In JHUGen this is not the case - they are separate entries.
The particles that you can change when using the MCFM matrix element are as as follow:
absolute value of ipart Particle Name
15 Tau
23 Z Boson
24 W Boson
25 Higgs Boson
The particles that you can change when using the JHUGen matrix element are as follow:
ipart Particle Name Sign Sensitive
0 OR 21 Gluon No
1 Down Quark Yes
2 Up Quark Yes
3 Strange Quark Yes
4 Charm Quark Yes
5 Bottom Quark Yes
6 Top Quark Yes
11 Electron Yes
22 Photon No
23 Z Boson No
24 W Boson Yes
13 Muon Yes
15 Tau Yes
12 Electron Neutrino Yes
14 Muon Neutrino Yes
16 Tau Neutrino Yes
25 Higgs Boson No
32 Z Prime No
33 Z Prime 2 No
34 W Prime Yes
Parameters
[in]ipartthe particle you would like to get the width of.

Definition at line 516 of file Mela.cc.

516 { return ZZME->get_PrimaryWidth(ipart); }

◆ getTopCandidateCollection()

std::vector< MELATopCandidate_t * > * Mela::getTopCandidateCollection ( )

Same as getNCandidates but specifically for Top Quark Candidates.

See also
Wrapper for ZZMatrixElement::get_TopCandidateCollection, which is a wrapper for TEvtProb::GetTopCandidates, which returns TEvtProb::topCandList

Definition at line 549 of file Mela.cc.

549 { return ZZME->get_TopCandidateCollection(); }

◆ getVerbosity()

TVar::VerbosityLevel Mela::getVerbosity ( )

Gets the current verbosity level for MELA.

Returns
a TVar::VerbosityLevel describing the verbosity level for MELA. This is a number from 0 to 5, and corresponds to the values in TVar::VerbosityLevel.

Definition at line 333 of file Mela.cc.

333 { return myVerbosity_; }

◆ getXPropagator()

void Mela::getXPropagator ( TVar::ResonancePropagatorScheme  scheme,
float &  prop 
)

Definition at line 1799 of file Mela.cc.

1799  {
1800  prop=0.;
1802  if (melaCand) ZZME->get_XPropagator(scheme, prop);
1803  reset_CandRef();
1804 }

◆ resetInputEvent()

void Mela::resetInputEvent ( )

Resets the event in preparation for the next iteration of the event loop.

See also
Wrapper for ZZMatrixElement::reset_InputEvent, which is a wrapper for TEvtProb::ResetInputEvent
Attention
Without resetting the input event at the end of each for loop, behavior could be unexpected!
It is important to call this at the end of every event loop iteration to clean up TEvtProb!

Definition at line 356 of file Mela.cc.

356 { ZZME->reset_InputEvent(); }

◆ resetMass()

void Mela::resetMass ( double  inmass,
int  ipart 
)

Resets the mass for a particle that is an electroweak parameter according to its id.

See also
Wrapper for ZZMatrixElement::reset_Mass, which is a wrapper for TEvtProb::ResetMass, which is a wrapper for TUtil::SetMass
This finally interfaces with either the function SetMass in mod_parameters.F90 for JHUGen, accessed through .TModParameters.hh
in mod_parameters.F90 the conversion from ipart to the values in JHUGen's internal code happens with the function convertLHEreverse(Part)
or the masses in the JHUGen-MCFM library at /src/Inc/masses.F or at TMCFM::spinzerohiggs_anomcoupl (for tPrime and bPrime)
Warning
It is not recommended to use this function to edit the mass of the Higgs in MCFM. Please use either setMelaHiggsMass or setMelaHiggsMassWidth for that.
Attention
You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
In MCFM both the particle and its antiparticle's mass are changed at the same time. In JHUGen this is not the case - they are separate entries.
The particles that you can change when using the MCFM matrix element are as as follow:
absolute value of ipart Particle Name
8 t Prime quark (4th generation)
7 b Prime quark (4th generation)
6 Top Quark
5 Bottom Quark
4 Charm Quark
3 Strange Quark
2 Up Quark
1 Down Quark
11 Electron
13 Muon
15 Tau
23 Z Boson
24 W Boson
25 Higgs Boson
The particles that you can change when using the JHUGen matrix element are as follow:
ipart Particle Name Sign Sensitive
0 OR 21 Gluon No
1 Down Quark Yes
2 Up Quark Yes
3 Strange Quark Yes
4 Charm Quark Yes
5 Bottom Quark Yes
6 Top Quark Yes
11 Electron Yes
22 Photon No
23 Z Boson No
24 W Boson Yes
13 Muon Yes
15 Tau Yes
12 Electron Neutrino Yes
14 Muon Neutrino Yes
16 Tau Neutrino Yes
25 Higgs Boson No
32 Z Prime No
33 Z Prime 2 No
34 W Prime Yes
Parameters
[in]inmassthe mass that you want in GeV
[in]ipartthe particle whose mass you wish to change

Definition at line 508 of file Mela.cc.

508 { ZZME->reset_Mass(inmass, ipart); }

◆ resetMCFM_EWKParameters()

void Mela::resetMCFM_EWKParameters ( double  ext_Gf,
double  ext_aemmz,
double  ext_mW,
double  ext_mZ,
double  ext_xW,
int  ext_ewscheme = 3 
)

Resets the electroweak parameters back to their defaults.

See also
Wrapper for ZZMatrixElement::reset_MCFM_EWKParameters, which is a wrapper for TEvtProb::ResetMCFM_EWKParameters, which calls TUtil::SetEwkCouplingParameters

Definition at line 511 of file Mela.cc.

511  {
512  ZZME->reset_MCFM_EWKParameters(ext_Gf, ext_aemmz, ext_mW, ext_mZ, ext_xW, ext_ewscheme);
513 }

◆ resetQuarkMasses()

void Mela::resetQuarkMasses ( )

Resets the masses of each quark to their original values.

See also
Wrapper for ZZMatrixElement::reset_QuarkMasses, which is a wrapper for TEvtProb::ResetQuarkMasses, which calls TEvtProb::ResetMass
Warning
You should run this command each time you would like to reset the mass of a quark to mitigate unexpected behavior
Attention
The quarks that are reset are as follow, with their default masses in GeV listed as well:
Quark Mass
Down 0.001
Up 0.005
Strange 0.1
Charm 1.275
Bottom 4.75
Top 173.2
B Prime 1e5
T Prime 1e5

Definition at line 510 of file Mela.cc.

510 { ZZME->reset_QuarkMasses(); }

◆ resetWidth()

void Mela::resetWidth ( double  inwidth,
int  ipart 
)

Resets the width for a particle that is an electroweak parameter according to its id.

See also
Wrapper for ZZMatrixElement::reset_Width, which is a wrapper for TEvtProb::ResetWidth, which is a wrapper for TUtil::SetDecayWidth
This finally interfaces with either the function SetDecayWidth in mod_parameters.F90 for JHUGen, accessed through .TModParameters.hh
in mod_parameters.F90 the conversion from ipart to the values in JHUGen's internal code happens with the function convertLHEreverse(Part)
or the masses in the JHUGen-MCFM library at /src/Inc/masses.F or at TMCFM::spinzerohiggs_anomcoupl (for tPrime and bPrime)
Warning
It is not recommended to use this function to edit the mass of the Higgs in MCFM. Please use either setMelaHiggsWidth or setMelaHiggsMassWidth for that.
Attention
You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
In MCFM both the particle and its antiparticle's mass are changed at the same time. In JHUGen this is not the case - they are separate entries.
The particles that you can change when using the MCFM matrix element are as as follow:
absolute value of ipart Particle Name
15 Tau
23 Z Boson
24 W Boson
25 Higgs Boson
The particles that you can change when using the JHUGen matrix element are as follow:
ipart Particle Name Sign Sensitive
0 OR 21 Gluon No
1 Down Quark Yes
2 Up Quark Yes
3 Strange Quark Yes
4 Charm Quark Yes
5 Bottom Quark Yes
6 Top Quark Yes
11 Electron Yes
22 Photon No
23 Z Boson No
24 W Boson Yes
13 Muon Yes
15 Tau Yes
12 Electron Neutrino Yes
14 Muon Neutrino Yes
16 Tau Neutrino Yes
25 Higgs Boson No
32 Z Prime No
33 Z Prime 2 No
34 W Prime Yes
Parameters
[in]inmassthe mass that you want in GeV
[in]ipartthe particle whose mass you wish to change

Definition at line 509 of file Mela.cc.

509 { ZZME->reset_Width(inwidth, ipart); }

◆ setCandidateDecayMode()

void Mela::setCandidateDecayMode ( TVar::CandidateDecayMode  mode)

Sets the decay mode for your event.

See also
Wrapper for ZZMatrixElement::set_CandidateDecayMode, which is a wrapper for TEvtProb::SetCandidateDecayMode
Parameters
[in]modeThe decay mode you would like picked from TVar::CandidateDecayMode

Definition at line 340 of file Mela.cc.

340 { ZZME->set_CandidateDecayMode(mode); }

◆ setCurrentCandidate()

void Mela::setCurrentCandidate ( MELACandidate cand)

Switches the candidate that you are working on to another candidate object specified.

See also
Wrapper for ZZMatrixElement::set_CurrentCandidate, which is a wrapper for TEvtProb::SetCurrentCandidate.
Parameters
[in]candThe MELACandidate object you would like to switch to

Definition at line 342 of file Mela.cc.

342 { ZZME->set_CurrentCandidate(cand); }

◆ setCurrentCandidateFromIndex()

void Mela::setCurrentCandidateFromIndex ( unsigned int  icand)

Switches the candidate that you are working on to another candidate based off of an index.

See also
Wrapper for ZZMatrixElement::set_CurrentCandidateFromIndex, which is a wrapper for TEvtProb::SetCurrentCandidateFromIndex.
Parameters
[in]icandThe index of the candidate that you would like to switch to

Definition at line 341 of file Mela.cc.

◆ setInputEvent()

void Mela::setInputEvent ( SimpleParticleCollection_t pDaughters,
SimpleParticleCollection_t pAssociated = 0,
SimpleParticleCollection_t pMothers = 0,
bool  isGen = false 
)

Sets the input event for MELA. MELA cannot run without this.

See also
Wrapper for ZZMatrixElement::set_InputEvent, which is a wrapper for TEvtProb::SetInputEvent, which calls TUtil::ConvertVectorFormat
Attention
An input event must be set for each event in an event loop, otherwise MELA will throw a segmentation error
Parameters
[in]pDaughtersA SimpleParticleCollection_t of particle daughters (decay products)
[in]pAssociatedA SimpleParticleCollection_t of associated particles (i.e. jets), by default 0 (no jets)
[in]pMothersA SimpleParticleCollection_t of particle mothers (i.e. gluons), by default 0 (reco data contains no mother information)
[in]isGenA boolean signifying whether the event in question is a Gen event or a reco event, by default false (reco)

Definition at line 343 of file Mela.cc.

348  {
350  pDaughters,
351  pAssociated,
352  pMothers,
353  isGen
354  );
355 }

◆ setMelaHiggsMass()

void Mela::setMelaHiggsMass ( double  myHiggsMass,
int  index = 0 
)

Sets the mass of your chosen Higgs.

See also
Wrapper for ZZMatrixElement::set_mHiggs.
Parameters
[in]myHiggsMassThis is the mass of the Higgs that you would like, in GeV
[in]indexThis is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0.

Definition at line 336 of file Mela.cc.

336 { ZZME->set_mHiggs(myHiggsMass, index); }

◆ setMelaHiggsMassWidth()

void Mela::setMelaHiggsMassWidth ( double  myHiggsMass,
double  myHiggsWidth,
int  index 
)

a combination of setMelaHiggsMass and setMelaHiggsWidth.

See also
Wrapper for ZZMatrixElement::set_mHiggs_wHiggs.
Parameters
[in]myHiggsMassThis is the mass of the Higgs that you would like, in GeV
[in]myHiggsWidthThis is the mass of the Higgs that you would like, in GeV
[in]indexThis is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0.

Definition at line 338 of file Mela.cc.

338 { ZZME->set_mHiggs_wHiggs(myHiggsMass, myHiggsWidth, index); }

◆ setMelaHiggsWidth()

void Mela::setMelaHiggsWidth ( double  myHiggsWidth = -1,
int  index = 0 
)

Sets the width of your chosen Higgs.

See also
Wrapper for ZZMatrixElement::set_wHiggs
Parameters
[in]myHiggsWidthThis is the mass of the Higgs that you would like, in GeV
[in]indexThis is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0.

Definition at line 337 of file Mela.cc.

337 { ZZME->set_wHiggs(myHiggsWidth, index); }

◆ setMelaLeptonInterference()

void Mela::setMelaLeptonInterference ( TVar::LeptonInterference  myLepInterf = TVar::DefaultLeptonInterf)

Sets the MELA Lepton Interference.

Parameters
[in]myLepInterfsets the myLepInterf_ variable to one found in TVar::LeptonInterface through ZZMatrixElement::set_LeptonInterface. TVar::DefaultLeptonInterf by default.

Definition at line 339 of file Mela.cc.

339 { myLepInterf_=myLepInterf; ZZME->set_LeptonInterference(myLepInterf); }

◆ setMelaPrimaryHiggsMass()

void Mela::setMelaPrimaryHiggsMass ( double  myHiggsMass)

Sets the mass of the "primary" higgs.

See also
Wrapper for the function ZZMatrixElement::set_PrimaryHiggsMass, which is a wrapper for TEvtProb::SetPrimaryHiggsMass
Parameters
[in]myHiggsMassThis is the mass of the Higgs that you would like, in GeV
Attention
The primary Higgs is the first resonance - nominally MELA can have 2 resonances when working through JHUGen-MCFM
Remarks
This function is effectively the same as setMelaHiggsMass(mass, 0)

Definition at line 335 of file Mela.cc.

335 { ZZME->set_PrimaryHiggsMass(myHiggsMass); }

◆ setProcess()

void Mela::setProcess ( TVar::Process  myModel,
TVar::MatrixElement  myME,
TVar::Production  myProduction 
)

Sets the process, matrix element, and production that MELA is to use for this event. Calls ZZMatrixElement::set_Process, which calls TEvtProb::SetProcess.

Attention
Remember to set the process for each event, otherwise the MELA event loop will throw a segmentation error.
Parameters
[in]myModela TVar for the Process you would like, as defined in TVar::Process
[in]myMEa TVar for the matrix element you would like, as defined in TVar::MatrixElement
[in]myProductiona TVar for the production mode you would like, as defined in TVar::Production

Definition at line 310 of file Mela.cc.

310  {
311  myME_ = myME;
312  myProduction_ = myProduction;
313  // In case s-channel processes are passed for JHUGen ME, flip them back to JHUGen-specific productions.
314  if (myME_==TVar::JHUGen){
321  }
322  myModel_ = myModel;
324 }

◆ setRemoveJetMasses()

void Mela::setRemoveJetMasses ( bool  MasslessLeptonSwitch = true)

either permits or forbids massive jets.

See also
Wrapper for the function TUtil::applyJetMassCorrection
Parameters
[in]MasslessLeptonSwitchWhether you would like your jets to be massive, by default true.

Definition at line 520 of file Mela.cc.

520 { TUtil::applyJetMassCorrection(MasslessLeptonSwitch); }

◆ setRemoveLeptonMasses()

void Mela::setRemoveLeptonMasses ( bool  MasslessLeptonSwitch = true)

either permits or forbids massive leptons.

See also
Wrapper for the function TUtil::applyLeptonMassCorrection
Parameters
[in]MasslessLeptonSwtichWhether you would like your leptons to be massive, by default true.

Definition at line 519 of file Mela.cc.

519 { TUtil::applyLeptonMassCorrection(MasslessLeptonSwitch); }

◆ setRenFacScaleMode()

void Mela::setRenFacScaleMode ( TVar::EventScaleScheme  renormalizationSch,
TVar::EventScaleScheme  factorizationSch,
double  ren_sf,
double  fac_sf 
)

Sets the renormalization and the factorization schemes.

See also
Wrapper for ZZMatrixElement::set_RenFacScaleMode, which is a wrapper for TEvtProb::SetRenFacScaleMode, which edits the TVar::event_scales_type struct in TEvtProb.event_scales
Parameters
[in]renormalizationSchThis is the renormalization scheme that you are picking from TVar::EventScaleScheme
[in]factorizationSchThis is the factorization scheme that you are picking from TVar::EventScaleScheme
[in]ren_sfThis is the renormalization scale factor that you would like
[in]fac_sfThis is the scale factor for the factorization scale that you would like

Definition at line 521 of file Mela.cc.

521  {
522  ZZME->set_RenFacScaleMode(renormalizationSch, factorizationSch, ren_sf, fac_sf);
523 }

◆ setTempCandidate()

void Mela::setTempCandidate ( SimpleParticleCollection_t pDaughters,
SimpleParticleCollection_t pAssociated = 0,
SimpleParticleCollection_t pMothers = 0,
bool  isGen = false 
)

Sets a temporary MELA candidate, by setting melaCand in Xcal2 to a temporary candidate without pushing this candidate to the candList of Xcal2.

See also
Wrapper for ZZMatrixElement::set_TempCandidate
Parameters
[in]pDaughtersA SimpleParticleCollection_t of particle daughters (decay products)
[in]pAssociatedA SimpleParticleCollection_t of associated particles (i.e. jets), by default 0 (no jets)
[in]pMothersA SimpleParticleCollection_t of particle mothers (i.e. gluons), by default 0 (reco data contains no mother information)
[in]isGenA boolean signifying whether the event in question is a Gen event or a reco event, by default false (reco)

Definition at line 357 of file Mela.cc.

362  { ZZME->set_TempCandidate(pDaughters, pAssociated, pMothers); }

◆ setVerbosity()

void Mela::setVerbosity ( TVar::VerbosityLevel  verbosity_ = TVar::ERROR)

Sets the verbosity for MELA outside of the initial constructor.

Parameters
[in]verbosity_The verbosity of MELA that you desire, as defined in TVar::ERROR.

Definition at line 325 of file Mela.cc.

Member Data Documentation

◆ costheta1_rrv

RooRealVar* Mela::costheta1_rrv

Definition at line 939 of file Mela.h.

◆ costheta2_rrv

RooRealVar* Mela::costheta2_rrv

Definition at line 940 of file Mela.h.

◆ costhetastar_rrv

RooRealVar* Mela::costhetastar_rrv

Definition at line 938 of file Mela.h.

◆ ggSpin0Model

ScalarPdfFactory_HVV* Mela::ggSpin0Model

Definition at line 947 of file Mela.h.

◆ melaRandomNumber

TRandom3 Mela::melaRandomNumber

Definition at line 934 of file Mela.h.

◆ mzz_rrv

RooRealVar* Mela::mzz_rrv

Definition at line 935 of file Mela.h.

◆ pdf

RooAbsPdf* Mela::pdf

Definition at line 946 of file Mela.h.

◆ phi1_rrv

RooRealVar* Mela::phi1_rrv

Definition at line 942 of file Mela.h.

◆ phi_rrv

RooRealVar* Mela::phi_rrv

Definition at line 941 of file Mela.h.

◆ qqZZmodel

RooqqZZ_JHU_ZgammaZZ_fast* Mela::qqZZmodel

Definition at line 950 of file Mela.h.

◆ spin1Model

VectorPdfFactory* Mela::spin1Model

Definition at line 948 of file Mela.h.

◆ spin2Model

TensorPdfFactory_ppHVV* Mela::spin2Model

Definition at line 949 of file Mela.h.

◆ super

SuperMELA* Mela::super

Definition at line 952 of file Mela.h.

◆ upFrac_rrv

RooRealVar* Mela::upFrac_rrv

Definition at line 944 of file Mela.h.

◆ Y_rrv

RooRealVar* Mela::Y_rrv

Definition at line 943 of file Mela.h.

◆ z1mass_rrv

RooRealVar* Mela::z1mass_rrv

Definition at line 936 of file Mela.h.

◆ z2mass_rrv

RooRealVar* Mela::z2mass_rrv

Definition at line 937 of file Mela.h.


The documentation for this class was generated from the following files:
TVar::kUseAssociated_Photons
@ kUseAssociated_Photons
Definition: TVar.hh:32
TVar::ERROR
@ ERROR
Definition: TVar.hh:49
RooSpin::modelMeasurables::h2
RooAbsReal * h2
Definition: RooSpin.h:52
ZZMatrixElement::reset_Width
void reset_Width(double inmass, int ipart)
Definition: ZZMatrixElement.cc:198
Mela::getConstant
void getConstant(float &prob)
This function returns a multiplicative constant to the matrix element calculation.
Definition: Mela.cc:2168
SimpleParticle_t
std::pair< int, TLorentzVector > SimpleParticle_t
Definition: TVar.hh:24
TUtil::scaleMomentumToEnergy
void scaleMomentumToEnergy(const TLorentzVector &massiveJet, TLorentzVector &masslessJet, double mass=0)
Definition: TUtil.cc:66
TVar::JJVBF
@ JJVBF
Definition: TVar.hh:72
PDGHelpers::isALepton
bool isALepton(const int id)
Definition: PDGHelpers.cc:62
TVar::D_zzzg_g1prime2
@ D_zzzg_g1prime2
Definition: TVar.hh:145
TVar::Had_ZH_S
@ Had_ZH_S
Definition: TVar.hh:86
TVar::D_g1g4
@ D_g1g4
Definition: TVar.hh:139
SpinPdfFactory::setVerbosity
void setVerbosity(TVar::VerbosityLevel verbosity)
Definition: SpinPdfFactory.cc:173
mela.daughters
string daughters
Definition: mela.py:767
MELAParticle::getDaughter
MELAParticle * getDaughter(int index) const
Definition: MELAParticle.cc:68
Mela::setAZffCouplings
void setAZffCouplings()
Definition: Mela.cc:418
SIZE_GVV
@ SIZE_GVV
Definition: raw_couplings.txt:158
RooSpin::kVdecayType_Zll
@ kVdecayType_Zll
Definition: RooSpin.h:31
RooSpin::modelMeasurables::Y
RooAbsReal * Y
Definition: RooSpin.h:59
TVar::kUseAssociated_Jets
@ kUseAssociated_Jets
Definition: TVar.hh:33
Mela::selfDGqqcoupl
double selfDGqqcoupl[SIZE_GQQ][2]
Definition: Mela.h:995
Mela::Y_rrv
RooRealVar * Y_rrv
Definition: Mela.h:943
Mela::getPConstantHandles
void getPConstantHandles()
Definition: Mela.cc:2470
RooqqZZ_JHU_ZgammaZZ_fast
Definition: RooqqZZ_JHU_ZgammaZZ_fast.h:18
Mela::build
void build(double mh_)
This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor.
Definition: Mela.cc:175
MELACandidate::addAssociatedJet
void addAssociatedJet(MELAParticle *myParticle)
Definition: MELACandidate.cc:616
ZZMatrixElement::get_XPropagator
void get_XPropagator(TVar::ResonancePropagatorScheme scheme, float &prop)
Definition: ZZMatrixElement.cc:459
Mela::computeDecayAngles
void computeDecayAngles(float &qH, float &m1, float &m2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1)
computes the decay angles for gg -> H -> ZZ as defined in Figure 1 of arXiv:1001.3396
Definition: Mela.cc:558
TVar::JJEWQCD
@ JJEWQCD
Definition: TVar.hh:74
Mela::computeProdP_VH
void computeProdP_VH(double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool includeHiggsDecay=false, bool useConstant=true)
Definition: Mela.cc:1730
ZZMatrixElement::set_mHiggs_wHiggs
void set_mHiggs_wHiggs(double mh_, double gah_, int index)
Definition: ZZMatrixElement.cc:188
TVar::CandidateDecay_ZZ
@ CandidateDecay_ZZ
Definition: TVar.hh:41
MELAParticle::getNDaughters
int getNDaughters() const
Definition: MELAParticle.h:50
RooSpin::modelMeasurables::Phi1
RooAbsReal * Phi1
Definition: RooSpin.h:55
TVar::bkgGammaGamma
@ bkgGammaGamma
Definition: TVar.hh:163
ZZMatrixElement::get_TopCandidateCollection
std::vector< MELATopCandidate_t * > * get_TopCandidateCollection()
Definition: ZZMatrixElement.cc:235
ZZMatrixElement::reset_Mass
void reset_Mass(double inmass, int ipart)
Definition: ZZMatrixElement.cc:197
Mela::auxiliaryProb
float auxiliaryProb
Definition: Mela.h:1023
TVar::INFO
@ INFO
Definition: TVar.hh:50
TVar::Lep_WH_S
@ Lep_WH_S
Definition: TVar.hh:89
SIZE_GGG
@ SIZE_GGG
Definition: raw_couplings.txt:131
Mela::getIORecord
MelaIO * getIORecord()
Returns the MELAIO object, and by consequence, the entire parton-by-parton matrix element record.
Definition: Mela.cc:544
SuperDijetMela
Definition: SuperDijetMela.h:8
ScalarPdfFactory_HVV
Definition: ScalarPdfFactory_HVV.h:8
TVar::kUseAssociated_UnstableTops
@ kUseAssociated_UnstableTops
Definition: TVar.hh:34
MELACandidate::getSortedV
MELAParticle * getSortedV(int index) const
Definition: MELACandidate.cc:152
SuperMELA
Definition: SuperMELA.h:17
TVar::ProductionName
TString ProductionName(TVar::Production temp)
Definition: TVar.cc:64
Mela::z1mass_rrv
RooRealVar * z1mass_rrv
Definition: Mela.h:936
Mela::selfDHttcoupl
double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:971
Mela::setRemoveLeptonMasses
void setRemoveLeptonMasses(bool MasslessLeptonSwitch=true)
either permits or forbids massive leptons.
Definition: Mela.cc:519
SuperMELA::SetVerbosity
void SetVerbosity(bool verb=true)
Definition: SuperMELA.h:26
TVar::GammaH
@ GammaH
Definition: TVar.hh:102
Mela::setCurrentCandidate
void setCurrentCandidate(MELACandidate *cand)
Switches the candidate that you are working on to another candidate object specified.
Definition: Mela.cc:342
Mela::mzz_rrv
RooRealVar * mzz_rrv
Definition: Mela.h:935
Mela::setMelaHiggsWidth
void setMelaHiggsWidth(double myHiggsWidth=-1, int index=0)
Sets the width of your chosen Higgs.
Definition: Mela.cc:337
Mela::setSpinZeroCouplings
void setSpinZeroCouplings()
Definition: Mela.cc:366
ZZMatrixElement::computeProdXS_JH
void computeProdXS_JH(float &mevalue)
Definition: ZZMatrixElement.cc:398
TUtil::computeTTHAngles
void computeTTHAngles(float &hs, float &hincoming, float &hTT, float &PhiTT, float &Phi1, float &hbb, float &hWW, float &Phibb, float &Phi1bb, float &hWplusf, float &PhiWplusf, float &hWminusf, float &PhiWminusf, TLorentzVector p4M11, int Z1_lept1Id, TLorentzVector p4M12, int Z1_lept2Id, TLorentzVector p4M21, int Z2_lept1Id, TLorentzVector p4M22, int Z2_lept2Id, TLorentzVector b, int bId, TLorentzVector Wplusf, int WplusfId, TLorentzVector Wplusfb, int WplusfbId, TLorentzVector bbar, int bbarId, TLorentzVector Wminusf, int WminusfId, TLorentzVector Wminusfb, int WminusfbId, TLorentzVector *injet1=0, int injet1Id=0, TLorentzVector *injet2=0, int injet2Id=0)
Definition: TUtil.cc:989
RooSpin::modelMeasurables::m12
RooAbsReal * m12
Definition: RooSpin.h:58
TVar::SelfDefine_spin2
@ SelfDefine_spin2
Definition: TVar.hh:182
Mela::computeProdP
void computeProdP(double selfDHggcoupl_input[SIZE_HGG][2], double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true)
computes Production side probabilities while taking in coupling arrays
Definition: Mela.cc:1501
SIZE_ZQQ
@ SIZE_ZQQ
Definition: raw_couplings.txt:107
TUtil::applyLeptonMassCorrection
void applyLeptonMassCorrection(bool flag=true)
Definition: TUtil.cc:35
MelaIO::getMEConst
double getMEConst() const
Definition: MelaIO.h:110
TVar::ZZINDEPENDENT
@ ZZINDEPENDENT
Definition: TVar.hh:64
SuperDijetMela::SetVerbosity
void SetVerbosity(const TVar::VerbosityLevel verbosity_)
Definition: SuperDijetMela.h:23
TVar::JJQCD
@ JJQCD
Definition: TVar.hh:71
RooSpin::modelMeasurables::m1
RooAbsReal * m1
Definition: RooSpin.h:56
Mela::reset_SelfDCouplings
void reset_SelfDCouplings()
Definition: Mela.cc:426
Mela::reset_CandRef
void reset_CandRef()
Definition: Mela.cc:550
Mela::selfDaTQGCcoupl
double selfDaTQGCcoupl[SIZE_ATQGC][2]
Definition: Mela.h:1001
TVar::ZZQQB
@ ZZQQB
Definition: TVar.hh:62
VectorPdfFactory
Definition: VectorPdfFactory.h:12
ZZMatrixElement::set_Verbosity
void set_Verbosity(TVar::VerbosityLevel verbosity_)
Definition: ZZMatrixElement.cc:134
TUtil::PrintCandidateSummary
void PrintCandidateSummary(MELACandidate *cand)
Definition: TUtil.cc:8590
TVar::D_g1g4_pi_2
@ D_g1g4_pi_2
Definition: TVar.hh:140
PDGHelpers::isAZBoson
bool isAZBoson(const int id)
Definition: PDGHelpers.cc:76
Mela::setProcess
void setProcess(TVar::Process myModel, TVar::MatrixElement myME, TVar::Production myProduction)
Sets the process, matrix element, and production that MELA is to use for this event....
Definition: Mela.cc:310
SuperMELA::init
void init()
Definition: SuperMELA.cc:158
ZZMatrixElement::get_IORecord
MelaIO * get_IORecord()
Definition: ZZMatrixElement.cc:228
ZZMatrixElement::get_HiggsWidthAtPoleMass
double get_HiggsWidthAtPoleMass(double mass)
Definition: ZZMatrixElement.cc:231
TVar::D_zzzg_PS
@ D_zzzg_PS
Definition: TVar.hh:143
ZZMatrixElement::Calculate4Momentum
std::vector< TLorentzVector > Calculate4Momentum(double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
Definition: ZZMatrixElement.cc:67
TVar::D_zzzg_g1prime2_pi_2
@ D_zzzg_g1prime2_pi_2
Definition: TVar.hh:146
Mela::qqZZmodel
RooqqZZ_JHU_ZgammaZZ_fast * qqZZmodel
Definition: Mela.h:950
Mela::selfDHqqcoupl
double selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:969
Mela::setConstant
void setConstant()
Definition: Mela.cc:2175
SIZE_ZVV
@ SIZE_ZVV
Definition: raw_couplings.txt:114
mela.mothers
string mothers
Definition: mela.py:777
Mela::ggSpin0Model
ScalarPdfFactory_HVV * ggSpin0Model
Definition: Mela.h:947
Mela::costheta1_rrv
RooRealVar * costheta1_rrv
Definition: Mela.h:939
TVar::SMSyst_ResUp
@ SMSyst_ResUp
Definition: TVar.hh:193
TVar::ZZGG
@ ZZGG
Definition: TVar.hh:61
Mela::deletePConstantHandles
void deletePConstantHandles()
Definition: Mela.cc:2729
ZZMatrixElement::append_TopCandidate
void append_TopCandidate(SimpleParticleCollection_t *TopDaughters)
Definition: ZZMatrixElement.cc:178
Mela::selfDGvvcoupl
double selfDGvvcoupl[SIZE_GVV][2]
Definition: Mela.h:997
MELACandidate::shallowCopy
MELACandidate * shallowCopy()
Definition: MELACandidate.cc:61
PDGHelpers::isAPhoton
bool isAPhoton(const int id)
Definition: PDGHelpers.cc:72
ZZMatrixElement::set_TempCandidate
void set_TempCandidate(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
Definition: ZZMatrixElement.cc:159
ZZMatrixElement::set_CandidateDecayMode
void set_CandidateDecayMode(TVar::CandidateDecayMode mode)
Definition: ZZMatrixElement.cc:141
ZZMatrixElement::get_PrimaryMass
double get_PrimaryMass(int ipart)
Definition: ZZMatrixElement.cc:229
Mela::computeP_selfDspin0
void computeP_selfDspin0(double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true)
This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for...
Definition: Mela.cc:1077
ZZMatrixElement::get_CurrentCandidateIndex
int get_CurrentCandidateIndex()
Definition: ZZMatrixElement.cc:233
ZZMatrixElement::set_Process
void set_Process(TVar::Process process_, TVar::MatrixElement me_, TVar::Production production_)
Definition: ZZMatrixElement.cc:128
ZZMatrixElement::get_CurrentCandidate
MELACandidate * get_CurrentCandidate()
Definition: ZZMatrixElement.cc:232
nSupportedHiggses
@ nSupportedHiggses
Definition: TMCFM.hh:15
MELAStreamHelpers::MELAout
MELAOutputStreamer MELAout
TVar::bkgWW
@ bkgWW
Definition: TVar.hh:167
TVar::D_zzgg
@ D_zzgg
Definition: TVar.hh:142
TVar::kNoAssociated
@ kNoAssociated
Definition: TVar.hh:30
TVar::DefaultLeptonInterf
@ DefaultLeptonInterf
Definition: TVar.hh:107
TVar::D_zzgg_PS
@ D_zzgg_PS
Definition: TVar.hh:144
MELAParticle::m
double m() const
Definition: MELAParticle.h:66
ZZMatrixElement::set_mHiggs
void set_mHiggs(double mh_, int index)
Definition: ZZMatrixElement.cc:180
Mela::melaCand
MELACandidate * melaCand
Definition: Mela.h:1025
SuperMELA::SetPathToCards
void SetPathToCards(std::string dirToCards)
Definition: SuperMELA.cc:358
TUtil::ConvertVectorFormat
MELACandidate * ConvertVectorFormat(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated, SimpleParticleCollection_t *pMothers, bool isGen, std::vector< MELAParticle * > *particleList, std::vector< MELACandidate * > *candList)
Definition: TUtil.cc:8410
anonymous_namespace{TCouplingsBase.hh}::SIZE_HGG
@ SIZE_HGG
Definition: TCouplingsBase.hh:40
TVar::kUseAssociated_Leptons
@ kUseAssociated_Leptons
Definition: TVar.hh:31
MELAParticle::p4
TLorentzVector p4
Definition: MELAParticle.h:18
Mela::myModel_
TVar::Process myModel_
Definition: Mela.h:1013
TVar::SMSyst_None
@ SMSyst_None
Definition: TVar.hh:188
Mela::myME_
TVar::MatrixElement myME_
Definition: Mela.h:1014
SuperMELA::M4lProb
std::pair< double, double > M4lProb(double m4l)
Definition: SuperMELA.cc:552
testME_all.int
int
Definition: testME_all.py:13
TensorPdfFactory_ppHVV
Definition: TensorPdfFactory_ppHVV.h:8
testME_all.ratio
ratio
Definition: testME_all.py:136
Mela::computeP
void computeP(float &prob, bool useConstant=true)
Computes the probability for the probabilities on the decay side of things using the constituent daug...
Definition: Mela.cc:1183
TVar::HSMHiggs
@ HSMHiggs
Definition: TVar.hh:126
TVar::Lep_WH_TU
@ Lep_WH_TU
Definition: TVar.hh:100
TVar::bkgZGamma
@ bkgZGamma
Definition: TVar.hh:164
Mela::ZZME
ZZMatrixElement * ZZME
Definition: Mela.h:1019
TVar::GetMELAPath
std::string GetMELAPath()
Definition: TVar.cc:121
ZZMatrixElement::set_InputEvent
void set_InputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
Definition: ZZMatrixElement.cc:145
Mela::setCandidateDecayMode
void setCandidateDecayMode(TVar::CandidateDecayMode mode)
Sets the decay mode for your event.
Definition: Mela.cc:340
ZZMatrixElement::set_CurrentCandidateFromIndex
void set_CurrentCandidateFromIndex(unsigned int icand)
Definition: ZZMatrixElement.cc:143
Mela::setMelaHiggsMass
void setMelaHiggsMass(double myHiggsMass, int index=0)
Sets the mass of your chosen Higgs.
Definition: Mela.cc:336
Mela::LHCsqrts
double LHCsqrts
Definition: Mela.h:1012
Mela::spin2Model
TensorPdfFactory_ppHVV * spin2Model
Definition: Mela.h:949
Mela::selfDZqqcoupl
double selfDZqqcoupl[SIZE_ZQQ][2]
Definition: Mela.h:992
TVar::D_gg10
@ D_gg10
Definition: TVar.hh:177
RooSpin::modelMeasurables::Phi
RooAbsReal * Phi
Definition: RooSpin.h:54
TUtil::computeVHAngles
void computeVHAngles(float &costhetastar, float &costheta1, float &costheta2, float &Phi, float &Phi1, float &m1, float &m2, TLorentzVector p4M11, int Z1_lept1Id, TLorentzVector p4M12, int Z1_lept2Id, TLorentzVector p4M21, int Z2_lept1Id, TLorentzVector p4M22, int Z2_lept2Id, TLorentzVector jet1, int jet1Id, TLorentzVector jet2, int jet2Id, TLorentzVector *injet1=0, int injet1Id=0, TLorentzVector *injet2=0, int injet2Id=0)
Definition: TUtil.cc:873
SuperMELA::GetSigShapeSystematic
double GetSigShapeSystematic(std::string parName)
Definition: SuperMELA.cc:124
ZZMatrixElement::computeProdXS_VH
void computeProdXS_VH(float &mevalue, bool includeHiggsDecay=false)
Definition: ZZMatrixElement.cc:412
TVar::Had_ZH_TU
@ Had_ZH_TU
Definition: TVar.hh:97
TVar::MCFM
@ MCFM
Definition: TVar.hh:56
Mela::printLogo
void printLogo() const
Definition: Mela.cc:278
TVar::Lep_ZH_S
@ Lep_ZH_S
Definition: TVar.hh:88
TVar::D_g1g2
@ D_g1g2
Definition: TVar.hh:137
MELAParticle
Definition: MELAParticle.h:13
ZZMatrixElement::computeProdXS_JJH
void computeProdXS_JJH(float &mevalue)
Definition: ZZMatrixElement.cc:384
Mela::phi_rrv
RooRealVar * phi_rrv
Definition: Mela.h:941
Mela::computeProdDecP
void computeProdDecP(double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDaTQGCcoupl_input[SIZE_ATQGC][2], double selfDAZffcoupl_input[SIZE_AZff][2], float &prob, bool useConstant=true)
computes the combined production and decay probability while taking in coupling arrays
Definition: Mela.cc:1430
TVar::JJEW_S
@ JJEW_S
Definition: TVar.hh:84
TUtil::computeAngles
void computeAngles(float &costhetastar, float &costheta1, float &costheta2, float &Phi, float &Phi1, TLorentzVector Z1_lept1, int Z1_lept1Id, TLorentzVector Z1_lept2, int Z1_lept2Id, TLorentzVector Z2_lept1, int Z2_lept1Id, TLorentzVector Z2_lept2, int Z2_lept2Id)
Definition: TUtil.cc:208
Mela::selfDHwwcoupl
double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2]
Definition: Mela.h:975
TVar::SMSyst_ResDown
@ SMSyst_ResDown
Definition: TVar.hh:194
ZZMatrixElement::computeProdXS_VVHVV
void computeProdXS_VVHVV(float &mevalue)
Definition: ZZMatrixElement.cc:364
Mela::constructDggr
void constructDggr(float bkg_VAMCFM_noscale, float ggzz_VAMCFM_noscale, float ggHZZ_prob_pure_noscale, float ggHZZ_prob_int_noscale, float widthScale, float &myDggr)
Definition: Mela.cc:1920
SuperMELA::GetSigShapeParameter
double GetSigShapeParameter(std::string parName)
Definition: SuperMELA.cc:140
Mela::superDijet
SuperDijetMela * superDijet
Definition: Mela.h:1020
RooSpin::modelMeasurables::m2
RooAbsReal * m2
Definition: RooSpin.h:57
ZZMatrixElement::set_RenFacScaleMode
void set_RenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
Definition: ZZMatrixElement.cc:138
Mela::pdf
RooAbsPdf * pdf
Definition: Mela.h:946
SIZE_ATQGC
@ SIZE_ATQGC
Definition: raw_couplings.txt:176
Mela::selfDAZffcoupl
double selfDAZffcoupl[SIZE_AZff][2]
Definition: Mela.h:1003
Mela::setATQGCCouplings
void setATQGCCouplings()
Definition: Mela.cc:413
TVar::JJVBF_TU
@ JJVBF_TU
Definition: TVar.hh:94
Mela::configureAnalyticalPDFs
bool configureAnalyticalPDFs()
Definition: Mela.cc:1969
RooSpin::modelMeasurables::h1
RooAbsReal * h1
Definition: RooSpin.h:51
ZZMatrixElement::get_PrimaryHiggsMass
double get_PrimaryHiggsMass()
Definition: ZZMatrixElement.h:141
Mela::setSpinOneCouplings
void setSpinOneCouplings()
Definition: Mela.cc:398
Mela::myProduction_
TVar::Production myProduction_
Definition: Mela.h:1015
TVar::JHUGen
@ JHUGen
Definition: TVar.hh:57
MELACandidate::getAssociatedJet
MELAParticle * getAssociatedJet(int index) const
Definition: MELACandidate.cc:168
ZZMatrixElement::computeXS
void computeXS(float &mevalue)
Definition: ZZMatrixElement.cc:344
TVar::Had_ZH
@ Had_ZH
Definition: TVar.hh:75
Mela::selfDZvvcoupl
double selfDZvvcoupl[SIZE_ZVV][2]
Definition: Mela.h:993
MELAStreamHelpers::MELAerr
MELAOutputStreamer MELAerr
Mela::reset_PAux
void reset_PAux()
Definition: Mela.cc:555
Mela::melaRandomNumber
TRandom3 melaRandomNumber
Definition: Mela.h:934
TVar::Had_WH_S
@ Had_WH_S
Definition: TVar.hh:87
Mela::computeProdP_ttH
void computeProdP_ttH(float &prob, int topProcess=2, int topDecay=0, bool useConstant=true)
Definition: Mela.cc:1778
TVar::JJEW
@ JJEW
Definition: TVar.hh:73
Mela::computeConstant
void computeConstant(float &prob)
Definition: Mela.cc:2169
TVar::D_g1g1prime2
@ D_g1g1prime2
Definition: TVar.hh:136
Mela::super
SuperMELA * super
Definition: Mela.h:952
TVar::bkgZZ_SMHiggs
@ bkgZZ_SMHiggs
Definition: TVar.hh:170
Mela::setMelaPrimaryHiggsMass
void setMelaPrimaryHiggsMass(double myHiggsMass)
Sets the mass of the "primary" higgs.
Definition: Mela.cc:335
Mela::z2mass_rrv
RooRealVar * z2mass_rrv
Definition: Mela.h:937
TUtil::computeFakeJet
void computeFakeJet(TLorentzVector const &realJet, TLorentzVector const &others, TLorentzVector &fakeJet)
Definition: TUtil.cc:156
TVar::bkgZZ
@ bkgZZ
Definition: TVar.hh:166
SIZE_AZff
@ SIZE_AZff
Definition: raw_couplings.txt:194
TVar::SMSyst_ScaleDown
@ SMSyst_ScaleDown
Definition: TVar.hh:191
TVar::Had_WH_TU
@ Had_WH_TU
Definition: TVar.hh:98
Mela::costhetastar_rrv
RooRealVar * costhetastar_rrv
Definition: Mela.h:938
MELACandidate::getAssociatedJets
std::vector< MELAParticle * > & getAssociatedJets()
Definition: MELACandidate.cc:182
TVar::ttH
@ ttH
Definition: TVar.hh:66
Mela::costheta2_rrv
RooRealVar * costheta2_rrv
Definition: Mela.h:940
Mela::myVerbosity_
TVar::VerbosityLevel myVerbosity_
Definition: Mela.h:1017
TVar::SelfDefine_spin0
@ SelfDefine_spin0
Definition: TVar.hh:180
ZZMatrixElement
Definition: ZZMatrixElement.h:9
TVar::JQCD
@ JQCD
Definition: TVar.hh:69
Mela::selfDHzzcoupl
double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2]
Definition: Mela.h:974
Mela::calculate4Momentum
std::vector< TLorentzVector > calculate4Momentum(double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
Definition: Mela.cc:524
ZZMatrixElement::set_CurrentCandidate
void set_CurrentCandidate(MELACandidate *cand)
Definition: ZZMatrixElement.cc:144
TVar::ANALYTICAL
@ ANALYTICAL
Definition: TVar.hh:58
TVar::Lep_ZH
@ Lep_ZH
Definition: TVar.hh:77
TVar::SMSyst_ScaleUp
@ SMSyst_ScaleUp
Definition: TVar.hh:190
Mela::phi1_rrv
RooRealVar * phi1_rrv
Definition: Mela.h:942
Mela::spin1Model
VectorPdfFactory * spin1Model
Definition: Mela.h:948
MELACandidate
Definition: MELACandidate.h:7
ZZMatrixElement::set_LeptonInterference
void set_LeptonInterference(TVar::LeptonInterference myLepInterf)
Definition: ZZMatrixElement.cc:135
SIZE_HVV
@ SIZE_HVV
Definition: raw_couplings.txt:57
TVar::DEBUG
@ DEBUG
Definition: TVar.hh:51
TVar::JJEWQCD_S
@ JJEWQCD_S
Definition: TVar.hh:85
TVar::D_zzzg
@ D_zzzg
Definition: TVar.hh:141
TVar::JJEWQCD_TU
@ JJEWQCD_TU
Definition: TVar.hh:96
Mela::setSpinTwoCouplings
void setSpinTwoCouplings()
Definition: Mela.cc:401
SimpleParticleCollection_t
std::vector< SimpleParticle_t > SimpleParticleCollection_t
Definition: TVar.hh:25
TVar::D_g1g2_pi_2
@ D_g1g2_pi_2
Definition: TVar.hh:138
Mela::selfDHggcoupl
double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2]
Definition: Mela.h:965
ZZMatrixElement::reset_MCFM_EWKParameters
void reset_MCFM_EWKParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
Definition: ZZMatrixElement.cc:200
Mela::setMelaLeptonInterference
void setMelaLeptonInterference(TVar::LeptonInterference myLepInterf=TVar::DefaultLeptonInterf)
Sets the MELA Lepton Interference.
Definition: Mela.cc:339
ZZMatrixElement::computeProdXS_ttH
void computeProdXS_ttH(float &mevalue, int topProcess, int topDecay=0)
Definition: ZZMatrixElement.cc:435
ZZMatrixElement::reset_InputEvent
void reset_InputEvent()
Definition: ZZMatrixElement.cc:225
ZZMatrixElement::get_PrimaryWidth
double get_PrimaryWidth(int ipart)
Definition: ZZMatrixElement.cc:230
TVar::Had_WH
@ Had_WH
Definition: TVar.hh:76
RooSpin::modelMeasurables
Definition: RooSpin.h:50
Mela::upFrac_rrv
RooRealVar * upFrac_rrv
Definition: Mela.h:944
SuperMELA::SetDecayChannel
void SetDecayChannel(std::string myChan)
Definition: SuperMELA.cc:113
TVar::JJEW_TU
@ JJEW_TU
Definition: TVar.hh:95
Mela::selfDHbbcoupl
double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:970
MELAParticle::id
int id
Definition: MELAParticle.h:17
Mela::myLepInterf_
TVar::LeptonInterference myLepInterf_
Definition: Mela.h:1016
ZZMatrixElement::get_NCandidates
int get_NCandidates()
Definition: ZZMatrixElement.cc:234
TVar::JJVBF_S
@ JJVBF_S
Definition: TVar.hh:83
TVar::Lep_WH
@ Lep_WH
Definition: TVar.hh:78
TUtil::computeVBFAngles
void computeVBFAngles(float &costhetastar, float &costheta1, float &costheta2, float &Phi, float &Phi1, float &Q2V1, float &Q2V2, TLorentzVector p4M11, int Z1_lept1Id, TLorentzVector p4M12, int Z1_lept2Id, TLorentzVector p4M21, int Z2_lept1Id, TLorentzVector p4M22, int Z2_lept2Id, TLorentzVector jet1, int jet1Id, TLorentzVector jet2, int jet2Id, TLorentzVector *injet1=0, int injet1Id=0, TLorentzVector *injet2=0, int injet2Id=0)
Definition: TUtil.cc:596
TVar::kUseAssociated_StableTops
@ kUseAssociated_StableTops
Definition: TVar.hh:35
TVar::JJQCD_TU
@ JJQCD_TU
Definition: TVar.hh:93
TVar::simple_event_record
Definition: TVar.hh:227
RooSpin::modelMeasurables::hs
RooAbsReal * hs
Definition: RooSpin.h:53
TVar::SelfDefine_spin1
@ SelfDefine_spin1
Definition: TVar.hh:181
TUtil::GetBoostedParticleVectors
void GetBoostedParticleVectors(MELACandidate *melaCand, TVar::simple_event_record &mela_event, TVar::VerbosityLevel verbosity=TVar::DEBUG)
Definition: TUtil.cc:7947
Mela::selfDGggcoupl
double selfDGggcoupl[SIZE_GGG][2]
Definition: Mela.h:996
TVar::bbH
@ bbH
Definition: TVar.hh:67
TVar::JJQCD_S
@ JJQCD_S
Definition: TVar.hh:82
Mela::getCurrentCandidate
MELACandidate * getCurrentCandidate()
Gets the current MELA top-level (input) candList object.
Definition: Mela.cc:546
SIZE_GQQ
@ SIZE_GQQ
Definition: raw_couplings.txt:121
TVar::Lep_ZH_TU
@ Lep_ZH_TU
Definition: TVar.hh:99
TUtil::computeVBFAngles_ComplexBoost
void computeVBFAngles_ComplexBoost(float &costhetastar, float &costheta1_real, float &costheta1_imag, float &costheta2_real, float &costheta2_imag, float &Phi, float &Phi1, float &Q2V1, float &Q2V2, TLorentzVector p4M11, int Z1_lept1Id, TLorentzVector p4M12, int Z1_lept2Id, TLorentzVector p4M21, int Z2_lept1Id, TLorentzVector p4M22, int Z2_lept2Id, TLorentzVector jet1, int jet1Id, TLorentzVector jet2, int jet2Id, TLorentzVector *injet1=0, int injet1Id=0, TLorentzVector *injet2=0, int injet2Id=0)
Definition: TUtil.cc:730
ZZMatrixElement::set_PrimaryHiggsMass
void set_PrimaryHiggsMass(double mh)
Definition: ZZMatrixElement.cc:142
ZZMatrixElement::set_wHiggs
void set_wHiggs(double gah_, int index)
Definition: ZZMatrixElement.cc:184
SuperDijetMela::GetConvBW
float GetConvBW(TVar::Production prod, MELACandidate *cand, bool useTrueBW)
Definition: SuperDijetMela.cc:64
ZZMatrixElement::reset_QuarkMasses
void reset_QuarkMasses()
Definition: ZZMatrixElement.cc:199
TUtil::applyJetMassCorrection
void applyJetMassCorrection(bool flag=true)
Definition: TUtil.cc:36