ATLAS Offline Software
Loading...
Searching...
No Matches
PartonSchemeConfig.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6
8
9#include <map>
10#include <stdexcept>
11
12namespace CP {
13
14const PartonSchemeConfig& getSchemeConfig(const std::string& schemeName) {
15
16 static const std::map<std::string, PartonSchemeConfig> registry = {
17
18 // ================================================================== //
19 // HOW TO ADD A NEW PARTON HISTORY SCHEME
20 // ================================================================== //
21 //
22 // Copy the template below, uncomment it, fill in the fields, and add
23 // a corresponding entry to truth_branches{} in truthConfig.py.
24 //
25 // {"MySchemeName", {
26 //
27 // // 1. truthCollections — which xAOD truth containers to merge into
28 // // the working TruthParticleContainer for this event.
29 // // Standard containers available in DAOD_PHYS:
30 // // "TruthTop" top quarks
31 // // "TruthBottom" b quarks
32 // // "TruthCharm" c quarks
33 // // "TruthBosonsWithDecayParticles" W/Z/H with decay products
34 // // "TruthElectrons" electrons
35 // // "TruthMuons" muons
36 // // "TruthTaus" taus
37 // // "TruthNeutrinos" neutrinos
38 // // "TruthPhotons" photons
39 // // Add only what your process actually needs; extra collections
40 // // slow down the container-building step.
41 // {"TruthTop", "TruthBosonsWithDecayParticles"},
42 //
43 // // 2. decoratorGroups — which sets of EventInfo decorators to
44 // // initialise (one Initialize*Decorators() call each).
45 // // Available groups (see PartonHistoryDecorators.cxx):
46 // // DecoratorGroup::Top MC_t_*
47 // // DecoratorGroup::AntiTop MC_tbar_*
48 // // DecoratorGroup::FourTop MC_t1/t2/tbar1/tbar2_*
49 // // DecoratorGroup::Ttbar MC_ttbar_*
50 // // DecoratorGroup::Bottom MC_b_* (scalar)
51 // // DecoratorGroup::AntiBottom MC_bbar_* (scalar)
52 // // DecoratorGroup::VectorBottom MC_b_* (vector)
53 // // DecoratorGroup::VectorAntiBottom MC_bbar_* (vector)
54 // // DecoratorGroup::Charm MC_c_* (scalar)
55 // // DecoratorGroup::AntiCharm MC_cbar_* (scalar)
56 // // DecoratorGroup::VectorCharm MC_c_* (vector)
57 // // DecoratorGroup::VectorAntiCharm MC_cbar_* (vector)
58 // // DecoratorGroup::Photon MC_gamma_*
59 // // DecoratorGroup::Higgs MC_H_*, MC_Hdecay{1,2}_*
60 // {DecoratorGroup::Top, DecoratorGroup::AntiTop,
61 // DecoratorGroup::Ttbar},
62 //
63 // // 3. decoratorZWs — parameterised Z/W decorator groups.
64 // // Each entry is a DecoratorZW with fields:
65 // // type : DecoratorZW::Z or DecoratorZW::W
66 // // count : number of bosons (1 or 2)
67 // // extended: (Z only) true to also initialise tau-decay
68 // // sub-products (MC_Zdecay1_decay{1,2,3}_*)
69 // // Leave the list empty ({}) if no Z/W decorators are needed.
70 // {{DecoratorZW::Z, 1, false}},
71 //
72 // // 4. specialFills — calls to dedicated Fill*PartonHistory methods,
73 // // executed in order. Each entry is a SpecialFillOp with fields:
74 // // type :
75 // SpecialFillType::{Top,AntiTop,Ttbar,Z,Ztautau,W,Higgs,Gamma}
76 // // parent: (Z/W/Gamma) parent particle string, e.g. "t", "tbar",
77 // // or "" for a standalone boson
78 // // mode : (Z/W/H) "resonant" — boson present in truth
79 // record
80 // // "non_resonant" — reconstruct from decay
81 // products
82 // // "non_resonant_WW" — H→WW off-shell (Higgs
83 // only)
84 // // "single_top" — H in single-top context
85 // // count : (Z/W) number of bosons to reconstruct (default 1)
86 // // Leave the list empty ({}) if all filling is done via
87 // genericFills.
88 // {
89 // {SpecialFillType::Top},
90 // {SpecialFillType::AntiTop},
91 // {SpecialFillType::Ttbar},
92 // {SpecialFillType::Z, "", "resonant", 1},
93 // },
94 //
95 // // 5. genericFills — calls to FillGenericPartonHistory, executed
96 // after
97 // // all specialFills. Each entry is a GenericFillOp with fields:
98 // // retrievalKeys : list of m_particleMap keys to try in order
99 // // (first successful hit wins); keys are bare
100 // // suffixes — the scheme prefix is prepended
101 // // automatically, e.g. "MC_t_beforeFSR" becomes
102 // // "MySchemeName_MC_t_beforeFSR" at runtime.
103 // // Common key patterns built by TraceParticles:
104 // // MC_{particle}_beforeFSR / _afterFSR
105 // // MC_{parent}_{particle}_{fsr}
106 // // MC_{particle}Decay{1,2}_{fsr} (W/Z/H
107 // daughters)
108 // // decorationKey : bare output branch name written to EventInfo
109 // // (prefix is prepended automatically).
110 // // idx : occurrence index into the m_particleMap vector,
111 // // for processes with multiple identical
112 // particles
113 // // (e.g. idx=0 for first top, idx=1 for second).
114 // // isVector : true → use FillGenericVectorPartonHistory,
115 // // which writes a std::vector<float/int> branch
116 // // collecting all entries in the map key.
117 // {
118 // {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
119 // {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
120 // }
121 //
122 // }},
123 // ================================================================== //
124
125 // ------------------------------------------------------------------ //
126 // Ttbar
127 // ------------------------------------------------------------------ //
128 {"Ttbar",
129 {{"TruthTop"},
131 {},
132 {
136 },
137 {}}},
138
139 // ------------------------------------------------------------------ //
140 // Ttbarbbbar
141 // ------------------------------------------------------------------ //
142 {"Ttbarbbbar",
143 {{"TruthTop", "TruthBottom"},
147 {},
148 {
152 },
153 {
154 {{"MC_b_beforeFSR"}, "MC_b_beforeFSR", 0, true},
155 {{"MC_bbar_beforeFSR"}, "MC_bbar_beforeFSR", 0, true},
156 {{"MC_b_afterFSR"}, "MC_b_afterFSR", 0, true},
157 {{"MC_bbar_afterFSR"}, "MC_bbar_afterFSR", 0, true},
158 }}},
159
160 // ------------------------------------------------------------------ //
161 // Ttbarccbar
162 // ------------------------------------------------------------------ //
163 {"Ttbarccbar",
164 {{"TruthTop", "TruthCharm"},
168 {},
169 {
173 },
174 {
175 {{"MC_c_beforeFSR"}, "MC_c_beforeFSR", 0, true},
176 {{"MC_cbar_beforeFSR"}, "MC_cbar_beforeFSR", 0, true},
177 {{"MC_c_afterFSR"}, "MC_c_afterFSR", 0, true},
178 {{"MC_cbar_afterFSR"}, "MC_cbar_afterFSR", 0, true},
179 }}},
180
181 // ------------------------------------------------------------------ //
182 // Ttz
183 // ------------------------------------------------------------------ //
184 {"Ttz",
185 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthElectrons",
186 "TruthMuons", "TruthTaus"},
188 {{DecoratorZW::Z, 1, false}},
189 {
193 {SpecialFillType::Z, "", "resonant", 1},
194 },
195 {}}},
196
197 // ------------------------------------------------------------------ //
198 // Ttw
199 // ------------------------------------------------------------------ //
200 {"Ttw",
201 {{"TruthTop", "TruthBosonsWithDecayParticles"},
203 {{DecoratorZW::W, 1}},
204 {
208 },
209 {
210 // Associated W (charge-ambiguous: try W- then W+)
211 {{"MC_Wm_beforeFSR", "MC_Wp_beforeFSR"}, "MC_W_beforeFSR", 0},
212 {{"MC_WmDecay1_beforeFSR", "MC_WpDecay1_beforeFSR"},
213 "MC_Wdecay1_beforeFSR",
214 0},
215 {{"MC_WmDecay2_beforeFSR", "MC_WpDecay2_beforeFSR"},
216 "MC_Wdecay2_beforeFSR",
217 0},
218 {{"MC_Wm_afterFSR", "MC_Wp_afterFSR"}, "MC_W_afterFSR", 0},
219 {{"MC_WmDecay1_afterFSR", "MC_WpDecay1_afterFSR"},
220 "MC_Wdecay1_afterFSR",
221 0},
222 {{"MC_WmDecay2_afterFSR", "MC_WpDecay2_afterFSR"},
223 "MC_Wdecay2_afterFSR",
224 0},
225 }}},
226
227 // ------------------------------------------------------------------ //
228 // Tth
229 // ------------------------------------------------------------------ //
230 {"Tth",
231 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
234 {},
235 {
239 {SpecialFillType::Higgs, "", "resonant"},
240 },
241 {}}},
242
243 // ------------------------------------------------------------------ //
244 // Ttgamma
245 // ------------------------------------------------------------------ //
246 {"Ttgamma",
247 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons"},
250 {},
251 {
256 },
257 {}}},
258
259 // ------------------------------------------------------------------ //
260 // Tzq
261 // ------------------------------------------------------------------ //
262 {"Tzq",
263 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
265 {{DecoratorZW::Z, 1, false}},
266 {
267 {SpecialFillType::Z, "", "resonant", 1},
268 },
269 {
270 // Top (flavour-agnostic: try t then tbar)
271 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
272 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
273 "MC_b_beforeFSR_from_t",
274 0},
275 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
276 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
277 "MC_b_afterFSR_from_t",
278 0},
279 // W from top
280 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
281 "MC_W_beforeFSR_from_t",
282 0},
283 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
284 "MC_W_afterFSR_from_t",
285 0},
286 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
287 "MC_Wdecay1_beforeFSR_from_t",
288 0},
289 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
290 "MC_Wdecay1_afterFSR_from_t",
291 0},
292 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
293 "MC_Wdecay2_beforeFSR_from_t",
294 0},
295 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
296 "MC_Wdecay2_afterFSR_from_t",
297 0},
298 // Spectator b (flavour-agnostic)
299 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
300 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
301 }}},
302
303 // ------------------------------------------------------------------ //
304 // Thq
305 // ------------------------------------------------------------------ //
306 {"Thq",
307 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
309 {{DecoratorZW::W, 1}},
310 {
311 {SpecialFillType::Higgs, "", "single_top"},
312 },
313 {
314 // Top — 4-key alternatives (b-initiated chains)
315 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
316 "MC_bbar_tbar_beforeFSR"},
317 "MC_t_beforeFSR",
318 0},
319 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
320 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
321 "MC_b_beforeFSR_from_t",
322 0},
323 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR", "MC_b_t_W_beforeFSR",
324 "MC_bbar_tbar_W_beforeFSR"},
325 "MC_W_beforeFSR_from_t",
326 0},
327 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR",
328 "MC_b_t_WDecay1_beforeFSR", "MC_bbar_tbar_WDecay1_beforeFSR"},
329 "MC_Wdecay1_beforeFSR_from_t",
330 0},
331 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR",
332 "MC_b_t_WDecay2_beforeFSR", "MC_bbar_tbar_WDecay2_beforeFSR"},
333 "MC_Wdecay2_beforeFSR_from_t",
334 0},
335 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
336 "MC_bbar_tbar_afterFSR"},
337 "MC_t_afterFSR",
338 0},
339 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
340 "MC_bbar_tbar_bbar_afterFSR"},
341 "MC_b_afterFSR_from_t",
342 0},
343 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR", "MC_b_t_W_afterFSR",
344 "MC_bbar_tbar_W_afterFSR"},
345 "MC_W_afterFSR_from_t",
346 0},
347 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR",
348 "MC_b_t_WDecay1_afterFSR", "MC_bbar_tbar_WDecay1_afterFSR"},
349 "MC_Wdecay1_afterFSR_from_t",
350 0},
351 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR",
352 "MC_b_t_WDecay2_afterFSR", "MC_bbar_tbar_WDecay2_afterFSR"},
353 "MC_Wdecay2_afterFSR_from_t",
354 0},
355 // Spectator b
356 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
357 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
358 // W from b-initiated chains or standalone
359 {{"MC_b_W_beforeFSR", "MC_bbar_W_beforeFSR", "MC_W_beforeFSR"},
360 "MC_W_beforeFSR",
361 0},
362 {{"MC_b_W_afterFSR", "MC_bbar_W_afterFSR", "MC_W_afterFSR"},
363 "MC_W_afterFSR",
364 0},
365 {{"MC_b_WDecay1_beforeFSR", "MC_bbar_WDecay1_beforeFSR",
366 "MC_WDecay1_beforeFSR"},
367 "MC_Wdecay1_beforeFSR",
368 0},
369 {{"MC_b_WDecay2_beforeFSR", "MC_bbar_WDecay2_beforeFSR",
370 "MC_WDecay2_beforeFSR"},
371 "MC_Wdecay2_beforeFSR",
372 0},
373 {{"MC_b_WDecay1_afterFSR", "MC_bbar_WDecay1_afterFSR",
374 "MC_WDecay1_afterFSR"},
375 "MC_Wdecay1_afterFSR",
376 0},
377 {{"MC_b_WDecay2_afterFSR", "MC_bbar_WDecay2_afterFSR",
378 "MC_WDecay2_afterFSR"},
379 "MC_Wdecay2_afterFSR",
380 0},
381 }}},
382
383 // ------------------------------------------------------------------ //
384 // Tqgamma
385 // ------------------------------------------------------------------ //
386 {"Tqgamma",
387 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons",
388 "TruthBottom"},
390 {},
391 {
393 },
394 {
395 // Top (flavour-agnostic)
396 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
397 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
398 "MC_b_beforeFSR_from_t",
399 0},
400 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
401 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
402 "MC_b_afterFSR_from_t",
403 0},
404 // W from top
405 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
406 "MC_W_beforeFSR_from_t",
407 0},
408 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
409 "MC_W_afterFSR_from_t",
410 0},
411 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
412 "MC_Wdecay1_beforeFSR_from_t",
413 0},
414 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
415 "MC_Wdecay1_afterFSR_from_t",
416 0},
417 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
418 "MC_Wdecay2_beforeFSR_from_t",
419 0},
420 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
421 "MC_Wdecay2_afterFSR_from_t",
422 0},
423 // Spectator b
424 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
425 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
426 }}},
427
428 // ------------------------------------------------------------------ //
429 // Wtb
430 // ------------------------------------------------------------------ //
431 {"Wtb",
432 {{"TruthTop", "TruthBosonsWithDecayParticles"},
434 {{DecoratorZW::W, 1}},
435 {}, // no special fills
436 {
437 // Top — 4-key alternatives
438 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
439 "MC_bbar_tbar_beforeFSR"},
440 "MC_t_beforeFSR",
441 0},
442 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
443 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
444 "MC_b_beforeFSR_from_t",
445 0},
446 {{"MC_t_Wp_beforeFSR", "MC_tbar_Wm_beforeFSR",
447 "MC_b_t_Wp_beforeFSR", "MC_bbar_tbar_Wm_beforeFSR"},
448 "MC_W_beforeFSR_from_t",
449 0},
450 {{"MC_t_WpDecay1_beforeFSR", "MC_tbar_WmDecay1_beforeFSR",
451 "MC_b_t_WpDecay1_beforeFSR", "MC_bbar_tbar_WmDecay1_beforeFSR"},
452 "MC_Wdecay1_beforeFSR_from_t",
453 0},
454 {{"MC_t_WpDecay2_beforeFSR", "MC_tbar_WmDecay2_beforeFSR",
455 "MC_b_t_WpDecay2_beforeFSR", "MC_bbar_tbar_WmDecay2_beforeFSR"},
456 "MC_Wdecay2_beforeFSR_from_t",
457 0},
458 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
459 "MC_bbar_tbar_afterFSR"},
460 "MC_t_afterFSR",
461 0},
462 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
463 "MC_bbar_tbar_bbar_afterFSR"},
464 "MC_b_afterFSR_from_t",
465 0},
466 {{"MC_t_Wp_afterFSR", "MC_tbar_Wm_afterFSR", "MC_b_t_Wp_afterFSR",
467 "MC_bbar_tbar_Wm_afterFSR"},
468 "MC_W_afterFSR_from_t",
469 0},
470 {{"MC_t_WpDecay1_afterFSR", "MC_tbar_WmDecay1_afterFSR",
471 "MC_b_t_WpDecay1_afterFSR", "MC_bbar_tbar_WmDecay1_afterFSR"},
472 "MC_Wdecay1_afterFSR_from_t",
473 0},
474 {{"MC_t_WpDecay2_afterFSR", "MC_tbar_WmDecay2_afterFSR",
475 "MC_b_t_WpDecay2_afterFSR", "MC_bbar_tbar_WmDecay2_afterFSR"},
476 "MC_Wdecay2_afterFSR_from_t",
477 0},
478 // Spectator b
479 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
480 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
481 // Spectator W (associated, not from top decay)
482 {{"MC_Wp_beforeFSR", "MC_Wm_beforeFSR"}, "MC_W_beforeFSR", 0},
483 {{"MC_Wp_afterFSR", "MC_Wm_afterFSR"}, "MC_W_afterFSR", 0},
484 {{"MC_WpDecay1_beforeFSR", "MC_WmDecay1_beforeFSR"},
485 "MC_Wdecay1_beforeFSR",
486 0},
487 {{"MC_WpDecay2_beforeFSR", "MC_WmDecay2_beforeFSR"},
488 "MC_Wdecay2_beforeFSR",
489 0},
490 {{"MC_WpDecay1_afterFSR", "MC_WmDecay1_afterFSR"},
491 "MC_Wdecay1_afterFSR",
492 0},
493 {{"MC_WpDecay2_afterFSR", "MC_WmDecay2_afterFSR"},
494 "MC_Wdecay2_afterFSR",
495 0},
496 }}},
497
498 // ------------------------------------------------------------------ //
499 // FourTop
500 // ------------------------------------------------------------------ //
501 {"FourTop",
502 {{"TruthTop"},
504 {},
505 {}, // no special fills
506 {
507 // Top 1 (idx=0)
508 {{"MC_t_beforeFSR"}, "MC_t1_beforeFSR", 0},
509 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t1", 0},
510 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t1", 0},
511 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t1", 0},
512 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t1", 0},
513 {{"MC_t_afterFSR"}, "MC_t1_afterFSR", 0},
514 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t1", 0},
515 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t1", 0},
516 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t1", 0},
517 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t1", 0},
518 // Top 2 (idx=1)
519 {{"MC_t_beforeFSR"}, "MC_t2_beforeFSR", 1},
520 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t2", 1},
521 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t2", 1},
522 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t2", 1},
523 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t2", 1},
524 {{"MC_t_afterFSR"}, "MC_t2_afterFSR", 1},
525 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t2", 1},
526 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t2", 1},
527 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t2", 1},
528 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t2", 1},
529 // AntiTop 1 (idx=0)
530 {{"MC_tbar_beforeFSR"}, "MC_tbar1_beforeFSR", 0},
531 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar1", 0},
532 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar1", 0},
533 {{"MC_tbar_WDecay1_beforeFSR"},
534 "MC_Wdecay1_beforeFSR_from_tbar1",
535 0},
536 {{"MC_tbar_WDecay2_beforeFSR"},
537 "MC_Wdecay2_beforeFSR_from_tbar1",
538 0},
539 {{"MC_tbar_afterFSR"}, "MC_tbar1_afterFSR", 0},
540 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar1", 0},
541 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar1", 0},
542 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar1", 0},
543 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar1", 0},
544 // AntiTop 2 (idx=1)
545 {{"MC_tbar_beforeFSR"}, "MC_tbar2_beforeFSR", 1},
546 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar2", 1},
547 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar2", 1},
548 {{"MC_tbar_WDecay1_beforeFSR"},
549 "MC_Wdecay1_beforeFSR_from_tbar2",
550 1},
551 {{"MC_tbar_WDecay2_beforeFSR"},
552 "MC_Wdecay2_beforeFSR_from_tbar2",
553 1},
554 {{"MC_tbar_afterFSR"}, "MC_tbar2_afterFSR", 1},
555 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar2", 1},
556 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar2", 1},
557 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar2", 1},
558 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar2", 1},
559 }}},
560
561 // ------------------------------------------------------------------ //
562 // WW_nonresonant
563 // NOTE: truthCollections may need verification (see plan Known Issues)
564 // ------------------------------------------------------------------ //
565 {"WW_nonresonant",
566 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
567 "TruthTaus", "TruthNeutrinos"},
568 {},
569 {{DecoratorZW::W, 2}},
570 {
571 {SpecialFillType::W, "", "non_resonant", 2},
572 },
573 {}}},
574
575 // ------------------------------------------------------------------ //
576 // HWW
577 // NOTE: truthCollections may need verification (see plan Known Issues)
578 // ------------------------------------------------------------------ //
579 {"HWW",
580 {{"TruthBosonsWithDecayParticles"},
582 {},
583 {
584 {SpecialFillType::Higgs, "", "resonant"},
585 },
586 {}}},
587
588 // ------------------------------------------------------------------ //
589 // HWW_nonresonant
590 // ------------------------------------------------------------------ //
591 {"HWW_nonresonant",
592 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
593 "TruthTaus", "TruthNeutrinos"},
595 {},
596 {
597 {SpecialFillType::Higgs, "", "non_resonant_WW"},
598 },
599 {}}},
600
601 // ------------------------------------------------------------------ //
602 // HZZ
603 // NOTE: truthCollections may need verification (see plan Known Issues)
604 // ------------------------------------------------------------------ //
605 {"HZZ",
606 {{"TruthBosonsWithDecayParticles"},
608 {},
609 {
610 {SpecialFillType::Higgs, "", "resonant"},
611 },
612 {}}},
613
614 // ------------------------------------------------------------------ //
615 // Zb
616 // NOTE: idx=2 and idx=1 reproduce the original code exactly
617 // ------------------------------------------------------------------ //
618 {"Zb",
619 {{"TruthBosonsWithDecayParticles", "TruthBottom", "TruthMuons",
620 "TruthElectrons"},
622 {{DecoratorZW::Z, 1, false}},
623 {
624 {SpecialFillType::Z, "", "resonant", 1},
625 },
626 {
627 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 2},
628 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 1},
629 }}},
630
631 // ------------------------------------------------------------------ //
632 // Ztautau
633 // ------------------------------------------------------------------ //
634 {"Ztautau",
635 {{"TruthBosonsWithDecayParticles", "TruthTaus", "TruthNeutrinos"},
636 {},
637 {{DecoratorZW::Z, 1, true}}, // extended=true for tau decay products
638 {
639 {SpecialFillType::Ztautau, "", "non_resonant", 1},
640 },
641 {}}},
642
643 }; // end registry
644
645 auto it = registry.find(schemeName);
646 if (it == registry.end()) {
647 throw std::runtime_error("Unknown parton scheme: " + schemeName);
648 }
649 return it->second;
650}
651
652} // namespace CP
Select isolated Photons, Electrons and Muons.
@ Z
FillZPartonHistory(history, parent, dec, count, mode)
@ Ttbar
FillTtbarPartonHistory.
@ W
FillWPartonHistory(history, parent, dec, count, mode)
@ Ztautau
FillZtautauPartonHistory(history, parent, dec, count, mode)
@ Higgs
FillHiggsPartonHistory(history, mode, dec)
@ Top
FillTopPartonHistory.
@ AntiTop
FillAntiTopPartonHistory.
@ Gamma
FillGammaPartonHistory(history, parent, dec)
const PartonSchemeConfig & getSchemeConfig(const std::string &schemeName)
Returns the configuration for a given scheme name.
@ FourTop
Initialize4TopDecorators()
@ VectorAntiBottom
InitializeVectorAntiBottomDecorators()
@ VectorAntiCharm
InitializeVectorAntiCharmDecorators()
@ Bottom
InitializeBottomDecorators()
@ VectorBottom
InitializeVectorBottomDecorators()
@ Ttbar
InitializeTtbarDecorators()
@ VectorCharm
InitializeVectorCharmDecorators()
@ Higgs
InitializeHiggsDecorators()
@ Top
InitializeTopDecorators()
@ AntiBottom
InitializeAntiBottomDecorators()
@ AntiTop
InitializeAntiTopDecorators()
@ Photon
InitializePhotonDecorators()
Top-level configuration for a named parton history scheme.