5#ifndef TRUTHRIVETTOOLS_HIGGSTEMPLATECROSSSECTIONSDEFS_H
6#define TRUTHRIVETTOOLS_HIGGSTEMPLATECROSSSECTIONSDEFS_H 1
291#ifdef ROOT_TLorentzVector
293 typedef TLorentzVector TLV;
294 typedef std::vector<TLV> TLVs;
296 template <
class vec4>
297 TLV MakeTLV(vec4
const & p) {
return TLV(p.px(),p.py(),p.pz(),p.E()); }
299 template <
class Vvec4>
300 inline TLVs MakeTLVs(Vvec4
const &rivet_jets){
301 TLVs
jets;
for (
const auto & jet:rivet_jets )
jets.push_back(MakeTLV(jet));
308 struct HiggsClassification {
337 template <
class category>
338 inline HiggsClassification* Rivet2Root(category
const &htxs_cat_rivet){
339 HTXS::HiggsClassification* cat =
new HTXS::HiggsClassification;
340 cat->prodMode = htxs_cat_rivet.prodMode;
341 cat->errorCode = htxs_cat_rivet.errorCode;
342 cat->higgs = MakeTLV(htxs_cat_rivet.higgs);
343 cat->V = MakeTLV(htxs_cat_rivet.V);
344 cat->p4decay_higgs = MakeTLV(htxs_cat_rivet.p4decay_higgs);
345 cat->p4decay_V = MakeTLV(htxs_cat_rivet.p4decay_V);
346 cat->jets25 = MakeTLVs(htxs_cat_rivet.jets25);
347 cat->jets30 = MakeTLVs(htxs_cat_rivet.jets30);
348 cat->stage0_cat = htxs_cat_rivet.stage0_cat;
349 cat->stage1_cat_pTjet25GeV = htxs_cat_rivet.stage1_cat_pTjet25GeV;
350 cat->stage1_cat_pTjet30GeV = htxs_cat_rivet.stage1_cat_pTjet30GeV;
351 cat->stage1_2_cat_pTjet25GeV = htxs_cat_rivet.stage1_2_cat_pTjet25GeV;
352 cat->stage1_2_cat_pTjet30GeV = htxs_cat_rivet.stage1_2_cat_pTjet30GeV;
353 cat->stage1_2_fine_cat_pTjet25GeV = htxs_cat_rivet.stage1_2_fine_cat_pTjet25GeV;
354 cat->stage1_2_fine_cat_pTjet30GeV = htxs_cat_rivet.stage1_2_fine_cat_pTjet30GeV;
355 cat->isZ2vvDecay = htxs_cat_rivet.isZ2vvDecay;
365 int P = (
int)(stage1 / 100);
366 int F = (
int)(stage1 % 100);
374 return (49 + 2*(tH-1) +fwdH);
379 std::vector<int> pMode_offset = {0,0,13,19,25};
380 if (
P==2)
return (
F + pMode_offset[prodMode]);
384 std::vector<int> catP_offset = {0,1,0,31,36,41,45,47};
385 return (
F + catP_offset[
P]);
388 inline int HTXSstage1_to_HTXSstage1FineIndex(
const HiggsClassification &stxs,
391 jets_pT25==
false?stxs.stage1_cat_pTjet30GeV:
392 stxs.stage1_cat_pTjet25GeV;
393 return HTXSstage1_to_HTXSstage1FineIndex(stage1,stxs.prodMode,tH);
398 int P = (
int)(stage1 / 100);
399 int F = (
int)(stage1 % 100);
400 std::vector<int>
offset{0,1,13,19,24,29,33,35,37,39};
402 return (
F + offset[
P] );
410 int P = (
int)(stage1_2 / 100);
411 int F = (
int)(stage1_2 % 100);
419 return (94 + 2*(tH-1) +fwdH);
424 std::vector<int> pMode_offset = {0,0,35,46,57};
425 if (
P==2)
return (
F + pMode_offset[prodMode]);
431 std::vector<int> catP_offset = {0,1,0,68,74,80,86,92};
432 return (
F + catP_offset[
P]);
435 inline int HTXSstage1_2_to_HTXSstage1_2_FineIndex(
const HiggsClassification &stxs,
438 jets_pT25==
false?stxs.stage1_2_cat_pTjet30GeV:
439 stxs.stage1_2_cat_pTjet25GeV;
440 return HTXSstage1_2_to_HTXSstage1_2_FineIndex(stage1_2,stxs.prodMode,tH);
445 int P = (
int)(stage1_2 / 100);
446 int F = (
int)(stage1_2 % 100);
447 std::vector<int>
offset{0,1,18,29,35,41,47,53,55,57};
449 return (
F + offset[
P] );
466 return (189 + 2*(tH-1) +fwdH);
471 std::vector<int> pMode_offset = {0,0,57,82,107};
472 if (
P==2)
return (
F + pMode_offset[prodMode]);
478 std::vector<int> catP_offset = {0,1,0,132,148,164,180,187};
479 return (
F + catP_offset[
P]);
482 inline int HTXSstage1_2_Fine_to_HTXSstage1_2_Fine_FineIndex(
const HiggsClassification &stxs,
485 jets_pT25==
false?stxs.stage1_2_fine_cat_pTjet30GeV:
486 stxs.stage1_2_fine_cat_pTjet25GeV;
487 return HTXSstage1_2_Fine_to_HTXSstage1_2_Fine_FineIndex(
Stage1_2_Fine,stxs.prodMode,tH);
494 std::vector<int>
offset{0,1,29,54,70,86,102,109,111,113};
496 return (
F + offset[
P] );
505#ifdef RIVET_Particle_HH
513 struct HiggsClassification {
517 Rivet::Particle higgs;
521 Rivet::FourMomentum p4decay_higgs;
523 Rivet::FourMomentum p4decay_V;
525 Rivet::Jets jets25, jets30;
541 bool isZ2vvDecay=
false;
Two digit number of format PF P is digit for the physics process and F is 0 for |yH|>2....
@ GG2H_PTH_300_450_PTHJoverPTH_GT15
@ QQ2HQQ_GE2J_MJJ_700_1000_PTH_0_200_PTHJJ_GT25
@ GG2H_GE2J_MJJ_0_350_PTH_120_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_0_60_PTHJJ_GT25
@ GG2H_GE2J_MJJ_700_1000_PTH_0_200_PTHJJ_GT25
@ GG2HLL_PTV_250_400_GE2J
@ GG2H_GE2J_MJJ_1000_1500_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_GT200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_GT1500_PTH_GT200_PTHJJ_GT25
@ GG2H_PTH_GT650_PTHJoverPTH_0_15
@ GG2H_GE2J_MJJ_700_1000_PTH_0_200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_GT1500_PTH_0_200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_1000_1500_PTH_0_200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_0_350_PTH_0_60_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_1000_1500_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_1000_1500_PTH_GT200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_120_350_PTHJJ_0_25
@ GG2H_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_0_60_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_GT200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_GT1500_PTH_0_200_PTHJJ_GT25
@ GG2H_GE2J_MJJ_0_350_PTH_60_120_PTHJJ_GT25
@ GG2HLL_PTV_150_250_GE2J
@ QQ2HQQ_GE2J_MJJ_GT1500_PTH_0_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_700_1000_PTH_GT200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_60_120_PTHJJ_0_25
@ QQ2HLL_PTV_150_250_GE2J
@ GG2H_GE2J_MJJ_0_350_PTH_120_200_PTHJJ_GT25
@ QQ2HLL_PTV_250_400_GE2J
@ GG2H_PTH_450_650_PTHJoverPTH_GT15
@ QQ2HQQ_GE2J_MJJ_700_1000_PTH_0_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_60_120_PTHJJ_GT25
@ GG2H_PTH_300_450_PTHJoverPTH_0_15
@ GG2H_PTH_200_300_PTHJoverPTH_0_15
@ QQ2HLNU_PTV_75_150_GE2J
@ GG2H_PTH_GT650_PTHJoverPTH_GT15
@ GG2H_GE2J_MJJ_0_350_PTH_60_120_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_GT25
@ QQ2HLNU_PTV_150_250_GE2J
@ QQ2HQQ_GE2J_MJJ_120_350_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_GT1500_PTH_GT200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_GT1500_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_700_1000_PTH_GT200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_1000_1500_PTH_GT200_PTHJJ_GT25
@ GG2H_GE2J_MJJ_0_350_PTH_0_60_PTHJJ_GT25
@ GG2H_PTH_450_650_PTHJoverPTH_0_15
@ QQ2HQQ_GE2J_MJJ_1000_1500_PTH_0_200_PTHJJ_0_25
@ GG2H_PTH_200_300_PTHJoverPTH_GT15
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_0_25
@ QQ2HLNU_PTV_250_400_GE2J
Categorization Stage 1.2: Three digit integer of format PF Where P is a digit representing the proces...
@ GG2HLL_PTV_150_250_GE1J
@ QQ2HLNU_PTV_150_250_GE1J
@ GG2H_GE2J_MJJ_GT700_PTH_0_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_0_25
@ GG2H_GE2J_MJJ_0_350_PTH_60_120
@ GG2H_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_GT700_PTH_0_200_PTHJJ_0_25
@ QQ2HQQ_GE2J_MJJ_GT350_PTH_GT200
@ QQ2HQQ_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_GT25
@ QQ2HLL_PTV_150_250_GE1J
@ GG2H_GE2J_MJJ_0_350_PTH_0_60
@ GG2H_GE2J_MJJ_GT700_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_GT700_PTH_0_200_PTHJJ_GT25
@ QQ2HQQ_GE2J_MJJ_120_350
@ GG2H_GE2J_MJJ_0_350_PTH_120_200
@ GG2H_GE2J_MJJ_350_700_PTH_0_200_PTHJJ_GT25
Categorization Stage 1: Three digit integer of format PF Where P is a digit representing the process ...
@ QQ2HQQ_VBFTOPO_JET3VETO
@ QQ2HLL_PTV_150_250_GE1J
@ QQ2HLNU_PTV_150_250_GE1J
Higgs Template Cross Section namespace.
ErrorCode
Error code: whether the classification was successful or failed.
@ HS_VTX_IDENTIFICATION
failed to identify hard scatter vertex
@ PRODMODE_DEFINED
production mode not defined
@ SUCCESS
successful classification
@ VH_DECAY_IDENTIFICATION
failed to identify associated vector boson decay products
@ HIGGS_IDENTIFICATION
failed to identify Higgs boson
@ TOP_W_IDENTIFICATION
failed to identify top decay
@ HIGGS_DECAY_IDENTIFICATION
failed to identify Higgs boson decay products
@ MOMENTUM_CONSERVATION
failed momentum conservation
@ NUM_ERRORCODES
number of error codes (keep this unnumbered and last)
@ VH_IDENTIFICATION
failed to identify associated vector boson
HiggsProdMode
Higgs production modes, corresponding to input sample.
tH_type
Additional identifier flag for TH production modes.