JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
Mela Class Reference

This is the main Mela object! More...

#include <Mela.h>

Collaboration diagram for Mela:

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 resetYukawaMass (double inmass, int ipart)
 Resets the Yukawa coupling (or "Yukawa mass") for a specific particle. Does not change its "intrinsic" mass. 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...
 
void SetMadgraphCKMElements (double ckmlambda=0.2265, double ckma=0.79, double ckmrho=0.141, double ckmeta=0.357, bool force_refresh=false)
 
std::complex< double > GetMadgraphCKMElement (int iquark, int jquark)
 
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...
 
const TVar::event_scales_typegetRenFacScaleMode () const
 Returns the current RenFac Scale Mode for MELA. 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 production 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 production 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)
 computes the angles for a ttH system More...
 
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]
 
double selfDSMEFTSimcoupl [SIZE_SMEFT]
 

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

This is the main Mela object!

Definition at line 54 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 53 of file Mela.cc.

57  :
58  melaRandomNumber(35797),
59  LHCsqrts(LHCsqrts_),
60  myVerbosity_(verbosity_),
61  ZZME(0),
62  auxiliaryProb(0.),
63  melaCand(0)
64 {
65  this->printLogo();
66  if (myVerbosity_>=TVar::DEBUG) MELAout << "Start Mela constructor" << endl;
67  build(mh_);
68  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela constructor" << endl;
69 }

◆ Mela() [2/2]

Mela::Mela ( const Mela other)

Copy constructor for MELA.

Parameters
[in]otheranother MELA instance

Definition at line 70 of file Mela.cc.

70  :
71 melaRandomNumber(35797),
72 LHCsqrts(other.LHCsqrts),
74 ZZME(0),
75 auxiliaryProb(0.),
76 melaCand(0)
77 {
78  double mh_ = other.ZZME->get_PrimaryHiggsMass();
79  build(mh_);
80 }

◆ ~Mela()

Mela::~Mela ( )

MELA destructor.

Definition at line 81 of file Mela.cc.

81  {
82  if (myVerbosity_>=TVar::DEBUG) MELAout << "Begin Mela destructor" << endl;
83 
84  if(myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying madMELA variables" << endl;
86  delete madMela::updateMap;
87  madMela::updateMap = nullptr;
88 
89  //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!
90  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!
91 
92  // Delete the derived RooFit objects first...
93  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying analytical PDFs" << endl;
94  delete ggSpin0Model;
95  delete spin1Model;
96  delete spin2Model;
97  delete qqZZmodel;
98  // ...then delete the observables.
99  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying analytical PDFs observables" << endl;
100  delete mzz_rrv;
101  delete z1mass_rrv;
102  delete z2mass_rrv;
103  delete costhetastar_rrv;
104  delete costheta1_rrv;
105  delete costheta2_rrv;
106  delete phi_rrv;
107  delete phi1_rrv;
108  delete Y_rrv;
109  delete upFrac_rrv;
110 
111  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying SuperDijetMELA" << endl;
112  delete superDijet;
113  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying SuperMELA" << endl;
114  delete super;
115  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying ZZME" << endl;
116  delete ZZME;
117 
118  // Delete ME constant handles
119  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela destructor: Destroying PConstant handles" << endl;
121 
122  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela destructor" << endl;
123 }

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 372 of file Mela.cc.

372 { 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 139 of file Mela.cc.

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

◆ 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 564 of file Mela.cc.

564  {
565  return ZZME->Calculate4Momentum(Mx, M1, M2, theta, theta1, theta2, Phi1, Phi);
566 }

◆ cleanLinkedFiles()

void Mela::cleanLinkedFiles ( )
static

Definition at line 126 of file Mela.cc.

126  {
127  remove("ffwarn.dat");
128  remove("br.sm1");
129  remove("br.sm2");
130  remove("input.DAT");
131  remove("process.DAT");
132  remove("Pdfdata/cteq6l1.tbl");
133  remove("Pdfdata/cteq6l.tbl");
134  remove("Pdfdata/NNPDF30_lo_as_0130.LHgrid");
135  rmdir("Pdfdata");
136 }

◆ compute4FermionWeight()

void Mela::compute4FermionWeight ( float &  w)

Definition at line 1846 of file Mela.cc.

1846  { // Lepton interference using JHUGen
1847  reset_PAux();
1848 
1850  if (melaCand){
1851  bool hasFailed=false;
1852  int id_original[2][2];
1853  for (int iv=0; iv<2; iv++){
1854  MELAParticle* Vi = melaCand->getSortedV(iv);
1855  int ndau=Vi->getNDaughters();
1856  if (ndau!=2 || !(PDGHelpers::isAZBoson(Vi->id) || PDGHelpers::isAPhoton(Vi->id))){ w=1; hasFailed=true; break; } // Veto WW, ZG, GG
1857  for (int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->getDaughter(ivd)->id;
1858  }
1859  if (
1860  !PDGHelpers::isALepton(id_original[0][0])
1861  ||
1862  !PDGHelpers::isALepton(id_original[0][1])
1863  ||
1864  !PDGHelpers::isALepton(id_original[1][0])
1865  ||
1866  !PDGHelpers::isALepton(id_original[1][1])
1867  ){
1868  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeWeight: Function is not implemented for decay states other than 4l/2l2l." << endl;
1869  w=0;
1870  hasFailed=true;
1871  }
1872  /*
1873  if (
1874  (id_original[0][0]==0 && id_original[0][1]==0)
1875  ||
1876  (id_original[1][0]==0 && id_original[1][1]==0)
1877  ){ // Return 1 if any pairs of quarks are unknown
1878  w=1;
1879  hasFailed=true;
1880  }
1881  */
1882 
1883  if (!hasFailed){
1884  float dXsec_HZZ_JHU, dXsec_HZZ_JHU_interf; // temporary prob
1885 
1886  // Calculate dXsec ratio by directly modifying the candidate
1887  computeP(dXsec_HZZ_JHU, false);
1888  for (int ivd=0; ivd<2; ivd++) melaCand->getSortedV(1)->getDaughter(ivd)->id=id_original[0][0]*(1-2*ivd);
1889  computeP(dXsec_HZZ_JHU_interf, false);
1890  for (int ivd=0; ivd<2; ivd++) melaCand->getSortedV(1)->getDaughter(ivd)->id=id_original[1][ivd];
1891 
1892  w = dXsec_HZZ_JHU_interf / dXsec_HZZ_JHU;
1893  // protect against anomalously large weights
1894  if (w>5.) w=25./w;
1895  }
1896  }
1897 
1899  reset_CandRef();
1900 }

◆ computeConstant()

void Mela::computeConstant ( float &  prob)
protected

Definition at line 2208 of file Mela.cc.

2208  {
2209  float pConst=1.;
2210  setConstant();
2211  getConstant(pConst);
2212  prob *= pConst;
2213 }

◆ 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 1378 of file Mela.cc.

1382  {
1383  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeD_CP" << endl;
1384  double coupl_mix[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1385  double coupl_1[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1386  double coupl_2[nSupportedHiggses][SIZE_HVV][2] ={ { { 0 } } };
1387 
1388  switch (myType){
1389  case TVar::D_g1g4:
1390  coupl_mix[0][0][0] =1.;
1391  coupl_mix[0][3][0] =2.521;
1392  coupl_1[0][0][0] =1.;
1393  coupl_2[0][3][0] =2.521;
1394  break;
1395  case TVar::D_g1g4_pi_2:
1396  coupl_mix[0][0][0] =1.;
1397  coupl_mix[0][3][1] =2.521;
1398  coupl_1[0][0][0] =1.;
1399  coupl_2[0][3][1] =2.521;
1400  break;
1401  case TVar::D_g1g2:
1402  coupl_mix[0][0][0] =1.;
1403  coupl_mix[0][1][0] = 1.638;
1404  coupl_1[0][0][0] =1.;
1405  coupl_2[0][1][0] = 1.638;
1406  break;
1407  case TVar::D_g1g2_pi_2:
1408  coupl_mix[0][0][0] =1.;
1409  coupl_mix[0][1][1] = 1.638;
1410  coupl_1[0][0][0] =1.;
1411  coupl_2[0][1][1] = 1.638;
1412  break;
1413  case TVar::D_g1g1prime2:
1414  coupl_mix[0][0][0] =1.;
1415  coupl_mix[0][11][0] = 12046.01;
1416  coupl_1[0][0][0] =1.;
1417  coupl_2[0][11][0] = 12046.01;
1418  break;
1419  case TVar::D_zzzg:
1420  coupl_mix[0][0][0] =1.;
1421  coupl_mix[0][4][0] = 0.0688;
1422  coupl_1[0][0][0] =1.;
1423  coupl_2[0][4][0] = 0.0688;
1424  break;
1425  case TVar::D_zzgg:
1426  coupl_mix[0][0][0] =1.;
1427  coupl_mix[0][7][0] = -0.0898;
1428  coupl_1[0][0][0] =1.;
1429  coupl_2[0][7][0] = -0.0898;
1430  break;
1431  case TVar::D_zzzg_PS:
1432  coupl_mix[0][0][0] =1.;
1433  coupl_mix[0][6][0] = 0.0855;
1434  coupl_1[0][0][0] =1.;
1435  coupl_2[0][6][0] = 0.0855;
1436  break;
1437  case TVar::D_zzgg_PS:
1438  coupl_mix[0][0][0] =1.;
1439  coupl_mix[0][9][0] = -0.0907;
1440  coupl_1[0][0][0] =1.;
1441  coupl_2[0][9][0] = -0.0907;
1442  break;
1443  case TVar::D_zzzg_g1prime2:
1444  coupl_mix[0][0][0] =1.;
1445  coupl_mix[0][30][0] = -7591.914;
1446  coupl_1[0][0][0] =1.;
1447  coupl_2[0][30][0] = -7591.914;
1448  break;
1450  coupl_mix[0][0][0] =1.;
1451  coupl_mix[0][30][1] = -7591.914;
1452  coupl_1[0][0][0] =1.;
1453  coupl_2[0][30][1] = -7591.914;
1454  break;
1455  default:
1456  MELAout <<"Error: Not supported!"<<endl;
1457  }
1458 
1459  float pMix, p1, p2;
1461  computeP_selfDspin0(coupl_mix, pMix, true);
1462  computeP_selfDspin0(coupl_1, p1, true);
1463  computeP_selfDspin0(coupl_2, p2, true);
1464  prob = pMix- p1- p2;
1465  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeD_CP" << endl;
1466 }

◆ computeD_gg()

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

Definition at line 1973 of file Mela.cc.

1977  {
1978  prob=-99;
1979  if (myME != TVar::MCFM || myType != TVar::D_gg10){
1980  MELAout << "Only support MCFM and D_gg10"<<endl;
1981  return;
1982  }
1983 
1985  if (melaCand){
1986  float bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, bkgHZZ_prob_noscale;
1987  float ggScale=0;
1988  setProcess(TVar::bkgZZ, myME, TVar::ZZGG); computeP(ggzz_VAMCFM_noscale, false);
1989  setProcess(TVar::HSMHiggs, myME, TVar::ZZGG); computeP(ggHZZ_prob_pure_noscale, false);
1990  setProcess(TVar::bkgZZ_SMHiggs, myME, TVar::ZZGG); computeP(bkgHZZ_prob_noscale, false); setConstant(); getConstant(ggScale);
1991  if (ggScale>0.){
1992  bkgHZZ_prob_noscale /= ggScale;
1993  ggHZZ_prob_pure_noscale /= ggScale;
1994  ggzz_VAMCFM_noscale /= ggScale;
1995  }
1996  ggHZZ_prob_int_noscale = bkgHZZ_prob_noscale - ggHZZ_prob_pure_noscale - ggzz_VAMCFM_noscale;
1997 
1998  setProcess(TVar::bkgZZ, myME, TVar::ZZQQB); computeP(bkg_VAMCFM, true);
1999 
2000  constructDggr(bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, 10., prob); // Use 10 for Dgg10
2001  }
2002 
2004  reset_CandRef();
2005 }

◆ 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 598 of file Mela.cc.

607  {
609  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeDecayAngles" << endl;
610 
611  qH=0; m1=0; m2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
612 
614  if (melaCand){
615  TLorentzVector const nullVector(0, 0, 0, 0);
616 
617  int partIncCode=TVar::kNoAssociated; // Only use associated partons in the pT=0 frame boost
618  simple_event_record mela_event;
619  mela_event.AssociationCode=partIncCode;
621  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
622 
623  if (daughters.size()<2 || daughters.size()>4 || mela_event.intermediateVid.size()!=2){
624  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeDecayAngles: Number of daughters " << daughters.size() << " or number of intermediate Vs " << mela_event.intermediateVid << " not supported!" << endl;
625  return;
626  }
627 
628  // Make sure there are exactly 4 daughters, null or not
629  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
630  else if (daughters.size()==2){
631  daughters.push_back(SimpleParticle_t(-9000, nullVector));
632  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
633  }
634  qH = (daughters.at(0).second+daughters.at(1).second+daughters.at(2).second+daughters.at(3).second).M();
635  m1 = (daughters.at(0).second+daughters.at(1).second).M();
636  m2 = (daughters.at(2).second+daughters.at(3).second).M();
637 
639  costhetastar, costheta1, costheta2, Phi, Phi1,
640  daughters.at(0).second, daughters.at(0).first,
641  daughters.at(1).second, daughters.at(1).first,
642  daughters.at(2).second, daughters.at(2).first,
643  daughters.at(3).second, daughters.at(3).first
644  );
645 
646  // Protect against NaN
647  if (!std::isfinite(costhetastar)) costhetastar=0;
648  if (!std::isfinite(costheta1)) costheta1=0;
649  if (!std::isfinite(costheta2)) costheta2=0;
650  if (!std::isfinite(Phi)) Phi=0;
651  if (!std::isfinite(Phi1)) Phi1=0;
652  }
653  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeDecayAngles: No possible melaCand in TEvtProb to compute angles." << endl;
654 
655  reset_CandRef();
656  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeDecayAngles" << endl;
657 }

◆ computeDijetConvBW()

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

Definition at line 2831 of file Mela.cc.

2831  {
2833  prob = superDijet->GetConvBW(myProduction_, melaCand, useTrueBW);
2834  reset_CandRef();
2835 }

◆ 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 JHUGen matrix elements, productions, and processes can be used here
The following production modes are supported using the MCFM Matrix Element (as named in TVar::Production) TVar::ZZGG TVar::ZZQQB TVar::ZZQQB_STU TVar::ZZQQB_S TVar::ZZQQB_TU TVar::ZZINDEPENDENT TVar::JJQCD && process == TVar::bkgZJets
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 1223 of file Mela.cc.

1226  {
1227  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeP" << endl;
1228  reset_PAux();
1229 
1231  if (melaCand){
1232  TLorentzVector const nullVector(0, 0, 0, 0);
1233  float mZZ=0, mZ1=0, mZ2=0, costheta1=0, costheta2=0, Phi=0, costhetastar=0, Phi1=0;
1234 
1235  if (myME_ == TVar::ANALYTICAL){
1237  mZZ, mZ1, mZ2,
1238  costheta1, costheta2, Phi,
1239  costhetastar, Phi1
1240  );
1241  costhetastar_rrv->setVal(costhetastar);
1242  costheta1_rrv->setVal(costheta1);
1243  costheta2_rrv->setVal(costheta2);
1244  phi_rrv->setVal(Phi);
1245  phi1_rrv->setVal(Phi1);
1246  z1mass_rrv->setVal(mZ1);
1247  z2mass_rrv->setVal(mZ2);
1248  mzz_rrv->setVal(mZZ);
1249  Y_rrv->setConstant(true); // Just to avoid integrating over this variable unnecessarily
1250 
1251  bool computeAnaMELA = configureAnalyticalPDFs();
1252  if (computeAnaMELA){
1254  RooAbsPdf* integral = (RooAbsPdf*)pdf->createIntegral(RooArgSet(*costhetastar_rrv, *phi1_rrv));
1255  prob = integral->getVal();
1256  delete integral;
1257  }
1258  else prob = pdf->getVal();
1259  }
1260  else if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeP: The specified anaMELA configuration is not valid!" << endl;
1261 
1262  Y_rrv->setConstant(false);
1263  }
1264  else if (myME_ == TVar::JHUGen || myME_ == TVar::MCFM || myME_ == TVar::MADGRAPH){
1265  setAZffCouplings();
1270  ZZME->computeXS(prob);
1271  }
1272  else{
1274  mZZ, mZ1, mZ2,
1275  costheta1, costheta2, Phi,
1276  costhetastar, Phi1
1277  );
1278 
1279  if (myVerbosity_>=TVar::DEBUG){ // Notify first
1280  MELAout << "Mela::computeP: Condition (myME_ == TVar::MCFM && myProduction_ == TVar::ZZINDEPENDENT && myModel_ == TVar::bkgZZ/WW/ZGamma/ZJJ/GammaGamma)." << endl;
1281  vector<TLorentzVector> pDauVec = calculate4Momentum(mZZ, mZ1, mZ1, acos(costhetastar), acos(costheta1), acos(costheta2), Phi1, Phi);
1282  MELAout
1283  << "\tOriginal mZZ=" << mZZ << " "
1284  << "m1=" << mZ1 << " "
1285  << "m2=" << mZ2 << " "
1286  << "h1=" << costheta1 << " "
1287  << "h2=" << costheta2 << " "
1288  << "Phi=" << Phi << " "
1289  << "hs=" << costhetastar << " "
1290  << "Phi1=" << Phi1 << endl;
1291  MELAout << "\tfor daughters:" << endl;
1292  for (int iv=0; iv<2; iv++){
1293  for (int idau=0; idau<min(2, melaCand->getSortedV(iv)->getNDaughters()); idau++){
1294  MELAout
1295  << "id=" << melaCand->getSortedV(iv)->getDaughter(idau)->id << " "
1296  << "x=" << pDauVec.at(2*iv+idau).X() << " "
1297  << "y=" << pDauVec.at(2*iv+idau).Y() << " "
1298  << "z=" << pDauVec.at(2*iv+idau).Z() << " "
1299  << "t=" << pDauVec.at(2*iv+idau).T() << endl;
1300  }
1301  }
1302 
1303  }
1304 
1305  prob = 0;
1306  int gridsize_hs = 5;
1307  double hs_min = 0; //-1.;
1308  double hs_max = 1;
1309  double hs_step = (hs_max - hs_min) / double(gridsize_hs);
1310 
1311  int gridsize_phi1 = 5;
1312  double phi1_min = 0; //-TMath::Pi();
1313  double phi1_max = TMath::Pi();
1314  double phi1_step = (phi1_max - phi1_min) / double(gridsize_phi1);
1315 
1316  for (int i_hs = 0; i_hs < gridsize_hs + 1; i_hs++){
1317  double hs_val = hs_min + i_hs * hs_step;
1318  for (int i_phi1 = 0; i_phi1 < gridsize_phi1 + 1; i_phi1++){
1319  double phi1_val = phi1_min + i_phi1 * phi1_step;
1320  float temp_prob=0;
1321 
1322  // Get identical 4-vectors
1323  SimpleParticleCollection_t daughters;
1324  vector<TLorentzVector> pDauVec = calculate4Momentum(mZZ, mZ1, mZ2, acos(hs_val), acos(costheta1), acos(costheta2), phi1_val, Phi);
1325  for (int iv=0; iv<2; iv++){
1326  for (int idau=0; idau<min(2, melaCand->getSortedV(iv)->getNDaughters()); idau++){
1327  SimpleParticle_t tmpPair(melaCand->getSortedV(iv)->getDaughter(idau)->id, pDauVec.at(2*iv+idau));
1328  daughters.push_back(tmpPair);
1329  }
1330  }
1331  if (myVerbosity_>=TVar::DEBUG){ // Summarize the integrated particles
1332  MELAout << "Mela::computeP: hs, Phi1 are now " << hs_val << " " << phi1_val << endl;
1333  unsigned int idau=1;
1334  for (SimpleParticle_t const& tmpPart:daughters){
1335  MELAout << "Dau " << idau << " "
1336  << "id=" << tmpPart.first << " "
1337  << "x=" << tmpPart.second.X() << " "
1338  << "y=" << tmpPart.second.Y() << " "
1339  << "z=" << tmpPart.second.Z() << " "
1340  << "t=" << tmpPart.second.T() << endl;
1341  idau++;
1342  }
1343  }
1344  vector<MELAParticle*> partList_tmp;
1345  vector<MELACandidate*> candList_tmp;
1347  &daughters,
1348  0,
1349  0,
1350  false,
1351  &partList_tmp,
1352  &candList_tmp
1353  );
1354  if (myVerbosity_>=TVar::ERROR && !cand_tmp) MELAerr << "Mela::computeP: Failed to construct temporary candidate!" << endl;
1355  setCurrentCandidate(cand_tmp);
1356  if (myVerbosity_>=TVar::DEBUG && cand_tmp){ MELAout << "Mela::computeP: ZZINDEPENDENT calculation produces candidate:" << endl; TUtil::PrintCandidateSummary(cand_tmp); }
1357  // calculate the ME
1358  ZZME->computeXS(temp_prob);
1359  // Delete the temporary particles
1360  for (MELACandidate* tmpPart:candList_tmp) delete tmpPart; // Only one candidate should really be here
1361  for (MELAParticle* tmpPart:partList_tmp) delete tmpPart;
1363  prob += temp_prob;
1364  }
1365  }
1366  prob = prob / float((gridsize_hs + 1) * (gridsize_phi1 +1));
1367  }
1368  }
1369 
1370  if (useConstant) computeConstant(prob);
1371  }
1372 
1374  reset_CandRef();
1375  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeP" << endl;
1376 }

