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 python/PartonHistoryConfig.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) 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 // ------------------------------------------------------------------ //
141 // TtbarFCNC: t -> q X, X -> decay1 decay2
142 // ------------------------------------------------------------------ //
143 {"TtbarFCNC",
144 {{"TruthTop"},
146 {},
147 {
151 },
152 {},
153 {}}},
154
155 // ------------------------------------------------------------------ //
156 // Ttbarbbbar
157 // ------------------------------------------------------------------ //
158 {"Ttbarbbbar",
159 {{"TruthTop", "TruthBottom"},
163 {},
164 {
168 },
169 {
170 {{"MC_b_beforeFSR"}, "MC_b_beforeFSR", 0, true},
171 {{"MC_bbar_beforeFSR"}, "MC_bbar_beforeFSR", 0, true},
172 {{"MC_b_afterFSR"}, "MC_b_afterFSR", 0, true},
173 {{"MC_bbar_afterFSR"}, "MC_bbar_afterFSR", 0, true},
174 },
175 {}}},
176
177 // ------------------------------------------------------------------ //
178 // Ttbarccbar
179 // ------------------------------------------------------------------ //
180 {"Ttbarccbar",
181 {{"TruthTop", "TruthCharm"},
185 {},
186 {
190 },
191 {
192 {{"MC_c_beforeFSR"}, "MC_c_beforeFSR", 0, true},
193 {{"MC_cbar_beforeFSR"}, "MC_cbar_beforeFSR", 0, true},
194 {{"MC_c_afterFSR"}, "MC_c_afterFSR", 0, true},
195 {{"MC_cbar_afterFSR"}, "MC_cbar_afterFSR", 0, true},
196 },
197 {}}},
198
199 // ------------------------------------------------------------------ //
200 // Ttz
201 // ------------------------------------------------------------------ //
202 {"Ttz",
203 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthElectrons",
204 "TruthMuons", "TruthTaus"},
206 {{DecoratorZW::Z, 1, false}},
207 {
211 {SpecialFillType::Z, "", "resonant", 1},
212 },
213 {},
214 {}}},
215
216 // ------------------------------------------------------------------ //
217 // Ttw
218 // ------------------------------------------------------------------ //
219 {"Ttw",
220 {{"TruthTop", "TruthBosonsWithDecayParticles"},
222 {{DecoratorZW::W, 1}},
223 {
227 // Associated W (either charge: both map to the MC_W_* keys)
228 {SpecialFillType::W, "", "resonant", 1},
229 },
230 {},
231 {}}},
232
233 // ------------------------------------------------------------------ //
234 // Tth
235 // ------------------------------------------------------------------ //
236 {"Tth",
237 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
240 {},
241 {
245 {SpecialFillType::Higgs, "", "resonant"},
246 },
247 {},
248 {}}},
249
250 // ------------------------------------------------------------------ //
251 // Ttgamma
252 // ------------------------------------------------------------------ //
253 {"Ttgamma",
254 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons"},
257 {},
258 {
263 },
264 {},
265 {}}},
266
267 // ------------------------------------------------------------------ //
268 // Tq
269 // ------------------------------------------------------------------ //
270 {"Tq",
271 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
273 {},
274 {},
275 {
276 // Top (flavour-agnostic)
277 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
278 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
279 "MC_b_beforeFSR_from_t",
280 0},
281 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
282 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
283 "MC_b_afterFSR_from_t",
284 0},
285 // W from top
286 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
287 "MC_W_beforeFSR_from_t",
288 0},
289 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
290 "MC_W_afterFSR_from_t",
291 0},
292 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
293 "MC_Wdecay1_beforeFSR_from_t",
294 0},
295 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
296 "MC_Wdecay1_afterFSR_from_t",
297 0},
298 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
299 "MC_Wdecay2_beforeFSR_from_t",
300 0},
301 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
302 "MC_Wdecay2_afterFSR_from_t",
303 0},
304 // Spectator b
305 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
306 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
307 },
308 {}}},
309
310 // ------------------------------------------------------------------ //
311 // Tzq
312 // ------------------------------------------------------------------ //
313 {"Tzq",
314 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
316 {{DecoratorZW::Z, 1, false}},
317 {
318 {SpecialFillType::Z, "", "resonant", 1},
319 },
320 {
321 // Top (flavour-agnostic: try t then tbar)
322 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
323 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
324 "MC_b_beforeFSR_from_t",
325 0},
326 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
327 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
328 "MC_b_afterFSR_from_t",
329 0},
330 // W from top
331 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
332 "MC_W_beforeFSR_from_t",
333 0},
334 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
335 "MC_W_afterFSR_from_t",
336 0},
337 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
338 "MC_Wdecay1_beforeFSR_from_t",
339 0},
340 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
341 "MC_Wdecay1_afterFSR_from_t",
342 0},
343 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
344 "MC_Wdecay2_beforeFSR_from_t",
345 0},
346 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
347 "MC_Wdecay2_afterFSR_from_t",
348 0},
349 // Spectator b (flavour-agnostic)
350 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
351 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
352 },
353 {}}},
354
355 // ------------------------------------------------------------------ //
356 // Thq
357 // ------------------------------------------------------------------ //
358 {"Thq",
359 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
361 {{DecoratorZW::W, 1}},
362 {
363 {SpecialFillType::Higgs, "", "single_top"},
364 },
365 {
366 // Top — 4-key alternatives (b-initiated chains)
367 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
368 "MC_bbar_tbar_beforeFSR"},
369 "MC_t_beforeFSR",
370 0},
371 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
372 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
373 "MC_b_beforeFSR_from_t",
374 0},
375 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR", "MC_b_t_W_beforeFSR",
376 "MC_bbar_tbar_W_beforeFSR"},
377 "MC_W_beforeFSR_from_t",
378 0},
379 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR",
380 "MC_b_t_WDecay1_beforeFSR", "MC_bbar_tbar_WDecay1_beforeFSR"},
381 "MC_Wdecay1_beforeFSR_from_t",
382 0},
383 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR",
384 "MC_b_t_WDecay2_beforeFSR", "MC_bbar_tbar_WDecay2_beforeFSR"},
385 "MC_Wdecay2_beforeFSR_from_t",
386 0},
387 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
388 "MC_bbar_tbar_afterFSR"},
389 "MC_t_afterFSR",
390 0},
391 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
392 "MC_bbar_tbar_bbar_afterFSR"},
393 "MC_b_afterFSR_from_t",
394 0},
395 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR", "MC_b_t_W_afterFSR",
396 "MC_bbar_tbar_W_afterFSR"},
397 "MC_W_afterFSR_from_t",
398 0},
399 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR",
400 "MC_b_t_WDecay1_afterFSR", "MC_bbar_tbar_WDecay1_afterFSR"},
401 "MC_Wdecay1_afterFSR_from_t",
402 0},
403 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR",
404 "MC_b_t_WDecay2_afterFSR", "MC_bbar_tbar_WDecay2_afterFSR"},
405 "MC_Wdecay2_afterFSR_from_t",
406 0},
407 // Spectator b
408 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
409 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
410 // W from b-initiated chains or standalone
411 {{"MC_b_W_beforeFSR", "MC_bbar_W_beforeFSR", "MC_W_beforeFSR"},
412 "MC_W_beforeFSR",
413 0},
414 {{"MC_b_W_afterFSR", "MC_bbar_W_afterFSR", "MC_W_afterFSR"},
415 "MC_W_afterFSR",
416 0},
417 {{"MC_b_WDecay1_beforeFSR", "MC_bbar_WDecay1_beforeFSR",
418 "MC_WDecay1_beforeFSR"},
419 "MC_Wdecay1_beforeFSR",
420 0},
421 {{"MC_b_WDecay2_beforeFSR", "MC_bbar_WDecay2_beforeFSR",
422 "MC_WDecay2_beforeFSR"},
423 "MC_Wdecay2_beforeFSR",
424 0},
425 {{"MC_b_WDecay1_afterFSR", "MC_bbar_WDecay1_afterFSR",
426 "MC_WDecay1_afterFSR"},
427 "MC_Wdecay1_afterFSR",
428 0},
429 {{"MC_b_WDecay2_afterFSR", "MC_bbar_WDecay2_afterFSR",
430 "MC_WDecay2_afterFSR"},
431 "MC_Wdecay2_afterFSR",
432 0},
433 },
434 {
435 {{"MC_b_W_beforeFSR", "MC_bbar_W_beforeFSR", "MC_W_beforeFSR"},
436 "MC_W_IsOnShell"},
437 }}},
438
439 // ------------------------------------------------------------------ //
440 // Tqgamma
441 // ------------------------------------------------------------------ //
442 {"Tqgamma",
443 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons",
444 "TruthBottom"},
446 {},
447 {
449 },
450 {
451 // Top (flavour-agnostic)
452 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
453 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
454 "MC_b_beforeFSR_from_t",
455 0},
456 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
457 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
458 "MC_b_afterFSR_from_t",
459 0},
460 // W from top
461 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
462 "MC_W_beforeFSR_from_t",
463 0},
464 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
465 "MC_W_afterFSR_from_t",
466 0},
467 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
468 "MC_Wdecay1_beforeFSR_from_t",
469 0},
470 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
471 "MC_Wdecay1_afterFSR_from_t",
472 0},
473 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
474 "MC_Wdecay2_beforeFSR_from_t",
475 0},
476 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
477 "MC_Wdecay2_afterFSR_from_t",
478 0},
479 // Spectator b
480 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
481 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
482 },
483 {}}},
484
485 // ------------------------------------------------------------------ //
486 // Wtb
487 // ------------------------------------------------------------------ //
488 {"Wtb",
489 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
491 {{DecoratorZW::W, 1}},
492 {
493 // Spectator W (associated, not from top decay)
494 {SpecialFillType::W, "", "resonant", 1},
495 },
496 {
497 // Top — 4-key alternatives
498 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
499 "MC_bbar_tbar_beforeFSR"},
500 "MC_t_beforeFSR",
501 0},
502 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
503 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
504 "MC_b_beforeFSR_from_t",
505 0},
506 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR",
507 "MC_b_t_W_beforeFSR", "MC_bbar_tbar_W_beforeFSR"},
508 "MC_W_beforeFSR_from_t",
509 0},
510 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR",
511 "MC_b_t_WDecay1_beforeFSR", "MC_bbar_tbar_WDecay1_beforeFSR"},
512 "MC_Wdecay1_beforeFSR_from_t",
513 0},
514 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR",
515 "MC_b_t_WDecay2_beforeFSR", "MC_bbar_tbar_WDecay2_beforeFSR"},
516 "MC_Wdecay2_beforeFSR_from_t",
517 0},
518 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
519 "MC_bbar_tbar_afterFSR"},
520 "MC_t_afterFSR",
521 0},
522 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
523 "MC_bbar_tbar_bbar_afterFSR"},
524 "MC_b_afterFSR_from_t",
525 0},
526 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR", "MC_b_t_W_afterFSR",
527 "MC_bbar_tbar_W_afterFSR"},
528 "MC_W_afterFSR_from_t",
529 0},
530 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR",
531 "MC_b_t_WDecay1_afterFSR", "MC_bbar_tbar_WDecay1_afterFSR"},
532 "MC_Wdecay1_afterFSR_from_t",
533 0},
534 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR",
535 "MC_b_t_WDecay2_afterFSR", "MC_bbar_tbar_WDecay2_afterFSR"},
536 "MC_Wdecay2_afterFSR_from_t",
537 0},
538 // Spectator b
539 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
540 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
541 },
542 {}}},
543
544 // ------------------------------------------------------------------ //
545 // FourTop
546 // ------------------------------------------------------------------ //
547 {"FourTop",
548 {{"TruthTop"},
550 {},
551 {}, // no special fills
552 {
553 // Top 1 (idx=0)
554 {{"MC_t_beforeFSR"}, "MC_t1_beforeFSR", 0},
555 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t1", 0},
556 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t1", 0},
557 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t1", 0},
558 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t1", 0},
559 {{"MC_t_afterFSR"}, "MC_t1_afterFSR", 0},
560 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t1", 0},
561 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t1", 0},
562 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t1", 0},
563 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t1", 0},
564 // Top 2 (idx=1)
565 {{"MC_t_beforeFSR"}, "MC_t2_beforeFSR", 1},
566 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t2", 1},
567 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t2", 1},
568 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t2", 1},
569 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t2", 1},
570 {{"MC_t_afterFSR"}, "MC_t2_afterFSR", 1},
571 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t2", 1},
572 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t2", 1},
573 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t2", 1},
574 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t2", 1},
575 // AntiTop 1 (idx=0)
576 {{"MC_tbar_beforeFSR"}, "MC_tbar1_beforeFSR", 0},
577 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar1", 0},
578 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar1", 0},
579 {{"MC_tbar_WDecay1_beforeFSR"},
580 "MC_Wdecay1_beforeFSR_from_tbar1",
581 0},
582 {{"MC_tbar_WDecay2_beforeFSR"},
583 "MC_Wdecay2_beforeFSR_from_tbar1",
584 0},
585 {{"MC_tbar_afterFSR"}, "MC_tbar1_afterFSR", 0},
586 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar1", 0},
587 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar1", 0},
588 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar1", 0},
589 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar1", 0},
590 // AntiTop 2 (idx=1)
591 {{"MC_tbar_beforeFSR"}, "MC_tbar2_beforeFSR", 1},
592 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar2", 1},
593 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar2", 1},
594 {{"MC_tbar_WDecay1_beforeFSR"},
595 "MC_Wdecay1_beforeFSR_from_tbar2",
596 1},
597 {{"MC_tbar_WDecay2_beforeFSR"},
598 "MC_Wdecay2_beforeFSR_from_tbar2",
599 1},
600 {{"MC_tbar_afterFSR"}, "MC_tbar2_afterFSR", 1},
601 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar2", 1},
602 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar2", 1},
603 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar2", 1},
604 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar2", 1},
605 },
606 {}}},
607
608 // ------------------------------------------------------------------ //
609 // WW_nonresonant
610 // NOTE: the truthCollections list of this scheme has not been validated
611 // ------------------------------------------------------------------ //
612 {"WW_nonresonant",
613 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
614 "TruthTaus", "TruthNeutrinos"},
615 {},
616 {{DecoratorZW::W, 2}},
617 {
618 {SpecialFillType::W, "", "non_resonant", 2},
619 },
620 {},
621 {}}},
622
623 // ------------------------------------------------------------------ //
624 // HWW
625 // NOTE: the truthCollections list of this scheme has not been validated
626 // ------------------------------------------------------------------ //
627 {"HWW",
628 {{"TruthBosonsWithDecayParticles"},
630 {},
631 {
632 {SpecialFillType::Higgs, "", "resonant"},
633 },
634 {},
635 {}}},
636
637 // ------------------------------------------------------------------ //
638 // HWW_nonresonant
639 // ------------------------------------------------------------------ //
640 {"HWW_nonresonant",
641 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
642 "TruthTaus", "TruthNeutrinos"},
644 {},
645 {
646 {SpecialFillType::Higgs, "", "non_resonant_WW"},
647 },
648 {},
649 {}}},
650
651 // ------------------------------------------------------------------ //
652 // HZZ
653 // NOTE: the truthCollections list of this scheme has not been validated
654 // ------------------------------------------------------------------ //
655 {"HZZ",
656 {{"TruthBosonsWithDecayParticles"},
658 {},
659 {
660 {SpecialFillType::Higgs, "", "resonant"},
661 },
662 {},
663 {}}},
664
665 // ------------------------------------------------------------------ //
666 // Zb
667 // NOTE: idx=2 and idx=1 reproduce the original code exactly
668 // ------------------------------------------------------------------ //
669 {"Zb",
670 {{"TruthBosonsWithDecayParticles", "TruthBottom", "TruthMuons",
671 "TruthElectrons"},
673 {{DecoratorZW::Z, 1, false}},
674 {
675 {SpecialFillType::Z, "", "resonant", 1},
676 },
677 {
678 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 2},
679 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 1},
680 {{"MC_bbar_beforeFSR"}, "MC_bbar_beforeFSR", 0},
681 {{"MC_bbar_afterFSR"}, "MC_bbar_afterFSR", 0},
682 },
683 {}}},
684
685 // ------------------------------------------------------------------ //
686 // Ztautau
687 // ------------------------------------------------------------------ //
688 {"Ztautau",
689 {{"TruthBosonsWithDecayParticles", "TruthTaus", "TruthNeutrinos"},
690 {},
691 {{DecoratorZW::Z, 1, true}}, // extended=true for tau decay products
692 {
693 {SpecialFillType::Ztautau, "", "non_resonant", 1},
694 },
695 {},
696 {}}},
697
698 }; // end registry
699
700 auto it = registry.find(schemeName);
701 if (it == registry.end()) {
702 throw std::runtime_error("Unknown parton scheme: " + schemeName);
703 }
704 return it->second;
705}
706
707} // namespace CP
Select isolated Photons, Electrons and Muons.
@ TopFCNC
FillTopPartonHistory(true).
@ Z
FillZPartonHistory.
@ AntiTopFCNC
FillAntiTopPartonHistory(true).
@ Ttbar
FillTtbarPartonHistory.
@ W
FillWPartonHistory.
@ Ztautau
FillZtautauPartonHistory.
@ Higgs
FillHiggsPartonHistory.
@ Top
FillTopPartonHistory.
@ AntiTop
FillAntiTopPartonHistory.
@ Gamma
FillGammaPartonHistory.
const PartonSchemeConfig & getSchemeConfig(const std::string &schemeName)
Returns the configuration for a given scheme name.
@ TopFCNC
InitializeTopDecorators(true).
@ FourTop
Initialize4TopDecorators().
@ VectorAntiBottom
InitializeVectorAntiBottomDecorators().
@ VectorAntiCharm
InitializeVectorAntiCharmDecorators().
@ Bottom
InitializeBottomDecorators().
@ AntiTopFCNC
InitializeAntiTopDecorators(true).
@ VectorBottom
InitializeVectorBottomDecorators().
@ Ttbar
InitializeTtbarDecorators().
@ VectorCharm
InitializeVectorCharmDecorators().
@ Higgs
InitializeHiggsDecorators().
@ Top
InitializeTopDecorators().
@ AntiBottom
InitializeAntiBottomDecorators().
@ AntiTop
InitializeAntiTopDecorators().
@ Photon
InitializePhotonDecorators().
enum CP::DecoratorZW::Type Z
Top-level configuration for a named parton history scheme.