ATLAS Offline Software
Loading...
Searching...
No Matches
CalcHiggsPartonHistory.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
7
12
13namespace CP {
14using ROOT::Math::PtEtaPhiMVector;
15
16void CalcPartonHistory::setHiggs(const std::string& fsr) {
17 PtEtaPhiMVector H;
18 PtEtaPhiMVector Wm, Wm_decay1, Wm_decay2;
19 PtEtaPhiMVector Wp, Wp_decay1, Wp_decay2;
20 int Wm_decay1_pdgId, Wm_decay2_pdgId;
21 int Wp_decay1_pdgId, Wp_decay2_pdgId;
22
23 // W+: pass full m_particleMap keys to getW; bare names to m_dec.*
24 bool has_Wp =
25 getW(m_prefix + "_" + "MC_lbar_" + fsr, m_prefix + "_" + "MC_nu_" + fsr,
26 Wp_decay1, Wp_decay1_pdgId, Wp_decay2, Wp_decay2_pdgId);
27 if (has_Wp) {
28 Wp = Wp_decay1 + Wp_decay2;
29 m_dec.decorateParticle("MC_Hdecay1_" + fsr, Wp, 24);
30 m_dec.decorateParticle("MC_Hdecay1_decay1_" + fsr, Wp_decay1,
31 Wp_decay1_pdgId);
32 m_dec.decorateParticle("MC_Hdecay1_decay2_" + fsr, Wp_decay2,
33 Wp_decay2_pdgId);
34 }
35 // W-
36 bool has_Wm =
37 getW(m_prefix + "_" + "MC_l_" + fsr, m_prefix + "_" + "MC_nubar_" + fsr,
38 Wm_decay1, Wm_decay1_pdgId, Wm_decay2, Wm_decay2_pdgId);
39 if (has_Wm) {
40 Wm = Wm_decay1 + Wm_decay2;
41 m_dec.decorateParticle("MC_Hdecay2_" + fsr, Wm, -24);
42 m_dec.decorateParticle("MC_Hdecay2_decay1_" + fsr, Wm_decay1,
43 Wm_decay1_pdgId);
44 m_dec.decorateParticle("MC_Hdecay2_decay2_" + fsr, Wm_decay2,
45 Wm_decay2_pdgId);
46 }
47 if (has_Wm && has_Wp) {
48 H = Wp + Wm;
49 m_dec.decorateParticle("MC_H_" + fsr, H, 25);
50 }
51}
52
53void CalcPartonHistory::FillHiggsPartonHistory(const std::string& mode) {
54 PtEtaPhiMVector v;
55 int pdgId = 0;
56
57 // Defaults for all branches regardless of mode.
58 m_dec.decorateDefault("MC_H_beforeFSR");
59 m_dec.decorateDefault("MC_Hdecay1_beforeFSR");
60 m_dec.decorateDefault("MC_Hdecay2_beforeFSR");
61 m_dec.decorateDefault("MC_Hdecay1_decay1_beforeFSR");
62 m_dec.decorateDefault("MC_Hdecay1_decay2_beforeFSR");
63 m_dec.decorateDefault("MC_Hdecay2_decay1_beforeFSR");
64 m_dec.decorateDefault("MC_Hdecay2_decay2_beforeFSR");
65 m_dec.decorateDefault("MC_H_afterFSR");
66 m_dec.decorateDefault("MC_Hdecay1_afterFSR");
67 m_dec.decorateDefault("MC_Hdecay2_afterFSR");
68 m_dec.decorateDefault("MC_Hdecay1_decay1_afterFSR");
69 m_dec.decorateDefault("MC_Hdecay1_decay2_afterFSR");
70 m_dec.decorateDefault("MC_Hdecay2_decay1_afterFSR");
71 m_dec.decorateDefault("MC_Hdecay2_decay2_afterFSR");
72
73 if (mode == "resonant") {
74 // RetrieveParticleInfo uses full m_particleMap keys (with m_prefix).
75 // m_dec.decorateParticle uses bare names.
76 if (RetrieveParticleInfo(m_prefix + "_" + "MC_H_beforeFSR", v, pdgId))
77 m_dec.decorateParticle("MC_H_beforeFSR", v, pdgId);
78 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1_beforeFSR", v, pdgId))
79 m_dec.decorateParticle("MC_Hdecay1_beforeFSR", v, pdgId);
80 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2_beforeFSR", v, pdgId))
81 m_dec.decorateParticle("MC_Hdecay2_beforeFSR", v, pdgId);
82 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1Decay1_beforeFSR", v,
83 pdgId))
84 m_dec.decorateParticle("MC_Hdecay1_decay1_beforeFSR", v, pdgId);
85 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1Decay2_beforeFSR", v,
86 pdgId))
87 m_dec.decorateParticle("MC_Hdecay1_decay2_beforeFSR", v, pdgId);
88 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2Decay1_beforeFSR", v,
89 pdgId))
90 m_dec.decorateParticle("MC_Hdecay2_decay1_beforeFSR", v, pdgId);
91 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2Decay2_beforeFSR", v,
92 pdgId))
93 m_dec.decorateParticle("MC_Hdecay2_decay2_beforeFSR", v, pdgId);
94 if (RetrieveParticleInfo(m_prefix + "_" + "MC_H_afterFSR", v, pdgId))
95 m_dec.decorateParticle("MC_H_afterFSR", v, pdgId);
96 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1_afterFSR", v, pdgId))
97 m_dec.decorateParticle("MC_Hdecay1_afterFSR", v, pdgId);
98 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2_afterFSR", v, pdgId))
99 m_dec.decorateParticle("MC_Hdecay2_afterFSR", v, pdgId);
100 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1Decay1_afterFSR", v,
101 pdgId))
102 m_dec.decorateParticle("MC_Hdecay1_decay1_afterFSR", v, pdgId);
103 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay1Decay2_afterFSR", v,
104 pdgId))
105 m_dec.decorateParticle("MC_Hdecay1_decay2_afterFSR", v, pdgId);
106 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2Decay1_afterFSR", v,
107 pdgId))
108 m_dec.decorateParticle("MC_Hdecay2_decay1_afterFSR", v, pdgId);
109 if (RetrieveParticleInfo(m_prefix + "_" + "MC_HDecay2Decay2_afterFSR", v,
110 pdgId))
111 m_dec.decorateParticle("MC_Hdecay2_decay2_afterFSR", v, pdgId);
112 } else if (mode == "single_top") {
113 // FillGenericPartonHistory retrieval strings are bare suffixes.
115 {"MC_H_beforeFSR", "MC_b_H_beforeFSR", "MC_bbar_H_beforeFSR"},
116 "MC_H_beforeFSR", 0);
117 FillGenericPartonHistory({"MC_HDecay1_beforeFSR", "MC_b_HDecay1_beforeFSR",
118 "MC_bbar_HDecay1_beforeFSR"},
119 "MC_Hdecay1_beforeFSR", 0);
120 FillGenericPartonHistory({"MC_HDecay2_beforeFSR", "MC_b_HDecay2_beforeFSR",
121 "MC_bbar_HDecay2_beforeFSR"},
122 "MC_Hdecay2_beforeFSR", 0);
124 {"MC_HDecay1Decay1_beforeFSR", "MC_b_HDecay1Decay1_beforeFSR",
125 "MC_bbar_HDecay1Decay1_beforeFSR"},
126 "MC_Hdecay1_decay1_beforeFSR", 0);
128 {"MC_HDecay1Decay2_beforeFSR", "MC_b_HDecay1Decay2_beforeFSR",
129 "MC_bbar_HDecay1Decay2_beforeFSR"},
130 "MC_Hdecay1_decay2_beforeFSR", 0);
132 {"MC_HDecay2Decay1_beforeFSR", "MC_b_HDecay2Decay1_beforeFSR",
133 "MC_bbar_HDecay2Decay1_beforeFSR"},
134 "MC_Hdecay2_decay1_beforeFSR", 0);
136 {"MC_HDecay2Decay2_beforeFSR", "MC_b_HDecay2Decay2_beforeFSR",
137 "MC_bbar_HDecay2Decay2_beforeFSR"},
138 "MC_Hdecay2_decay2_beforeFSR", 0);
140 {"MC_H_afterFSR", "MC_b_H_afterFSR", "MC_bbar_H_afterFSR"},
141 "MC_H_afterFSR", 0);
142 FillGenericPartonHistory({"MC_HDecay1_afterFSR", "MC_b_HDecay1_afterFSR",
143 "MC_bbar_HDecay1_afterFSR"},
144 "MC_Hdecay1_afterFSR", 0);
145 FillGenericPartonHistory({"MC_HDecay2_afterFSR", "MC_b_HDecay2_afterFSR",
146 "MC_bbar_HDecay2_afterFSR"},
147 "MC_Hdecay2_afterFSR", 0);
149 {"MC_HDecay1Decay1_afterFSR", "MC_b_HDecay1Decay1_afterFSR",
150 "MC_bbar_HDecay1Decay1_afterFSR"},
151 "MC_Hdecay1_decay1_afterFSR", 0);
153 {"MC_HDecay1Decay2_afterFSR", "MC_b_HDecay1Decay2_afterFSR",
154 "MC_bbar_HDecay1Decay2_afterFSR"},
155 "MC_Hdecay1_decay2_afterFSR", 0);
157 {"MC_HDecay2Decay1_afterFSR", "MC_b_HDecay2Decay1_afterFSR",
158 "MC_bbar_HDecay2Decay1_afterFSR"},
159 "MC_Hdecay2_decay1_afterFSR", 0);
161 {"MC_HDecay2Decay2_afterFSR", "MC_b_HDecay2Decay2_afterFSR",
162 "MC_bbar_HDecay2Decay2_afterFSR"},
163 "MC_Hdecay2_decay2_afterFSR", 0);
164 } else if (mode == "non_resonant_WW") {
165 setHiggs("beforeFSR");
166 setHiggs("afterFSR");
167 }
168}
169} // namespace CP
#define H(x, y, z)
Definition MD5.cxx:114
bool RetrieveParticleInfo(const std::string &prefix, std::vector< const xAOD::TruthParticle * > &particles)
void FillHiggsPartonHistory(const std::string &mode)
bool getW(const std::string &str_lep, const std::string &str_nu, PtEtaPhiMVector &p1, int &pdgId1, PtEtaPhiMVector &p2, int &pdgId2)
std::string m_prefix
prefix applied to all decorator and m_particleMap names
void FillGenericPartonHistory(const std::string &retrievalstring, const std::string &decorationstring, const int idx)
void setHiggs(const std::string &fsr)
Select isolated Photons, Electrons and Muons.