◆ 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 1117 of file Mela.cc.

1121  {
1122  //remove this line, it's here for counting purposes. Zpffcoupl
1123  // Don't set these, and you will get 0.
1124  if (myME_==TVar::JHUGen){
1125  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1126  // JHUGen ME production side is Hqq=1, Hgg=1
1127  selfDHqqcoupl[jh][0][0] = 1.0;
1128  selfDHggcoupl[jh][0][0] = 1.0;
1129  }
1130  }
1131  else if (myME_==TVar::MCFM){
1132  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1133  // MCFM ME production side is Htt=Hbb=1
1134  selfDHttcoupl[jh][0][0] = 1.0;
1135  selfDHbbcoupl[jh][0][0] = 1.0;
1136  }
1137  }
1138  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1139  for (int im=0; im<2; im++){
1140  for (int ic=0; ic<SIZE_HVV; ic++){
1141  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1142  selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1143  }
1144  }
1145  }
1146 
1147  computeP(
1148  prob,
1149  useConstant
1150  );
1151 }

◆ 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 1152 of file Mela.cc.

1157  {
1158  for (int im=0; im<2; im++){
1159  for (int ic=0; ic<SIZE_ZQQ; ic++) selfDZqqcoupl[ic][im] = selfDZqqcoupl_input[ic][im];
1160  for (int ic=0; ic<SIZE_ZVV; ic++) selfDZvvcoupl[ic][im] = selfDZvvcoupl_input[ic][im];
1161  }
1162 
1163  computeP(
1164  prob,
1165  useConstant
1166  );
1167 }

◆ 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 1168 of file Mela.cc.

1172  {
1173  // Initialize the quark_left_right couplings
1174  selfDZqqcoupl[0][0]=1.0;
1175  selfDZqqcoupl[1][0]=1.0;
1176 
1177  for (int im=0; im<2; im++){
1178  for (int ic=0; ic<SIZE_ZVV; ic++) selfDZvvcoupl[ic][im] = selfDZvvcoupl_input[ic][im];
1179  }
1180 
1181  computeP(
1182  prob,
1183  useConstant
1184  );
1185 }

◆ 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 1186 of file Mela.cc.

1192  {
1193  for (int im=0; im<2; im++){
1194  for (int ic=0; ic<SIZE_GGG; ic++) selfDGggcoupl[ic][im] = selfDGggcoupl_input[ic][im];
1195  for (int ic=0; ic<SIZE_GQQ; ic++) selfDGqqcoupl[ic][im] = selfDGqqcoupl_input[ic][im];
1196  for (int ic=0; ic<SIZE_GVV; ic++) selfDGvvcoupl[ic][im] = selfDGvvcoupl_input[ic][im];
1197  }
1198 
1199  computeP(
1200  prob,
1201  useConstant
1202  );
1203 }

◆ 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 1204 of file Mela.cc.

1209  {
1210  selfDGqqcoupl[0][0]=1.0; // Set these incorrectly, and you see left-right asymmetries in qqG (or nothing)
1211  selfDGqqcoupl[1][0]=1.0;
1212 
1213  for (int im=0; im<2; im++){
1214  for (int ic=0; ic<SIZE_GGG; ic++) selfDGggcoupl[ic][im] = selfDGggcoupl_input[ic][im];
1215  for (int ic=0; ic<SIZE_GVV; ic++) selfDGvvcoupl[ic][im] = selfDGvvcoupl_input[ic][im];
1216  }
1217 
1218  computeP(
1219  prob,
1220  useConstant
1221  );
1222 }

◆ computePM4l()

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

Definition at line 1903 of file Mela.cc.

1903  {
1904  reset_PAux();
1905  prob=-99;
1906 
1908  if (melaCand){
1909  bool hasFailed=false;
1910  int id_original[2][2];
1911  for (int iv=0; iv<2; iv++){
1912  MELAParticle* Vi = melaCand->getSortedV(iv);
1913  int ndau=Vi->getNDaughters();
1914  if (ndau!=2 || !(PDGHelpers::isAZBoson(Vi->id) || PDGHelpers::isAPhoton(Vi->id))){ hasFailed=true; break; } // Veto WW, ZG, GG
1915  for (int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->getDaughter(ivd)->id;
1916  }
1917 
1918  if (!hasFailed){
1919  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");
1920  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");
1921  else if (
1922  (abs(id_original[0][0])==11 && abs(id_original[0][1])==11 && abs(id_original[1][0])==13 && abs(id_original[1][1])==13)
1923  ||
1924  (abs(id_original[0][0])==13 && abs(id_original[0][1])==13 && abs(id_original[1][0])==11 && abs(id_original[1][1])==11)
1925  ) super->SetDecayChannel("2e2mu");
1926  else{ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computePM4l: SuperMELA is currently not implemented for decay states other than 4e. 4mu, 2e2mu." << endl; hasFailed=true; }
1927  }
1928 
1929  if (!hasFailed){
1930  double mZZ = melaCand->m();
1931  // currently only supported signal is ggH(0+), only supported background is summed paramterization
1932  if (syst == TVar::SMSyst_None){
1933  std::pair<double, double> m4lP = super->M4lProb(mZZ);
1934  if (myModel_ == TVar::HSMHiggs) prob = m4lP.first;
1935  else if (myModel_ == TVar::bkgZZ) prob = m4lP.second;
1936  }
1937  else{
1938  //systematics for p(m4l)
1939  float mZZtmp=mZZ;
1940  float meanErr=float(super->GetSigShapeSystematic("meanCB"));
1941  float sigmaErr=float(super->GetSigShapeSystematic("sigmaCB"));
1942  float sigmaCB=float(super->GetSigShapeParameter("sigmaCB"));
1943  if (syst == TVar::SMSyst_ScaleUp) mZZtmp = mZZ*(1.0+meanErr);
1944  else if (syst == TVar::SMSyst_ScaleDown) mZZtmp = mZZ*(1.0-meanErr);
1945  else if (syst == TVar::SMSyst_ResUp || syst == TVar::SMSyst_ResDown) mZZtmp=melaRandomNumber.Gaus(mZZ, sigmaErr*sigmaCB);
1946 
1947  std::pair<double, double> m4lP = super->M4lProb(mZZtmp);
1948  if (myModel_ == TVar::HSMHiggs) prob = m4lP.first;
1949  else if (myModel_ == TVar::bkgZZ) prob = m4lP.second;
1950  }
1951  }
1952  }
1953 
1955  reset_CandRef();
1956 }

◆ 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 1469 of file Mela.cc.

1476  {
1477  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1478  for (int im=0; im<2; im++){
1479  for (int ic=0; ic<SIZE_HVV; ic++){
1480  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1481  selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1482  }
1483  }
1484  }
1485  for (int im=0; im<2; im++){
1486  for (int ic=0; ic<SIZE_ATQGC; ic++) selfDaTQGCcoupl[ic][im] = selfDaTQGCcoupl_input[ic][im];
1487  }
1488  for (int im=0; im<2; im++){
1489  for (int ic=0; ic<SIZE_AZff; ic++) selfDAZffcoupl[ic][im] = selfDAZffcoupl_input[ic][im];
1490  }
1492  prob,
1493  useConstant
1494  );
1495 }

◆ 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 1496 of file Mela.cc.

1499  {
1500  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdDecP" << endl;
1501  reset_PAux();
1503 
1504  bool hasFailed = false;
1505  if (myME_ != TVar::MCFM){
1506  MELAout << "Mela::computeProdDecP ME is not supported for ME " << myME_ << endl;
1507  hasFailed = true;
1508  }
1509  if (
1510  !(
1520  )
1521  ){
1522  MELAout << "Mela::computeProdDecP production mode is not supported for production " << myProduction_ << endl;
1523  hasFailed = true;
1524  }
1525  if (!melaCand) hasFailed=true;
1526  if (hasFailed) prob=0;
1527  else{
1530  ZZME->computeProdXS_VVHVV(prob);
1531  if (useConstant) computeConstant(prob);
1532  }
1533 
1535  reset_CandRef();
1536  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdDecP" << endl;
1537 }

◆ 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 1540 of file Mela.cc.

1546  {
1547  for (int im=0; im<2; im++){ for (int ic=0; ic<SIZE_HGG; ic++) selfDHggcoupl[0][ic][im] = selfDHggcoupl_input[ic][im]; }
1548  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1549  for (int im=0; im<2; im++){
1550  for (int ic=0; ic<SIZE_HVV; ic++){
1551  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1552  selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1553  }
1554  }
1555  }
1556  computeProdP(
1557  prob,
1558  useConstant
1559  );
1560 }

◆ 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 1561 of file Mela.cc.

1564  {
1565  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP" << endl;
1566  if (myProduction_ == TVar::ttH || myProduction_ == TVar::bbH) computeProdP_ttH(prob, 2, 0, useConstant);
1568  else{
1569  reset_PAux();
1570 
1572  if (melaCand){
1573  TLorentzVector nullFourVector(0, 0, 0, 0);
1574  bool isJet2Fake = false;
1575  MELACandidate* candOriginal = melaCand;
1576 
1577  unsigned int firstJetIndex=0;
1578  TLorentzVector jet1, higgs;
1579  TLorentzVector jet1massless(0, 0, 0, 0);
1580  TLorentzVector jet2massless(0, 0, 0, 0);
1581  higgs=melaCand->p4;
1583  int njets=0;
1584  {
1585  int ip=0;
1586  for (MELAParticle* tmpPart:melaCand->getAssociatedJets()){
1587  if (tmpPart->passSelection){
1588  njets++;
1589  if (njets==1){
1590  firstJetIndex = ip;
1591  jet1 = tmpPart->p4;
1592  }
1593  }
1594  ip++;
1595  }
1596  }
1597  if (njets==1){
1598  TUtil::scaleMomentumToEnergy(jet1, jet1massless);
1599  TUtil::computeFakeJet(jet1massless, higgs, jet2massless);
1600  isJet2Fake=true;
1601 
1602  // Scale jet2massless pz if necessary
1603  const double threshold = 1000.*LHCsqrts/2.;
1604  TLorentzVector pTotal = higgs+jet1massless+jet2massless;
1605  double sysZ = pTotal.Z();
1606  if (fabs(sysZ)>threshold){
1607  double maxpz2 = threshold - higgs.Z() - jet1massless.Z();
1608  if (fabs(maxpz2)>0.){
1609  double ratio = jet2massless.Z()/maxpz2;
1610  double absp=sqrt(pow(jet2massless.Pt(), 2)+pow(jet2massless.Z()*ratio, 2));
1611  if (myVerbosity_>=TVar::INFO) MELAout << "Mela::computeProdP, isJet2Fake=true case: Rescaling pz of fake jet by " << ratio << " and energy = " << absp << "." << endl;
1612  jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), jet2massless.Z()*ratio, absp);
1613  }
1614  else{
1615  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;
1616  jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), 0., jet2massless.Pt());
1617  }
1618  }
1619  }
1620  }
1621 
1622  if (isJet2Fake){ // Do the integration
1623  MELACandidate* candCopy = melaCand->shallowCopy();
1624  MELAParticle* firstJet = candCopy->getAssociatedJet(firstJetIndex);
1625  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!
1626  MELAParticle fakeJet(0, jet2massless); // jet2massless is the unknown jet
1627  candCopy->addAssociatedJet(&fakeJet);
1628  setCurrentCandidate(candCopy);
1629 
1631  ZZME->computeProdXS_JJH(prob); // Higgs + 2 jets: SBF or WBF main probability
1632 
1633  int nGrid=11;
1634  std::vector<double> etaArray;
1635  std::vector<double> pArray;
1636  double eta_max = 10;
1637  if (jet2massless.Pt()>0.) eta_max = max(eta_max, 1.2*fabs(jet2massless.Eta()));
1638  double eta_min = -eta_max;
1639 
1640  for (int iter=0; iter<nGrid; iter++){
1641  float prob_temp=0;
1642 
1643  double jet2temp_eta = ((double)iter)*(eta_max-eta_min) / (((double)nGrid) - 1.) + eta_min;
1644  etaArray.push_back(jet2temp_eta);
1645  double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1646  double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1647  fakeJet.p4.SetZ(jet2temp_pz);
1648  fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1649 
1650  // Skip case with invalid pz
1651  const double threshold = 1000.*LHCsqrts/2.;
1652  TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1653  double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1654  if (fabs(sys)<threshold){
1656  ZZME->computeProdXS_JJH(prob_temp);
1657  }
1658  pArray.push_back((double)prob_temp);
1659  }
1660 
1661  const double grid_precision = 0.15;
1662  int ctr_iter=0;
1663  for (int iG=0; iG<nGrid-1; iG++){ // For each spacing, first compare the average of end points to spline value
1664  if (pArray[iG]==pArray[iG+1]) continue;
1665  if (etaArray[iG]==etaArray[iG+1]) continue;
1666 
1667  ctr_iter++;
1668 
1669  TGraph interpolator(nGrid, etaArray.data(), pArray.data());
1670  double derivative_first = (pArray[1]-pArray[0])/(etaArray[1]-etaArray[0]);
1671  double derivative_last = (pArray[nGrid-1]-pArray[nGrid-2])/(etaArray[nGrid-1]-etaArray[nGrid-2]);
1672  TSpline3 spline("spline", &interpolator, "b1e1", derivative_first, derivative_last);
1673  double x_middle = (etaArray[iG]+etaArray[iG+1])*0.5;
1674  double y_middle = (pArray[iG]+pArray[iG+1])*0.5;
1675  double y_sp = spline.Eval(x_middle);
1676  if (y_sp<0) y_sp = 0;
1677 
1678  std::vector<double>::iterator gridIt;
1679 
1680  if (fabs(y_sp-y_middle)<grid_precision*fabs(y_middle) || fabs(etaArray[iG+1]-etaArray[iG])<1e-3){
1681  gridIt = pArray.begin()+iG+1;
1682  pArray.insert(gridIt, y_sp);
1683  gridIt = etaArray.begin()+iG+1;
1684  etaArray.insert(gridIt, x_middle);
1685  iG++; // Pass to next bin
1686  }
1687  else{
1688  float prob_temp=0;
1689 
1690  double jet2temp_eta = x_middle;
1691  gridIt = etaArray.begin()+iG+1;
1692  etaArray.insert(gridIt, x_middle);
1693  double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1694  double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1695  fakeJet.p4.SetZ(jet2temp_pz);
1696  fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1697 
1698  // Skip case with invalid pz
1699  const double threshold = 1000.*LHCsqrts/2.;
1700  TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1701  double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1702  if (fabs(sys)<threshold){
1704  ZZME->computeProdXS_JJH(prob_temp);
1705  }
1706  gridIt = pArray.begin()+iG+1;
1707  pArray.insert(gridIt, (double)prob_temp);
1708  iG--; // Do not pass to next bin, repeat until precision is achieved.
1709  }
1710  nGrid++;
1711  }
1712 
1713  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::computeProdP: Number of iterations for JVBF eta integration: " << ctr_iter << endl;
1714 
1715  auxiliaryProb = 0;
1716  int iGFirst=0, iGLast=nGrid-1;
1717  for (int iG=1; iG<nGrid; iG++){
1718  if (pArray[iG]>0 && pArray[iG-1]==0){
1719  iGFirst = iG-1;
1720  break;
1721  }
1722  }
1723  for (int iG=nGrid-2; iG>=0; iG--){
1724  if (pArray[iG]>0 && pArray[iG+1]==0){
1725  iGLast = iG+1;
1726  break;
1727  }
1728  }
1729  double dEtaGrid = etaArray[iGLast] - etaArray[iGFirst];
1730  for (int iG=iGFirst; iG<iGLast-1; iG++){
1731  double dEta = etaArray[iG+1] - etaArray[iG];
1732  double sumProb = pArray[iG]+pArray[iG+1];
1733  sumProb *= 0.5;
1734  dEta = dEta/dEtaGrid;
1735  double addProb = sumProb*dEta;
1736  auxiliaryProb += (float)addProb;
1737  }
1738 
1739  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!
1740  delete candCopy; // Delete the shallow copy
1741  setCurrentCandidate(candOriginal);
1743  if (myVerbosity_>=TVar::DEBUG){
1744  if (melaCand!=candOriginal) MELAerr << "Mela::computeProdP: melaCand!=candOriginal at the end of the fake jet scenario!" << endl;
1745  }
1746 
1747  if (fabs(prob)>0) auxiliaryProb /= prob;
1748  }
1749  else{
1752  ZZME->computeProdXS_JJH(prob); // Higgs + 2 jets: SBF or WBF
1753  }
1754  else if (myProduction_ == TVar::JQCD){
1755  // No anomalous couplings are implemented in HJ
1756  ZZME->computeProdXS_JH(prob); // Higgs + 1 jet; only SM is supported for now.
1757  }
1758  }
1759  if (useConstant) computeConstant(prob);
1760  }
1761 
1763  reset_CandRef();
1764  }
1765  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP" << endl;
1766 }

◆ computeProdP_ttH()

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

Definition at line 1817 of file Mela.cc.

1822  {
1823  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP_ttH" << endl;
1824  reset_PAux();
1825 
1827  if (melaCand){
1829  ZZME->computeProdXS_ttH(prob,topProcess, topDecay);
1830  if (useConstant) computeConstant(prob);
1831  }
1832 
1834  reset_CandRef();
1835  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP_ttH" << endl;
1836 }

◆ 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 1769 of file Mela.cc.

1774  {
1775  // Dedicated function for VH ME
1776  selfDHggcoupl[0][0][0] = 1.0; // Don't set this, and you might get 0 in the future for ggVH.
1777  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
1778  for (int im=0; im<2; im++){
1779  for (int ic=0; ic<SIZE_HVV; ic++){
1780  //remove this line, it's here for counting purposes. Zpffcoupl
1781  selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1782  selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im]; // Just for extra protection since differentiate_HWW_HZZ is set to false.
1783  }
1784  }
1785  }
1786 
1788  prob,
1789  includeHiggsDecay,
1790  useConstant
1791  );
1792 }

