ATLAS Offline Software
Loading...
Searching...
No Matches
HiggsTemplateCrossSectionsDefs.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRUTHRIVETTOOLS_HIGGSTEMPLATECROSSSECTIONSDEFS_H
6#define TRUTHRIVETTOOLS_HIGGSTEMPLATECROSSSECTIONSDEFS_H 1
7
9namespace HTXS {
10
25
29 GGF = 1, VBF = 2, WH = 3, QQ2ZH = 4, GG2ZH = 5,
30 TTH = 6, BBH = 7, TH = 8
31 };
32
34 enum tH_type { noTH=0, THQB=1, TWH=2 };
35
39
43 ZZ4l = 1
44 };
45
47 namespace Stage0 {
49 enum Category {
50 UNKNOWN = 0, GG2H_FWDH = 10, GG2H = 11, VBF_FWDH = 20, VBF = 21, VH2HQQ_FWDH = 22, VH2HQQ = 23,
51 QQ2HLNU_FWDH = 30, QQ2HLNU = 31, QQ2HLL_FWDH = 40, QQ2HLL = 41, GG2HLL_FWDH = 50, GG2HLL = 51,
52 TTH_FWDH = 60, TTH = 61, BBH_FWDH = 70, BBH = 71, TH_FWDH = 80, TH = 81 };
53
59 Hdd = 01010000, Huu = 02020000, Hss = 03030000,
60 Hcc = 04040000, Hbb = 05050000,
61 Hee = 11110000, Hmumu = 13130000, Htautau = 15150000,
62 Hemu = 11130000, Hetau = 11150000, Hmutau = 13150000,
63 Hjetjet = 20200000,
64 Hgamgam = 22220000,
65 H2egam = 11112200,
66 H2mugam = 13132200,
67 H2taugam = 15152200,
68 HZZ4e = 11111111,
69 Hgamgam4e = 1111111100,
70 HZZ2e2mu = 11111313,
71 HZZ4mu = 13131313,
72 HZZ2e2tau = 11111515,
73 HZZ2mu2tau = 13131515,
74 HZZ4tau = 15151515,
75 HWWenuenu = 11121112,
76 HWWenumun = 11121314,
77 HWWmunmun = 13141314
78 };
79 }
80
85 namespace Stage1 {
124 } // namespace Stage1
125
130 namespace Stage1_2 {
131 enum Category {
133 // Gluon fusion
151 // "VBF"
163 // qq -> WH
170 // qq -> ZH
177 // gg -> ZH
184 // ttH
185 TTH_FWDH = 600,
191 // bbH
192 BBH_FWDH = 700, BBH = 701,
193 // tH
194 TH_FWDH = 800, TH = 801
195 };
196 } // namespace Stage1_2
197
198 namespace Stage1_2_Fine {
199 enum Category {
201 // Gluon fusion
230 // "VBF"
256 // qq -> WH
273 // qq -> ZH
290 // gg -> ZH
307 // ttH
308 TTH_FWDH = 600,
315 // bbH
316 BBH_FWDH = 700, BBH = 701,
317 // tH
318 TH_FWDH = 800, TH = 801
319 };
320 } // namespace Stage1_2_Fine
321
326namespace Stage1_3 {
329 // Gluon fusion
355 // EW qqH
371 // qq -> WH
381 // qq -> ZH
391 // gg -> ZH
401 // ttH
402 TTH_FWDH = 600,
410 // bbH
411 BBH_FWDH = 700,
436 // tH
437 TH_FWDH = 800,
438 TH = 801
439};
440} // namespace Stage1_3
441
442namespace Stage1_3_Fine {
445 // Gluon fusion
508 // EW qqH
595 // qq -> WH
615 // qq -> ZH
635 // gg -> ZH
655 // ttH
656 TTH_FWDH = 600,
664 // bbH
665 BBH_FWDH = 700,
727 // tH
728 THQ_FWDH = 800,
729 THQ = 801,
730 THW_FWDH = 802,
731 THW = 803,
732};
733} // namespace Stage1_3_Fine
734
735
736
737
738#ifdef ROOT_TLorentzVector
739
740 typedef TLorentzVector TLV;
741 typedef std::vector<TLV> TLVs;
742
743 template <class vec4>
744 TLV MakeTLV(vec4 const & p) { return TLV(p.px(),p.py(),p.pz(),p.E()); }
745
746 template <class Vvec4>
747 inline TLVs MakeTLVs(Vvec4 const &rivet_jets){
748 TLVs jets; for ( const auto & jet:rivet_jets ) jets.push_back(MakeTLV(jet));
749 return jets;
750 }
751
752 // Structure holding information about the current event:
753 // Four-momenta and event classification according to the
754 // Higgs Template Cross Section
755 struct HiggsClassification {
756 // Higgs production mode
758 // The Higgs boson
759 TLV higgs;
760 // The Higgs boson decay products
761 TLV p4decay_higgs;
762 // Associated vector bosons
763 TLV V;
764 // The V-boson decay products
765 TLV p4decay_V;
766 // Jets are built ignoring Higgs decay products and leptons from V decays
767 // jets with pT > 25 GeV and 30 GeV
768 TLVs jets25, jets30;
769 // Event categorization according to YR4 wrtietup
770 // https://cds.cern.ch/record/2138079
771 HTXS::Stage0::Category stage0_cat;
772 HTXS::Stage1::Category stage1_cat_pTjet25GeV;
773 HTXS::Stage1::Category stage1_cat_pTjet30GeV;
774 HTXS::Stage1_2::Category stage1_2_cat_pTjet25GeV;
775 HTXS::Stage1_2::Category stage1_2_cat_pTjet30GeV;
776 HTXS::Stage1_2_Fine::Category stage1_2_fine_cat_pTjet25GeV;
777 HTXS::Stage1_2_Fine::Category stage1_2_fine_cat_pTjet30GeV;
778 HTXS::Stage1_3::Category stage1_3_cat_pTjet25GeV;
779 HTXS::Stage1_3::Category stage1_3_cat_pTjet30GeV;
780 HTXS::Stage1_3_Fine::Category stage1_3_fine_cat_pTjet25GeV;
781 HTXS::Stage1_3_Fine::Category stage1_3_fine_cat_pTjet30GeV;
782 // Flag for Z->vv decay mode (needed to split QQ2ZH and GG2ZH)
783 bool isZ2vvDecay{};
784 // Flag to distinguish tHW from tHq using the event record.
785 bool isTHW{};
786 // Higgs decay categorization (Stage-0)
787 HTXS::Stage0::DecayCategory decaystage0_cat{};
788 // Decay STXS observables and flag
789 std::vector<float> decay_observables{};
790 int decay_cuts_passed;
791 // Error code :: classification was succesful or some error occured
793 };
794
795 template <class category>
796 inline HiggsClassification* Rivet2Root(category const &htxs_cat_rivet){
797 HTXS::HiggsClassification* cat = new HTXS::HiggsClassification;
798 cat->prodMode = htxs_cat_rivet.prodMode;
799 cat->errorCode = htxs_cat_rivet.errorCode;
800 cat->higgs = MakeTLV(htxs_cat_rivet.higgs);
801 cat->V = MakeTLV(htxs_cat_rivet.V);
802 cat->p4decay_higgs = MakeTLV(htxs_cat_rivet.p4decay_higgs);
803 cat->p4decay_V = MakeTLV(htxs_cat_rivet.p4decay_V);
804 cat->jets25 = MakeTLVs(htxs_cat_rivet.jets25);
805 cat->jets30 = MakeTLVs(htxs_cat_rivet.jets30);
806 cat->stage0_cat = htxs_cat_rivet.stage0_cat;
807 cat->stage1_cat_pTjet25GeV = htxs_cat_rivet.stage1_cat_pTjet25GeV;
808 cat->stage1_cat_pTjet30GeV = htxs_cat_rivet.stage1_cat_pTjet30GeV;
809 cat->stage1_2_cat_pTjet25GeV = htxs_cat_rivet.stage1_2_cat_pTjet25GeV;
810 cat->stage1_2_cat_pTjet30GeV = htxs_cat_rivet.stage1_2_cat_pTjet30GeV;
811 cat->stage1_2_fine_cat_pTjet25GeV = htxs_cat_rivet.stage1_2_fine_cat_pTjet25GeV;
812 cat->stage1_2_fine_cat_pTjet30GeV = htxs_cat_rivet.stage1_2_fine_cat_pTjet30GeV;
813 cat->stage1_3_cat_pTjet25GeV = htxs_cat_rivet.stage1_3_cat_pTjet25GeV;
814 cat->stage1_3_cat_pTjet30GeV = htxs_cat_rivet.stage1_3_cat_pTjet30GeV;
815 cat->stage1_3_fine_cat_pTjet25GeV = htxs_cat_rivet.stage1_3_fine_cat_pTjet25GeV;
816 cat->stage1_3_fine_cat_pTjet30GeV = htxs_cat_rivet.stage1_3_fine_cat_pTjet30GeV;
817 cat->isZ2vvDecay = htxs_cat_rivet.isZ2vvDecay;
818 cat->isTHW = htxs_cat_rivet.isTHW;
819 cat->decaystage0_cat = htxs_cat_rivet.decaystage0_cat;
820 cat->decay_observables = std::move(htxs_cat_rivet.decay_observables);
821 cat->decay_cuts_passed = htxs_cat_rivet.decay_cuts_passed;
822
823 return cat;
824 }
825
826
827
828 inline int HTXSstage1_to_HTXSstage1FineIndex(HTXS::Stage1::Category stage1,
829 HiggsProdMode prodMode, tH_type tH) {
830
831 if(stage1==HTXS::Stage1::Category::UNKNOWN) return 0;
832 int P = (int)(stage1 / 100);
833 int F = (int)(stage1 % 100);
834 // 1.a spit tH categories
835 if (prodMode==HiggsProdMode::TH) {
836 // check that tH splitting is valid for Stage-1 FineIndex
837 // else return unknown category
838 if(tH==tH_type::noTH) return 0;
839 // check if forward tH
840 int fwdH = F==0?0:1;
841 return (49 + 2*(tH-1) +fwdH);
842 }
843 // 1.b QQ2HQQ --> split into VBF, WH, ZH -> HQQ
844 // offset vector 1: input is the Higgs prodMode
845 // first two indicies are dummies, given that this is only called for prodMode=2,3,4
846 std::vector<int> pMode_offset = {0,0,13,19,25};
847 if (P==2) return (F + pMode_offset[prodMode]);
848 // 1.c remaining categories
849 // offset vector 2: input is the Stage-1 category P
850 // third index is dummy, given that this is called for category P=0,1,3,4,5,6,7
851 std::vector<int> catP_offset = {0,1,0,31,36,41,45,47};
852 return (F + catP_offset[P]);
853 }
854
855 inline int HTXSstage1_to_HTXSstage1FineIndex(const HiggsClassification &stxs,
856 tH_type tH=noTH, bool jets_pT25 = false) {
857 HTXS::Stage1::Category stage1 =
858 jets_pT25==false?stxs.stage1_cat_pTjet30GeV:
859 stxs.stage1_cat_pTjet25GeV;
860 return HTXSstage1_to_HTXSstage1FineIndex(stage1,stxs.prodMode,tH);
861 }
862
863 inline int HTXSstage1_to_index(HTXS::Stage1::Category stage1) {
864 // the Stage-1 categories
865 int P = (int)(stage1 / 100);
866 int F = (int)(stage1 % 100);
867 std::vector<int> offset{0,1,13,19,24,29,33,35,37,39};
868 // convert to linear values
869 return ( F + offset[P] );
870 }
871
872 //Same for Stage1_2 categories
873 inline int HTXSstage1_2_to_HTXSstage1_2_FineIndex(HTXS::Stage1_2::Category stage1_2,
874 HiggsProdMode prodMode, tH_type tH) {
875
876 if(stage1_2==HTXS::Stage1_2::Category::UNKNOWN) return 0;
877 int P = (int)(stage1_2 / 100);
878 int F = (int)(stage1_2 % 100);
879 // 1.a spit tH categories
880 if (prodMode==HiggsProdMode::TH) {
881 // check that tH splitting is valid for Stage-1 FineIndex
882 // else return unknown category
883 if(tH==tH_type::noTH) return 0;
884 // check if forward tH
885 int fwdH = F==0?0:1;
886 return (94 + 2*(tH-1) +fwdH);
887 }
888 // 1.b QQ2HQQ --> split into VBF, WH, ZH -> HQQ
889 // offset vector 1: input is the Higgs prodMode
890 // first two indicies are dummies, given that this is only called for prodMode=2,3,4
891 std::vector<int> pMode_offset = {0,0,35,46,57};
892 if (P==2) return (F + pMode_offset[prodMode]);
893 // 1.c GG2ZH split into gg->ZH-had and gg->ZH-lep
894 if (prodMode==HiggsProdMode::GG2ZH && P==1) return F + 18;
895 // 1.d remaining categories
896 // offset vector 2: input is the Stage-1 category P
897 // third index is dummy, given that this is called for category P=0,1,3,4,5,6,7
898 std::vector<int> catP_offset = {0,1,0,68,74,80,86,92};
899 return (F + catP_offset[P]);
900 }
901
902 inline int HTXSstage1_2_to_HTXSstage1_2_FineIndex(const HiggsClassification &stxs,
903 tH_type tH=noTH, bool jets_pT25 = false) {
904 HTXS::Stage1_2::Category stage1_2 =
905 jets_pT25==false?stxs.stage1_2_cat_pTjet30GeV:
906 stxs.stage1_2_cat_pTjet25GeV;
907 return HTXSstage1_2_to_HTXSstage1_2_FineIndex(stage1_2,stxs.prodMode,tH);
908 }
909
910 inline int HTXSstage1_2_to_index(HTXS::Stage1_2::Category stage1_2) {
911 // the Stage-1 categories
912 int P = (int)(stage1_2 / 100);
913 int F = (int)(stage1_2 % 100);
914 std::vector<int> offset{0,1,18,29,35,41,47,53,55,57};
915 // convert to linear values
916 return ( F + offset[P] );
917 }
918
919 //Same for Stage1_2_Fine categories
920 inline int HTXSstage1_2_Fine_to_HTXSstage1_2_Fine_FineIndex(HTXS::Stage1_2_Fine::Category Stage1_2_Fine,
921 HiggsProdMode prodMode, tH_type tH) {
922
924 int P = (int)(Stage1_2_Fine / 100);
925 int F = (int)(Stage1_2_Fine % 100);
926 // 1.a spit tH categories
927 if (prodMode==HiggsProdMode::TH) {
928 // check that tH splitting is valid for Stage-1 FineIndex
929 // else return unknown category
930 if(tH==tH_type::noTH) return 0;
931 // check if forward tH
932 int fwdH = F==0?0:1;
933 return (189 + 2*(tH-1) +fwdH);
934 }
935 // 1.b QQ2HQQ --> split into VBF, WH, ZH -> HQQ
936 // offset vector 1: input is the Higgs prodMode
937 // first two indicies are dummies, given that this is only called for prodMode=2,3,4
938 std::vector<int> pMode_offset = {0,0,57,82,107};
939 if (P==2) return (F + pMode_offset[prodMode]);
940 // 1.c GG2ZH split into gg->ZH-had and gg->ZH-lep
941 if (prodMode==HiggsProdMode::GG2ZH && P==1) return F + 29;
942 // 1.d remaining categories
943 // offset vector 2: input is the Stage-1 category P
944 // third index is dummy, given that this is called for category P=0,1,3,4,5,6,7
945 std::vector<int> catP_offset = {0,1,0,132,148,164,180,187};
946 return (F + catP_offset[P]);
947 }
948
949 inline int HTXSstage1_2_Fine_to_HTXSstage1_2_Fine_FineIndex(const HiggsClassification &stxs,
950 tH_type tH=noTH, bool jets_pT25 = false) {
952 jets_pT25==false?stxs.stage1_2_fine_cat_pTjet30GeV:
953 stxs.stage1_2_fine_cat_pTjet25GeV;
954 return HTXSstage1_2_Fine_to_HTXSstage1_2_Fine_FineIndex(Stage1_2_Fine,stxs.prodMode,tH);
955 }
956
957 inline int HTXSstage1_2_Fine_to_index(HTXS::Stage1_2_Fine::Category Stage1_2_Fine) {
958 // the Stage-1_2_Fine categories
959 int P = (int)(Stage1_2_Fine / 100);
960 int F = (int)(Stage1_2_Fine % 100);
961 std::vector<int> offset{0,1,29,54,70,86,102,109,111,113};
962 // convert to linear values
963 return ( F + offset[P] );
964 }
965
966 //Same for Stage1_3 categories
967 inline int HTXSstage1_3_to_HTXSstage1_3_FineIndex(HTXS::Stage1_3::Category stage1_3,
968 HiggsProdMode prodMode, tH_type tH) {
969
970 if(stage1_3==HTXS::Stage1_3::Category::UNKNOWN) return 0;
971 int P = (int)(stage1_3 / 100);
972 int F = (int)(stage1_3 % 100);
973 // 1.a spit tH categories
974 if (prodMode==HiggsProdMode::TH) {
975 // check that tH splitting is valid for Stage-1 FineIndex
976 // else return unknown category
977 if(tH==tH_type::noTH) return 0;
978 // check if forward tH
979 int fwdH = F==0?0:1;
980 return (156 + 2*(tH-1) +fwdH);
981 }
982 // 1.b QQ2HQQ --> split into VBF, WH, ZH -> HQQ
983 // offset vector 1: input is the Higgs prodMode
984 // first two indicies are dummies, given that this is only called for prodMode=2,3,4
985 std::vector<int> pMode_offset = {0,0,51,66,81};
986 if (P==2) return (F + pMode_offset[prodMode]);
987 // 1.c GG2ZH split into gg->ZH-had and gg->ZH-lep
988 if (prodMode==HiggsProdMode::GG2ZH && P==1) return F + 26;
989 // 1.d remaining categories
990 // offset vector 2: input is the Stage-1 category P
991 // third index is dummy, given that this is called for category P=0,1,3,4,5,6,7
992 std::vector<int> catP_offset = {0,1,0,96,105,114,123,131};
993 return (F + catP_offset[P]);
994 }
995
996 inline int HTXSstage1_3_to_HTXSstage1_3_FineIndex(const HiggsClassification &stxs,
997 tH_type tH=noTH, bool jets_pT25 = false) {
998 HTXS::Stage1_3::Category stage1_3 =
999 jets_pT25==false?stxs.stage1_3_cat_pTjet30GeV:
1000 stxs.stage1_3_cat_pTjet25GeV;
1001 return HTXSstage1_3_to_HTXSstage1_3_FineIndex(stage1_3,stxs.prodMode,tH);
1002 }
1003
1004 inline int HTXSstage1_3_to_index(HTXS::Stage1_3::Category stage1_3) {
1005 // the Stage-1_3 categories
1006 int P = (int)(stage1_3 / 100);
1007 int F = (int)(stage1_3 % 100);
1008 std::vector<int> offset{0,1,26,41,50,59,68,76,101,103};
1009 // convert to linear values
1010 return ( F + offset[P] );
1011 }
1012
1013 //Same for Stage1_3_Fine categories
1014 inline int HTXSstage1_3_Fine_to_HTXSstage1_3_Fine_FineIndex(HTXS::Stage1_3_Fine::Category Stage1_3_Fine,
1015 HiggsProdMode prodMode, tH_type tH) {
1016
1018 int P = (int)(Stage1_3_Fine / 100);
1019 int F = (int)(Stage1_3_Fine % 100);
1020 // 1.a spit tH categories
1021 if (prodMode==HiggsProdMode::TH) {
1022 // check that tH splitting is valid for Stage-1 FineIndex
1023 // else return unknown category
1024 if(tH==tH_type::noTH) return 0;
1025 // check if forward tH
1026 int fwdH = F==0 || F==2 ? 0:1;
1027 return (510 + 2*(tH-1) +fwdH);
1028 }
1029 // 1.b QQ2HQQ --> split into VBF, WH, ZH -> HQQ
1030 // offset vector 1: input is the Higgs prodMode
1031 // first two indicies are dummies, given that this is only called for prodMode=2,3,4
1032 std::vector<int> pMode_offset = {0,0,125,211,297};
1033 if (P==2) return (F + pMode_offset[prodMode]);
1034 // 1.c GG2ZH split into gg->ZH-had and gg->ZH-lep
1035 if (prodMode==HiggsProdMode::GG2ZH && P==1) return F + 63;
1036 // 1.d remaining categories
1037 // offset vector 2: input is the Stage-1 category P
1038 // third index is dummy, given that this is called for category P=0,1,3,4,5,6,7
1039 std::vector<int> catP_offset = {0,1,0,383,402,421,440,448};
1040 return (F + catP_offset[P]);
1041 }
1042
1043 inline int HTXSstage1_3_Fine_to_HTXSstage1_3_Fine_FineIndex(const HiggsClassification &stxs,
1044 tH_type tH=noTH, bool jets_pT25 = false) {
1046 jets_pT25==false?stxs.stage1_3_fine_cat_pTjet30GeV:
1047 stxs.stage1_3_fine_cat_pTjet25GeV;
1048 return HTXSstage1_3_Fine_to_HTXSstage1_3_Fine_FineIndex(Stage1_3_Fine,stxs.prodMode,tH);
1049 }
1050
1051 inline int HTXSstage1_3_Fine_to_index(HTXS::Stage1_3_Fine::Category Stage1_3_Fine) {
1052 // the Stage-1_3_Fine categories
1053 int P = (int)(Stage1_3_Fine / 100);
1054 int F = (int)(Stage1_3_Fine % 100);
1055 std::vector<int> offset{0,1,63,149,168,187,206,214,276,280};
1056 // convert to linear values
1057 return ( F + offset[P] );
1058 }
1059
1060
1061
1062#endif // ROOT_TLorentzVector
1063
1064} // namespace HTXS
1065
1066
1067#ifdef RIVET_Particle_HH
1068
1069namespace Rivet {
1070
1075 struct HiggsClassification {
1077 HTXS::HiggsProdMode prodMode;
1079 Rivet::Particle higgs;
1081 Rivet::Particle V;
1083 Rivet::FourMomentum p4decay_higgs;
1085 Rivet::FourMomentum p4decay_V;
1087 Rivet::Jets jets25, jets30;
1089 HTXS::Stage0::Category stage0_cat;
1091 HTXS::Stage1::Category stage1_cat_pTjet25GeV;
1093 HTXS::Stage1::Category stage1_cat_pTjet30GeV;
1096 HTXS::Stage1_2::Category stage1_2_cat_pTjet25GeV;
1099 HTXS::Stage1_2::Category stage1_2_cat_pTjet30GeV;
1102 HTXS::Stage1_2_Fine::Category stage1_2_fine_cat_pTjet25GeV;
1105 HTXS::Stage1_2_Fine::Category stage1_2_fine_cat_pTjet30GeV;
1108 HTXS::Stage1_3::Category stage1_3_cat_pTjet25GeV;
1111 HTXS::Stage1_3::Category stage1_3_cat_pTjet30GeV;
1114 HTXS::Stage1_3_Fine::Category stage1_3_fine_cat_pTjet25GeV;
1117 HTXS::Stage1_3_Fine::Category stage1_3_fine_cat_pTjet30GeV;
1119 bool isZ2vvDecay=false;
1121 bool isTHW=false;
1123 HTXS::Stage0::DecayCategory decaystage0_cat{};
1125 std::vector<float> decay_observables{};
1127 int decay_cuts_passed{};
1129 HTXS::ErrorCode errorCode;
1130 };
1131} // namespace Rivet
1132#endif // RIVET_Particle_HH
1133
1134
1135
1136#endif // TRUTHRIVETTOOLS_HIGGSTEMPLATECROSSSECTIONSDEFS_H
static Double_t P(Double_t *tt, Double_t *par)
#define F(x, y, z)
Definition MD5.cxx:112
Namespace for Stage0 categorization.
Categorization Stage 1.2: Three digit integer of format PF Where P is a digit representing the proces...
Categorization Stage 1.3: Three digit integer of format PF Where P is a digit representing the proces...
Categorization Stage 1: Three digit integer of format PF Where P is a digit representing the process ...
Higgs Template Cross Section namespace.
HiggsDecayMode
Two digit number of format PF P is digit for the physics process and F is 0 for |yH|>2....
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.