JHUGen MELA
v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
|
#include <Mela.h>
|
| Mela (double LHCsqrts_=13., double mh_=125., TVar::VerbosityLevel verbosity_=TVar::ERROR) |
| the MELA constructor More...
|
|
| Mela (const Mela &other) |
| Copy constructor for MELA. More...
|
|
| ~Mela () |
| MELA destructor. More...
|
|
void | build (double mh_) |
| This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor. More...
|
|
void | setProcess (TVar::Process myModel, TVar::MatrixElement myME, TVar::Production myProduction) |
| Sets the process, matrix element, and production that MELA is to use for this event. Calls ZZMatrixElement::set_Process, which calls TEvtProb::SetProcess. More...
|
|
void | setVerbosity (TVar::VerbosityLevel verbosity_=TVar::ERROR) |
| Sets the verbosity for MELA outside of the initial constructor. More...
|
|
TVar::VerbosityLevel | getVerbosity () |
| Gets the current verbosity level for MELA. More...
|
|
void | setMelaLeptonInterference (TVar::LeptonInterference myLepInterf=TVar::DefaultLeptonInterf) |
| Sets the MELA Lepton Interference. More...
|
|
void | setRemoveLeptonMasses (bool MasslessLeptonSwitch=true) |
| either permits or forbids massive leptons. More...
|
|
void | setRemoveJetMasses (bool MasslessLeptonSwitch=true) |
| either permits or forbids massive jets. More...
|
|
void | setMelaPrimaryHiggsMass (double myHiggsMass) |
| Sets the mass of the "primary" higgs. More...
|
|
void | setMelaHiggsMass (double myHiggsMass, int index=0) |
| Sets the mass of your chosen Higgs. More...
|
|
void | setMelaHiggsWidth (double myHiggsWidth=-1, int index=0) |
| Sets the width of your chosen Higgs. More...
|
|
void | setMelaHiggsMassWidth (double myHiggsMass, double myHiggsWidth, int index) |
| a combination of setMelaHiggsMass and setMelaHiggsWidth. More...
|
|
void | setRenFacScaleMode (TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf) |
| Sets the renormalization and the factorization schemes. More...
|
|
void | setCandidateDecayMode (TVar::CandidateDecayMode mode) |
| Sets the decay mode for your event. More...
|
|
void | setCurrentCandidateFromIndex (unsigned int icand) |
| Switches the candidate that you are working on to another candidate based off of an index. More...
|
|
void | setCurrentCandidate (MELACandidate *cand) |
| Switches the candidate that you are working on to another candidate object specified. More...
|
|
void | setInputEvent (SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false) |
| Sets the input event for MELA. MELA cannot run without this. More...
|
|
void | resetInputEvent () |
| Resets the event in preparation for the next iteration of the event loop. More...
|
|
void | setTempCandidate (SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false) |
| Sets a temporary MELA candidate, by setting melaCand in Xcal2 to a temporary candidate without pushing this candidate to the candList of Xcal2. More...
|
|
void | appendTopCandidate (SimpleParticleCollection_t *TopDaughters) |
| Adds a top quark as a MELA candidate. More...
|
|
void | resetMass (double inmass, int ipart) |
| Resets the mass for a particle that is an electroweak parameter according to its id. More...
|
|
void | resetWidth (double inwidth, int ipart) |
| Resets the width for a particle that is an electroweak parameter according to its id. More...
|
|
void | resetQuarkMasses () |
| Resets the masses of each quark to their original values. More...
|
|
void | resetMCFM_EWKParameters (double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3) |
| Resets the electroweak parameters back to their defaults. More...
|
|
double | getPrimaryMass (int ipart) |
| A function to get the current primary EW/QCD parameters from MELA. More...
|
|
double | getPrimaryWidth (int ipart) |
| A function to get the current primary EW/QCD parameters from MELA. More...
|
|
double | getHiggsWidthAtPoleMass (double mass) |
| Returns the width of the Higgs at a given pole mass as a calculation. More...
|
|
MelaIO * | getIORecord () |
| Returns the MELAIO object, and by consequence, the entire parton-by-parton matrix element record. More...
|
|
MELACandidate * | getCurrentCandidate () |
| Gets the current MELA top-level (input) candList object. More...
|
|
int | getCurrentCandidateIndex () |
| Returns the index of the current MELA candidate - returns -1 if there is no candidate to be found. More...
|
|
int | getNCandidates () |
| Returns the size of the candidate list TEvtProb::candList. More...
|
|
std::vector< MELATopCandidate_t * > * | getTopCandidateCollection () |
| Same as getNCandidates but specifically for Top Quark Candidates. More...
|
|
void | getConstant (float &prob) |
| This function returns a multiplicative constant to the matrix element calculation. More...
|
|
void | getPAux (float &prob) |
|
RooSpin::modelMeasurables | getMeasurablesRRV () |
| Returns a RooSpin::modelMeasureables object containing many observable quantities. More...
|
|
void | computeDecayAngles (float &qH, float &m1, float &m2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1) |
| computes the decay angles for gg -> H -> ZZ as defined in Figure 1 of arXiv:1001.3396 More...
|
|
void | computeVBFAngles (float &Q2V1, float &Q2V2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1) |
| computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018 More...
|
|
void | computeVBFAngles_ComplexBoost (float &Q2V1, float &Q2V2, float &costheta1_real, float &costheta1_imag, float &costheta2_real, float &costheta2_imag, float &Phi, float &costhetastar, float &Phi1) |
|
void | computeVHAngles (float &mVstar, float &mV, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1) |
| computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018 More...
|
|
void | computeTTHAngles (int topDecay, float &mT1, float &mW1, float &mT2, float &mW2, float &costheta1, float &costheta2, float &Phi, float &costhetastar, float &Phi1, float &hbb, float &hWW, float &Phibb, float &Phi1bb, float &hWplusf, float &PhiWplusf, float &hWminusf, float &PhiWminusf) |
|
void | computeP_selfDspin0 (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true) |
| This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 0. More...
|
|
void | computeP_selfDspin1 (double selfDZqqcoupl_input[SIZE_ZQQ][2], double selfDZvvcoupl_input[SIZE_ZVV][2], float &prob, bool useConstant=true) |
| This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1. More...
|
|
void | computeP_selfDspin1 (double selfDZvvcoupl_input[SIZE_ZVV][2], float &prob, bool useConstant=true) |
| This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings. More...
|
|
void | computeP_selfDspin2 (double selfDGggcoupl_input[SIZE_GGG][2], double selfDGqqcoupl_input[SIZE_GQQ][2], double selfDGvvcoupl_input[SIZE_GVV][2], float &prob, bool useConstant=true) |
| This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 2. More...
|
|
void | computeP_selfDspin2 (double selfDGggcoupl_input[SIZE_GGG][2], double selfDGvvcoupl_input[SIZE_GVV][2], float &prob, bool useConstant=true) |
| This is a function that calls Mela::computeP with preset quark, gluon, and vector boson couplings for spin 1, but sets default values for Zqq couplings. More...
|
|
void | computeP (float &prob, bool useConstant=true) |
| Computes the probability for the probabilities on the decay side of things using the constituent daughter 4 vectors along with any jets that could exist. More...
|
|
void | computeD_CP (TVar::MatrixElement myME, TVar::Process myType, float &prob) |
| computes the value of D_CP More...
|
|
void | computeProdDecP (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDaTQGCcoupl_input[SIZE_ATQGC][2], double selfDAZffcoupl_input[SIZE_AZff][2], float &prob, bool useConstant=true) |
| computes the combined production and decay probability while taking in coupling arrays More...
|
|
void | computeProdDecP (float &prob, bool useConstant=true) |
| computes the combined production and decay probability, with couplings set beforehand More...
|
|
void | computeProdP (double selfDHggcoupl_input[SIZE_HGG][2], double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], double selfDHwwcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool useConstant=true) |
| computes Production side probabilities while taking in coupling arrays More...
|
|
void | computeProdP (float &prob, bool useConstant=true) |
| computes Production side probabilities using couplings set beforehand More...
|
|
void | computeProdP_VH (double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool includeHiggsDecay=false, bool useConstant=true) |
|
void | computeProdP_VH (float &prob, bool includeHiggsDecay=false, bool useConstant=true) |
|
void | computeProdP_ttH (float &prob, int topProcess=2, int topDecay=0, bool useConstant=true) |
|
void | compute4FermionWeight (float &w) |
|
void | getXPropagator (TVar::ResonancePropagatorScheme scheme, float &prop) |
|
void | computePM4l (TVar::SuperMelaSyst syst, float &prob) |
|
void | computeDijetConvBW (float &prob, bool useTrueBW=false) |
|
void | computeD_gg (TVar::MatrixElement myME, TVar::Process myType, float &prob) |
|
std::vector< TLorentzVector > | calculate4Momentum (double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi) |
|
|
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 () |
|
MelaPConstant * | getPConstantHandle (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) |
|
Definition at line 48 of file Mela.h.
◆ Mela() [1/2]
the MELA constructor
- Parameters
-
[in] | LHCsqrts_ | The luminosity of your collider in TeV. Default is LHC at 13 TeV. |
[in] | mh_ | The mass of the Higgs in GeV. Default is 125 GeV |
[in] | verbosity_ | The verbosity of MELA that you desire, as defined in TVar::ERROR |
Definition at line 94 of file Mela.cc.
◆ Mela() [2/2]
Mela::Mela |
( |
const Mela & |
other | ) |
|
Copy constructor for MELA.
- Parameters
-
[in] | other | another MELA instance |
Definition at line 111 of file Mela.cc.
◆ ~Mela()
MELA destructor.
Definition at line 122 of file Mela.cc.
◆ appendTopCandidate()
◆ build()
void Mela::build |
( |
double |
mh_ | ) |
|
This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor.
- Parameters
-
mh_ | This is the mass of the Higgs in GeV |
Definition at line 175 of file Mela.cc.
180 const double maxSqrts = 8.;
188 const string mcfmWarning = MELAPKGPATH +
"data/ffwarn.dat"; symlink(mcfmWarning.c_str(),
"ffwarn.dat");
189 const string mcfm_brsm_o = MELAPKGPATH +
"data/br.sm1"; symlink(mcfm_brsm_o.c_str(),
"br.sm1");
190 const string mcfm_brsm_t = MELAPKGPATH +
"data/br.sm2"; symlink(mcfm_brsm_t.c_str(),
"br.sm2");
191 const string mcfmInput1 = MELAPKGPATH +
"data/input.DAT"; symlink(mcfmInput1.c_str(),
"input.DAT");
192 const string mcfmInput2 = MELAPKGPATH +
"data/process.DAT"; symlink(mcfmInput2.c_str(),
"process.DAT");
194 mkdir(
"Pdfdata", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
195 const string mcfmInput3 = MELAPKGPATH +
"data/Pdfdata/cteq6l1.tbl"; symlink(mcfmInput3.c_str(),
"Pdfdata/cteq6l1.tbl");
196 const string mcfmInput4 = MELAPKGPATH +
"data/Pdfdata/cteq6l.tbl"; symlink(mcfmInput4.c_str(),
"Pdfdata/cteq6l.tbl");
200 mzz_rrv =
new RooRealVar(
"mzz",
"m_{ZZ}", mh_, 0., 1000.);
201 z1mass_rrv =
new RooRealVar(
"z1mass",
"m_{Z1}", 0., 160.);
202 z2mass_rrv =
new RooRealVar(
"z2mass",
"m_{Z2}", 0., 200.);
203 costhetastar_rrv =
new RooRealVar(
"costhetastar",
"cos#theta^{*}", -1., 1.);
204 costheta1_rrv =
new RooRealVar(
"costheta1",
"cos#theta_{1}", -1., 1.);
205 costheta2_rrv =
new RooRealVar(
"costheta2",
"cos#theta_{2}", -1., 1.);
206 phi_rrv=
new RooRealVar(
"phi",
"#Phi", -TMath::Pi(), TMath::Pi());
207 phi1_rrv=
new RooRealVar(
"phi1",
"#Phi_{1}", -TMath::Pi(), TMath::Pi());
208 Y_rrv =
new RooRealVar(
"Yzz",
"#Y_{ZZ}", 0, -4, 4);
209 upFrac_rrv =
new RooRealVar(
"upFrac",
"fraction up-quarks", .5, 0., 1.);
226 qqZZmodel =
new RooqqZZ_JHU_ZgammaZZ_fast(
"qqZZmodel",
"qqZZmodel", *
z1mass_rrv, *
z2mass_rrv, *
costheta1_rrv, *
costheta2_rrv, *
phi_rrv, *
costhetastar_rrv, *
phi1_rrv, *
mzz_rrv, *
upFrac_rrv);
229 const string path_HiggsWidthFile = MELAPKGPATH +
"data/HiggsTotalWidth_YR3.txt";
231 const string path_nnpdf = MELAPKGPATH +
"data/Pdfdata/NNPDF30_lo_as_0130.LHgrid";
232 char path_nnpdf_c[] =
"Pdfdata/NNPDF30_lo_as_0130.LHgrid";
235 symlink(path_nnpdf.c_str(), path_nnpdf_c);
252 RooMsgService::instance().getStream(1).removeTopic(NumIntegration);
253 RooMsgService::instance().setStreamStatus(1, kFALSE);
254 RooMsgService::instance().setStreamStatus(0, kFALSE);
258 if (superMELA_LHCsqrts > maxSqrts) superMELA_LHCsqrts = maxSqrts;
261 sprintf(cardpath,
"data/CombinationInputs/SM_inputs_%dTeV/inputs_4mu.txt", superMELA_LHCsqrts);
262 string cardfile = MELAPKGPATH + cardpath;
270 if (superDijetSqrts<13.) superDijetSqrts=13.;
◆ calculate4Momentum()
std::vector< TLorentzVector > Mela::calculate4Momentum |
( |
double |
Mx, |
|
|
double |
M1, |
|
|
double |
M2, |
|
|
double |
theta, |
|
|
double |
theta1, |
|
|
double |
theta2, |
|
|
double |
Phi1, |
|
|
double |
Phi |
|
) |
| |
◆ compute4FermionWeight()
void Mela::compute4FermionWeight |
( |
float & |
w | ) |
|
Definition at line 1807 of file Mela.cc.
1812 bool hasFailed=
false;
1813 int id_original[2][2];
1814 for (
int iv=0; iv<2; iv++){
1818 for (
int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->
getDaughter(ivd)->
id;
1845 float dXsec_HZZ_JHU, dXsec_HZZ_JHU_interf;
1850 computeP(dXsec_HZZ_JHU_interf,
false);
1853 w = dXsec_HZZ_JHU_interf / dXsec_HZZ_JHU;
◆ computeD_CP()
computes the value of D_CP
- See also
- calls Mela::computeP_selfDspin0
- Parameters
-
[in] | myME | the matrix element you want to use, set as a TVar::MatrixElement |
[in] | myType | the process you want to use, set as a TVar::Process |
[out] | prob | This is the value of the output probability - edited by reference |
Definition at line 1339 of file Mela.cc.
1351 coupl_mix[0][0][0] =1.;
1352 coupl_mix[0][3][0] =2.521;
1353 coupl_1[0][0][0] =1.;
1354 coupl_2[0][3][0] =2.521;
1357 coupl_mix[0][0][0] =1.;
1358 coupl_mix[0][3][1] =2.521;
1359 coupl_1[0][0][0] =1.;
1360 coupl_2[0][3][1] =2.521;
1363 coupl_mix[0][0][0] =1.;
1364 coupl_mix[0][1][0] = 1.638;
1365 coupl_1[0][0][0] =1.;
1366 coupl_2[0][1][0] = 1.638;
1369 coupl_mix[0][0][0] =1.;
1370 coupl_mix[0][1][1] = 1.638;
1371 coupl_1[0][0][0] =1.;
1372 coupl_2[0][1][1] = 1.638;
1375 coupl_mix[0][0][0] =1.;
1376 coupl_mix[0][11][0] = 12046.01;
1377 coupl_1[0][0][0] =1.;
1378 coupl_2[0][11][0] = 12046.01;
1381 coupl_mix[0][0][0] =1.;
1382 coupl_mix[0][4][0] = 0.0688;
1383 coupl_1[0][0][0] =1.;
1384 coupl_2[0][4][0] = 0.0688;
1387 coupl_mix[0][0][0] =1.;
1388 coupl_mix[0][7][0] = -0.0898;
1389 coupl_1[0][0][0] =1.;
1390 coupl_2[0][7][0] = -0.0898;
1393 coupl_mix[0][0][0] =1.;
1394 coupl_mix[0][6][0] = 0.0855;
1395 coupl_1[0][0][0] =1.;
1396 coupl_2[0][6][0] = 0.0855;
1399 coupl_mix[0][0][0] =1.;
1400 coupl_mix[0][9][0] = -0.0907;
1401 coupl_1[0][0][0] =1.;
1402 coupl_2[0][9][0] = -0.0907;
1405 coupl_mix[0][0][0] =1.;
1406 coupl_mix[0][30][0] = -7591.914;
1407 coupl_1[0][0][0] =1.;
1408 coupl_2[0][30][0] = -7591.914;
1411 coupl_mix[0][0][0] =1.;
1412 coupl_mix[0][30][1] = -7591.914;
1413 coupl_1[0][0][0] =1.;
1414 coupl_2[0][30][1] = -7591.914;
1417 MELAout <<
"Error: Not supported!"<<endl;
1425 prob = pMix- p1- p2;
◆ computeD_gg()
Definition at line 1934 of file Mela.cc.
1941 MELAout <<
"Only support MCFM and D_gg10"<<endl;
1947 float bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, bkgHZZ_prob_noscale;
1953 bkgHZZ_prob_noscale /= ggScale;
1954 ggHZZ_prob_pure_noscale /= ggScale;
1955 ggzz_VAMCFM_noscale /= ggScale;
1957 ggHZZ_prob_int_noscale = bkgHZZ_prob_noscale - ggHZZ_prob_pure_noscale - ggzz_VAMCFM_noscale;
1961 constructDggr(bkg_VAMCFM, ggzz_VAMCFM_noscale, ggHZZ_prob_pure_noscale, ggHZZ_prob_int_noscale, 10., prob);
◆ 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] | qH | The mass of the "Higgs" as reconstructed by the constituent 4 leptons |
[out] | m1 | The mass of the first decay particle as reconstructed by 2 of the leptons |
[out] | m2 | The mass of the first decay particle as reconstructed by 2 of the leptons |
[out] | costheta1 | $\cos(\theta_1)$ |
[out] | costheta2 | $\cos(\theta_2)$ |
[out] | Phi | $\phi$ |
[out] | costhetastar | $\cos(\theta*)$ |
[out] | Phi1 | $\phi_1$ |
Definition at line 558 of file Mela.cc.
571 qH=0; m1=0; m2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
575 TLorentzVector
const nullVector(0, 0, 0, 0);
578 simple_event_record mela_event;
579 mela_event.AssociationCode=partIncCode;
583 if (
daughters.size()<2 ||
daughters.size()>4 || mela_event.intermediateVid.size()!=2){
584 if (
myVerbosity_>=
TVar::ERROR)
MELAerr <<
"Mela::computeDecayAngles: Number of daughters " <<
daughters.size() <<
" or number of intermediate Vs " << mela_event.intermediateVid <<
" not supported!" << endl;
599 costhetastar, costheta1, costheta2, Phi, Phi1,
607 if (!std::isfinite(costhetastar)) costhetastar=0;
608 if (!std::isfinite(costheta1)) costheta1=0;
609 if (!std::isfinite(costheta2)) costheta2=0;
610 if (!std::isfinite(Phi)) Phi=0;
611 if (!std::isfinite(Phi1)) Phi1=0;
◆ computeDijetConvBW()
void Mela::computeDijetConvBW |
( |
float & |
prob, |
|
|
bool |
useTrueBW = false |
|
) |
| |
◆ computeP()
void Mela::computeP |
( |
float & |
prob, |
|
|
bool |
useConstant = true |
|
) |
| |
Computes the probability for the probabilities on the decay side of things using the constituent daughter 4 vectors along with any jets that could exist.
- See also
- Mela::computeDecayAngles
- Attention
- All matrix elements (JHUGen, MCFM, or analytic), productions, and processes can be used here
- Parameters
-
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1183 of file Mela.cc.
1192 TLorentzVector
const nullVector(0, 0, 0, 0);
1193 float mZZ=0, mZ1=0, mZ2=0, costheta1=0, costheta2=0, Phi=0, costhetastar=0, Phi1=0;
1198 costheta1, costheta2, Phi,
1209 Y_rrv->setConstant(
true);
1212 if (computeAnaMELA){
1215 prob = integral->getVal();
1218 else prob =
pdf->getVal();
1222 Y_rrv->setConstant(
false);
1235 costheta1, costheta2, Phi,
1240 MELAout <<
"Mela::computeP: Condition (myME_ == TVar::MCFM && myProduction_ == TVar::ZZINDEPENDENT && myModel_ == TVar::bkgZZ/WW/ZGamma/ZJJ/GammaGamma)." << endl;
1241 vector<TLorentzVector> pDauVec =
calculate4Momentum(mZZ, mZ1, mZ1, acos(costhetastar), acos(costheta1), acos(costheta2), Phi1, Phi);
1243 <<
"\tOriginal mZZ=" << mZZ <<
" "
1244 <<
"m1=" << mZ1 <<
" "
1245 <<
"m2=" << mZ2 <<
" "
1246 <<
"h1=" << costheta1 <<
" "
1247 <<
"h2=" << costheta2 <<
" "
1248 <<
"Phi=" << Phi <<
" "
1249 <<
"hs=" << costhetastar <<
" "
1250 <<
"Phi1=" << Phi1 << endl;
1251 MELAout <<
"\tfor daughters:" << endl;
1252 for (
int iv=0; iv<2; iv++){
1256 <<
"x=" << pDauVec.at(2*iv+idau).X() <<
" "
1257 <<
"y=" << pDauVec.at(2*iv+idau).Y() <<
" "
1258 <<
"z=" << pDauVec.at(2*iv+idau).Z() <<
" "
1259 <<
"t=" << pDauVec.at(2*iv+idau).T() << endl;
1266 int gridsize_hs = 5;
1269 double hs_step = (hs_max - hs_min) /
double(gridsize_hs);
1271 int gridsize_phi1 = 5;
1272 double phi1_min = 0;
1273 double phi1_max = TMath::Pi();
1274 double phi1_step = (phi1_max - phi1_min) /
double(gridsize_phi1);
1276 for (
int i_hs = 0; i_hs < gridsize_hs + 1; i_hs++){
1277 double hs_val = hs_min + i_hs * hs_step;
1278 for (
int i_phi1 = 0; i_phi1 < gridsize_phi1 + 1; i_phi1++){
1279 double phi1_val = phi1_min + i_phi1 * phi1_step;
1284 vector<TLorentzVector> pDauVec =
calculate4Momentum(mZZ, mZ1, mZ2, acos(hs_val), acos(costheta1), acos(costheta2), phi1_val, Phi);
1285 for (
int iv=0; iv<2; iv++){
1292 MELAout <<
"Mela::computeP: hs, Phi1 are now " << hs_val <<
" " << phi1_val << endl;
1293 unsigned int idau=1;
1295 MELAout <<
"Dau " << idau <<
" "
1296 <<
"id=" << tmpPart.first <<
" "
1297 <<
"x=" << tmpPart.second.X() <<
" "
1298 <<
"y=" << tmpPart.second.Y() <<
" "
1299 <<
"z=" << tmpPart.second.Z() <<
" "
1300 <<
"t=" << tmpPart.second.T() << endl;
1304 vector<MELAParticle*> partList_tmp;
1305 vector<MELACandidate*> candList_tmp;
1321 for (
MELAParticle* tmpPart:partList_tmp)
delete tmpPart;
1326 prob = prob / float((gridsize_hs + 1) * (gridsize_phi1 +1));
◆ 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_input | an array corresponding to the couplings of Mela::selfDHzzcoupl (between the Higgs and the Z Boson), Mela::selfDHwwcoupl using the indices in TCouplingsBase.hh |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1077 of file Mela.cc.
1099 for (
int im=0; im<2; im++){
1101 selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1102 selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
◆ 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_input | an array corresponding to the couplings of Mela::selfDZqqcoupl (between the Higgs and quarks) using the indices in TCouplingsBase.hh |
[in] | selfDZvvcoupl_input | an array corresponding to the couplings of Mela::selfDZvvcoupl (between the Higgs and the Z/W Bosons) using the indices in TCouplingsBase.hh |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1112 of file Mela.cc.
1118 for (
int im=0; im<2; im++){
◆ 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_input | an array corresponding to the couplings of Mela::selfDZvvcoupl (between the Higgs and the Z/W Bosons) using the indices in TCouplingsBase.hh |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1128 of file Mela.cc.
1137 for (
int im=0; im<2; im++){
◆ 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_input | an array corresponding to the couplings of Mela::selfDGggcoupl (between the "graviton" and gluons) using the indices in TCouplingsBase.hh |
[in] | selfDGqqcoupl_input | an array corresponding to the couplings of Mela::selfDGqqcoupl (between the "graviton" and quarks) using the indices in TCouplingsBase.hh |
[in] | selfDGvvcoupl_input | an array corresponding to the couplings of Mela::selfDGvvcoupl (between the "graviton" and the W/Z bosons) using the indices in TCouplingsBase.hh |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1146 of file Mela.cc.
1153 for (
int im=0; im<2; im++){
◆ 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_input | an array corresponding to the couplings of Mela::selfDGggcoupl (between the "graviton" and gluons) using the indices in TCouplingsBase.hh |
[in] | selfDGvvcoupl_input | an array corresponding to the couplings of Mela::selfDGvvcoupl (between the "graviton" and the W/Z bosons) using the indices in TCouplingsBase.hh |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1164 of file Mela.cc.
1173 for (
int im=0; im<2; im++){
◆ computePM4l()
Definition at line 1864 of file Mela.cc.
1870 bool hasFailed=
false;
1871 int id_original[2][2];
1872 for (
int iv=0; iv<2; iv++){
1876 for (
int ivd=0; ivd<2; ivd++) id_original[iv][ivd]=Vi->
getDaughter(ivd)->
id;
1880 if (abs(id_original[0][0])==11 && abs(id_original[1][0])==11 && abs(id_original[0][1])==11 && abs(id_original[1][1])==11)
super->
SetDecayChannel(
"4e");
1881 else if (abs(id_original[0][0])==13 && abs(id_original[1][0])==13 && abs(id_original[0][1])==13 && abs(id_original[1][1])==13)
super->
SetDecayChannel(
"4mu");
1883 (abs(id_original[0][0])==11 && abs(id_original[0][1])==11 && abs(id_original[1][0])==13 && abs(id_original[1][1])==13)
1885 (abs(id_original[0][0])==13 && abs(id_original[0][1])==13 && abs(id_original[1][0])==11 && abs(id_original[1][1])==11)
1887 else{
if (
myVerbosity_>=
TVar::ERROR)
MELAerr <<
"Mela::computePM4l: SuperMELA is currently not implemented for decay states other than 4e. 4mu, 2e2mu." << endl; hasFailed=
true; }
1908 std::pair<double, double> m4lP =
super->
M4lProb(mZZtmp);
◆ 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_input | input for the couplings set in Mela::selfDHvvcoupl |
[in] | selfDHwwcoupl_input | input for the couplings set in Mela::selfDHwwcoupl |
[in] | selfDaTQGCcoupl_input | input for the couplings set in Mela::selfDaTQGCcoupl |
[in] | selfDAZffcoupl_input | input for the couplings set in Mela::selfDAZffcoupl |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1430 of file Mela.cc.
1439 for (
int im=0; im<2; im++){
1441 selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1442 selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im];
1446 for (
int im=0; im<2; im++){
1449 for (
int im=0; im<2; im++){
◆ computeProdDecP() [2/2]
void Mela::computeProdDecP |
( |
float & |
prob, |
|
|
bool |
useConstant = true |
|
) |
| |
◆ 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_input | input for the couplings set in Mela::setlfDHggcoupl |
[in] | selfDHvvcoupl_input | input for the couplings set in Mela::selfDHvvcoupl |
[in] | selfDHwwcoupl_input | input for the couplings set in Mela::selfDHwwcoupl |
[out] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1501 of file Mela.cc.
1508 for (
int im=0; im<2; im++){
for (
int ic=0; ic<
SIZE_HGG; ic++)
selfDHggcoupl[0][ic][im] = selfDHggcoupl_input[ic][im]; }
1510 for (
int im=0; im<2; im++){
1512 selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1513 selfDHwwcoupl[jh][ic][im] = selfDHwwcoupl_input[jh][ic][im];
◆ 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] | prob | This is the value of the output probability - edited by reference |
[in] | useConstant | This turns on the calculation of a corrective constant to different probabilities through Mela::getConstant. If you would like the "pure" MELA calculation to be run, set useConstant to false. By default true. |
Definition at line 1522 of file Mela.cc.
1534 TLorentzVector nullFourVector(0, 0, 0, 0);
1535 bool isJet2Fake =
false;
1538 unsigned int firstJetIndex=0;
1539 TLorentzVector jet1, higgs;
1540 TLorentzVector jet1massless(0, 0, 0, 0);
1541 TLorentzVector jet2massless(0, 0, 0, 0);
1548 if (tmpPart->passSelection){
1564 const double threshold = 1000.*
LHCsqrts/2.;
1565 TLorentzVector pTotal = higgs+jet1massless+jet2massless;
1566 double sysZ = pTotal.Z();
1567 if (fabs(sysZ)>threshold){
1568 double maxpz2 = threshold - higgs.Z() - jet1massless.Z();
1569 if (fabs(maxpz2)>0.){
1570 double ratio = jet2massless.Z()/maxpz2;
1571 double absp=sqrt(pow(jet2massless.Pt(), 2)+pow(jet2massless.Z()*
ratio, 2));
1572 if (
myVerbosity_>=
TVar::INFO)
MELAout <<
"Mela::computeProdP, isJet2Fake=true case: Rescaling pz of fake jet by " <<
ratio <<
" and energy = " << absp <<
"." << endl;
1573 jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), jet2massless.Z()*
ratio, absp);
1576 if (
myVerbosity_>=
TVar::INFO)
MELAout <<
"Mela::computeProdP, isJet2Fake=true case: Unable to rescaling pz of fake jet since max(|pz|)<0. Setting to 0 with appropriate energy = pT = " << jet2massless.Pt() <<
"." << endl;
1577 jet2massless.SetXYZT(jet2massless.X(), jet2massless.Y(), 0., jet2massless.Pt());
1586 firstJet->
p4.SetXYZT(jet1massless.X(), jet1massless.Y(), jet1massless.Z(), jet1massless.T());
1595 std::vector<double> etaArray;
1596 std::vector<double> pArray;
1597 double eta_max = 10;
1598 if (jet2massless.Pt()>0.) eta_max = max(eta_max, 1.2*fabs(jet2massless.Eta()));
1599 double eta_min = -eta_max;
1601 for (
int iter=0; iter<nGrid; iter++){
1604 double jet2temp_eta = ((double)iter)*(eta_max-eta_min) / (((
double)nGrid) - 1.) + eta_min;
1605 etaArray.push_back(jet2temp_eta);
1606 double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1607 double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1608 fakeJet.p4.SetZ(jet2temp_pz);
1609 fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1612 const double threshold = 1000.*
LHCsqrts/2.;
1613 TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1614 double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1615 if (fabs(sys)<threshold){
1619 pArray.push_back((
double)prob_temp);
1622 const double grid_precision = 0.15;
1624 for (
int iG=0; iG<nGrid-1; iG++){
1625 if (pArray[iG]==pArray[iG+1])
continue;
1626 if (etaArray[iG]==etaArray[iG+1])
continue;
1630 TGraph interpolator(nGrid, etaArray.data(), pArray.data());
1631 double derivative_first = (pArray[1]-pArray[0])/(etaArray[1]-etaArray[0]);
1632 double derivative_last = (pArray[nGrid-1]-pArray[nGrid-2])/(etaArray[nGrid-1]-etaArray[nGrid-2]);
1633 TSpline3 spline(
"spline", &interpolator,
"b1e1", derivative_first, derivative_last);
1634 double x_middle = (etaArray[iG]+etaArray[iG+1])*0.5;
1635 double y_middle = (pArray[iG]+pArray[iG+1])*0.5;
1636 double y_sp = spline.Eval(x_middle);
1637 if (y_sp<0) y_sp = 0;
1639 std::vector<double>::iterator gridIt;
1641 if (fabs(y_sp-y_middle)<grid_precision*fabs(y_middle) || fabs(etaArray[iG+1]-etaArray[iG])<1e-3){
1642 gridIt = pArray.begin()+iG+1;
1643 pArray.insert(gridIt, y_sp);
1644 gridIt = etaArray.begin()+iG+1;
1645 etaArray.insert(gridIt, x_middle);
1651 double jet2temp_eta = x_middle;
1652 gridIt = etaArray.begin()+iG+1;
1653 etaArray.insert(gridIt, x_middle);
1654 double jet2temp_sinh_eta = TMath::SinH(jet2temp_eta);
1655 double jet2temp_pz = jet2massless.Pt()*jet2temp_sinh_eta;
1656 fakeJet.p4.SetZ(jet2temp_pz);
1657 fakeJet.p4.SetX(jet2massless.X()); fakeJet.p4.SetY(jet2massless.Y()); fakeJet.p4.SetT(fakeJet.p4.P());
1660 const double threshold = 1000.*
LHCsqrts/2.;
1661 TLorentzVector pTotal = higgs+jet1massless+fakeJet.p4;
1662 double sys = (pTotal.T()+fabs(pTotal.Z()))/2.;
1663 if (fabs(sys)<threshold){
1667 gridIt = pArray.begin()+iG+1;
1668 pArray.insert(gridIt, (
double)prob_temp);
1677 int iGFirst=0, iGLast=nGrid-1;
1678 for (
int iG=1; iG<nGrid; iG++){
1679 if (pArray[iG]>0 && pArray[iG-1]==0){
1684 for (
int iG=nGrid-2; iG>=0; iG--){
1685 if (pArray[iG]>0 && pArray[iG+1]==0){
1690 double dEtaGrid = etaArray[iGLast] - etaArray[iGFirst];
1691 for (
int iG=iGFirst; iG<iGLast-1; iG++){
1692 double dEta = etaArray[iG+1] - etaArray[iG];
1693 double sumProb = pArray[iG]+pArray[iG+1];
1695 dEta = dEta/dEtaGrid;
1696 double addProb = sumProb*dEta;
1700 firstJet->
p4.SetXYZT(jet1.X(), jet1.Y(), jet1.Z(), jet1.T());
1705 if (
melaCand!=candOriginal)
MELAerr <<
"Mela::computeProdP: melaCand!=candOriginal at the end of the fake jet scenario!" << endl;
◆ computeProdP_ttH()
void Mela::computeProdP_ttH |
( |
float & |
prob, |
|
|
int |
topProcess = 2 , |
|
|
int |
topDecay = 0 , |
|
|
bool |
useConstant = true |
|
) |
| |
◆ computeProdP_VH() [1/2]
void Mela::computeProdP_VH |
( |
double |
selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], |
|
|
float & |
prob, |
|
|
bool |
includeHiggsDecay = false , |
|
|
bool |
useConstant = true |
|
) |
| |
Definition at line 1730 of file Mela.cc.
1739 for (
int im=0; im<2; im++){
1742 selfDHzzcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
1743 selfDHwwcoupl[jh][ic][im] = selfDHvvcoupl_input[jh][ic][im];
◆ computeProdP_VH() [2/2]
void Mela::computeProdP_VH |
( |
float & |
prob, |
|
|
bool |
includeHiggsDecay = false , |
|
|
bool |
useConstant = true |
|
) |
| |
◆ computeTTHAngles()
void Mela::computeTTHAngles |
( |
int |
topDecay, |
|
|
float & |
mT1, |
|
|
float & |
mW1, |
|
|
float & |
mT2, |
|
|
float & |
mW2, |
|
|
float & |
costheta1, |
|
|
float & |
costheta2, |
|
|
float & |
Phi, |
|
|
float & |
costhetastar, |
|
|
float & |
Phi1, |
|
|
float & |
hbb, |
|
|
float & |
hWW, |
|
|
float & |
Phibb, |
|
|
float & |
Phi1bb, |
|
|
float & |
hWplusf, |
|
|
float & |
PhiWplusf, |
|
|
float & |
hWminusf, |
|
|
float & |
PhiWminusf |
|
) |
| |
Definition at line 895 of file Mela.cc.
928 =costheta1=costheta2=Phi=costhetastar=Phi1
929 =hbb=hWW=Phibb=Phi1bb
931 =hWminusf=PhiWminusf=0;
935 TLorentzVector
const nullVector(0, 0, 0, 0);
938 int nRequested_Tops=1;
939 int nRequested_Antitops=1;
943 simple_event_record mela_event;
944 mela_event.AssociationCode=partIncCode;
945 mela_event.nRequested_Tops=nRequested_Tops;
946 mela_event.nRequested_Antitops=nRequested_Antitops;
957 for (
unsigned int itd=0; itd<mela_event.pTopDaughters.at(0).size(); itd++) topDaughters.push_back(mela_event.pTopDaughters.at(0).at(itd));
958 for (
unsigned int itd=0; itd<mela_event.pAntitopDaughters.at(0).size(); itd++) antitopDaughters.push_back(mela_event.pAntitopDaughters.at(0).at(itd));
961 for (
unsigned int itop=0; itop<mela_event.pStableTops.size(); itop++) topDaughters.push_back(mela_event.pStableTops.at(itop));
962 for (
unsigned int itop=0; itop<mela_event.pStableAntitops.size(); itop++) antitopDaughters.push_back(mela_event.pStableAntitops.at(itop));
965 if (topDecay==0 && (mela_event.pStableTops.size()<1 || mela_event.pStableAntitops.size()<1)){
967 <<
"TUtil::TTHiggsMatEl: Number of stable tops (" << mela_event.pStableTops.size() <<
")"
968 <<
" and number of stable antitops (" << mela_event.pStableAntitops.size() <<
")"
969 <<
" in ttH process are not 1!" << endl;
972 else if (topDecay>0 && (mela_event.pTopDaughters.size()<1 || mela_event.pAntitopDaughters.size()<1)){
974 <<
"Mela::computeTTHAngles: Number of set of top daughters (" << mela_event.pTopDaughters.size() <<
")"
975 <<
" and number of set of antitop daughters (" << mela_event.pAntitopDaughters.size() <<
")"
976 <<
" in ttH process are not 1!" << endl;
979 else if (topDecay>0 && (mela_event.pTopDaughters.at(0).size()!=3 || mela_event.pAntitopDaughters.at(0).size()!=3)){
981 <<
"Mela::computeTTHAngles: Number of top daughters (" << mela_event.pTopDaughters.at(0).size() <<
")"
982 <<
" and number of antitop daughters (" << mela_event.pAntitopDaughters.at(0).size() <<
")"
983 <<
" in ttH process are not 3!" << endl;
986 if (topDaughters.size()<3){
for (
size_t ip=topDaughters.size(); ip<3; ip++) topDaughters.emplace_back(-9000, nullVector); }
987 if (antitopDaughters.size()<3){
for (
size_t ip=antitopDaughters.size(); ip<3; ip++) antitopDaughters.emplace_back(-9000, nullVector); }
993 for (
auto it=
daughters.cbegin()+1; it!=
daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
1006 for (
size_t ip=0; ip<topDaughters.size(); ip++){
1007 if (ip>0){ pT += topDaughters.at(ip).second; pW += topDaughters.at(ip).second; }
1008 else pT += topDaughters.at(ip).second;
1016 for (
size_t ip=0; ip<antitopDaughters.size(); ip++){
1017 if (ip>0){ pT += antitopDaughters.at(ip).second; pW += antitopDaughters.at(ip).second; }
1018 else pT += antitopDaughters.at(ip).second;
1025 costhetastar, costheta1, costheta2, Phi, Phi1,
1026 hbb, hWW, Phibb, Phi1bb,
1028 hWminusf, PhiWminusf,
1035 topDaughters.at(0).second, topDaughters.at(0).first,
1036 topDaughters.at(1).second, topDaughters.at(1).first,
1037 topDaughters.at(2).second, topDaughters.at(2).first,
1039 antitopDaughters.at(0).second, antitopDaughters.at(0).first,
1040 antitopDaughters.at(1).second, antitopDaughters.at(1).first,
1041 antitopDaughters.at(2).second, antitopDaughters.at(2).first,
1048 if (!std::isfinite(costhetastar)) costhetastar=0;
1049 if (!std::isfinite(costheta1)) costheta1=0;
1050 if (!std::isfinite(costheta2)) costheta2=0;
1051 if (!std::isfinite(Phi)) Phi=0;
1052 if (!std::isfinite(Phi1)) Phi1=0;
1054 if (!std::isfinite(hbb)) hbb=0;
1055 if (!std::isfinite(hWW)) hWW=0;
1056 if (!std::isfinite(Phibb)) Phibb=0;
1057 if (!std::isfinite(Phi1bb)) Phi1bb=0;
1059 if (!std::isfinite(hWplusf)) hWplusf=0;
1060 if (!std::isfinite(PhiWplusf)) PhiWplusf=0;
1062 if (!std::isfinite(hWminusf)) hWminusf=0;
1063 if (!std::isfinite(PhiWminusf)) PhiWminusf=0;
1066 <<
"Mela::computeTTHAngles: (h1, h2, Phi, hs, Phi1) = "
1067 << costheta1 <<
", " << costheta2 <<
", " << Phi <<
", "
1068 << costhetastar <<
", " << Phi1 << endl;
◆ computeVBFAngles()
void Mela::computeVBFAngles |
( |
float & |
Q2V1, |
|
|
float & |
Q2V2, |
|
|
float & |
costheta1, |
|
|
float & |
costheta2, |
|
|
float & |
Phi, |
|
|
float & |
costhetastar, |
|
|
float & |
Phi1 |
|
) |
| |
computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018
- See also
- Calls TUtil::computeVBFAngles to fully calculate angles
-
Use TUtil::computeVBFAngles if you would like to calculate the angles through inputting your own 4-vectors and quantities rather than through the MELA event loop
- Attention
- This function requires there to be an input event already defined
- Warning
- This function will edit all values inplace. Every value is technically an output.
-
The selection for m1 and m2 are based upon which of the leptons is closer to the z mass. $m_1 \leq m_2$.
- Parameters
-
[out] | Q2V1 | The mass of the first decay particle as reconstructed by 2 of the leptons |
[out] | m2V2 | The mass of the first decay particle as reconstructed by 2 of the leptons |
[out] | costheta1 | $\cos(\theta_1)$ |
[out] | costheta2 | $\cos(\theta_2)$ |
[out] | Phi | $\phi$ |
[out] | costhetastar | $\cos(\theta*)$ |
[out] | Phi1 | $\phi_1$ |
Definition at line 620 of file Mela.cc.
632 Q2V1=0; Q2V2=0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
636 TLorentzVector
const nullVector(0, 0, 0, 0);
638 int nRequested_AssociatedJets=2;
640 simple_event_record mela_event;
641 mela_event.AssociationCode=partIncCode;
642 mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
648 if ((
int)aparts.size()!=nRequested_AssociatedJets){
if (
myVerbosity_>=
TVar::ERROR)
MELAerr <<
"Mela::computeVBFAngles: Number of associated particles is not 2!" << endl;
return; }
654 for (
auto it=
daughters.cbegin()+1; it!=
daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
664 MELAout <<
"Mela::computeVBFAngles: Giving the following particles to TUtil::computeVBFAngles:" << endl;
665 for (
unsigned int i=0; i<std::min(
daughters.size(), (SimpleParticleCollection_t::size_type) 4); i++)
MELAout <<
daughters.at(i) << endl;
666 for (
unsigned int i=0; i<std::min(aparts.size(), (SimpleParticleCollection_t::size_type) 2); i++)
MELAout << aparts.at(i) << endl;
667 for (
unsigned int i=0; i<std::min(
mothers.size(), (SimpleParticleCollection_t::size_type) 2); i++)
MELAout <<
mothers.at(i) << endl;
671 costhetastar, costheta1, costheta2, Phi, Phi1, Q2V1, Q2V2,
676 aparts.at(0).second, aparts.at(0).first,
677 aparts.at(1).second, aparts.at(1).first,
683 if (!std::isfinite(costhetastar)) costhetastar=0;
684 if (!std::isfinite(costheta1)) costheta1=0;
685 if (!std::isfinite(costheta2)) costheta2=0;
686 if (!std::isfinite(Phi)) Phi=0;
687 if (!std::isfinite(Phi1)) Phi1=0;
688 if (!std::isfinite(Q2V1)) Q2V1=0;
689 if (!std::isfinite(Q2V2)) Q2V2=0;
692 <<
"Mela::computeVBFAngles: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
693 << Q2V1 <<
", " << Q2V2 <<
", "
694 << costheta1 <<
", " << costheta2 <<
", " << Phi <<
", "
695 << costhetastar <<
", " << Phi1 << endl;
◆ computeVBFAngles_ComplexBoost()
void Mela::computeVBFAngles_ComplexBoost |
( |
float & |
Q2V1, |
|
|
float & |
Q2V2, |
|
|
float & |
costheta1_real, |
|
|
float & |
costheta1_imag, |
|
|
float & |
costheta2_real, |
|
|
float & |
costheta2_imag, |
|
|
float & |
Phi, |
|
|
float & |
costhetastar, |
|
|
float & |
Phi1 |
|
) |
| |
Definition at line 702 of file Mela.cc.
714 Q2V1=0; Q2V2=0; costheta1_real=0; costheta2_real=0; costheta1_imag=0; costheta2_imag=0; Phi=0; costhetastar=0; Phi1=0;
718 TLorentzVector
const nullVector(0, 0, 0, 0);
720 int nRequested_AssociatedJets=2;
722 simple_event_record mela_event;
723 mela_event.AssociationCode=partIncCode;
724 mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
730 if ((
int) aparts.size()!=nRequested_AssociatedJets){
if (
myVerbosity_>=
TVar::ERROR)
MELAerr <<
"Mela::computeVBFAngles_ComplexBoost: Number of associated particles is not 2!" << endl;
return; }
736 for (
auto it=
daughters.cbegin()+1; it!=
daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
746 costhetastar, costheta1_real, costheta1_imag, costheta2_real, costheta2_imag, Phi, Phi1, Q2V1, Q2V2,
751 aparts.at(0).second, aparts.at(0).first,
752 aparts.at(1).second, aparts.at(1).first,
758 if (!std::isfinite(costhetastar)) costhetastar=0;
759 if (!std::isfinite(costheta1_real)) costheta1_real=0;
760 if (!std::isfinite(costheta2_real)) costheta2_real=0;
761 if (!std::isfinite(costheta1_imag)) costheta1_imag=0;
762 if (!std::isfinite(costheta2_imag)) costheta2_imag=0;
763 if (!std::isfinite(Phi)) Phi=0;
764 if (!std::isfinite(Phi1)) Phi1=0;
765 if (!std::isfinite(Q2V1)) Q2V1=0;
766 if (!std::isfinite(Q2V2)) Q2V2=0;
769 <<
", " << costheta1_real <<
" + " << costheta1_imag <<
"i, "
770 << costheta2_real <<
" + " << costheta2_imag <<
"i, " << Phi <<
", "
771 << costhetastar <<
", " << Phi1 << endl;
773 <<
"Mela::computeVBFAngles_ComplexBoost: (Q2_1, Q2_2, h1, h2, Phi, hs, Phi1) = "
774 << Q2V1 <<
", " << Q2V2 <<
", "
775 << costheta1_real <<
" + " << costheta1_imag <<
"i, "
776 << costheta2_real <<
" + " << costheta2_imag <<
"i, "
777 << Phi <<
", " << costhetastar <<
", " << Phi1 << endl;
779 else if (
myVerbosity_>=
TVar::DEBUG)
MELAerr <<
"Mela::computeVBFAngles_ComplexBoost: No possible melaCand in TEvtProb to compute angles." << endl;
◆ computeVHAngles()
void Mela::computeVHAngles |
( |
float & |
mVstar, |
|
|
float & |
mV, |
|
|
float & |
costheta1, |
|
|
float & |
costheta2, |
|
|
float & |
Phi, |
|
|
float & |
costhetastar, |
|
|
float & |
Phi1 |
|
) |
| |
computes the decay angles for Vector Boson Fusion (VBF) -> H -> ZZ as defined in Figure 1 of arXiv:1208.4018
- See also
- Calls TUtil::computeVHAngles to fully calculate angles
-
Use TUtil::computeVHAngles if you would like to calculate the angles through inputting your own 4-vectors and quantities rather than through the MELA event loop
- Attention
- This function requires there to be an input event already defined
- Warning
- This function will edit all values inplace. Every value is technically an output.
-
The selection for m1 and m2 are based upon which of the leptons is closer to the z mass. $m_1 \leq m_2$.
- Parameters
-
[out] | mVstar | The mass of the virtual Z boson in ZH production |
[out] | mV | The mass of the Z in decay |
[out] | costheta1 | $\cos(\theta_1)$ |
[out] | costheta2 | $\cos(\theta_2)$ |
[out] | Phi | $\phi$ |
[out] | costhetastar | $\cos(\theta*)$ |
[out] | Phi1 | $\phi_1$ |
Definition at line 786 of file Mela.cc.
798 mVstar = 0; mV = 0; costheta1=0; costheta2=0; Phi=0; costhetastar=0; Phi1=0;
802 TLorentzVector
const nullVector(0, 0, 0, 0);
809 int nRequested_AssociatedJets=0;
810 int nRequested_AssociatedLeptons=0;
811 int nRequested_AssociatedPhotons=0;
812 int AssociationVCompatibility=0;
816 nRequested_AssociatedJets=2;
820 nRequested_AssociatedLeptons=2;
824 nRequested_AssociatedPhotons=1;
829 simple_event_record mela_event;
830 mela_event.AssociationCode=partIncCode;
831 mela_event.AssociationVCompatibility=AssociationVCompatibility;
832 mela_event.nRequested_AssociatedJets=nRequested_AssociatedJets;
833 mela_event.nRequested_AssociatedLeptons=nRequested_AssociatedLeptons;
834 mela_event.nRequested_AssociatedPhotons=nRequested_AssociatedPhotons;
842 MELAerr <<
"Mela::computeVHAngles: Number of associated particles (" << aparts.size() <<
") is less than ";
844 else MELAerr << nRequested_AssociatedPhotons;
854 for (
auto it=
daughters.cbegin()+1; it!=
daughters.cend(); it++){ firstPart.second = firstPart.second + it->second; }
864 costhetastar, costheta1, costheta2, Phi, Phi1, mVstar, mV,
869 aparts.at(0).second, aparts.at(0).first,
870 aparts.at(1).second, aparts.at(1).first,
876 if (!std::isfinite(costhetastar)) costhetastar=0;
877 if (!std::isfinite(costheta1)) costheta1=0;
878 if (!std::isfinite(costheta2)) costheta2=0;
879 if (!std::isfinite(Phi)) Phi=0;
880 if (!std::isfinite(Phi1)) Phi1=0;
881 if (!std::isfinite(mVstar)) mVstar=0;
882 if (!std::isfinite(mV)) mV=0;
885 <<
"Mela::computeVHAngles: (mVstar, mV, h1, h2, Phi, hs, Phi1) = "
886 << mVstar <<
", " << mV <<
", " << costheta1 <<
", " << costheta2 <<
", " << Phi <<
", "
887 << costhetastar <<
", " << Phi1 << endl;
◆ 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] | prob | This is the number that will be multiplied inplace by the constant. |
Definition at line 2168 of file Mela.cc.
◆ getCurrentCandidate()
◆ getCurrentCandidateIndex()
int Mela::getCurrentCandidateIndex |
( |
| ) |
|
◆ getHiggsWidthAtPoleMass()
double Mela::getHiggsWidthAtPoleMass |
( |
double |
mass | ) |
|
◆ getIORecord()
MelaIO * Mela::getIORecord |
( |
| ) |
|
◆ 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
Definition at line 528 of file Mela.cc.
◆ getNCandidates()
int Mela::getNCandidates |
( |
| ) |
|
◆ getPAux()
void Mela::getPAux |
( |
float & |
prob | ) |
|
◆ 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] | ipart | the particle you would like to get the mass of. |
Definition at line 515 of file Mela.cc.
◆ 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] | ipart | the particle you would like to get the width of. |
Definition at line 516 of file Mela.cc.
◆ getTopCandidateCollection()
◆ getVerbosity()
◆ getXPropagator()
◆ resetInputEvent()
void Mela::resetInputEvent |
( |
| ) |
|
Resets the event in preparation for the next iteration of the event loop.
- See also
- Wrapper for ZZMatrixElement::reset_InputEvent, which is a wrapper for TEvtProb::ResetInputEvent
- Attention
- Without resetting the input event at the end of each for loop, behavior could be unexpected!
-
It is important to call this at the end of every event loop iteration to clean up TEvtProb!
Definition at line 356 of file Mela.cc.
◆ resetMass()
void Mela::resetMass |
( |
double |
inmass, |
|
|
int |
ipart |
|
) |
| |
Resets the mass for a particle that is an electroweak parameter according to its id.
- See also
- Wrapper for ZZMatrixElement::reset_Mass, which is a wrapper for TEvtProb::ResetMass, which is a wrapper for TUtil::SetMass
-
This finally interfaces with either the function SetMass in mod_parameters.F90 for JHUGen, accessed through .TModParameters.hh
-
in mod_parameters.F90 the conversion from ipart to the values in JHUGen's internal code happens with the function convertLHEreverse(Part)
-
or the masses in the JHUGen-MCFM library at /src/Inc/masses.F or at TMCFM::spinzerohiggs_anomcoupl (for tPrime and bPrime)
- Warning
- It is not recommended to use this function to edit the mass of the Higgs in MCFM. Please use either setMelaHiggsMass or setMelaHiggsMassWidth for that.
- Attention
- You can input negative ids to edit antiparticles (i.e. 24 -> W+, -24 -> W-)
-
In MCFM both the particle and its antiparticle's mass are changed at the same time. In JHUGen this is not the case - they are separate entries.
-
The particles that you can change when using the MCFM matrix element are as as follow:
absolute value of ipart | Particle Name |
8 | t Prime quark (4th generation) |
7 | b Prime quark (4th generation) |
6 | Top Quark |
5 | Bottom Quark |
4 | Charm Quark |
3 | Strange Quark |
2 | Up Quark |
1 | Down Quark |
11 | Electron |
13 | Muon |
15 | Tau |
23 | Z Boson |
24 | W Boson |
25 | Higgs Boson |
-
The particles that you can change when using the JHUGen matrix element are as follow:
ipart | Particle Name | Sign Sensitive |
0 OR 21 | Gluon | No |
1 | Down Quark | Yes |
2 | Up Quark | Yes |
3 | Strange Quark | Yes |
4 | Charm Quark | Yes |
5 | Bottom Quark | Yes |
6 | Top Quark | Yes |
11 | Electron | Yes |
22 | Photon | No |
23 | Z Boson | No |
24 | W Boson | Yes |
13 | Muon | Yes |
15 | Tau | Yes |
12 | Electron Neutrino | Yes |
14 | Muon Neutrino | Yes |
16 | Tau Neutrino | Yes |
25 | Higgs Boson | No |
32 | Z Prime | No |
33 | Z Prime 2 | No |
34 | W Prime | Yes |
- Parameters
-
[in] | inmass | the mass that you want in GeV |
[in] | ipart | the particle whose mass you wish to change |
Definition at line 508 of file Mela.cc.
◆ 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 |
|
) |
| |
◆ resetQuarkMasses()
void Mela::resetQuarkMasses |
( |
| ) |
|
Resets the masses of each quark to their original values.
- See also
- Wrapper for ZZMatrixElement::reset_QuarkMasses, which is a wrapper for TEvtProb::ResetQuarkMasses, which calls TEvtProb::ResetMass
- Warning
- You should run this command each time you would like to reset the mass of a quark to mitigate unexpected behavior
- Attention
- The quarks that are reset are as follow, with their default masses in GeV listed as well:
Quark | Mass |
Down | 0.001 |
Up | 0.005 |
Strange | 0.1 |
Charm | 1.275 |
Bottom | 4.75 |
Top | 173.2 |
B Prime | 1e5 |
T Prime | 1e5 |
Definition at line 510 of file Mela.cc.
◆ 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] | inmass | the mass that you want in GeV |
[in] | ipart | the particle whose mass you wish to change |
Definition at line 509 of file Mela.cc.
◆ setCandidateDecayMode()
◆ setCurrentCandidate()
◆ setCurrentCandidateFromIndex()
void Mela::setCurrentCandidateFromIndex |
( |
unsigned int |
icand | ) |
|
◆ setInputEvent()
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] | pDaughters | A SimpleParticleCollection_t of particle daughters (decay products) |
[in] | pAssociated | A SimpleParticleCollection_t of associated particles (i.e. jets), by default 0 (no jets) |
[in] | pMothers | A SimpleParticleCollection_t of particle mothers (i.e. gluons), by default 0 (reco data contains no mother information) |
[in] | isGen | A boolean signifying whether the event in question is a Gen event or a reco event, by default false (reco) |
Definition at line 343 of file Mela.cc.
◆ 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] | myHiggsMass | This is the mass of the Higgs that you would like, in GeV |
[in] | index | This is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0. |
Definition at line 336 of file Mela.cc.
◆ 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] | myHiggsMass | This is the mass of the Higgs that you would like, in GeV |
[in] | myHiggsWidth | This is the mass of the Higgs that you would like, in GeV |
[in] | index | This is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0. |
Definition at line 338 of file Mela.cc.
◆ 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] | myHiggsWidth | This is the mass of the Higgs that you would like, in GeV |
[in] | index | This is either 0 or 1, depending on if you want to change the first or second resonance. By default it is 0. |
Definition at line 337 of file Mela.cc.
◆ setMelaLeptonInterference()
Sets the MELA Lepton Interference.
- Parameters
-
[in] | myLepInterf | sets the myLepInterf_ variable to one found in TVar::LeptonInterface through ZZMatrixElement::set_LeptonInterface. TVar::DefaultLeptonInterf by default. |
Definition at line 339 of file Mela.cc.
◆ 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] | myHiggsMass | This 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
Definition at line 335 of file Mela.cc.
◆ setProcess()
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
-
Definition at line 310 of file Mela.cc.
◆ setRemoveJetMasses()
void Mela::setRemoveJetMasses |
( |
bool |
MasslessLeptonSwitch = true | ) |
|
either permits or forbids massive jets.
- See also
- Wrapper for the function TUtil::applyJetMassCorrection
- Parameters
-
[in] | MasslessLeptonSwitch | Whether you would like your jets to be massive, by default true. |
Definition at line 520 of file Mela.cc.
◆ setRemoveLeptonMasses()
void Mela::setRemoveLeptonMasses |
( |
bool |
MasslessLeptonSwitch = true | ) |
|
either permits or forbids massive leptons.
- See also
- Wrapper for the function TUtil::applyLeptonMassCorrection
- Parameters
-
[in] | MasslessLeptonSwtich | Whether you would like your leptons to be massive, by default true. |
Definition at line 519 of file Mela.cc.
◆ setRenFacScaleMode()
◆ setTempCandidate()
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] | pDaughters | A SimpleParticleCollection_t of particle daughters (decay products) |
[in] | pAssociated | A SimpleParticleCollection_t of associated particles (i.e. jets), by default 0 (no jets) |
[in] | pMothers | A SimpleParticleCollection_t of particle mothers (i.e. gluons), by default 0 (reco data contains no mother information) |
[in] | isGen | A boolean signifying whether the event in question is a Gen event or a reco event, by default false (reco) |
Definition at line 357 of file Mela.cc.
◆ setVerbosity()
Sets the verbosity for MELA outside of the initial constructor.
- Parameters
-
[in] | verbosity_ | The verbosity of MELA that you desire, as defined in TVar::ERROR. |
Definition at line 325 of file Mela.cc.
◆ costheta1_rrv
RooRealVar* Mela::costheta1_rrv |
◆ costheta2_rrv
RooRealVar* Mela::costheta2_rrv |
◆ costhetastar_rrv
RooRealVar* Mela::costhetastar_rrv |
◆ ggSpin0Model
◆ melaRandomNumber
TRandom3 Mela::melaRandomNumber |
◆ mzz_rrv
RooRealVar* Mela::mzz_rrv |
◆ pdf
◆ phi1_rrv
RooRealVar* Mela::phi1_rrv |
◆ phi_rrv
RooRealVar* Mela::phi_rrv |
◆ qqZZmodel
◆ spin1Model
◆ spin2Model
◆ super
◆ upFrac_rrv
RooRealVar* Mela::upFrac_rrv |
◆ Y_rrv
◆ z1mass_rrv
RooRealVar* Mela::z1mass_rrv |
◆ z2mass_rrv
RooRealVar* Mela::z2mass_rrv |
The documentation for this class was generated from the following files:
void reset_Width(double inmass, int ipart)
void getConstant(float &prob)
This function returns a multiplicative constant to the matrix element calculation.
std::pair< int, TLorentzVector > SimpleParticle_t
void scaleMomentumToEnergy(const TLorentzVector &massiveJet, TLorentzVector &masslessJet, double mass=0)
bool isALepton(const int id)
void setVerbosity(TVar::VerbosityLevel verbosity)
MELAParticle * getDaughter(int index) const
double selfDGqqcoupl[SIZE_GQQ][2]
void getPConstantHandles()
void build(double mh_)
This is the actual building of the tool that occurs in each instance of the Mela::Mela constructor.
void addAssociatedJet(MELAParticle *myParticle)
void get_XPropagator(TVar::ResonancePropagatorScheme scheme, float &prop)
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
void computeProdP_VH(double selfDHvvcoupl_input[nSupportedHiggses][SIZE_HVV][2], float &prob, bool includeHiggsDecay=false, bool useConstant=true)
void set_mHiggs_wHiggs(double mh_, double gah_, int index)
int getNDaughters() const
std::vector< MELATopCandidate_t * > * get_TopCandidateCollection()
void reset_Mass(double inmass, int ipart)
MelaIO * getIORecord()
Returns the MELAIO object, and by consequence, the entire parton-by-parton matrix element record.
@ kUseAssociated_UnstableTops
MELAParticle * getSortedV(int index) const
TString ProductionName(TVar::Production temp)
double selfDHttcoupl[nSupportedHiggses][SIZE_HQQ][2]
void setRemoveLeptonMasses(bool MasslessLeptonSwitch=true)
either permits or forbids massive leptons.
void SetVerbosity(bool verb=true)
void setCurrentCandidate(MELACandidate *cand)
Switches the candidate that you are working on to another candidate object specified.
void setMelaHiggsWidth(double myHiggsWidth=-1, int index=0)
Sets the width of your chosen Higgs.
void setSpinZeroCouplings()
void computeProdXS_JH(float &mevalue)
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)
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
void applyLeptonMassCorrection(bool flag=true)
double getMEConst() const
void SetVerbosity(const TVar::VerbosityLevel verbosity_)
void reset_SelfDCouplings()
double selfDaTQGCcoupl[SIZE_ATQGC][2]
void set_Verbosity(TVar::VerbosityLevel verbosity_)
void PrintCandidateSummary(MELACandidate *cand)
bool isAZBoson(const int id)
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....
double get_HiggsWidthAtPoleMass(double mass)
std::vector< TLorentzVector > Calculate4Momentum(double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
RooqqZZ_JHU_ZgammaZZ_fast * qqZZmodel
double selfDHqqcoupl[nSupportedHiggses][SIZE_HQQ][2]
ScalarPdfFactory_HVV * ggSpin0Model
RooRealVar * costheta1_rrv
void deletePConstantHandles()
void append_TopCandidate(SimpleParticleCollection_t *TopDaughters)
double selfDGvvcoupl[SIZE_GVV][2]
MELACandidate * shallowCopy()
bool isAPhoton(const int id)
void set_TempCandidate(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
void set_CandidateDecayMode(TVar::CandidateDecayMode mode)
double get_PrimaryMass(int ipart)
void 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...
int get_CurrentCandidateIndex()
void set_Process(TVar::Process process_, TVar::MatrixElement me_, TVar::Production production_)
MELACandidate * get_CurrentCandidate()
MELAOutputStreamer MELAout
void set_mHiggs(double mh_, int index)
void SetPathToCards(std::string dirToCards)
MELACandidate * ConvertVectorFormat(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated, SimpleParticleCollection_t *pMothers, bool isGen, std::vector< MELAParticle * > *particleList, std::vector< MELACandidate * > *candList)
TVar::MatrixElement myME_
std::pair< double, double > M4lProb(double m4l)
void computeP(float &prob, bool useConstant=true)
Computes the probability for the probabilities on the decay side of things using the constituent daug...
std::string GetMELAPath()
void set_InputEvent(SimpleParticleCollection_t *pDaughters, SimpleParticleCollection_t *pAssociated=0, SimpleParticleCollection_t *pMothers=0, bool isGen=false)
void setCandidateDecayMode(TVar::CandidateDecayMode mode)
Sets the decay mode for your event.
void set_CurrentCandidateFromIndex(unsigned int icand)
void setMelaHiggsMass(double myHiggsMass, int index=0)
Sets the mass of your chosen Higgs.
TensorPdfFactory_ppHVV * spin2Model
double selfDZqqcoupl[SIZE_ZQQ][2]
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)
double GetSigShapeSystematic(std::string parName)
void computeProdXS_VH(float &mevalue, bool includeHiggsDecay=false)
void computeProdXS_JJH(float &mevalue)
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
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)
double selfDHwwcoupl[nSupportedHiggses][SIZE_HVV][2]
void computeProdXS_VVHVV(float &mevalue)
void constructDggr(float bkg_VAMCFM_noscale, float ggzz_VAMCFM_noscale, float ggHZZ_prob_pure_noscale, float ggHZZ_prob_int_noscale, float widthScale, float &myDggr)
double GetSigShapeParameter(std::string parName)
SuperDijetMela * superDijet
void set_RenFacScaleMode(TVar::EventScaleScheme renormalizationSch, TVar::EventScaleScheme factorizationSch, double ren_sf, double fac_sf)
double selfDAZffcoupl[SIZE_AZff][2]
bool configureAnalyticalPDFs()
double get_PrimaryHiggsMass()
void setSpinOneCouplings()
TVar::Production myProduction_
MELAParticle * getAssociatedJet(int index) const
void computeXS(float &mevalue)
double selfDZvvcoupl[SIZE_ZVV][2]
MELAOutputStreamer MELAerr
TRandom3 melaRandomNumber
void computeProdP_ttH(float &prob, int topProcess=2, int topDecay=0, bool useConstant=true)
void computeConstant(float &prob)
void setMelaPrimaryHiggsMass(double myHiggsMass)
Sets the mass of the "primary" higgs.
void computeFakeJet(TLorentzVector const &realJet, TLorentzVector const &others, TLorentzVector &fakeJet)
RooRealVar * costhetastar_rrv
std::vector< MELAParticle * > & getAssociatedJets()
RooRealVar * costheta2_rrv
TVar::VerbosityLevel myVerbosity_
double selfDHzzcoupl[nSupportedHiggses][SIZE_HVV][2]
std::vector< TLorentzVector > calculate4Momentum(double Mx, double M1, double M2, double theta, double theta1, double theta2, double Phi1, double Phi)
void set_CurrentCandidate(MELACandidate *cand)
VectorPdfFactory * spin1Model
void set_LeptonInterference(TVar::LeptonInterference myLepInterf)
void setSpinTwoCouplings()
std::vector< SimpleParticle_t > SimpleParticleCollection_t
double selfDHggcoupl[nSupportedHiggses][SIZE_HGG][2]
void reset_MCFM_EWKParameters(double ext_Gf, double ext_aemmz, double ext_mW, double ext_mZ, double ext_xW, int ext_ewscheme=3)
void setMelaLeptonInterference(TVar::LeptonInterference myLepInterf=TVar::DefaultLeptonInterf)
Sets the MELA Lepton Interference.
void computeProdXS_ttH(float &mevalue, int topProcess, int topDecay=0)
double get_PrimaryWidth(int ipart)
void SetDecayChannel(std::string myChan)
double selfDHbbcoupl[nSupportedHiggses][SIZE_HQQ][2]
TVar::LeptonInterference myLepInterf_
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)
@ kUseAssociated_StableTops
void GetBoostedParticleVectors(MELACandidate *melaCand, TVar::simple_event_record &mela_event, TVar::VerbosityLevel verbosity=TVar::DEBUG)
double selfDGggcoupl[SIZE_GGG][2]
MELACandidate * getCurrentCandidate()
Gets the current MELA top-level (input) candList object.
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)
void set_PrimaryHiggsMass(double mh)
void set_wHiggs(double gah_, int index)
float GetConvBW(TVar::Production prod, MELACandidate *cand, bool useTrueBW)
void applyJetMassCorrection(bool flag=true)