◆ computeProdP_VH() [2/2]

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

Definition at line 1793 of file Mela.cc.

1797  {
1798  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeProdP_VH" << endl;
1799  reset_PAux();
1800 
1802  if (melaCand){
1805  ZZME->computeProdXS_VH(prob, includeHiggsDecay); // VH
1806 
1807  if (useConstant) computeConstant(prob);
1808  }
1809  }
1810 
1812  reset_CandRef();
1813  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeProdP_VH" << endl;
1814 }

◆ 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 
)

computes the angles for a ttH system

See also
Calls TUtil::computeTTHAngles to fully calculate angles
Attention
This function is ill-documented. Use at your own discretion.
Parameters
[in]topDecayIf topDecay > 0, use unstable tops, otherwise use stable top quarks in the matrix element
[out]mT1
[out]mW1
[out]mT2
[out]mW2
[out]costheta1
[out]costheta2
[out]Phi
[out]costhetastar
[out]Phi1
[out]hbb
[out]hWW
[out]Phibb
[out]Phi1bb
[out]hWplusf
[out]PhiWplusf
[out]hWminusf
[out]PhiWminusf

Definition at line 935 of file Mela.cc.

963  {
965  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles" << endl;
966 
967  mT1=mT2=mW1=mW2
968  =costheta1=costheta2=Phi=costhetastar=Phi1
969  =hbb=hWW=Phibb=Phi1bb
970  =hWplusf=PhiWplusf
971  =hWminusf=PhiWminusf=0;
972 
974  if (melaCand){
975  TLorentzVector const nullVector(0, 0, 0, 0);
976 
977  int partIncCode;
978  int nRequested_Tops=1;
979  int nRequested_Antitops=1;
980  if (topDecay>0) partIncCode=TVar::kUseAssociated_UnstableTops; // Look for unstable tops
981  else partIncCode=TVar::kUseAssociated_StableTops; // Look for stable tops
982 
983  simple_event_record mela_event;
984  mela_event.AssociationCode=partIncCode;
985  mela_event.nRequested_Tops=nRequested_Tops;
986  mela_event.nRequested_Antitops=nRequested_Antitops;
988  SimpleParticleCollection_t& mothers = mela_event.pMothers;
989  //SimpleParticleCollection_t& aparts = mela_event.pAssociated;
990  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
991 
992  SimpleParticleCollection_t topDaughters; topDaughters.reserve(3);
993  SimpleParticleCollection_t antitopDaughters; antitopDaughters.reserve(3);
994 
995  if (topDecay>0){
996  // Daughters are assumed to have been ordered as b, Wf, Wfb already.
997  for (unsigned int itd=0; itd<mela_event.pTopDaughters.at(0).size(); itd++) topDaughters.push_back(mela_event.pTopDaughters.at(0).at(itd));
998  for (unsigned int itd=0; itd<mela_event.pAntitopDaughters.at(0).size(); itd++) antitopDaughters.push_back(mela_event.pAntitopDaughters.at(0).at(itd));
999  }
1000  else{
1001  for (unsigned int itop=0; itop<mela_event.pStableTops.size(); itop++) topDaughters.push_back(mela_event.pStableTops.at(itop));
1002  for (unsigned int itop=0; itop<mela_event.pStableAntitops.size(); itop++) antitopDaughters.push_back(mela_event.pStableAntitops.at(itop));
1003  }
1004 
1005  if (topDecay==0 && (mela_event.pStableTops.size()<1 || mela_event.pStableAntitops.size()<1)){
1007  << "TUtil::TTHiggsMatEl: Number of stable tops (" << mela_event.pStableTops.size() << ")"
1008  << " and number of stable antitops (" << mela_event.pStableAntitops.size() << ")"
1009  << " in ttH process are not 1!" << endl;
1010  return;
1011  }
1012  else if (topDecay>0 && (mela_event.pTopDaughters.size()<1 || mela_event.pAntitopDaughters.size()<1)){
1014  << "Mela::computeTTHAngles: Number of set of top daughters (" << mela_event.pTopDaughters.size() << ")"
1015  << " and number of set of antitop daughters (" << mela_event.pAntitopDaughters.size() << ")"
1016  << " in ttH process are not 1!" << endl;
1017  return;
1018  }
1019  else if (topDecay>0 && (mela_event.pTopDaughters.at(0).size()!=3 || mela_event.pAntitopDaughters.at(0).size()!=3)){
1021  << "Mela::computeTTHAngles: Number of top daughters (" << mela_event.pTopDaughters.at(0).size() << ")"
1022  << " and number of antitop daughters (" << mela_event.pAntitopDaughters.at(0).size() << ")"
1023  << " in ttH process are not 3!" << endl;
1024  return;
1025  }
1026  if (topDaughters.size()<3){ for (size_t ip=topDaughters.size(); ip<3; ip++) topDaughters.emplace_back(-9000, nullVector); }
1027  if (antitopDaughters.size()<3){ for (size_t ip=antitopDaughters.size(); ip<3; ip++) antitopDaughters.emplace_back(-9000, nullVector); }
1028 
1029  // Make sure there are exactly 4 daughters, null or not
1030  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
1031  SimpleParticle_t& firstPart = daughters.at(0);
1032  firstPart.first=25;
1033  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
1034  daughters.erase(daughters.begin()+4, daughters.end());
1035  }
1036  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
1037  else if (daughters.size()==2){
1038  daughters.push_back(SimpleParticle_t(-9000, nullVector));
1039  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
1040  }
1041 
1042  // Compute masses
1043  {
1044  TLorentzVector pT;
1045  TLorentzVector pW;
1046  for (size_t ip=0; ip<topDaughters.size(); ip++){
1047  if (ip>0){ pT += topDaughters.at(ip).second; pW += topDaughters.at(ip).second; }
1048  else pT += topDaughters.at(ip).second;
1049  }
1050  mT1=pT.M();
1051  mW1=pW.M();
1052  }
1053  {
1054  TLorentzVector pT;
1055  TLorentzVector pW;
1056  for (size_t ip=0; ip<antitopDaughters.size(); ip++){
1057  if (ip>0){ pT += antitopDaughters.at(ip).second; pW += antitopDaughters.at(ip).second; }
1058  else pT += antitopDaughters.at(ip).second;
1059  }
1060  mT2=pT.M();
1061  mW2=pW.M();
1062  }
1063 
1065  costhetastar, costheta1, costheta2, Phi, Phi1,
1066  hbb, hWW, Phibb, Phi1bb,
1067  hWplusf, PhiWplusf,
1068  hWminusf, PhiWminusf,
1069 
1070  daughters.at(0).second, daughters.at(0).first,
1071  daughters.at(1).second, daughters.at(1).first,
1072  daughters.at(2).second, daughters.at(2).first,
1073  daughters.at(3).second, daughters.at(3).first,
1074 
1075  topDaughters.at(0).second, topDaughters.at(0).first,
1076  topDaughters.at(1).second, topDaughters.at(1).first,
1077  topDaughters.at(2).second, topDaughters.at(2).first,
1078 
1079  antitopDaughters.at(0).second, antitopDaughters.at(0).first,
1080  antitopDaughters.at(1).second, antitopDaughters.at(1).first,
1081  antitopDaughters.at(2).second, antitopDaughters.at(2).first,
1082 
1083  &(mothers.at(0).second), mothers.at(0).first,
1084  &(mothers.at(1).second), mothers.at(1).first
1085  );
1086 
1087  // Protect against NaN
1088  if (!std::isfinite(costhetastar)) costhetastar=0;
1089  if (!std::isfinite(costheta1)) costheta1=0;
1090  if (!std::isfinite(costheta2)) costheta2=0;
1091  if (!std::isfinite(Phi)) Phi=0;
1092  if (!std::isfinite(Phi1)) Phi1=0;
1093 
1094  if (!std::isfinite(hbb)) hbb=0;
1095  if (!std::isfinite(hWW)) hWW=0;
1096  if (!std::isfinite(Phibb)) Phibb=0;
1097  if (!std::isfinite(Phi1bb)) Phi1bb=0;
1098 
1099  if (!std::isfinite(hWplusf)) hWplusf=0;
1100  if (!std::isfinite(PhiWplusf)) PhiWplusf=0;
1101 
1102  if (!std::isfinite(hWminusf)) hWminusf=0;
1103  if (!std::isfinite(PhiWminusf)) PhiWminusf=0;
1104 
1106  << "Mela::computeTTHAngles: (h1, h2, Phi, hs, Phi1) = "
1107  << costheta1 << ", " << costheta2 << ", " << Phi << ", "
1108  << costhetastar << ", " << Phi1 << endl;
1109  }
1110  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeTTHAngles: No possible melaCand in TEvtProb to compute angles." << endl;
1111 
1112  reset_CandRef();
1113  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeTTHAngles" << endl;
1114 }

◆ computeVBFAngles()

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

computes the production 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
TO COMPUTE VBF ANGLES CORRECTLY DO NOT INPUT A GEN EVENT (an event with mother particles). This will cause the calculator to make the angles relative to the initial-state particles, making the angle a useless discriminator.
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]Q2V2The 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 660 of file Mela.cc.

668  {
670  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles" << endl;
671 
672  Q2V1=0; Q2V2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
673 
675  if (melaCand){
676  TLorentzVector const nullVector(0, 0, 0, 0);
677 
678  int nRequested_AssociatedJets=2;
679  int partIncCode=TVar::kUseAssociated_Jets; // Only use associated partons in the pT=0 frame boost
680  simple_event_record mela_event;
681  mela_event.AssociationCode=partIncCode;
682  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
684  SimpleParticleCollection_t& mothers = mela_event.pMothers;
685  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
686  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
687 
688  if ((int)aparts.size()!=nRequested_AssociatedJets){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVBFAngles: Number of associated particles is not 2!" << endl; return; }
689 
690  // Make sure there are exactly 4 daughters, null or not
691  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
692  SimpleParticle_t& firstPart = daughters.at(0);
693  firstPart.first=25;
694  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
695  daughters.erase(daughters.begin()+4, daughters.end());
696  }
697  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
698  else if (daughters.size()==2){
699  daughters.push_back(SimpleParticle_t(-9000, nullVector));
700  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
701  }
702 
704  MELAout << "Mela::computeVBFAngles: Giving the following particles to TUtil::computeVBFAngles:" << endl;
705  for (unsigned int i=0; i<std::min(daughters.size(), (SimpleParticleCollection_t::size_type) 4); i++) MELAout << daughters.at(i) << endl;
706  for (unsigned int i=0; i<std::min(aparts.size(), (SimpleParticleCollection_t::size_type) 2); i++) MELAout << aparts.at(i) << endl;
707  for (unsigned int i=0; i<std::min(mothers.size(), (SimpleParticleCollection_t::size_type) 2); i++) MELAout << mothers.at(i) << endl;
708  }
709 
711  costhetastar, costheta1, costheta2, Phi, Phi1, Q2V1, Q2V2,
712  daughters.at(0).second, daughters.at(0).first,
713  daughters.at(1).second, daughters.at(1).first,
714  daughters.at(2).second, daughters.at(2).first,
715  daughters.at(3).second, daughters.at(3).first,
716  aparts.at(0).second, aparts.at(0).first,
717  aparts.at(1).second, aparts.at(1).first,
718  &(mothers.at(0).second), mothers.at(0).first,
719  &(mothers.at(1).second), mothers.at(1).first
720  );
721 
722  // Protect against NaN
723  if (!std::isfinite(costhetastar)) costhetastar=0;
724  if (!std::isfinite(costheta1)) costheta1=0;
725  if (!std::isfinite(costheta2)) costheta2=0;
726  if (!std::isfinite(Phi)) Phi=0;
727  if (!std::isfinite(Phi1)) Phi1=0;
728  if (!std::isfinite(Q2V1)) Q2V1=0;
729  if (!std::isfinite(Q2V2)) Q2V2=0;
730 
732  << "Mela::computeVBFAngles: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
733  << Q2V1 << ", " << Q2V2 << ", "
734  << costheta1 << ", " << costheta2 << ", " << Phi << ", "
735  << costhetastar << ", " << Phi1 << endl;
736  }
737  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVBFAngles: No possible melaCand in TEvtProb to compute angles." << endl;
738 
739  reset_CandRef();
740  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVBFAngles" << endl;
741 }

◆ 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 742 of file Mela.cc.

750  {
752  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVBFAngles_ComplexBoost" << endl;
753 
754  Q2V1=0; Q2V2=0; costheta1_real=0; costheta2_real=0; costheta1_imag=0; costheta2_imag=0; Phi=0; costhetastar=0; Phi1=0;
755 
757  if (melaCand){
758  TLorentzVector const nullVector(0, 0, 0, 0);
759 
760  int nRequested_AssociatedJets=2;
761  int partIncCode=TVar::kUseAssociated_Jets; // Only use associated partons in the pT=0 frame boost
762  simple_event_record mela_event;
763  mela_event.AssociationCode=partIncCode;
764  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
766  SimpleParticleCollection_t& mothers = mela_event.pMothers;
767  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
768  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
769 
770  if ((int) aparts.size()!=nRequested_AssociatedJets){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVBFAngles_ComplexBoost: Number of associated particles is not 2!" << endl; return; }
771 
772  // Make sure there are exactly 4 daughters, null or not
773  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
774  SimpleParticle_t& firstPart = daughters.at(0);
775  firstPart.first=25;
776  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
777  daughters.erase(daughters.begin()+4, daughters.end());
778  }
779  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
780  else if (daughters.size()==2){
781  daughters.push_back(SimpleParticle_t(-9000, nullVector));
782  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
783  }
784 
786  costhetastar, costheta1_real, costheta1_imag, costheta2_real, costheta2_imag, Phi, Phi1, Q2V1, Q2V2,
787  daughters.at(0).second, daughters.at(0).first,
788  daughters.at(1).second, daughters.at(1).first,
789  daughters.at(2).second, daughters.at(2).first,
790  daughters.at(3).second, daughters.at(3).first,
791  aparts.at(0).second, aparts.at(0).first,
792  aparts.at(1).second, aparts.at(1).first,
793  &(mothers.at(0).second), mothers.at(0).first,
794  &(mothers.at(1).second), mothers.at(1).first
795  );
796 
797  // Protect against NaN
798  if (!std::isfinite(costhetastar)) costhetastar=0;
799  if (!std::isfinite(costheta1_real)) costheta1_real=0;
800  if (!std::isfinite(costheta2_real)) costheta2_real=0;
801  if (!std::isfinite(costheta1_imag)) costheta1_imag=0;
802  if (!std::isfinite(costheta2_imag)) costheta2_imag=0;
803  if (!std::isfinite(Phi)) Phi=0;
804  if (!std::isfinite(Phi1)) Phi1=0;
805  if (!std::isfinite(Q2V1)) Q2V1=0;
806  if (!std::isfinite(Q2V2)) Q2V2=0;
807 
808  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::computeVBFAngles_ComplexBoost: result = " << Q2V1 << ", " << Q2V2
809  << ", " << costheta1_real << " + " << costheta1_imag << "i, "
810  << costheta2_real << " + " << costheta2_imag << "i, " << Phi << ", "
811  << costhetastar << ", " << Phi1 << endl;
813  << "Mela::computeVBFAngles_ComplexBoost: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
814  << Q2V1 << ", " << Q2V2 << ", "
815  << costheta1_real << " + " << costheta1_imag << "i, "
816  << costheta2_real << " + " << costheta2_imag << "i, "
817  << Phi << ", " << costhetastar << ", " << Phi1 << endl;
818  }
819  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVBFAngles_ComplexBoost: No possible melaCand in TEvtProb to compute angles." << endl;
820 
821  reset_CandRef();
822  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVBFAngles_ComplexBoost" << endl;
823 }

◆ computeVHAngles()

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

computes the production 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 826 of file Mela.cc.

834  {
836  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: Begin computeVHAngles" << endl;
837 
838  mVstar = 0; mV = 0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
839 
841  if (melaCand){
842  TLorentzVector const nullVector(0, 0, 0, 0);
843 
845  if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::computeVHAngles: Production is not supported! " << ProductionName(myProduction_) << endl;
846  return;
847  }
848 
849  int nRequested_AssociatedJets=0;
850  int nRequested_AssociatedLeptons=0;
851  int nRequested_AssociatedPhotons=0;
852  int AssociationVCompatibility=0;
853  int partIncCode=TVar::kNoAssociated; // Just to avoid warnings
854  if (myProduction_ == TVar::Had_ZH || myProduction_ == TVar::Had_WH){ // Only use associated partons
855  partIncCode=TVar::kUseAssociated_Jets;
856  nRequested_AssociatedJets=2;
857  }
858  else if (myProduction_ == TVar::Lep_ZH || myProduction_ == TVar::Lep_WH){ // Only use associated leptons(+)neutrinos
859  partIncCode=TVar::kUseAssociated_Leptons;
860  nRequested_AssociatedLeptons=2;
861  }
862  else if (myProduction_ == TVar::GammaH){ // Only use associated photon
863  partIncCode=TVar::kUseAssociated_Photons;
864  nRequested_AssociatedPhotons=1;
865  }
866  if (myProduction_==TVar::Lep_WH || myProduction_==TVar::Had_WH) AssociationVCompatibility=24;
867  else if (myProduction_==TVar::Lep_ZH || myProduction_==TVar::Had_ZH) AssociationVCompatibility=23;
868  else if (myProduction_==TVar::GammaH) AssociationVCompatibility=22;
869  simple_event_record mela_event;
870  mela_event.AssociationCode=partIncCode;
871  mela_event.AssociationVCompatibility=AssociationVCompatibility;
872  mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
873  mela_event.nRequested_AssociatedLeptons=nRequested_AssociatedLeptons;
874  mela_event.nRequested_AssociatedPhotons=nRequested_AssociatedPhotons;
876  SimpleParticleCollection_t& mothers = mela_event.pMothers;
877  SimpleParticleCollection_t& aparts = mela_event.pAssociated;
878  SimpleParticleCollection_t& daughters = mela_event.pDaughters;
879 
880  if ((aparts.size()<(unsigned int) (nRequested_AssociatedJets+nRequested_AssociatedLeptons) && myProduction_!=TVar::GammaH) || (aparts.size()<(unsigned int) nRequested_AssociatedPhotons && myProduction_==TVar::GammaH)){
882  MELAerr << "Mela::computeVHAngles: Number of associated particles (" << aparts.size() << ") is less than ";
883  if (myProduction_!=TVar::GammaH) MELAerr << (nRequested_AssociatedJets+nRequested_AssociatedLeptons);
884  else MELAerr << nRequested_AssociatedPhotons;
885  MELAerr << endl;
886  }
887  return;
888  }
889 
890  // Make sure there are exactly 4 daughters, null or not
891  if (daughters.size()>4){ // Unsupported size, default to undecayed Higgs
892  SimpleParticle_t& firstPart = daughters.at(0);
893  firstPart.first=25;
894  for (auto it=daughters.cbegin()+1; it!=daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
895  daughters.erase(daughters.begin()+4, daughters.end());
896  }
897  if (daughters.size()%2==1){ for (unsigned int ipar=daughters.size(); ipar<4; ipar++) daughters.push_back(SimpleParticle_t(-9000, nullVector)); }
898  else if (daughters.size()==2){
899  daughters.push_back(SimpleParticle_t(-9000, nullVector));
900  daughters.insert(daughters.begin()+1, SimpleParticle_t(-9000, nullVector));
901  }
902 
904  costhetastar, costheta1, costheta2, Phi, Phi1, mVstar, mV,
905  daughters.at(0).second, daughters.at(0).first,
906  daughters.at(1).second, daughters.at(1).first,
907  daughters.at(2).second, daughters.at(2).first,
908  daughters.at(3).second, daughters.at(3).first,
909  aparts.at(0).second, aparts.at(0).first,
910  aparts.at(1).second, aparts.at(1).first,
911  &(mothers.at(0).second), mothers.at(0).first,
912  &(mothers.at(1).second), mothers.at(1).first
913  );
914 
915  // Protect against NaN
916  if (!std::isfinite(costhetastar)) costhetastar=0;
917  if (!std::isfinite(costheta1)) costheta1=0;
918  if (!std::isfinite(costheta2)) costheta2=0;
919  if (!std::isfinite(Phi)) Phi=0;
920  if (!std::isfinite(Phi1)) Phi1=0;
921  if (!std::isfinite(mVstar)) mVstar=0;
922  if (!std::isfinite(mV)) mV=0;
923 
925  << "Mela::computeVHAngles: (mVstar, mV, h1, h2, Phi, hs, Phi1) = "
926  << mVstar << ", " << mV << ", " << costheta1 << ", " << costheta2 << ", " << Phi << ", "
927  << costhetastar << ", " << Phi1 << endl;
928  }
929  else if (myVerbosity_>=TVar::DEBUG) MELAerr << "Mela::computeVHAngles: No possible melaCand in TEvtProb to compute angles." << endl;
930 
931  reset_CandRef();
932  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela: End computeVHAngles" << endl;
933 }

◆ configureAnalyticalPDFs()

bool Mela::configureAnalyticalPDFs ( )
protected

Definition at line 2008 of file Mela.cc.

2008  {
2009  //
2010  // Configure the analytical calculations
2011  //
2012  bool noPass=false;
2013  pdf=0;
2014 
2018  else if (
2024  ){
2025  pdf = (RooAbsPdf*)ggSpin0Model->getPDF();
2026  ggSpin0Model->makeParamsConst(false);
2028 
2029  // Add the hypotheses with best-guess coefficients
2030  // ZZ/WW
2031  if (
2038  ) ggSpin0Model->addHypothesis(0, 0);
2042  // ZG/ZGs
2046  // GG/GGs/GsGs
2049  // Self-defined spin-0
2051  for (int im=0; im<2; im++){
2052  ((RooRealVar*)ggSpin0Model->couplings.g1List[0][im])->setVal(selfDHzzcoupl[0][0][im]);
2053  ((RooRealVar*)ggSpin0Model->couplings.g2List[0][im])->setVal(selfDHzzcoupl[0][1][im]);
2054  ((RooRealVar*)ggSpin0Model->couplings.g3List[0][im])->setVal(selfDHzzcoupl[0][2][im]);
2055  ((RooRealVar*)ggSpin0Model->couplings.g4List[0][im])->setVal(selfDHzzcoupl[0][3][im]);
2056 
2057  ((RooRealVar*)ggSpin0Model->couplings.gzgs2List[0][im])->setVal(selfDHzzcoupl[0][4][im]);
2058  ((RooRealVar*)ggSpin0Model->couplings.gzgs3List[0][im])->setVal(selfDHzzcoupl[0][5][im]);
2059  ((RooRealVar*)ggSpin0Model->couplings.gzgs4List[0][im])->setVal(selfDHzzcoupl[0][6][im]);
2060  ((RooRealVar*)ggSpin0Model->couplings.ggsgs2List[0][im])->setVal(selfDHzzcoupl[0][7][im]);
2061  ((RooRealVar*)ggSpin0Model->couplings.ggsgs3List[0][im])->setVal(selfDHzzcoupl[0][8][im]);
2062  ((RooRealVar*)ggSpin0Model->couplings.ggsgs4List[0][im])->setVal(selfDHzzcoupl[0][9][im]);
2063 
2064  ((RooRealVar*)ggSpin0Model->couplings.g1List[1][im])->setVal(selfDHzzcoupl[0][10][im]);
2065  ((RooRealVar*)ggSpin0Model->couplings.g1List[2][im])->setVal(selfDHzzcoupl[0][11][im]);
2066  ((RooRealVar*)ggSpin0Model->couplings.g1List[3][im])->setVal(selfDHzzcoupl[0][12][im]);
2067  ((RooRealVar*)ggSpin0Model->couplings.g1List[4][im])->setVal(selfDHzzcoupl[0][13][im]);
2068  ((RooRealVar*)ggSpin0Model->couplings.g1List[5][im])->setVal(selfDHzzcoupl[0][14][im]);
2069 
2070  ((RooRealVar*)ggSpin0Model->couplings.g2List[1][im])->setVal(selfDHzzcoupl[0][15][im]);
2071  ((RooRealVar*)ggSpin0Model->couplings.g2List[2][im])->setVal(selfDHzzcoupl[0][16][im]);
2072  ((RooRealVar*)ggSpin0Model->couplings.g2List[3][im])->setVal(selfDHzzcoupl[0][17][im]);
2073  ((RooRealVar*)ggSpin0Model->couplings.g2List[4][im])->setVal(selfDHzzcoupl[0][18][im]);
2074  ((RooRealVar*)ggSpin0Model->couplings.g2List[5][im])->setVal(selfDHzzcoupl[0][19][im]);
2075 
2076  ((RooRealVar*)ggSpin0Model->couplings.g3List[1][im])->setVal(selfDHzzcoupl[0][20][im]);
2077  ((RooRealVar*)ggSpin0Model->couplings.g3List[2][im])->setVal(selfDHzzcoupl[0][21][im]);
2078  ((RooRealVar*)ggSpin0Model->couplings.g3List[3][im])->setVal(selfDHzzcoupl[0][22][im]);
2079  ((RooRealVar*)ggSpin0Model->couplings.g3List[4][im])->setVal(selfDHzzcoupl[0][23][im]);
2080  ((RooRealVar*)ggSpin0Model->couplings.g3List[5][im])->setVal(selfDHzzcoupl[0][24][im]);
2081 
2082  ((RooRealVar*)ggSpin0Model->couplings.g4List[1][im])->setVal(selfDHzzcoupl[0][25][im]);
2083  ((RooRealVar*)ggSpin0Model->couplings.g4List[2][im])->setVal(selfDHzzcoupl[0][26][im]);
2084  ((RooRealVar*)ggSpin0Model->couplings.g4List[3][im])->setVal(selfDHzzcoupl[0][27][im]);
2085  ((RooRealVar*)ggSpin0Model->couplings.g4List[4][im])->setVal(selfDHzzcoupl[0][28][im]);
2086  ((RooRealVar*)ggSpin0Model->couplings.g4List[5][im])->setVal(selfDHzzcoupl[0][29][im]);
2087 
2088  ((RooRealVar*)ggSpin0Model->couplings.gzgs1List[0][im])->setVal(selfDHzzcoupl[0][30][im]); // Zgs1_prime2
2089 
2090  ((RooRealVar*)ggSpin0Model->couplings.g1List[6][im])->setVal(selfDHzzcoupl[0][31][im]);
2091  ((RooRealVar*)ggSpin0Model->couplings.g1List[7][im])->setVal(selfDHzzcoupl[0][32][im]);
2092  ((RooRealVar*)ggSpin0Model->couplings.g2List[6][im])->setVal(selfDHzzcoupl[0][33][im]);
2093  ((RooRealVar*)ggSpin0Model->couplings.g2List[7][im])->setVal(selfDHzzcoupl[0][34][im]);
2094  ((RooRealVar*)ggSpin0Model->couplings.g3List[6][im])->setVal(selfDHzzcoupl[0][35][im]);
2095  ((RooRealVar*)ggSpin0Model->couplings.g3List[7][im])->setVal(selfDHzzcoupl[0][36][im]);
2096  ((RooRealVar*)ggSpin0Model->couplings.g4List[6][im])->setVal(selfDHzzcoupl[0][37][im]);
2097  ((RooRealVar*)ggSpin0Model->couplings.g4List[7][im])->setVal(selfDHzzcoupl[0][38][im]);
2098  }
2099  for (int qoqtqz=0; qoqtqz<SIZE_HVV_CQSQ; qoqtqz++){ // 0==q1, 1==q2, 2==q12
2100  ((RooRealVar*)ggSpin0Model->couplings.Lambda_z1qsq[qoqtqz])->setVal(selfDHzzLambda_qsq[0][0][qoqtqz]);
2101  ((RooRealVar*)ggSpin0Model->couplings.Lambda_z2qsq[qoqtqz])->setVal(selfDHzzLambda_qsq[0][1][qoqtqz]);
2102  ((RooRealVar*)ggSpin0Model->couplings.Lambda_z3qsq[qoqtqz])->setVal(selfDHzzLambda_qsq[0][2][qoqtqz]);
2103  ((RooRealVar*)ggSpin0Model->couplings.Lambda_z4qsq[qoqtqz])->setVal(selfDHzzLambda_qsq[0][3][qoqtqz]);
2104  ((RooRealVar*)ggSpin0Model->couplings.cLambda_qsq[qoqtqz])->setVal(selfDHzzCLambda_qsq[0][qoqtqz]);
2105  }
2106  }
2108  }
2109  else if (!spin1Model->configure(myModel_)){
2110  pdf = spin1Model->PDF;
2111  // Self-defined spin-1
2113  for (int i=0; i<SIZE_ZVV; i++){ if (selfDZvvcoupl[i][1]!=0){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::configureAnalyticalPDFs: MELA does not support complex couplings for spin-1 at the moment! " << endl; noPass=true; break; } }
2114  if (!noPass){
2115  spin1Model->g1Val->setVal(selfDZvvcoupl[0][0]);
2116  spin1Model->g2Val->setVal(selfDZvvcoupl[1][0]);
2117  }
2118  }
2119  }
2120  else if (
2122  || myModel_ == TVar::H2_g1g5
2123  || myModel_ == TVar::H2_g2
2124  || myModel_ == TVar::H2_g3
2125  || myModel_ == TVar::H2_g4
2126  || myModel_ == TVar::H2_g5
2127  || myModel_ == TVar::H2_g6
2128  || myModel_ == TVar::H2_g7
2129  || myModel_ == TVar::H2_g8
2130  || myModel_ == TVar::H2_g9
2131  || myModel_ == TVar::H2_g10
2133  ){
2134  pdf = (RooAbsPdf*)spin2Model->getPDF();
2135  spin2Model->makeParamsConst(false);
2137  // Add the hypotheses with best-guess coefficients
2138  // ZZ/WW
2139  if (
2141  || myModel_ == TVar::H2_g1g5
2142  ) spin2Model->addHypothesis(0, 1.);
2143  if (
2145  || myModel_ == TVar::H2_g5
2146  ) spin2Model->addHypothesis(4, 1.);
2147  if (myModel_ == TVar::H2_g2) spin2Model->addHypothesis(1, 1.);
2148  if (myModel_ == TVar::H2_g3) spin2Model->addHypothesis(2, 1.);
2149  if (myModel_ == TVar::H2_g4) spin2Model->addHypothesis(3, 1.);
2150  if (myModel_ == TVar::H2_g5) spin2Model->addHypothesis(4, 1.);
2151  if (myModel_ == TVar::H2_g6) spin2Model->addHypothesis(5, 1.);
2152  if (myModel_ == TVar::H2_g7) spin2Model->addHypothesis(6, 1.);
2153  if (myModel_ == TVar::H2_g8) spin2Model->addHypothesis(7, 1.);
2154  if (myModel_ == TVar::H2_g9) spin2Model->addHypothesis(8, 1.);
2155  if (myModel_ == TVar::H2_g10) spin2Model->addHypothesis(10, 1.);
2156  // Self-defined spin-2
2158  for (int i=0; i<SIZE_GVV; i++){ if (selfDGvvcoupl[i][1]!=0.){ if (myVerbosity_>=TVar::ERROR) MELAerr << "Mela::configureAnalyticalPDFs: MELA does not support complex couplings for spin-2 at the moment! " << endl; noPass=true; break; } }
2159  if (!noPass){
2160  for (int ig=0; ig<SIZE_GVV; ig++){
2161  for (int im=0; im<2; im++) ((RooRealVar*)spin2Model->couplings.bList[ig][im])->setVal(selfDGvvcoupl[ig][im]);
2162  }
2163  }
2164  }
2165  if (!noPass){
2166  if (myProduction_ == TVar::ZZQQB){
2169  }
2170  else{
2172  double c1 = 2*selfDGggcoupl[0][0] + 2.*selfDGggcoupl[1][0];
2173  double c2 = -0.5*selfDGggcoupl[0][0] + selfDGggcoupl[2][0] + 2.*selfDGggcoupl[3][0];
2174  double c5 = 0./*4*selfDGggcoupl[7][0]*/;
2175  Double_t fppReal = 1./sqrt(6.) * (c1/4.*2. + 2.*c2);
2176  Double_t fppImag = 1./sqrt(6.) * c5;
2177  Double_t fmmReal = 1./sqrt(6.) * (c1/4.*2. + 2.*c2);
2178  Double_t fmmImag = 1./sqrt(6.)* c5;
2179  Double_t fmpReal = 1./4.*c1*2.;
2180  Double_t fmpImag = 0;
2181  Double_t fpp = fppImag*fppImag + fppReal*fppReal;
2182  Double_t fmm = fmmImag*fmmImag + fmmReal*fmmReal;
2183  Double_t fmp = fmpImag*fmpImag + fmpReal*fmpReal;
2184  spin2Model->setTensorPolarization(1, 0.); // This is wrong in the strict sense of what "SelfDefine_spin2" is.
2185  spin2Model->setTensorPolarization(2, 2.*fmp/(fmm+fpp+2.*fmp));
2186  }
2187  else{
2190  }
2191  }
2192  spin2Model->makeParamsConst(true);
2193  }
2194  }
2195  else{
2196  MELAout << "Mela::configureAnalyticalPDFs -> ERROR TVar::Process not applicable!!! ME: " << myME_ << ", model: " << myModel_ << endl;
2197  noPass=true;
2198  }
2199 
2200  if (pdf==0) noPass=true;
2201  return (!noPass);
2202 }

◆ constructDggr()

void Mela::constructDggr ( float  bkg_VAMCFM_noscale,
float  ggzz_VAMCFM_noscale,
float  ggHZZ_prob_pure_noscale,
float  ggHZZ_prob_int_noscale,
float  widthScale,
float &  myDggr 
)
protected

Definition at line 1959 of file Mela.cc.

1966  {
1967  float total_sig_ME = (widthScale * ggHZZ_prob_pure_noscale + sqrt(widthScale) * ggHZZ_prob_int_noscale + ggzz_VAMCFM_noscale);
1968  float total_bkg_ME = bkg_VAMCFM_noscale;
1969  float kd_denominator = (total_sig_ME+total_bkg_ME);
1970  if (kd_denominator>0.) myDggr = total_sig_ME/(total_sig_ME+total_bkg_ME);
1971  else myDggr=-99.;
1972 }

◆ deletePConstantHandle()

void Mela::deletePConstantHandle ( MelaPConstant *&  handle)
protected

Definition at line 2824 of file Mela.cc.

2824  {
2825  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::deletePConstantHandle: Deleting PConstant handle " << handle->GetSplineName() << " at " << handle->GetFileName() << endl;
2826  delete handle; handle=0;
2827  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela::deletePConstantHandle." << endl;
2828 }

◆ deletePConstantHandles()

void Mela::deletePConstantHandles ( )
protected

Definition at line 2768 of file Mela.cc.

2768  {
2769  for (int isch=(unsigned int)(TVar::nFermionMassRemovalSchemes-2); isch>=0; isch--){
2775  }
2776  //
2778  //
2782  //
2786  //
2790  //
2794  //
2798  //
2802  //
2806  //
2810  //
2814  //
2818  //
2822  //
2823 }

◆ 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 2207 of file Mela.cc.

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

◆ getConstant_2l2q()

float Mela::getConstant_2l2q ( )
protected

Definition at line 2336 of file Mela.cc.

2336  {
2337  float constant = 1;
2338  if (!melaCand) return constant;
2339  int decid = 1;
2342  decid = abs(decid);
2343  return getConstant_FourFermionDecay(decid);
2344 }

◆ getConstant_4l()

float Mela::getConstant_4l ( )
protected

Definition at line 2325 of file Mela.cc.

2325  {
2326  float constant = 1;
2327  if (!melaCand) return constant;
2328  int decid = abs(
2329  melaCand->getSortedV(0)->getDaughter(0)->id*
2330  melaCand->getSortedV(0)->getDaughter(1)->id*
2331  melaCand->getSortedV(1)->getDaughter(0)->id*
2333  );
2334  return getConstant_FourFermionDecay(decid);
2335 }

◆ getConstant_4q()

float Mela::getConstant_4q ( )
protected

Definition at line 2345 of file Mela.cc.

2345  {
2346  float constant = 1;
2347  if (!melaCand) return constant;
2348  const int decid = 121;
2349  return getConstant_FourFermionDecay(decid);
2350 }

◆ getConstant_FourFermionDecay()

float Mela::getConstant_FourFermionDecay ( const int &  decid)
protected

Definition at line 2352 of file Mela.cc.

2352  {
2353  float constant = 1;
2354 
2355  const bool is4mu = (decid==28561);
2356  const bool is4e = (decid==14641 || decid==50625); // Use 4e for 4tau as well (I don't know why you would do this, but anyway)
2357  const bool is2mu2e = (decid==20449 || decid==27225 || decid==38025 || decid==169 || decid==121); // Use 2e2mu for 2e2tau and 2mu2tau as well
2358 
2359  const unsigned int nPossibleHandles=6;
2360  MelaPConstant* pchandle[nPossibleHandles]={ 0 };
2361 
2362  float constant_tmp=0;
2363  if (myME_ == TVar::JHUGen){
2364  if (myProduction_ == TVar::ZZGG){
2365  if (
2367  ||
2369  ||
2371  ||
2373  ||
2375  ||
2377  ||
2379  ||
2381  ||
2383  ||
2385  ){
2386  if (is2mu2e) pchandle[0] = pAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e;
2387  else if (is4mu) pchandle[0] = pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu;
2388  else if (is4e) pchandle[0] = pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e;
2389  }
2390  }
2391  }
2392  else if (myME_ == TVar::MCFM){
2393  // ZZQQB
2394  if (myProduction_ == TVar::ZZQQB){
2395  if (myModel_ == TVar::bkgZZ){
2396  if (is2mu2e) pchandle[0] = pAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e;
2397  else if (is4mu) pchandle[0] = pAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu;
2398  else if (is4e) pchandle[0] = pAvgSmooth_MCFM_ZZQQB_bkgZZ_4e;
2399  }
2400  }
2401  // ZZGG
2402  else if (myProduction_ == TVar::ZZGG){
2403  if (myModel_ == TVar::bkgZZ){
2404  if (is2mu2e) pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e;
2405  else if (is4mu) pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu;
2406  else if (is4e) pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_4e;
2407  }
2408  else if (myModel_ == TVar::HSMHiggs){
2409  if (is2mu2e) pchandle[0] = pAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e;
2410  else if (is4mu) pchandle[0] = pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu;
2411  else if (is4e) pchandle[0] = pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e;
2412  }
2413  // Sum signal and bkg
2414  else if (myModel_ == TVar::bkgZZ_SMHiggs){
2415  if (is2mu2e){
2416  pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e;
2418  }
2419  else if (is4mu){
2420  pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu;
2421  pchandle[1] = pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu;
2422  }
2423  else if (is4e){
2424  pchandle[0] = pAvgSmooth_MCFM_ZZGG_bkgZZ_4e;
2425  pchandle[1] = pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e;
2426  }
2427  }
2428  }
2429  // JJEW and components
2430  else if (
2432  ||
2434  ||
2436  ){
2437  MelaPConstant* hvbf=0;
2438  MelaPConstant* hwh=0;
2439  MelaPConstant* hzh=0;
2440  MelaPConstant* hvbs=0;
2441  MelaPConstant* hwzz=0;
2442  MelaPConstant* hzzz=0;
2444  bool hasVBF = isEW || (myProduction_ == TVar::JJVBF || myProduction_ == TVar::JJVBF_S || myProduction_ == TVar::JJVBF_TU);
2447  if (is2mu2e){
2454  }
2455  else if (is4mu){
2462  }
2463  else if (is4e){
2470  }
2472  if (hasVBF) pchandle[0]=hvbf;
2473  if (hasZH) pchandle[1]=hzh;
2474  if (hasWH) pchandle[2]=hwh;
2475  }
2477  if (hasVBF) pchandle[3]=hvbs;
2478  if (hasZH) pchandle[4]=hzzz;
2479  if (hasWH) pchandle[5]=hwzz;
2480  }
2481  }
2482  else if (myProduction_ == TVar::JJQCD){
2483  if (myModel_ == TVar::bkgZJets){
2484  pchandle[0] = pAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q; // Only option at the moment
2485  }
2486  else if (myModel_ == TVar::bkgZZ){
2487  if (is2mu2e){
2488  pchandle[0] = pAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e;
2489  }
2490  else if (is4mu){
2491  pchandle[0] = pAvgSmooth_MCFM_JJQCD_bkgZZ_4mu;
2492  }
2493  else if (is4e){
2494  pchandle[0] = pAvgSmooth_MCFM_JJQCD_bkgZZ_4e;
2495  }
2496  }
2497  }
2498  }
2499 
2500  bool hasNullHandle=true;
2501  for (unsigned int ihandle=0; ihandle<nPossibleHandles; ihandle++){ if (pchandle[ihandle]!=0){ constant_tmp += pchandle[ihandle]->Eval(getIORecord(), myVerbosity_); hasNullHandle=false; } }
2502  if (hasNullHandle) return constant;
2503 
2504  constant = constant_tmp;
2505  return constant;
2506 }

◆ getConstant_JHUGenUndecayed()

float Mela::getConstant_JHUGenUndecayed ( )
protected

Definition at line 2290 of file Mela.cc.

2290  {
2291  float constant = 1;
2292  if (!melaCand) return constant;
2293 
2294  MelaPConstant* pchandle=0;
2295  unsigned int iarray=0;
2296  if (TUtil::JetMassScheme == TVar::ConserveDifermionMass) iarray=0; // First element points to the case when the difermion invariant mass is conserved in mass removal scheme
2297  else if (TUtil::JetMassScheme == TVar::MomentumToEnergy) iarray=1; // Second element points to the case when the 3-momentum vector magnitude is scaled to energy in mass removal scheme
2298  if (myProduction_ == TVar::JQCD){
2299  pchandle = pAvgSmooth_JHUGen_JQCD_HSMHiggs[iarray];
2300  }
2301  else if (myProduction_ == TVar::JJQCD){
2302  pchandle = pAvgSmooth_JHUGen_JJQCD_HSMHiggs[iarray];
2303  }
2304  else if (myProduction_ == TVar::JJVBF){
2305  pchandle = pAvgSmooth_JHUGen_JJVBF_HSMHiggs[iarray];
2306  }
2307  else if (myProduction_ == TVar::Had_ZH){
2308  pchandle = pAvgSmooth_JHUGen_Had_ZH_HSMHiggs[iarray];
2309  }
2310  else if (myProduction_ == TVar::Had_WH){
2311  pchandle = pAvgSmooth_JHUGen_Had_WH_HSMHiggs[iarray];
2312  }
2313  /*
2314  else if (myProduction_ == TVar::Lep_ZH)
2315  else if (myProduction_ == TVar::Lep_WH)
2316  else if (myProduction_ == TVar::GammaH)
2317  else if (myProduction_ == TVar::ttH)
2318  else if (myProduction_ == TVar::bbH)
2319  */
2320  else return constant;
2321 
2322  constant = pchandle->Eval(getIORecord(), myVerbosity_);
2323  return constant;
2324 }

◆ 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 586 of file Mela.cc.

586 { 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 587 of file Mela.cc.

587 { 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 546 of file Mela.cc.

546 { 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 584 of file Mela.cc.

584 { return ZZME->get_IORecord(); }

◆ GetMadgraphCKMElement()

std::complex< double > Mela::GetMadgraphCKMElement ( int  iquark,
int  jquark 
)

Definition at line 552 of file Mela.cc.

552  {
553  return TUtil::GetMadgraphCKMElement(iquark, jquark);
554 }

◆ 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 568 of file Mela.cc.

568  {
569  RooSpin::modelMeasurables measurables;
570  measurables.h1 = costheta1_rrv;
571  measurables.h2 = costheta2_rrv;
572  measurables.Phi = phi_rrv;
573  measurables.m1 = z1mass_rrv;
574  measurables.m2 = z2mass_rrv;
575  measurables.m12 = mzz_rrv;
576  measurables.hs = costhetastar_rrv;
577  measurables.Phi1 = phi1_rrv;
578  measurables.Y = Y_rrv;
579  return measurables;
580 }

◆ 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 588 of file Mela.cc.

588 { return ZZME->get_NCandidates(); }

◆ getPAux()

void Mela::getPAux ( float &  prob)

Definition at line 594 of file Mela.cc.

594 { prob = auxiliaryProb; }

◆ getPConstantHandle()

MelaPConstant * Mela::getPConstantHandle ( TVar::MatrixElement  me_,
TVar::Production  prod_,
TVar::Process  proc_,
TString  relpath,
TString  spname,
const bool  useSqrts = false 
)
protected

Definition at line 2704 of file Mela.cc.

2711  {
2712  if (myVerbosity_>=TVar::DEBUG) MELAout << "Begin Mela::getPConstantHandle" << endl;
2713 
2714  MelaPConstant* pchandle=0;
2715  string cfile_fullpath;
2716 
2717  // Get data/ path
2718  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getPConstantHandle: relpath and spline name: " << relpath << ", " << spname << endl;
2719  const string MELAPKGPATH = TVar::GetMELAPath();
2720  const string path = MELAPKGPATH + "data/";
2721  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getPConstantHandle: path and spline name: " << path << ", " << spname << endl;
2722 
2723  if (useSqrts){ // Loop over possible sqrts values to get the closest one
2724  const unsigned int npossiblesqrts=3;
2725  const double possible_sqrts[npossiblesqrts]={ 7, 8, 13 };
2726  vector<double> trysqrts;
2727  for (unsigned isq=0; isq<npossiblesqrts; isq++){
2728  double val = possible_sqrts[isq];
2729  double diff = fabs(LHCsqrts-val);
2730  bool inserted=false;
2731  for (std::vector<double>::iterator it = trysqrts.begin(); it<trysqrts.end(); it++){
2732  if (fabs((*it)-LHCsqrts)>diff){
2733  inserted=true;
2734  trysqrts.insert(it, val);
2735  break;
2736  }
2737  }
2738  if (!inserted) trysqrts.push_back(val);
2739  }
2740  for (auto& dsqrts:trysqrts){
2741  TString strsqrts = Form("%s_%.0f%s", relpath.Data(), dsqrts, "TeV");
2742  cfile_fullpath = path;
2743  cfile_fullpath.append(strsqrts.Data());
2744  cfile_fullpath.append(".root");
2745  pchandle = new MelaPConstant(me_, prod_, proc_, cfile_fullpath.c_str(), spname.Data());
2746  if (pchandle->IsValid()){
2747  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getPConstantHandle: Full path and spline name: " << cfile_fullpath << ", " << spname << " is valid." << endl;
2748  break;
2749  }
2750  else{
2751  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getPConstantHandle: Full path and spline name: " << cfile_fullpath << ", " << spname << " is invalid." << endl;
2752  deletePConstantHandle(pchandle);
2753  }
2754  }
2755  }
2756  else{
2757  cfile_fullpath = path;
2758  cfile_fullpath.append(relpath.Data());
2759  cfile_fullpath.append(".root");
2760  pchandle = new MelaPConstant(me_, prod_, proc_, cfile_fullpath.c_str(), spname.Data());
2761  if (!pchandle->IsValid()) deletePConstantHandle(pchandle);
2762  }
2763  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getPConstantHandle: Full path and spline name: " << cfile_fullpath << ", " << spname << endl;
2764  if (myVerbosity_>=TVar::DEBUG && pchandle==0) MELAerr << "Mela::getPConstantHandle: Handle of " << spname << " from " << cfile_fullpath << " is invalid!" << endl;
2765  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela::getPConstantHandle" << endl;
2766  return pchandle;
2767 }

◆ getPConstantHandles()

void Mela::getPConstantHandles ( )
protected

Definition at line 2509 of file Mela.cc.

2509  {
2510  if (myVerbosity_>=TVar::DEBUG) MELAout << "Begin Mela::getPConstantHandles" << endl;
2511 
2512  // Initialize the handles to 0
2513  for (unsigned int isch=0; isch<(unsigned int)(TVar::nFermionMassRemovalSchemes-1); isch++){
2519  }
2520  //
2522  //
2526  //
2530  //
2534  //
2538  //
2542  //
2546  //
2550  //
2554  //
2558  //
2562  //
2566  //
2567 
2568  TString filename, spname;
2569 
2570  // Fill versions with difermion correction, set to ConserveDifermionMass if others don't exist.
2571  filename = "pAvgSmooth_JHUGen_JJQCD_HSMHiggs";
2572  spname = "P_ConserveDifermionMass";
2574  spname = "P_MomentumToEnergy";
2577  //
2578  filename = "pAvgSmooth_JHUGen_JQCD_HSMHiggs";
2579  spname = "P_ConserveDifermionMass";
2581  spname = "P_MomentumToEnergy";
2584  //
2585  filename = "pAvgSmooth_JHUGen_JJVBF_HSMHiggs";
2586  spname = "P_ConserveDifermionMass";
2588  spname = "P_MomentumToEnergy";
2591  //
2592  filename = "pAvgSmooth_JHUGen_Had_ZH_HSMHiggs";
2593  spname = "P_ConserveDifermionMass";
2595  spname = "P_MomentumToEnergy";
2596  //pAvgSmooth_JHUGen_Had_ZH_HSMHiggs[1] = getPConstantHandle(TVar::JHUGen, TVar::Had_ZH, TVar::HSMHiggs, filename, spname, true);
2598  //
2599  filename = "pAvgSmooth_JHUGen_Had_WH_HSMHiggs";
2600  spname = "P_ConserveDifermionMass";
2602  spname = "P_MomentumToEnergy";
2603  //pAvgSmooth_JHUGen_Had_WH_HSMHiggs[1] = getPConstantHandle(TVar::JHUGen, TVar::Had_WH, TVar::HSMHiggs, filename, spname, true);
2605  //
2606  //
2607  filename = "pAvgSmooth_MCFM_JJQCD_bkgZJets_13TeV_2l2q"; // 13 TeV is a placeholder for all energies.
2608  spname = "P_ConserveDifermionMass";
2610  //
2611  //
2612  filename = "pAvgSmooth_JHUGen_ZZGG_HSMHiggs";
2613  spname = "P_ConserveDifermionMass_4mu";
2615  spname = "P_ConserveDifermionMass_4e";
2617  spname = "P_ConserveDifermionMass_2mu2e";
2619  //
2620  filename = "pAvgSmooth_MCFM_ZZGG_HSMHiggs";
2621  spname = "P_ConserveDifermionMass_4mu";
2623  spname = "P_ConserveDifermionMass_4e";
2625  spname = "P_ConserveDifermionMass_2mu2e";
2627  //
2628  filename = "pAvgSmooth_MCFM_JJVBF_S_HSMHiggs";
2629  spname = "P_ConserveDifermionMass_4mu";
2631  spname = "P_ConserveDifermionMass_4e";
2633  spname = "P_ConserveDifermionMass_2mu2e";
2635  //
2636  filename = "pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs";
2637  spname = "P_ConserveDifermionMass_4mu";
2639  spname = "P_ConserveDifermionMass_4e";
2641  spname = "P_ConserveDifermionMass_2mu2e";
2643  //
2644  filename = "pAvgSmooth_MCFM_Had_WH_S_HSMHiggs";
2645  spname = "P_ConserveDifermionMass_4mu";
2647  spname = "P_ConserveDifermionMass_4e";
2649  spname = "P_ConserveDifermionMass_2mu2e";
2651  //
2652  //
2653  filename = "pAvgSmooth_MCFM_ZZGG_bkgZZ";
2654  spname = "P_ConserveDifermionMass_4mu";
2656  spname = "P_ConserveDifermionMass_4e";
2658  spname = "P_ConserveDifermionMass_2mu2e";
2660  //
2661  filename = "pAvgSmooth_MCFM_ZZQQB_bkgZZ";
2662  spname = "P_ConserveDifermionMass_4mu";
2664  spname = "P_ConserveDifermionMass_4e";
2666  spname = "P_ConserveDifermionMass_2mu2e";
2668  //
2669  filename = "pAvgSmooth_MCFM_JJVBF_bkgZZ";
2670  spname = "P_ConserveDifermionMass_4mu";
2672  spname = "P_ConserveDifermionMass_4e";
2674  spname = "P_ConserveDifermionMass_2mu2e";
2676  //
2677  filename = "pAvgSmooth_MCFM_Had_ZH_bkgZZ";
2678  spname = "P_ConserveDifermionMass_4mu";
2680  spname = "P_ConserveDifermionMass_4e";
2682  spname = "P_ConserveDifermionMass_2mu2e";
2684  //
2685  filename = "pAvgSmooth_MCFM_Had_WH_bkgZZ";
2686  spname = "P_ConserveDifermionMass_4mu";
2688  spname = "P_ConserveDifermionMass_4e";
2690  spname = "P_ConserveDifermionMass_2mu2e";
2692  //
2693  filename = "pAvgSmooth_MCFM_JJQCD_bkgZZ";
2694  spname = "P_ConserveDifermionMass_4mu";
2696  spname = "P_ConserveDifermionMass_4e";
2698  spname = "P_ConserveDifermionMass_2mu2e";
2700  //
2701 
2702  if (myVerbosity_>=TVar::DEBUG) MELAout << "End Mela::getPConstantHandles" << endl;
2703 }

◆ 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 544 of file Mela.cc.

544 { 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 545 of file Mela.cc.

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

◆ getRenFacScaleMode()

const TVar::event_scales_type & Mela::getRenFacScaleMode ( ) const

Returns the current RenFac Scale Mode for MELA.

See also
Calls ZZMatrixElement::get_RenFacScaleMode, which calls TEvtProb::GetRenFacScaleMode.

Definition at line 561 of file Mela.cc.

561  {
562  return ZZME->get_RenFacScaleMode();
563 }

◆ 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 589 of file Mela.cc.

589 { 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 339 of file Mela.cc.

339 { return myVerbosity_; }

◆ getXPropagator()

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

Definition at line 1838 of file Mela.cc.

1838  {
1839  prop=0.;
1841  if (melaCand) ZZME->get_XPropagator(scheme, prop);
1842  reset_CandRef();
1843 }

◆ printLogo()

void Mela::printLogo ( ) const
protected

Definition at line 246 of file Mela.cc.

246  {
247  vector<string> logolines;
248  logolines.push_back("MELA (Matrix Element Likelihood Approach)");
249  logolines.push_back("");
250  logolines.push_back("Data analysis and Monte Carlo weights package");
251  logolines.push_back("for analyses of resonances produced at pp, ppbar, and e+e- colliders, featuring:");
252  logolines.push_back("");
253  logolines.push_back("* JHUGenMELA *");
254  logolines.push_back("Signal calculations based on analytical pdf.s, and JHU Generator (JHUGen) matrix elements");
255  logolines.push_back("(See JHUGen credits below)");
256  logolines.push_back("");
257  logolines.push_back("* MCFM *");
258  logolines.push_back("Signal, background, and interference calculations, modified based on JHUGen matrix elements");
259  logolines.push_back("(See MCFM credits below)");
260  logolines.push_back("");
261  logolines.push_back("* MADGRAPH *");
262  logolines.push_back("SMEFTsim calculations for specified processes");
263  logolines.push_back("(See MADGRAPH credits below)");
264  logolines.push_back("For more details: http://spin.pha.jhu.edu");
265  logolines.push_back("");
266  size_t maxlinesize = 0;
267  for (auto const& l:logolines) maxlinesize = std::max(maxlinesize, l.length());
268  MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl;
269  unsigned int iline=0;
270  for (auto const& l:logolines){
271  MELAout << '*';
272  MELAout.writeCentered(l, ' ', maxlinesize+8);
273  MELAout << '*' << endl;
274  if (iline==0){ MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl; }
275  iline++;
276  }
277  MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl;
278 
279  logolines.clear();
280  logolines.push_back("MadGraph5_aMC@NLO");
281  logolines.push_back("");
282  logolines.push_back("Going Beyond");
283  logolines.push_back("");
284  logolines.push_back("http://madgraph.hep.uiuc.edu");
285  logolines.push_back("http://madgraph.phys.ucl.ac.be");
286  logolines.push_back("http://amcatnlo.cern.ch");
287  logolines.push_back("");
288  logolines.push_back("The MadGraph5_aMC@NLO team");
289  logolines.push_back("");
290  logolines.push_back("Utilizing the SMEFTsim Package");
291  logolines.push_back("I. Brivio, Y. Jiang, M. Trott, arXiv: 1709.06492");
292  logolines.push_back("I. Brivio, arXiv: 2012.11343");
293  logolines.push_back("");
294  maxlinesize = 0;
295  for (auto const& l:logolines) maxlinesize = std::max(maxlinesize, l.length());
296  MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl;
297  iline=0;
298  for (auto const& l:logolines){
299  MELAout << '*';
300  MELAout.writeCentered(l, ' ', maxlinesize+8);
301  MELAout << '*' << endl;
302  if (iline==0){ MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl; }
303  iline++;
304  }
305  MELAout.writeCentered("", '*', maxlinesize+10); MELAout << endl;
306 }

◆ reset_CandRef()

void Mela::reset_CandRef ( )
protected

Definition at line 590 of file Mela.cc.

590 { melaCand=0; }

◆ reset_PAux()

void Mela::reset_PAux ( )
protected

Definition at line 595 of file Mela.cc.

595 { auxiliaryProb=1.; } // SuperProb reset

◆ reset_SelfDCouplings()

void Mela::reset_SelfDCouplings ( )
protected

Definition at line 436 of file Mela.cc.

436  {
437  // We have a lot of them, now even more!
438 
439  //****Spin-0****//
440  differentiate_HWW_HZZ=false;
441  // Loop over the number of supported resonances
442  for (int jh=0; jh<(int)nSupportedHiggses; jh++){
443  for (int im=0; im<2; im++){
444  for (int ic=0; ic<SIZE_HGG; ic++) selfDHggcoupl[jh][ic][im]=0;
445  for (int ic=0; ic<SIZE_HGG; ic++) selfDHg4g4coupl[jh][ic][im]=0;
446 
447  for (int ic=0; ic<SIZE_HQQ; ic++) selfDHqqcoupl[jh][ic][im]=0;
448  for (int ic=0; ic<SIZE_HQQ; ic++) selfDHbbcoupl[jh][ic][im]=0;
449  for (int ic=0; ic<SIZE_HQQ; ic++) selfDHttcoupl[jh][ic][im]=0;
450  for (int ic=0; ic<SIZE_HQQ; ic++) selfDHb4b4coupl[jh][ic][im]=0;
451  for (int ic=0; ic<SIZE_HQQ; ic++) selfDHt4t4coupl[jh][ic][im]=0;
452 
453  for (int ic=0; ic<SIZE_HVV; ic++){
454  selfDHzzcoupl[jh][ic][im] = 0;
455  selfDHwwcoupl[jh][ic][im] = 0;
456  }
457  }
458  for (int ik=0; ik<SIZE_HVV_CQSQ; ik++){
459  selfDHzzCLambda_qsq[jh][ik]=0;
460  selfDHwwCLambda_qsq[jh][ik]=0;
461  for (int ic=0; ic<SIZE_HVV_LAMBDAQSQ; ic++){ // These default values do not matter as long as the c's are 0.
462  selfDHzzLambda_qsq[jh][ic][ik] = 100.;
463  selfDHwwLambda_qsq[jh][ic][ik] = 100.;
464  }
465  }
466  }
467  // Spin-0 contact terms
468  for (int im=0; im<2; im++){
469  for (int ic=0; ic<SIZE_HVV; ic++){
470  selfDHzzpcoupl[ic][im] = 0;
471  selfDHzpzpcoupl[ic][im] = 0;
472  selfDHwwpcoupl[ic][im] = 0;
473  selfDHwpwpcoupl[ic][im] = 0;
474  }
475  }
476  // Spin-0 SMEFTsim terms
477  for (int ic=0; ic<SIZE_SMEFT; ic++){
478  selfDSMEFTSimcoupl[ic] = 0;
479  }
480 
481  //****Spin-1****//
482  for (int im=0; im<2; im++){
483  for (int ic=0; ic<SIZE_ZVV; ic++) selfDZvvcoupl[ic][im] = 0;
484  for (int ic=0; ic<SIZE_ZQQ; ic++) selfDZqqcoupl[ic][im] = 0;
485  }
486 
487  //****Spin-2****//
488  for (int im=0; im<2; im++){
489  for (int ic=0; ic<SIZE_GVV; ic++){
490  selfDGvvcoupl[ic][im] = 0;
491  selfDGvvpcoupl[ic][im] = 0;
492  selfDGvpvpcoupl[ic][im] = 0;
493  }
494  for (int ic=0; ic<SIZE_GGG; ic++) selfDGggcoupl[ic][im] = 0;
495  for (int ic=0; ic<SIZE_GQQ; ic++) selfDGqqcoupl[ic][im] = 0;
496  }
497 
498  // Vprime / contact couplings
499  for (int im=0; im<2; im++){
500  for (int ic=0; ic<SIZE_Vpff; ic++){
501  selfDZpffcoupl[ic][im] = 0;
502  selfDWpffcoupl[ic][im] = 0;
503  }
504  }
505  selfDM_Zprime = -1;
506  selfDGa_Zprime = 0;
507  selfDM_Wprime = -1;
508  selfDGa_Wprime = 0;
509 
510  // aTQGC couplings
511  for (int im=0; im<2; im++){
512  for (int ic=0; ic<SIZE_ATQGC; ic++) selfDaTQGCcoupl[ic][im] = 0;
513  }
514 
515  // AZff couplings
516  for (int im=0; im<2; im++){
517  for (int ic=0; ic<SIZE_AZff; ic++) selfDAZffcoupl[ic][im] = 0;
518  }
519 
520  // Did I tell you that we have a lot of them?
521 }

◆ 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 362 of file Mela.cc.

362  {
365 }

◆ 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.
This function changes BOTH the Yukawa mass as well as the nominal mass in Madgraph! If you would like to decouple the Yukawa mass from the nominal mass please use Mela::resetYukawaMass.
Attention
You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
In MCFM/Madgraph 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 and Madgraph matrix elements 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 522 of file Mela.cc.

522 { 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 540 of file Mela.cc.

540  {
541  ZZME->reset_MCFM_EWKParameters(ext_Gf, ext_aemmz, ext_mW, ext_mZ, ext_xW, ext_ewscheme);
542 }

◆ 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 539 of file Mela.cc.

539 { 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]inwidththe width that you want in GeV
[in]ipartthe particle whose mass you wish to change

Definition at line 523 of file Mela.cc.

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

◆ resetYukawaMass()

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

Resets the Yukawa coupling (or "Yukawa mass") for a specific particle. Does not change its "intrinsic" mass.

See also
Resets the values mdl_ym{b,c,s,up,do,e,m,tau} in the params_r_ common block for Madgraph
Attention
The particles whose Yukawa mass you can change are as follow:
ipart Particle Name
1 Down Quark
2 Up Quark
3 Strange Quark
4 Charm Quark
5 Bottom Quark
6 Top Quark
11 Electron
13 Muon
15 Tau
Parameters
[in]inmassthe Yukawa mass you want in GeV
[in]ipartthe particle whose Yukawa mass you wish to change

Definition at line 524 of file Mela.cc.

524  {
525  const int ipartabs = abs(ipart);
526  if (ipartabs==6){ madMela::params_r_.mdl_ymt=inmass; }
527  else if (ipartabs==5){ madMela::params_r_.mdl_ymb=inmass; }
528  else if (ipartabs==4){ madMela::params_r_.mdl_ymc=inmass; }
529  else if (ipartabs==3){ madMela::params_r_.mdl_yms=inmass; }
530  else if (ipartabs==2){ madMela::params_r_.mdl_ymup=inmass; }
531  else if (ipartabs==1){ madMela::params_r_.mdl_ymdo=inmass; }
532  else if (ipartabs==11){ madMela::params_r_.mdl_yme=inmass; }
533  else if (ipartabs==13){ madMela::params_r_.mdl_ymm=inmass; }
534  else if (ipartabs==15){ madMela::params_r_.mdl_ymtau=inmass; }
535  else{
536  MELAerr << "Particle with id " << ipart << " does not have supported Yukawa Couplings!" << endl;
537  }
538 }

◆ setATQGCCouplings()

void Mela::setATQGCCouplings ( )
protected

Definition at line 423 of file Mela.cc.

423  {
426  );
427 }

◆ setAZffCouplings()

void Mela::setAZffCouplings ( )
protected

Definition at line 428 of file Mela.cc.

428  {
431  );
432 }

◆ 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 346 of file Mela.cc.

346 { ZZME->set_CandidateDecayMode(mode); }

◆ setConstant()

void Mela::setConstant ( )
protected

Definition at line 2214 of file Mela.cc.

2214  {
2215  float constant = 1;
2216  if (!melaCand){ if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getConstant: !melaCand" << endl; }
2217  else{
2218  if ( // Undecayed Higgs MEs from JHUGen
2219  myME_ == TVar::JHUGen
2220  &&
2221  (
2223  ||
2225  ||
2227  ||
2229  ||
2231  ||
2233  )
2234  ) constant = getConstant_JHUGenUndecayed();
2235  else if ( // H->4l/2l2l
2237  &&
2239  &&
2241  &&
2243  ) constant = getConstant_4l();
2244  else if ( // H->2l2q
2246  &&
2248  &&
2249  (
2250  (
2252  &&
2254  &&
2256  )
2257  ||
2258  (
2260  &&
2262  &&
2264  )
2265  )
2266  ) constant = getConstant_2l2q();
2267  else if ( // H->4q
2269  &&
2271  &&
2272  (
2273  (
2275  &&
2277  &&
2279  &&
2281  )
2282  )
2283  ) constant = getConstant_4q();
2284  }
2285  if (std::isnan(constant) || std::isinf(constant) || constant<=0.) constant=0;
2286  else constant=1./constant;
2287  if (myVerbosity_>=TVar::DEBUG) MELAout << "Mela::getConstant: Constant is " << constant << endl;
2288  getIORecord()->setMEConst(constant);
2289 }

◆ 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 348 of file Mela.cc.

348 { 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 347 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 349 of file Mela.cc.

354  {
356  pDaughters,
357  pAssociated,
358  pMothers,
359  isGen
360  );
361 }

◆ SetMadgraphCKMElements()

void Mela::SetMadgraphCKMElements ( double  ckmlambda = 0.2265,
double  ckma = 0.79,
double  ckmrho = 0.141,
double  ckmeta = 0.357,
bool  force_refresh = false 
)

Definition at line 548 of file Mela.cc.

548  {
549  TUtil::SetMadgraphCKMElements(ckmlambda, ckma, ckmrho, ckmeta);
550  // if(force_refresh){ madMela::ggFSIG_update_all_coup_(); }
551 }

◆ 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 342 of file Mela.cc.

342 {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 344 of file Mela.cc.

344 {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 343 of file Mela.cc.

343 {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 345 of file Mela.cc.

345 { 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 341 of file Mela.cc.

341 { 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 309 of file Mela.cc.

309  {
310  myME_ = myME;
311  myProduction_ = myProduction;
312  // In case s-channel processes are passed for JHUGen ME, flip them back to JHUGen-specific productions.
313  if (myME_==TVar::JHUGen){
320  }
321  myModel_ = myModel;
322  if (myME_==TVar::MADGRAPH &&
325  ){
326  MELAout << "Production mode " << myProduction_ << " is not currently supported by MADMELA!" << endl;
327  }
329 }

◆ 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 557 of file Mela.cc.

557 { 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]MasslessLeptonSwitchWhether you would like your leptons to be massive, by default true.

Definition at line 556 of file Mela.cc.

556 { 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 558 of file Mela.cc.

558  {
559  ZZME->set_RenFacScaleMode(renormalizationSch, factorizationSch, ren_sf, fac_sf);
560 }

◆ setSpinOneCouplings()

void Mela::setSpinOneCouplings ( )
protected

Definition at line 408 of file Mela.cc.

◆ setSpinTwoCouplings()

void Mela::setSpinTwoCouplings ( )
protected

◆ setSpinZeroCouplings()

void Mela::setSpinZeroCouplings ( )
protected

◆ 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 366 of file Mela.cc.

371  { 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 330 of file Mela.cc.

330  {
331  myVerbosity_=verbosity_;
332  // madMela::myVerbosity_=verbosity_;
338 }

Member Data Documentation

◆ auxiliaryProb

float Mela::auxiliaryProb
protected

Definition at line 1122 of file Mela.h.

◆ costheta1_rrv

RooRealVar* Mela::costheta1_rrv

Definition at line 1023 of file Mela.h.

◆ costheta2_rrv

RooRealVar* Mela::costheta2_rrv

Definition at line 1024 of file Mela.h.

◆ costhetastar_rrv

RooRealVar* Mela::costhetastar_rrv

Definition at line 1022 of file Mela.h.

◆ ggSpin0Model

ScalarPdfFactory_HVV* Mela::ggSpin0Model

Definition at line 1031 of file Mela.h.

◆ LHCsqrts

double Mela::LHCsqrts
protected

Definition at line 1111 of file Mela.h.

◆ melaCand

MELACandidate* Mela::melaCand
protected

Definition at line 1124 of file Mela.h.

◆ melaRandomNumber

TRandom3 Mela::melaRandomNumber

Definition at line 1018 of file Mela.h.

◆ myLepInterf_

TVar::LeptonInterference Mela::myLepInterf_
protected

Definition at line 1115 of file Mela.h.

◆ myME_

TVar::MatrixElement Mela::myME_
protected

Definition at line 1113 of file Mela.h.

◆ myModel_

TVar::Process Mela::myModel_
protected

Definition at line 1112 of file Mela.h.

◆ myProduction_

TVar::Production Mela::myProduction_
protected

Definition at line 1114 of file Mela.h.

◆ myVerbosity_

TVar::VerbosityLevel Mela::myVerbosity_
protected

Definition at line 1116 of file Mela.h.

◆ mzz_rrv

RooRealVar* Mela::mzz_rrv

Definition at line 1019 of file Mela.h.

◆ pAvgSmooth_JHUGen_Had_WH_HSMHiggs

MelaPConstant* Mela::pAvgSmooth_JHUGen_Had_WH_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
protected

Definition at line 1137 of file Mela.h.

◆ pAvgSmooth_JHUGen_Had_ZH_HSMHiggs

MelaPConstant* Mela::pAvgSmooth_JHUGen_Had_ZH_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
protected

Definition at line 1135 of file Mela.h.

◆ pAvgSmooth_JHUGen_JJQCD_HSMHiggs

MelaPConstant* Mela::pAvgSmooth_JHUGen_JJQCD_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
protected

Definition at line 1131 of file Mela.h.

◆ pAvgSmooth_JHUGen_JJVBF_HSMHiggs

MelaPConstant* Mela::pAvgSmooth_JHUGen_JJVBF_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
protected

Definition at line 1133 of file Mela.h.

◆ pAvgSmooth_JHUGen_JQCD_HSMHiggs

MelaPConstant* Mela::pAvgSmooth_JHUGen_JQCD_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
protected

Definition at line 1129 of file Mela.h.

◆ pAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e

MelaPConstant* Mela::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e
protected

Definition at line 1142 of file Mela.h.

◆ pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e

MelaPConstant* Mela::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e
protected

Definition at line 1141 of file Mela.h.

◆ pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu

MelaPConstant* Mela::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu
protected

Definition at line 1140 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_2mu2e
protected

Definition at line 1178 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_4e
protected

Definition at line 1177 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_4mu
protected

Definition at line 1176 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_2mu2e
protected

Definition at line 1158 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4e
protected

Definition at line 1157 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4mu
protected

Definition at line 1156 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_2mu2e
protected

Definition at line 1174 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_4e
protected

Definition at line 1173 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_4mu
protected

Definition at line 1172 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_2mu2e
protected

Definition at line 1154 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4e
protected

Definition at line 1153 of file Mela.h.

◆ pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4mu
protected

Definition at line 1152 of file Mela.h.

◆ pAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q

MelaPConstant* Mela::pAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q
protected

Definition at line 1184 of file Mela.h.

◆ pAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e
protected

Definition at line 1182 of file Mela.h.

◆ pAvgSmooth_MCFM_JJQCD_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_4e
protected

Definition at line 1181 of file Mela.h.

◆ pAvgSmooth_MCFM_JJQCD_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_4mu
protected

Definition at line 1180 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_2mu2e
protected

Definition at line 1170 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_4e
protected

Definition at line 1169 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_4mu
protected

Definition at line 1168 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_2mu2e
protected

Definition at line 1150 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4e
protected

Definition at line 1149 of file Mela.h.

◆ pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4mu
protected

Definition at line 1148 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e
protected

Definition at line 1162 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_4e
protected

Definition at line 1161 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu
protected

Definition at line 1160 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e
protected

Definition at line 1146 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e
protected

Definition at line 1145 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu
protected

Definition at line 1144 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e
protected

Definition at line 1166 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZQQB_bkgZZ_4e

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_4e
protected

Definition at line 1165 of file Mela.h.

◆ pAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu

MelaPConstant* Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu
protected

Definition at line 1164 of file Mela.h.

◆ pdf

RooAbsPdf* Mela::pdf

Definition at line 1030 of file Mela.h.

◆ phi1_rrv

RooRealVar* Mela::phi1_rrv

Definition at line 1026 of file Mela.h.

◆ phi_rrv

RooRealVar* Mela::phi_rrv

Definition at line 1025 of file Mela.h.

◆ qqZZmodel

RooqqZZ_JHU_ZgammaZZ_fast* Mela::qqZZmodel

Definition at line 1034 of file Mela.h.

◆ spin1Model

VectorPdfFactory* Mela::spin1Model

Definition at line 1032 of file Mela.h.

◆ spin2Model

TensorPdfFactory_ppHVV* Mela::spin2Model

Definition at line 1033 of file Mela.h.

◆ super

SuperMELA* Mela::super

Definition at line 1036 of file Mela.h.

◆ superDijet

SuperDijetMela* Mela::superDijet
protected

Definition at line 1119 of file Mela.h.

◆ upFrac_rrv

RooRealVar* Mela::upFrac_rrv

Definition at line 1028 of file Mela.h.

◆ Y_rrv

RooRealVar* Mela::Y_rrv

Definition at line 1027 of file Mela.h.

◆ z1mass_rrv

RooRealVar* Mela::z1mass_rrv

Definition at line 1020 of file Mela.h.

◆ z2mass_rrv

RooRealVar* Mela::z2mass_rrv

Definition at line 1021 of file Mela.h.

◆ ZZME

ZZMatrixElement* Mela::ZZME
protected

Definition at line 1118 of file Mela.h.


The documentation for this class was generated from the following files:
TVar::ERROR
@ ERROR
Definition: TVar.hh:49
RooSpin::modelMeasurables::h2
RooAbsReal * h2
Definition: RooSpin.h:52
RooSpinZero::modelCouplings::gzgs4List
RooAbsReal * gzgs4List[1][2]
Definition: RooSpinZero.h:19
ZZMatrixElement::reset_Width
void reset_Width(double inmass, int ipart)
Definition: ZZMatrixElement.cc:202
Mela::getConstant
void getConstant(float &prob)
This function returns a multiplicative constant to the matrix element calculation.
Definition: Mela.cc:2207
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:68
TensorPdfFactory::couplings
RooSpinTwo::modelCouplings couplings
Definition: TensorPdfFactory.h:12
Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_ZZGG_bkgZZ_4e
Definition: Mela.h:1161
TVar::JJVBF
@ JJVBF
Definition: TVar.hh:72
PDGHelpers::isALepton
bool isALepton(const int id)
Definition: PDGHelpers.cc:62
Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e
MelaPConstant * pAvgSmooth_MCFM_ZZGG_HSMHiggs_4e
Definition: Mela.h:1145
Mela::ZZME
ZZMatrixElement * ZZME
Definition: Mela.h:1118
Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_ZZQQB_bkgZZ_4mu
Definition: Mela.h:1164
TVar::D_zzzg_g1prime2
@ D_zzzg_g1prime2
Definition: TVar.hh:144
TVar::Had_ZH_S
@ Had_ZH_S
Definition: TVar.hh:86
TVar::D_g1g4
@ D_g1g4
Definition: TVar.hh:138
SpinPdfFactory::setVerbosity
void setVerbosity(TVar::VerbosityLevel verbosity)
Definition: SpinPdfFactory.cc:173
MELAParticle::getDaughter
MELAParticle * getDaughter(int index) const
Definition: MELAParticle.cc:68
SIZE_GVV
@ SIZE_GVV
Definition: raw_couplings.txt:158
TVar::H0_Zgs_PS
@ H0_Zgs_PS
Definition: TVar.hh:131
RooSpin::kVdecayType_Zll
@ kVdecayType_Zll
Definition: RooSpin.h:31
TensorPdfFactory::resetHypotheses
virtual void resetHypotheses()
Definition: TensorPdfFactory.cc:70
RooSpin::modelMeasurables::Y
RooAbsReal * Y
Definition: RooSpin.h:59
Mela::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e
MelaPConstant * pAvgSmooth_JHUGen_ZZGG_HSMHiggs_2mu2e
Definition: Mela.h:1142
Mela::selfDGqqcoupl
double selfDGqqcoupl[SIZE_GQQ][2]
Definition: Mela.h:1089
Mela::selfDGvpvpcoupl
double selfDGvpvpcoupl[SIZE_GVV][2]
Definition: Mela.h:1093
Mela::Y_rrv
RooRealVar * Y_rrv
Definition: Mela.h:1027
Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_ZZQQB_bkgZZ_4e
Definition: Mela.h:1165
RooqqZZ_JHU_ZgammaZZ_fast
Definition: RooqqZZ_JHU_ZgammaZZ_fast.h:18
madMela::initialize_madMELA
void initialize_madMELA()
Initializes all of the values in Madgraph for proper usage. These include values like alpha,...
Definition: MadMela.cc:339
TensorPdfFactory::setTensorPolarization
virtual void setTensorPolarization(int ig, double initval)
Definition: TensorPdfFactory.cc:63
Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_bkgZZ_4e
Definition: Mela.h:1173
Mela::myVerbosity_
TVar::VerbosityLevel myVerbosity_
Definition: Mela.h:1116
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:139
Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_2mu2e
MelaPConstant * pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_2mu2e
Definition: Mela.h:1150
MELACandidate::addAssociatedJet
void addAssociatedJet(MELAParticle *myParticle)
Definition: MELACandidate.cc:616
ZZMatrixElement::get_XPropagator
void get_XPropagator(TVar::ResonancePropagatorScheme scheme, float &prop)
Definition: ZZMatrixElement.cc:465
anonymous_namespace{TCouplingsBase.hh}::SIZE_SMEFT
@ SIZE_SMEFT
Definition: TCouplingsBase.hh:322
SIZE_HVV_CQSQ
@ SIZE_HVV_CQSQ
Definition: raw_couplings.txt:74
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:598
Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_JJQCD_bkgZZ_4e
Definition: Mela.h:1181
TVar::JJEWQCD
@ JJEWQCD
Definition: TVar.hh:74
Mela::selfDM_Zprime
double selfDM_Zprime
Definition: Mela.h:1081
TVar::H0minus
@ H0minus
Definition: TVar.hh:128
Mela::computeProdP_VH
void computeProdP_VH(double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool includeHiggsDecay=false, bool useConstant=true)
Definition: Mela.cc:1769
ZZMatrixElement::set_mHiggs_wHiggs
void set_mHiggs_wHiggs(double mh_, double gah_, int index)
Definition: ZZMatrixElement.cc:192
Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_bkgZZ_4mu
Definition: Mela.h:1172
Mela::auxiliaryProb
float auxiliaryProb
Definition: Mela.h:1122
TensorPdfFactory::addHypothesis
virtual void addHypothesis(int ig, double initval, double iphase=0)
Definition: TensorPdfFactory.cc:56
TVar::CandidateDecay_ZZ
@ CandidateDecay_ZZ
Definition: TVar.hh:41
TVar::kNoAssociated
@ kNoAssociated
Definition: TVar.hh:30
MELAParticle::getNDaughters
int getNDaughters() const
Definition: MELAParticle.h:50
RooSpin::modelMeasurables::Phi1
RooAbsReal * Phi1
Definition: RooSpin.h:55
TVar::bkgGammaGamma
@ bkgGammaGamma
Definition: TVar.hh:162
madMela::updateMap
std::map< std::pair< TVar::Process, TVar::Production >, MG_process_double > * updateMap
Definition: MadMela.cc:12
ZZMatrixElement::get_TopCandidateCollection
std::vector< MELATopCandidate_t * > * get_TopCandidateCollection()
Definition: ZZMatrixElement.cc:239
Mela::selfDHwwCLambda_qsq
int selfDHwwCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ]
Definition: Mela.h:1069
ZZMatrixElement::reset_Mass
void reset_Mass(double inmass, int ipart)
Definition: ZZMatrixElement.cc:201
TVar::nFermionMassRemovalSchemes
@ nFermionMassRemovalSchemes
Definition: TVar.hh:114
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:584
SuperDijetMela
Definition: SuperDijetMela.h:8
ScalarPdfFactory_HVV
Definition: ScalarPdfFactory_HVV.h:8
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::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu
MelaPConstant * pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4mu
Definition: Mela.h:1140
Mela::z1mass_rrv
RooRealVar * z1mass_rrv
Definition: Mela.h:1020
Mela::selfDHttcoupl
double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:1057
Mela::setRemoveLeptonMasses
void setRemoveLeptonMasses(bool MasslessLeptonSwitch=true)
either permits or forbids massive leptons.
Definition: Mela.cc:556
SuperMELA::SetVerbosity
void SetVerbosity(bool verb=true)
Definition: SuperMELA.h:26
Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_JJQCD_bkgZZ_4mu
Definition: Mela.h:1180
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:348
Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_ZZGG_bkgZZ_2mu2e
Definition: Mela.h:1162
RooSpinZero::modelCouplings::g2List
RooAbsReal * g2List[8][2]
Definition: RooSpinZero.h:12
RooSpinZero::modelCouplings::gzgs3List
RooAbsReal * gzgs3List[1][2]
Definition: RooSpinZero.h:18
Mela::mzz_rrv
RooRealVar * mzz_rrv
Definition: Mela.h:1019
TVar::H2_g10
@ H2_g10
Definition: TVar.hh:160
Mela::setMelaHiggsWidth
void setMelaHiggsWidth(double myHiggsWidth=-1, int index=0)
Sets the width of your chosen Higgs.
Definition: Mela.cc:343
ZZMatrixElement::computeProdXS_JH
void computeProdXS_JH(float &mevalue)
Definition: ZZMatrixElement.cc:404
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:991
RooSpin::modelMeasurables::m12
RooAbsReal * m12
Definition: RooSpin.h:58
Mela::getPConstantHandle
MelaPConstant * getPConstantHandle(TVar::MatrixElement me_, TVar::Production prod_, TVar::Process proc_, TString relpath, TString spname, const bool useSqrts=false)
Definition: Mela.cc:2704
TVar::SelfDefine_spin2
@ SelfDefine_spin2
Definition: TVar.hh:181
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:1540
Mela::selfDHzpzpcoupl
double selfDHzpzpcoupl[SIZE_HVV][2]
Definition: Mela.h:1074
SIZE_ZQQ
@ SIZE_ZQQ
Definition: raw_couplings.txt:107
TVar::bkgZJets
@ bkgZJets
Definition: TVar.hh:164
Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4e
MelaPConstant * pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4e
Definition: Mela.h:1157
TUtil::applyLeptonMassCorrection
void applyLeptonMassCorrection(bool flag=true)
Definition: TUtil.cc:37
MelaIO::getMEConst
double getMEConst() const
Definition: MelaIO.h:110
TVar::ZZINDEPENDENT
@ ZZINDEPENDENT
Definition: TVar.hh:65
VectorPdfFactory::g1Val
RooRealVar * g1Val
Definition: VectorPdfFactory.h:24
SuperDijetMela::SetVerbosity
void SetVerbosity(const TVar::VerbosityLevel verbosity_)
Definition: SuperDijetMela.h:23
TVar::kUseAssociated_StableTops
@ kUseAssociated_StableTops
Definition: TVar.hh:35
Mela::selfDGa_Zprime
double selfDGa_Zprime
Definition: Mela.h:1082
TVar::JJQCD
@ JJQCD
Definition: TVar.hh:71
Mela::selfDWpffcoupl
double selfDWpffcoupl[SIZE_Vpff][2]
Definition: Mela.h:1080
RooSpin::modelMeasurables::m1
RooAbsReal * m1
Definition: RooSpin.h:56
Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4mu
MelaPConstant * pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4mu
Definition: Mela.h:1148
Mela::selfDZpffcoupl
double selfDZpffcoupl[SIZE_Vpff][2]
Definition: Mela.h:1075
Mela::selfDaTQGCcoupl
double selfDaTQGCcoupl[SIZE_ATQGC][2]
Definition: Mela.h:1095
Mela::myProduction_
TVar::Production myProduction_
Definition: Mela.h:1114
Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4mu
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4mu
Definition: Mela.h:1152
TVar::ZZQQB
@ ZZQQB
Definition: TVar.hh:63
VectorPdfFactory
Definition: VectorPdfFactory.h:12
Mela::computeConstant
void computeConstant(float &prob)
Definition: Mela.cc:2208
ZZMatrixElement::set_Verbosity
void set_Verbosity(TVar::VerbosityLevel verbosity_)
Definition: ZZMatrixElement.cc:135
TVar::kUseAssociated_Jets
@ kUseAssociated_Jets
Definition: TVar.hh:33
ZZMatrixElement::set_SpinZeroContact
void set_SpinZeroContact(double selfDHzzpcoupl[SIZE_HVV][2], double selfDHzpzpcoupl[SIZE_HVV][2], double selfDHwwpcoupl[SIZE_HVV][2], double selfDHwpwpcoupl[SIZE_HVV][2])
Definition: ZZMatrixElement.cc:283
Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_2mu2e
MelaPConstant * pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_2mu2e
Definition: Mela.h:1158
ZZMatrixElement::set_SpinOneCouplings
void set_SpinOneCouplings(double selfDZqqcoupl[SIZE_ZQQ][2], double selfDZvvcoupl[SIZE_ZVV][2])
Definition: ZZMatrixElement.cc:296
TUtil::PrintCandidateSummary
void PrintCandidateSummary(MELACandidate *cand)
Definition: TUtil.cc:8855
TVar::D_g1g4_pi_2
@ D_g1g4_pi_2
Definition: TVar.hh:139
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:309
SuperMELA::init
void init()
Definition: SuperMELA.cc:158
ZZMatrixElement::get_IORecord
MelaIO * get_IORecord()
Definition: ZZMatrixElement.cc:232
ZZMatrixElement::get_HiggsWidthAtPoleMass
double get_HiggsWidthAtPoleMass(double mass)
Definition: ZZMatrixElement.cc:235
TVar::D_zzzg_PS
@ D_zzzg_PS
Definition: TVar.hh:142
Mela::deletePConstantHandles
void deletePConstantHandles()
Definition: Mela.cc:2768
Mela::setSpinZeroCouplings
void setSpinZeroCouplings()
Definition: Mela.cc:375
Mela::pAvgSmooth_JHUGen_JJVBF_HSMHiggs
MelaPConstant * pAvgSmooth_JHUGen_JJVBF_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
Definition: Mela.h:1133
modmisc::isnan
logical function isnan(x)
Definition: mod_Misc.F90:380
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:68
TVar::D_zzzg_g1prime2_pi_2
@ D_zzzg_g1prime2_pi_2
Definition: TVar.hh:145
Mela::qqZZmodel
RooqqZZ_JHU_ZgammaZZ_fast * qqZZmodel
Definition: Mela.h:1034
TVar::MADGRAPH
@ MADGRAPH
Definition: TVar.hh:59
Mela::selfDHqqcoupl
double selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:1053
TVar::H2_g7
@ H2_g7
Definition: TVar.hh:157
SIZE_ZVV
@ SIZE_ZVV
Definition: raw_couplings.txt:114
Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_JJVBF_bkgZZ_2mu2e
Definition: Mela.h:1170
Mela::ggSpin0Model
ScalarPdfFactory_HVV * ggSpin0Model
Definition: Mela.h:1031
Mela::costheta1_rrv
RooRealVar * costheta1_rrv
Definition: Mela.h:1023
MelaPConstant::IsValid
bool IsValid()
Definition: MelaPConstant.h:43
ZZMatrixElement::set_SpinZeroCouplings
void set_SpinZeroCouplings(double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2], double selfDHg4g4coupl[nSupportedHiggses][SIZE_HGG][2], double selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHb4b4coupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHt4t4coupl[nSupportedHiggses][SIZE_HQQ][2], double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2], double selfDHzzLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ], double selfDHwwLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ], int selfDHzzCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ], int selfDHwwCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ], double selfDSMEFTSimcoupl[SIZE_SMEFT], bool diffHWW=false)
Definition: ZZMatrixElement.cc:242
Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_Had_WH_bkgZZ_2mu2e
Definition: Mela.h:1178
TVar::SMSyst_ResUp
@ SMSyst_ResUp
Definition: TVar.hh:192
TVar::ZZGG
@ ZZGG
Definition: TVar.hh:62
ZZMatrixElement::append_TopCandidate
void append_TopCandidate(SimpleParticleCollection_t *TopDaughters)
Definition: ZZMatrixElement.cc:182
Mela::selfDGvvcoupl
double selfDGvvcoupl[SIZE_GVV][2]
Definition: Mela.h:1091
TVar::MomentumToEnergy
@ MomentumToEnergy
Definition: TVar.hh:113
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:163
ZZMatrixElement::set_CandidateDecayMode
void set_CandidateDecayMode(TVar::CandidateDecayMode mode)
Definition: ZZMatrixElement.cc:145
ZZMatrixElement::get_PrimaryMass
double get_PrimaryMass(int ipart)
Definition: ZZMatrixElement.cc:233
ZZMatrixElement::set_AZffCouplings
void set_AZffCouplings(double selfDAZffcoupl[SIZE_AZff][2])
Definition: ZZMatrixElement.cc:341
ZZMatrixElement::set_SpinTwoCouplings
void set_SpinTwoCouplings(double selfDGqqcoupl[SIZE_GQQ][2], double selfDGggcoupl[SIZE_GGG][2], double selfDGvvcoupl[SIZE_GVV][2])
Definition: ZZMatrixElement.cc:303
TVar::H0_Zgsg1prime2
@ H0_Zgsg1prime2
Definition: TVar.hh:129
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:1117
ZZMatrixElement::get_CurrentCandidateIndex
int get_CurrentCandidateIndex()
Definition: ZZMatrixElement.cc:237
ZZMatrixElement::set_Process
void set_Process(TVar::Process process_, TVar::MatrixElement me_, TVar::Production production_)
Definition: ZZMatrixElement.cc:129
ZZMatrixElement::get_CurrentCandidate
MELACandidate * get_CurrentCandidate()
Definition: ZZMatrixElement.cc:236
MELAStreamHelpers::MELAout
MELAOutputStreamer MELAout
madMela::setDefaultMadgraphValues
void setDefaultMadgraphValues()
Sets the Madgraph values to their defaults. This function is called after every call to a compute fun...
Definition: MadMela.cc:249
TVar::bkgWW
@ bkgWW
Definition: TVar.hh:166
TVar::D_zzgg
@ D_zzgg
Definition: TVar.hh:141
TVar::DefaultLeptonInterf
@ DefaultLeptonInterf
Definition: TVar.hh:106
TVar::D_zzgg_PS
@ D_zzgg_PS
Definition: TVar.hh:143
Mela::melaCand
MELACandidate * melaCand
Definition: Mela.h:1124
Mela::pAvgSmooth_JHUGen_JJQCD_HSMHiggs
MelaPConstant * pAvgSmooth_JHUGen_JJQCD_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
Definition: Mela.h:1131
MELAParticle::m
double m() const
Definition: MELAParticle.h:66
TVar::H2_g5
@ H2_g5
Definition: TVar.hh:154
Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu
MelaPConstant * pAvgSmooth_MCFM_ZZGG_HSMHiggs_4mu
Definition: Mela.h:1144
ZZMatrixElement::set_mHiggs
void set_mHiggs(double mh_, int index)
Definition: ZZMatrixElement.cc:184
Mela::differentiate_HWW_HZZ
bool differentiate_HWW_HZZ
Definition: Mela.h:1070
Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_JJVBF_bkgZZ_4e
Definition: Mela.h:1169
ZZMatrixElement::set_VprimeContactCouplings
void set_VprimeContactCouplings(double selfDZpffcoupl[SIZE_Vpff][2], double selfDWpffcoupl[SIZE_Vpff][2], double M_Zprime, double Ga_Zprime, double M_Wprime, double Ga_Wprime)
Definition: ZZMatrixElement.cc:321
SIZE_HQQ
@ SIZE_HQQ
Definition: raw_couplings.txt:5
SuperMELA::SetPathToCards
void SetPathToCards(std::string dirToCards)
Definition: SuperMELA.cc:358
ScalarPdfFactory::addHypothesis
virtual void addHypothesis(int ig, int ilam, double iphase=0, double altparam_fracval=0)
Definition: ScalarPdfFactory.cc:736
TVar::H0_g1prime2
@ H0_g1prime2
Definition: TVar.hh:126
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:8675
MELAParticle::p4
TLorentzVector p4
Definition: MELAParticle.h:18
TVar::H2_g3
@ H2_g3
Definition: TVar.hh:152
Mela::pAvgSmooth_MCFM_JJVBF_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_JJVBF_bkgZZ_4mu
Definition: Mela.h:1168
TVar::SMSyst_None
@ SMSyst_None
Definition: TVar.hh:187
anonymous_namespace{TCouplingsBase.hh}::SIZE_HGG
@ SIZE_HGG
Definition: TCouplingsBase.hh:40
Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_4e
MelaPConstant * pAvgSmooth_MCFM_Had_WH_bkgZZ_4e
Definition: Mela.h:1177
SuperMELA::M4lProb
std::pair< double, double > M4lProb(double m4l)
Definition: SuperMELA.cc:552
MelaPConstant::GetSplineName
TString GetSplineName()
Definition: MelaPConstant.h:46
modparameters::c5
complex(8), parameter, public c5
Definition: mod_Parameters.F90:993
TVar::H0_gsgs_PS
@ H0_gsgs_PS
Definition: TVar.hh:133
TensorPdfFactory_ppHVV
Definition: TensorPdfFactory_ppHVV.h:8
MelaPConstant::Eval
double Eval(const MelaIO *RcdME, TVar::VerbosityLevel verbosity) const
Definition: MELAPConstant.cc:59
RooSpinZero::modelCouplings::Lambda_z4qsq
RooAbsReal * Lambda_z4qsq[SIZE_HVV_CQSQ]
Definition: RooSpinZero.h:35
Mela::setATQGCCouplings
void setATQGCCouplings()
Definition: Mela.cc:423
Mela::selfDHg4g4coupl
double selfDHg4g4coupl[nSupportedHiggses][SIZE_HGG][2]
Definition: Mela.h:1051
Mela::pAvgSmooth_JHUGen_JQCD_HSMHiggs
MelaPConstant * pAvgSmooth_JHUGen_JQCD_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
Definition: Mela.h:1129
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:1223
VectorPdfFactory::configure
int configure(TVar::Process model_)
Definition: VectorPdfFactory.h:70
ZZMatrixElement::get_RenFacScaleMode
const TVar::event_scales_type & get_RenFacScaleMode() const
Definition: ZZMatrixElement.cc:142
RooSpinZero::modelCouplings::Lambda_z1qsq
RooAbsReal * Lambda_z1qsq[SIZE_HVV_CQSQ]
Definition: RooSpinZero.h:32
TVar::HSMHiggs
@ HSMHiggs
Definition: TVar.hh:125
TVar::H2_g2
@ H2_g2
Definition: TVar.hh:151
TVar::Lep_WH_TU
@ Lep_WH_TU
Definition: TVar.hh:100
TVar::bkgZGamma
@ bkgZGamma
Definition: TVar.hh:163
ScalarPdfFactory_HVV::getPDF
RooSpinZero * getPDF()
Definition: ScalarPdfFactory_HVV.h:22
TVar::GetMELAPath
std::string GetMELAPath()
Definition: TVar.cc:122
Mela::getConstant_JHUGenUndecayed
float getConstant_JHUGenUndecayed()
Definition: Mela.cc:2290
TVar::H2_g9
@ H2_g9
Definition: TVar.hh:159
Mela::printLogo
void printLogo() const
Definition: Mela.cc:246
ZZMatrixElement::set_InputEvent
void set_InputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
Definition: ZZMatrixElement.cc:149
Mela::setCandidateDecayMode
void setCandidateDecayMode(TVar::CandidateDecayMode mode)
Sets the decay mode for your event.
Definition: Mela.cc:346
ZZMatrixElement::set_CurrentCandidateFromIndex
void set_CurrentCandidateFromIndex(unsigned int icand)
Definition: ZZMatrixElement.cc:147
Mela::setMelaHiggsMass
void setMelaHiggsMass(double myHiggsMass, int index=0)
Sets the mass of your chosen Higgs.
Definition: Mela.cc:342
TVar::H0_gsgs
@ H0_gsgs
Definition: TVar.hh:132
Mela::spin2Model
TensorPdfFactory_ppHVV * spin2Model
Definition: Mela.h:1033
Mela::reset_PAux
void reset_PAux()
Definition: Mela.cc:595
ScalarPdfFactory_HVV::makeParamsConst
void makeParamsConst(bool yesNo=true)
Definition: ScalarPdfFactory_HVV.cc:149
Mela::selfDZqqcoupl
double selfDZqqcoupl[SIZE_ZQQ][2]
Definition: Mela.h:1086
RooSpinZero::modelCouplings::ggsgs4List
RooAbsReal * ggsgs4List[1][2]
Definition: RooSpinZero.h:22
Mela::selfDHb4b4coupl
double selfDHb4b4coupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:1059
Mela::selfDHwpwpcoupl
double selfDHwpwpcoupl[SIZE_HVV][2]
Definition: Mela.h:1079
l
double l[nf]
Definition: TMCFM.hh:274
TVar::D_gg10
@ D_gg10
Definition: TVar.hh:176
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:875
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:418
TVar::Had_ZH_TU
@ Had_ZH_TU
Definition: TVar.hh:97
RooSpinZero::modelCouplings::gzgs2List
RooAbsReal * gzgs2List[1][2]
Definition: RooSpinZero.h:17
TVar::MCFM
@ MCFM
Definition: TVar.hh:56
Mela::reset_CandRef
void reset_CandRef()
Definition: Mela.cc:590
TVar::Lep_ZH_S
@ Lep_ZH_S
Definition: TVar.hh:88
TVar::D_g1g2
@ D_g1g2
Definition: TVar.hh:136
Mela::myLepInterf_
TVar::LeptonInterference myLepInterf_
Definition: Mela.h:1115
SIZE_Vpff
@ SIZE_Vpff
Definition: raw_couplings.txt:100
Mela::selfDHzzLambda_qsq
double selfDHzzLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
Definition: Mela.h:1066
MELAParticle
Definition: MELAParticle.h:13
ZZMatrixElement::computeProdXS_JJH
void computeProdXS_JJH(float &mevalue)
Definition: ZZMatrixElement.cc:390
VectorPdfFactory::PDF
RooSpinOne_7D * PDF
Definition: VectorPdfFactory.h:22
Mela::phi_rrv
RooRealVar * phi_rrv
Definition: Mela.h:1025
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:1469
Mela::reset_SelfDCouplings
void reset_SelfDCouplings()
Definition: Mela.cc:436
TVar::JJEW_S
@ JJEW_S
Definition: TVar.hh:84
ScalarPdfFactory::resetHypotheses
virtual void resetHypotheses()
Definition: ScalarPdfFactory.cc:890
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:210
Mela::selfDHwwcoupl
double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2]
Definition: Mela.h:1065
TVar::SMSyst_ResDown
@ SMSyst_ResDown
Definition: TVar.hh:193
TVar::ConserveDifermionMass
@ ConserveDifermionMass
Definition: TVar.hh:112
ZZMatrixElement::computeProdXS_VVHVV
void computeProdXS_VVHVV(float &mevalue)
Definition: ZZMatrixElement.cc:370
Mela::myME_
TVar::MatrixElement myME_
Definition: Mela.h:1113
SuperMELA::GetSigShapeParameter
double GetSigShapeParameter(std::string parName)
Definition: SuperMELA.cc:140
RooSpin::modelMeasurables::m2
RooAbsReal * m2
Definition: RooSpin.h:57
Mela::selfDGvvpcoupl
double selfDGvvpcoupl[SIZE_GVV][2]
Definition: Mela.h:1092
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:1959
ZZMatrixElement::set_RenFacScaleMode
void set_RenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
Definition: ZZMatrixElement.cc:139
Mela::pdf
RooAbsPdf * pdf
Definition: Mela.h:1030
nSupportedHiggses
@ nSupportedHiggses
Definition: TMCFM.hh:15
SIZE_ATQGC
@ SIZE_ATQGC
Definition: raw_couplings.txt:176
TensorPdfFactory_ppHVV::getPDF
RooSpinTwo * getPDF()
Definition: TensorPdfFactory_ppHVV.h:15
Mela::myModel_
TVar::Process myModel_
Definition: Mela.h:1112
Mela::selfDAZffcoupl
double selfDAZffcoupl[SIZE_AZff][2]
Definition: Mela.h:1097
Mela::pAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q
MelaPConstant * pAvgSmooth_MCFM_JJQCD_bkgZJets_2l2q
Definition: Mela.h:1184
TVar::JJVBF_TU
@ JJVBF_TU
Definition: TVar.hh:94
Mela::selfDHzzCLambda_qsq
int selfDHzzCLambda_qsq[nSupportedHiggses][SIZE_HVV_CQSQ]
Definition: Mela.h:1068
TVar::H2_g1
@ H2_g1
Definition: TVar.hh:150
RooSpin::modelMeasurables::h1
RooAbsReal * h1
Definition: RooSpin.h:51
Mela::setAZffCouplings
void setAZffCouplings()
Definition: Mela.cc:428
ZZMatrixElement::get_PrimaryHiggsMass
double get_PrimaryHiggsMass()
Definition: ZZMatrixElement.h:143
Mela::setSpinOneCouplings
void setSpinOneCouplings()
Definition: Mela.cc:408
TVar::JHUGen
@ JHUGen
Definition: TVar.hh:57
MELACandidate::getAssociatedJet
MELAParticle * getAssociatedJet(int index) const
Definition: MELACandidate.cc:168
SIZE_HVV_LAMBDAQSQ
@ SIZE_HVV_LAMBDAQSQ
Definition: raw_couplings.txt:66
ZZMatrixElement::computeXS
void computeXS(float &mevalue)
Definition: ZZMatrixElement.cc:350
TVar::Had_ZH
@ Had_ZH
Definition: TVar.hh:75
Mela::selfDZvvcoupl
double selfDZvvcoupl[SIZE_ZVV][2]
Definition: Mela.h:1087
TVar::H2_g1g5
@ H2_g1g5
Definition: TVar.hh:155
Mela::pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4mu
MelaPConstant * pAvgSmooth_MCFM_Had_WH_S_HSMHiggs_4mu
Definition: Mela.h:1156
TVar::H2_g8
@ H2_g8
Definition: TVar.hh:158
VectorPdfFactory::g2Val
RooRealVar * g2Val
Definition: VectorPdfFactory.h:25
Mela::pAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_JJQCD_bkgZZ_2mu2e
Definition: Mela.h:1182
Mela::pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_ZZGG_bkgZZ_4mu
Definition: Mela.h:1160
SpinPdfFactory::makeParamsConst
virtual void makeParamsConst(bool yesNo)
Definition: SpinPdfFactory.cc:154
Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_2mu2e
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_2mu2e
Definition: Mela.h:1154
Mela::superDijet
SuperDijetMela * superDijet
Definition: Mela.h:1119
MELAStreamHelpers::MELAerr
MELAOutputStreamer MELAerr
Mela::selfDM_Wprime
double selfDM_Wprime
Definition: Mela.h:1083
Mela::getConstant_FourFermionDecay
float getConstant_FourFermionDecay(const int &decid)
Definition: Mela.cc:2352
Mela::melaRandomNumber
TRandom3 melaRandomNumber
Definition: Mela.h:1018
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:1817
TUtil::GetMadgraphCKMElement
std::complex< double > GetMadgraphCKMElement(int iquark, int jquark)
Definition: TUtil.cc:1540
TVar::JJEW
@ JJEW
Definition: TVar.hh:73
TVar::D_g1g1prime2
@ D_g1g1prime2
Definition: TVar.hh:135
Mela::super
SuperMELA * super
Definition: Mela.h:1036
Mela::selfDGa_Wprime
double selfDGa_Wprime
Definition: Mela.h:1084
MELAOutputStreamer::writeCentered
void writeCentered(const T &val, char fillch=' ', std::streamsize gapsize=0)
Definition: MELAOutputStreamer.h:131
Mela::selfDHt4t4coupl
double selfDHt4t4coupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:1061
Mela::selfDHwwLambda_qsq
double selfDHwwLambda_qsq[nSupportedHiggses][SIZE_HVV_LAMBDAQSQ][SIZE_HVV_CQSQ]
Definition: Mela.h:1067
Mela::pAvgSmooth_MCFM_Had_ZH_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_bkgZZ_2mu2e
Definition: Mela.h:1174
TVar::bkgZZ_SMHiggs
@ bkgZZ_SMHiggs
Definition: TVar.hh:169
Mela::setMelaPrimaryHiggsMass
void setMelaPrimaryHiggsMass(double myHiggsMass)
Sets the mass of the "primary" higgs.
Definition: Mela.cc:341
Mela::z2mass_rrv
RooRealVar * z2mass_rrv
Definition: Mela.h:1021
TUtil::computeFakeJet
void computeFakeJet(TLorentzVector const &realJet, TLorentzVector const &others, TLorentzVector &fakeJet)
Definition: TUtil.cc:158
madMela::params_r_
struct madMela::@2 params_r_
TVar::bkgZZ
@ bkgZZ
Definition: TVar.hh:165
MelaIO::setMEConst
void setMEConst(const double &val)
Definition: MelaIO.h:108
SIZE_AZff
@ SIZE_AZff
Definition: raw_couplings.txt:194
Mela::selfDSMEFTSimcoupl
double selfDSMEFTSimcoupl[SIZE_SMEFT]
Definition: Mela.h:1100
TVar::SMSyst_ScaleDown
@ SMSyst_ScaleDown
Definition: TVar.hh:190
Mela::pAvgSmooth_JHUGen_Had_ZH_HSMHiggs
MelaPConstant * pAvgSmooth_JHUGen_Had_ZH_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
Definition: Mela.h:1135
modparameters::c1
complex(8), parameter, public c1
Definition: mod_Parameters.F90:988
TVar::Had_WH_TU
@ Had_WH_TU
Definition: TVar.hh:98
Mela::costhetastar_rrv
RooRealVar * costhetastar_rrv
Definition: Mela.h:1022
TVar::H0_Zgs
@ H0_Zgs
Definition: TVar.hh:130
MELACandidate::getAssociatedJets
std::vector< MELAParticle * > & getAssociatedJets()
Definition: MELACandidate.cc:182
TVar::ttH
@ ttH
Definition: TVar.hh:67
Mela::costheta2_rrv
RooRealVar * costheta2_rrv
Definition: Mela.h:1024
Mela::setConstant
void setConstant()
Definition: Mela.cc:2214
Mela::selfDHwwpcoupl
double selfDHwwpcoupl[SIZE_HVV][2]
Definition: Mela.h:1077
RooSpinZero::modelCouplings::Lambda_z3qsq
RooAbsReal * Lambda_z3qsq[SIZE_HVV_CQSQ]
Definition: RooSpinZero.h:34
Mela::getConstant_4l
float getConstant_4l()
Definition: Mela.cc:2325
TVar::SelfDefine_spin0
@ SelfDefine_spin0
Definition: TVar.hh:179
RooSpinZero::modelCouplings::gzgs1List
RooAbsReal * gzgs1List[1][2]
Definition: RooSpinZero.h:16
PDGHelpers::isAGluon
bool isAGluon(const int id)
Definition: PDGHelpers.cc:58
Mela::configureAnalyticalPDFs
bool configureAnalyticalPDFs()
Definition: Mela.cc:2008
ZZMatrixElement
Definition: ZZMatrixElement.h:9
TVar::JQCD
@ JQCD
Definition: TVar.hh:69
RooSpinZero::modelCouplings::g3List
RooAbsReal * g3List[8][2]
Definition: RooSpinZero.h:13
Mela::selfDHzzcoupl
double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2]
Definition: Mela.h:1063
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:564
ZZMatrixElement::set_CurrentCandidate
void set_CurrentCandidate(MELACandidate *cand)
Definition: ZZMatrixElement.cc:148
Mela::getPConstantHandles
void getPConstantHandles()
Definition: Mela.cc:2509
TVar::kUseAssociated_Photons
@ kUseAssociated_Photons
Definition: TVar.hh:32
RooSpinZero::modelCouplings::g1List
RooAbsReal * g1List[8][2]
Definition: RooSpinZero.h:11
TVar::ANALYTICAL
@ ANALYTICAL
Definition: TVar.hh:58
Mela::setSpinTwoCouplings
void setSpinTwoCouplings()
Definition: Mela.cc:411
TUtil::JetMassScheme
TVar::FermionMassRemoval JetMassScheme
Definition: TUtil.cc:30
TVar::H2_g6
@ H2_g6
Definition: TVar.hh:156
Mela::LHCsqrts
double LHCsqrts
Definition: Mela.h:1111
TVar::Lep_ZH
@ Lep_ZH
Definition: TVar.hh:77
MelaPConstant::GetFileName
TString GetFileName()
Definition: MelaPConstant.h:45
TVar::SMSyst_ScaleUp
@ SMSyst_ScaleUp
Definition: TVar.hh:189
ScalarPdfFactory::couplings
RooSpinZero::modelCouplings couplings
Definition: ScalarPdfFactory.h:12
Mela::phi1_rrv
RooRealVar * phi1_rrv
Definition: Mela.h:1026
TVar::kUseAssociated_UnstableTops
@ kUseAssociated_UnstableTops
Definition: TVar.hh:34
RooSpinZero::modelCouplings::ggsgs3List
RooAbsReal * ggsgs3List[1][2]
Definition: RooSpinZero.h:21
Mela::spin1Model
VectorPdfFactory * spin1Model
Definition: Mela.h:1032
Mela::pAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e
MelaPConstant * pAvgSmooth_MCFM_ZZGG_HSMHiggs_2mu2e
Definition: Mela.h:1146
Mela::selfDHzzpcoupl
double selfDHzzpcoupl[SIZE_HVV][2]
Definition: Mela.h:1072
MELACandidate
Definition: MELACandidate.h:7
ZZMatrixElement::set_LeptonInterference
void set_LeptonInterference(TVar::LeptonInterference myLepInterf)
Definition: ZZMatrixElement.cc:136
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
ZZMatrixElement::set_aTQGCCouplings
void set_aTQGCCouplings(double selfDaTQGCcoupl[SIZE_ATQGC][2])
Definition: ZZMatrixElement.cc:336
TVar::D_zzzg
@ D_zzzg
Definition: TVar.hh:140
TVar::H2_g4
@ H2_g4
Definition: TVar.hh:153
TVar::JJEWQCD_TU
@ JJEWQCD_TU
Definition: TVar.hh:96
SimpleParticleCollection_t
std::vector< SimpleParticle_t > SimpleParticleCollection_t
Definition: TVar.hh:25
Mela::pAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e
MelaPConstant * pAvgSmooth_MCFM_ZZQQB_bkgZZ_2mu2e
Definition: Mela.h:1166
TVar::D_g1g2_pi_2
@ D_g1g2_pi_2
Definition: TVar.hh:137
MelaPConstant
Definition: MelaPConstant.h:9
TUtil::SetMadgraphCKMElements
void SetMadgraphCKMElements(double ckmlambda=0.2265, double ckma=0.79, double ckmrho=0.141, double ckmeta=0)
Definition: TUtil.cc:1531
Mela::selfDHggcoupl
double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2]
Definition: Mela.h:1049
RooSpinZero::modelCouplings::Lambda_z2qsq
RooAbsReal * Lambda_z2qsq[SIZE_HVV_CQSQ]
Definition: RooSpinZero.h:33
Mela::pAvgSmooth_JHUGen_Had_WH_HSMHiggs
MelaPConstant * pAvgSmooth_JHUGen_Had_WH_HSMHiggs[TVar::nFermionMassRemovalSchemes-1]
Definition: Mela.h:1137
Mela::deletePConstantHandle
void deletePConstantHandle(MelaPConstant *&handle)
Definition: Mela.cc:2824
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:204
Mela::setMelaLeptonInterference
void setMelaLeptonInterference(TVar::LeptonInterference myLepInterf=TVar::DefaultLeptonInterf)
Sets the MELA Lepton Interference.
Definition: Mela.cc:345
RooSpinZero::modelCouplings::g4List
RooAbsReal * g4List[8][2]
Definition: RooSpinZero.h:14
ZZMatrixElement::computeProdXS_ttH
void computeProdXS_ttH(float &mevalue, int topProcess, int topDecay=0)
Definition: ZZMatrixElement.cc:441
ZZMatrixElement::reset_InputEvent
void reset_InputEvent()
Definition: ZZMatrixElement.cc:229
Mela::pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4e
MelaPConstant * pAvgSmooth_MCFM_JJVBF_S_HSMHiggs_4e
Definition: Mela.h:1149
ZZMatrixElement::set_SpinTwoContact
void set_SpinTwoContact(double selfDGvvpcoupl[SIZE_GVV][2], double selfDGvpvpcoupl[SIZE_GVV][2])
Definition: ZZMatrixElement.cc:312
ZZMatrixElement::get_PrimaryWidth
double get_PrimaryWidth(int ipart)
Definition: ZZMatrixElement.cc:234
TVar::Had_WH
@ Had_WH
Definition: TVar.hh:76
RooSpin::modelMeasurables
Definition: RooSpin.h:50
RooSpinZero::modelCouplings::cLambda_qsq
RooAbsReal * cLambda_qsq[SIZE_HVV_CQSQ]
Definition: RooSpinZero.h:36
Mela::upFrac_rrv
RooRealVar * upFrac_rrv
Definition: Mela.h:1028
SuperMELA::SetDecayChannel
void SetDecayChannel(std::string myChan)
Definition: SuperMELA.cc:113
Mela::getConstant_2l2q
float getConstant_2l2q()
Definition: Mela.cc:2336
TVar::JJEW_TU
@ JJEW_TU
Definition: TVar.hh:95
Mela::selfDHbbcoupl
double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2]
Definition: Mela.h:1055
MELAParticle::id
int id
Definition: MELAParticle.h:17
ZZMatrixElement::get_NCandidates
int get_NCandidates()
Definition: ZZMatrixElement.cc:238
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:598
TVar::JJQCD_TU
@ JJQCD_TU
Definition: TVar.hh:93
TVar::simple_event_record
Definition: TVar.hh:226
RooSpin::modelMeasurables::hs
RooAbsReal * hs
Definition: RooSpin.h:53
Mela::pAvgSmooth_MCFM_Had_WH_bkgZZ_4mu
MelaPConstant * pAvgSmooth_MCFM_Had_WH_bkgZZ_4mu
Definition: Mela.h:1176
TVar::SelfDefine_spin1
@ SelfDefine_spin1
Definition: TVar.hh:180
TVar::H0hplus
@ H0hplus
Definition: TVar.hh:127
TUtil::GetBoostedParticleVectors
void GetBoostedParticleVectors(MELACandidate *melaCand, TVar::simple_event_record &mela_event, TVar::VerbosityLevel verbosity=TVar::DEBUG)
Definition: TUtil.cc:8212
RooSpinTwo::modelCouplings::bList
RooAbsReal * bList[SIZE_GVV][2]
Definition: RooSpinTwo.h:11
Mela::getConstant_4q
float getConstant_4q()
Definition: Mela.cc:2345
Mela::selfDGggcoupl
double selfDGggcoupl[SIZE_GGG][2]
Definition: Mela.h:1090
Mela::pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e
MelaPConstant * pAvgSmooth_JHUGen_ZZGG_HSMHiggs_4e
Definition: Mela.h:1141
TVar::bbH
@ bbH
Definition: TVar.hh:68
RooSpinZero::modelCouplings::ggsgs2List
RooAbsReal * ggsgs2List[1][2]
Definition: RooSpinZero.h:20
TVar::kUseAssociated_Leptons
@ kUseAssociated_Leptons
Definition: TVar.hh:31
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:586
SIZE_GQQ
@ SIZE_GQQ
Definition: raw_couplings.txt:121
PDGHelpers::isAJet
bool isAJet(const int id)
Definition: PDGHelpers.cc:18
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:732
modparameters::c2
complex(8), parameter, public c2
Definition: mod_Parameters.F90:989
ZZMatrixElement::set_PrimaryHiggsMass
void set_PrimaryHiggsMass(double mh)
Definition: ZZMatrixElement.cc:146
ZZMatrixElement::set_wHiggs
void set_wHiggs(double gah_, int index)
Definition: ZZMatrixElement.cc:188
SuperDijetMela::GetConvBW
float GetConvBW(TVar::Production prod, MELACandidate *cand, bool useTrueBW)
Definition: SuperDijetMela.cc:64
Mela::pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4e
MelaPConstant * pAvgSmooth_MCFM_Had_ZH_S_HSMHiggs_4e
Definition: Mela.h:1153
ZZMatrixElement::reset_QuarkMasses
void reset_QuarkMasses()
Definition: ZZMatrixElement.cc:203
TUtil::applyJetMassCorrection
void applyJetMassCorrection(bool flag=true)
Definition: TUtil.cc:38