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 // TtbarFCNC: t -> q X, X -> decay1 decay2
141 // ------------------------------------------------------------------ //
142 {"TtbarFCNC",
143 {{"TruthTop"},
145 {},
146 {
150 },
151 {}}},
152
153 // ------------------------------------------------------------------ //
154 // Ttbarbbbar
155 // ------------------------------------------------------------------ //
156 {"Ttbarbbbar",
157 {{"TruthTop", "TruthBottom"},
161 {},
162 {
166 },
167 {
168 {{"MC_b_beforeFSR"}, "MC_b_beforeFSR", 0, true},
169 {{"MC_bbar_beforeFSR"}, "MC_bbar_beforeFSR", 0, true},
170 {{"MC_b_afterFSR"}, "MC_b_afterFSR", 0, true},
171 {{"MC_bbar_afterFSR"}, "MC_bbar_afterFSR", 0, true},
172 }}},
173
174 // ------------------------------------------------------------------ //
175 // Ttbarccbar
176 // ------------------------------------------------------------------ //
177 {"Ttbarccbar",
178 {{"TruthTop", "TruthCharm"},
182 {},
183 {
187 },
188 {
189 {{"MC_c_beforeFSR"}, "MC_c_beforeFSR", 0, true},
190 {{"MC_cbar_beforeFSR"}, "MC_cbar_beforeFSR", 0, true},
191 {{"MC_c_afterFSR"}, "MC_c_afterFSR", 0, true},
192 {{"MC_cbar_afterFSR"}, "MC_cbar_afterFSR", 0, true},
193 }}},
194
195 // ------------------------------------------------------------------ //
196 // Ttz
197 // ------------------------------------------------------------------ //
198 {"Ttz",
199 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthElectrons",
200 "TruthMuons", "TruthTaus"},
202 {{DecoratorZW::Z, 1, false}},
203 {
207 {SpecialFillType::Z, "", "resonant", 1},
208 },
209 {}}},
210
211 // ------------------------------------------------------------------ //
212 // Ttw
213 // ------------------------------------------------------------------ //
214 {"Ttw",
215 {{"TruthTop", "TruthBosonsWithDecayParticles"},
217 {{DecoratorZW::W, 1}},
218 {
222 },
223 {
224 // Associated W (charge-ambiguous: try W- then W+)
225 {{"MC_Wm_beforeFSR", "MC_Wp_beforeFSR"}, "MC_W_beforeFSR", 0},
226 {{"MC_WmDecay1_beforeFSR", "MC_WpDecay1_beforeFSR"},
227 "MC_Wdecay1_beforeFSR",
228 0},
229 {{"MC_WmDecay2_beforeFSR", "MC_WpDecay2_beforeFSR"},
230 "MC_Wdecay2_beforeFSR",
231 0},
232 {{"MC_Wm_afterFSR", "MC_Wp_afterFSR"}, "MC_W_afterFSR", 0},
233 {{"MC_WmDecay1_afterFSR", "MC_WpDecay1_afterFSR"},
234 "MC_Wdecay1_afterFSR",
235 0},
236 {{"MC_WmDecay2_afterFSR", "MC_WpDecay2_afterFSR"},
237 "MC_Wdecay2_afterFSR",
238 0},
239 }}},
240
241 // ------------------------------------------------------------------ //
242 // Tth
243 // ------------------------------------------------------------------ //
244 {"Tth",
245 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
248 {},
249 {
253 {SpecialFillType::Higgs, "", "resonant"},
254 },
255 {}}},
256
257 // ------------------------------------------------------------------ //
258 // Ttgamma
259 // ------------------------------------------------------------------ //
260 {"Ttgamma",
261 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons"},
264 {},
265 {
270 },
271 {}}},
272
273 // ------------------------------------------------------------------ //
274 // Tzq
275 // ------------------------------------------------------------------ //
276 {"Tzq",
277 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
279 {{DecoratorZW::Z, 1, false}},
280 {
281 {SpecialFillType::Z, "", "resonant", 1},
282 },
283 {
284 // Top (flavour-agnostic: try t then tbar)
285 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
286 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
287 "MC_b_beforeFSR_from_t",
288 0},
289 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
290 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
291 "MC_b_afterFSR_from_t",
292 0},
293 // W from top
294 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
295 "MC_W_beforeFSR_from_t",
296 0},
297 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
298 "MC_W_afterFSR_from_t",
299 0},
300 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
301 "MC_Wdecay1_beforeFSR_from_t",
302 0},
303 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
304 "MC_Wdecay1_afterFSR_from_t",
305 0},
306 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
307 "MC_Wdecay2_beforeFSR_from_t",
308 0},
309 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
310 "MC_Wdecay2_afterFSR_from_t",
311 0},
312 // Spectator b (flavour-agnostic)
313 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
314 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
315 }}},
316
317 // ------------------------------------------------------------------ //
318 // Thq
319 // ------------------------------------------------------------------ //
320 {"Thq",
321 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
323 {{DecoratorZW::W, 1}},
324 {
325 {SpecialFillType::Higgs, "", "single_top"},
326 },
327 {
328 // Top — 4-key alternatives (b-initiated chains)
329 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
330 "MC_bbar_tbar_beforeFSR"},
331 "MC_t_beforeFSR",
332 0},
333 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
334 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
335 "MC_b_beforeFSR_from_t",
336 0},
337 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR", "MC_b_t_W_beforeFSR",
338 "MC_bbar_tbar_W_beforeFSR"},
339 "MC_W_beforeFSR_from_t",
340 0},
341 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR",
342 "MC_b_t_WDecay1_beforeFSR", "MC_bbar_tbar_WDecay1_beforeFSR"},
343 "MC_Wdecay1_beforeFSR_from_t",
344 0},
345 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR",
346 "MC_b_t_WDecay2_beforeFSR", "MC_bbar_tbar_WDecay2_beforeFSR"},
347 "MC_Wdecay2_beforeFSR_from_t",
348 0},
349 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
350 "MC_bbar_tbar_afterFSR"},
351 "MC_t_afterFSR",
352 0},
353 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
354 "MC_bbar_tbar_bbar_afterFSR"},
355 "MC_b_afterFSR_from_t",
356 0},
357 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR", "MC_b_t_W_afterFSR",
358 "MC_bbar_tbar_W_afterFSR"},
359 "MC_W_afterFSR_from_t",
360 0},
361 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR",
362 "MC_b_t_WDecay1_afterFSR", "MC_bbar_tbar_WDecay1_afterFSR"},
363 "MC_Wdecay1_afterFSR_from_t",
364 0},
365 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR",
366 "MC_b_t_WDecay2_afterFSR", "MC_bbar_tbar_WDecay2_afterFSR"},
367 "MC_Wdecay2_afterFSR_from_t",
368 0},
369 // Spectator b
370 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
371 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
372 // W from b-initiated chains or standalone
373 {{"MC_b_W_beforeFSR", "MC_bbar_W_beforeFSR", "MC_W_beforeFSR"},
374 "MC_W_beforeFSR",
375 0},
376 {{"MC_b_W_afterFSR", "MC_bbar_W_afterFSR", "MC_W_afterFSR"},
377 "MC_W_afterFSR",
378 0},
379 {{"MC_b_WDecay1_beforeFSR", "MC_bbar_WDecay1_beforeFSR",
380 "MC_WDecay1_beforeFSR"},
381 "MC_Wdecay1_beforeFSR",
382 0},
383 {{"MC_b_WDecay2_beforeFSR", "MC_bbar_WDecay2_beforeFSR",
384 "MC_WDecay2_beforeFSR"},
385 "MC_Wdecay2_beforeFSR",
386 0},
387 {{"MC_b_WDecay1_afterFSR", "MC_bbar_WDecay1_afterFSR",
388 "MC_WDecay1_afterFSR"},
389 "MC_Wdecay1_afterFSR",
390 0},
391 {{"MC_b_WDecay2_afterFSR", "MC_bbar_WDecay2_afterFSR",
392 "MC_WDecay2_afterFSR"},
393 "MC_Wdecay2_afterFSR",
394 0},
395 }}},
396
397 // ------------------------------------------------------------------ //
398 // Tqgamma
399 // ------------------------------------------------------------------ //
400 {"Tqgamma",
401 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthPhotons",
402 "TruthBottom"},
404 {},
405 {
407 },
408 {
409 // Top (flavour-agnostic)
410 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR"}, "MC_t_beforeFSR", 0},
411 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR"},
412 "MC_b_beforeFSR_from_t",
413 0},
414 {{"MC_t_afterFSR", "MC_tbar_afterFSR"}, "MC_t_afterFSR", 0},
415 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR"},
416 "MC_b_afterFSR_from_t",
417 0},
418 // W from top
419 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR"},
420 "MC_W_beforeFSR_from_t",
421 0},
422 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR"},
423 "MC_W_afterFSR_from_t",
424 0},
425 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR"},
426 "MC_Wdecay1_beforeFSR_from_t",
427 0},
428 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR"},
429 "MC_Wdecay1_afterFSR_from_t",
430 0},
431 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR"},
432 "MC_Wdecay2_beforeFSR_from_t",
433 0},
434 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR"},
435 "MC_Wdecay2_afterFSR_from_t",
436 0},
437 // Spectator b
438 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
439 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
440 }}},
441
442 // ------------------------------------------------------------------ //
443 // Wtb
444 // ------------------------------------------------------------------ //
445 {"Wtb",
446 {{"TruthTop", "TruthBosonsWithDecayParticles", "TruthBottom"},
448 {{DecoratorZW::W, 1}},
449 {}, // no special fills
450 {
451 // Top — 4-key alternatives
452 {{"MC_t_beforeFSR", "MC_tbar_beforeFSR", "MC_b_t_beforeFSR",
453 "MC_bbar_tbar_beforeFSR"},
454 "MC_t_beforeFSR",
455 0},
456 {{"MC_t_b_beforeFSR", "MC_tbar_bbar_beforeFSR",
457 "MC_b_t_b_beforeFSR", "MC_bbar_tbar_bbar_beforeFSR"},
458 "MC_b_beforeFSR_from_t",
459 0},
460 {{"MC_t_W_beforeFSR", "MC_tbar_W_beforeFSR",
461 "MC_b_t_W_beforeFSR", "MC_bbar_tbar_W_beforeFSR"},
462 "MC_W_beforeFSR_from_t",
463 0},
464 {{"MC_t_WDecay1_beforeFSR", "MC_tbar_WDecay1_beforeFSR",
465 "MC_b_t_WDecay1_beforeFSR", "MC_bbar_tbar_WDecay1_beforeFSR"},
466 "MC_Wdecay1_beforeFSR_from_t",
467 0},
468 {{"MC_t_WDecay2_beforeFSR", "MC_tbar_WDecay2_beforeFSR",
469 "MC_b_t_WDecay2_beforeFSR", "MC_bbar_tbar_WDecay2_beforeFSR"},
470 "MC_Wdecay2_beforeFSR_from_t",
471 0},
472 {{"MC_t_afterFSR", "MC_tbar_afterFSR", "MC_b_t_afterFSR",
473 "MC_bbar_tbar_afterFSR"},
474 "MC_t_afterFSR",
475 0},
476 {{"MC_t_b_afterFSR", "MC_tbar_bbar_afterFSR", "MC_b_t_b_afterFSR",
477 "MC_bbar_tbar_bbar_afterFSR"},
478 "MC_b_afterFSR_from_t",
479 0},
480 {{"MC_t_W_afterFSR", "MC_tbar_W_afterFSR", "MC_b_t_W_afterFSR",
481 "MC_bbar_tbar_W_afterFSR"},
482 "MC_W_afterFSR_from_t",
483 0},
484 {{"MC_t_WDecay1_afterFSR", "MC_tbar_WDecay1_afterFSR",
485 "MC_b_t_WDecay1_afterFSR", "MC_bbar_tbar_WDecay1_afterFSR"},
486 "MC_Wdecay1_afterFSR_from_t",
487 0},
488 {{"MC_t_WDecay2_afterFSR", "MC_tbar_WDecay2_afterFSR",
489 "MC_b_t_WDecay2_afterFSR", "MC_bbar_tbar_WDecay2_afterFSR"},
490 "MC_Wdecay2_afterFSR_from_t",
491 0},
492 // Spectator b
493 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 0},
494 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 0},
495 // Spectator W (associated, not from top decay)
496 {{"MC_W_beforeFSR"}, "MC_W_beforeFSR", 0},
497 {{"MC_W_afterFSR"}, "MC_W_afterFSR", 0},
498 {{"MC_WDecay1_beforeFSR"},
499 "MC_Wdecay1_beforeFSR",
500 0},
501 {{"MC_WDecay2_beforeFSR"},
502 "MC_Wdecay2_beforeFSR",
503 0},
504 {{"MC_WDecay1_afterFSR"},
505 "MC_Wdecay1_afterFSR",
506 0},
507 {{"MC_WDecay2_afterFSR"},
508 "MC_Wdecay2_afterFSR",
509 0},
510 }}},
511
512 // ------------------------------------------------------------------ //
513 // FourTop
514 // ------------------------------------------------------------------ //
515 {"FourTop",
516 {{"TruthTop"},
518 {},
519 {}, // no special fills
520 {
521 // Top 1 (idx=0)
522 {{"MC_t_beforeFSR"}, "MC_t1_beforeFSR", 0},
523 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t1", 0},
524 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t1", 0},
525 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t1", 0},
526 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t1", 0},
527 {{"MC_t_afterFSR"}, "MC_t1_afterFSR", 0},
528 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t1", 0},
529 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t1", 0},
530 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t1", 0},
531 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t1", 0},
532 // Top 2 (idx=1)
533 {{"MC_t_beforeFSR"}, "MC_t2_beforeFSR", 1},
534 {{"MC_t_b_beforeFSR"}, "MC_b_beforeFSR_from_t2", 1},
535 {{"MC_t_W_beforeFSR"}, "MC_W_beforeFSR_from_t2", 1},
536 {{"MC_t_WDecay1_beforeFSR"}, "MC_Wdecay1_beforeFSR_from_t2", 1},
537 {{"MC_t_WDecay2_beforeFSR"}, "MC_Wdecay2_beforeFSR_from_t2", 1},
538 {{"MC_t_afterFSR"}, "MC_t2_afterFSR", 1},
539 {{"MC_t_b_afterFSR"}, "MC_b_afterFSR_from_t2", 1},
540 {{"MC_t_W_afterFSR"}, "MC_W_afterFSR_from_t2", 1},
541 {{"MC_t_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_t2", 1},
542 {{"MC_t_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_t2", 1},
543 // AntiTop 1 (idx=0)
544 {{"MC_tbar_beforeFSR"}, "MC_tbar1_beforeFSR", 0},
545 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar1", 0},
546 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar1", 0},
547 {{"MC_tbar_WDecay1_beforeFSR"},
548 "MC_Wdecay1_beforeFSR_from_tbar1",
549 0},
550 {{"MC_tbar_WDecay2_beforeFSR"},
551 "MC_Wdecay2_beforeFSR_from_tbar1",
552 0},
553 {{"MC_tbar_afterFSR"}, "MC_tbar1_afterFSR", 0},
554 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar1", 0},
555 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar1", 0},
556 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar1", 0},
557 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar1", 0},
558 // AntiTop 2 (idx=1)
559 {{"MC_tbar_beforeFSR"}, "MC_tbar2_beforeFSR", 1},
560 {{"MC_tbar_bbar_beforeFSR"}, "MC_bbar_beforeFSR_from_tbar2", 1},
561 {{"MC_tbar_W_beforeFSR"}, "MC_W_beforeFSR_from_tbar2", 1},
562 {{"MC_tbar_WDecay1_beforeFSR"},
563 "MC_Wdecay1_beforeFSR_from_tbar2",
564 1},
565 {{"MC_tbar_WDecay2_beforeFSR"},
566 "MC_Wdecay2_beforeFSR_from_tbar2",
567 1},
568 {{"MC_tbar_afterFSR"}, "MC_tbar2_afterFSR", 1},
569 {{"MC_tbar_bbar_afterFSR"}, "MC_bbar_afterFSR_from_tbar2", 1},
570 {{"MC_tbar_W_afterFSR"}, "MC_W_afterFSR_from_tbar2", 1},
571 {{"MC_tbar_WDecay1_afterFSR"}, "MC_Wdecay1_afterFSR_from_tbar2", 1},
572 {{"MC_tbar_WDecay2_afterFSR"}, "MC_Wdecay2_afterFSR_from_tbar2", 1},
573 }}},
574
575 // ------------------------------------------------------------------ //
576 // WW_nonresonant
577 // NOTE: truthCollections may need verification (see plan Known Issues)
578 // ------------------------------------------------------------------ //
579 {"WW_nonresonant",
580 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
581 "TruthTaus", "TruthNeutrinos"},
582 {},
583 {{DecoratorZW::W, 2}},
584 {
585 {SpecialFillType::W, "", "non_resonant", 2},
586 },
587 {}}},
588
589 // ------------------------------------------------------------------ //
590 // HWW
591 // NOTE: truthCollections may need verification (see plan Known Issues)
592 // ------------------------------------------------------------------ //
593 {"HWW",
594 {{"TruthBosonsWithDecayParticles"},
596 {},
597 {
598 {SpecialFillType::Higgs, "", "resonant"},
599 },
600 {}}},
601
602 // ------------------------------------------------------------------ //
603 // HWW_nonresonant
604 // ------------------------------------------------------------------ //
605 {"HWW_nonresonant",
606 {{"TruthBosonsWithDecayParticles", "TruthElectrons", "TruthMuons",
607 "TruthTaus", "TruthNeutrinos"},
609 {},
610 {
611 {SpecialFillType::Higgs, "", "non_resonant_WW"},
612 },
613 {}}},
614
615 // ------------------------------------------------------------------ //
616 // HZZ
617 // NOTE: truthCollections may need verification (see plan Known Issues)
618 // ------------------------------------------------------------------ //
619 {"HZZ",
620 {{"TruthBosonsWithDecayParticles"},
622 {},
623 {
624 {SpecialFillType::Higgs, "", "resonant"},
625 },
626 {}}},
627
628 // ------------------------------------------------------------------ //
629 // Zb
630 // NOTE: idx=2 and idx=1 reproduce the original code exactly
631 // ------------------------------------------------------------------ //
632 {"Zb",
633 {{"TruthBosonsWithDecayParticles", "TruthBottom", "TruthMuons",
634 "TruthElectrons"},
636 {{DecoratorZW::Z, 1, false}},
637 {
638 {SpecialFillType::Z, "", "resonant", 1},
639 },
640 {
641 {{"MC_b_beforeFSR", "MC_bbar_beforeFSR"}, "MC_b_beforeFSR", 2},
642 {{"MC_b_afterFSR", "MC_bbar_afterFSR"}, "MC_b_afterFSR", 1},
643 }}},
644
645 // ------------------------------------------------------------------ //
646 // Ztautau
647 // ------------------------------------------------------------------ //
648 {"Ztautau",
649 {{"TruthBosonsWithDecayParticles", "TruthTaus", "TruthNeutrinos"},
650 {},
651 {{DecoratorZW::Z, 1, true}}, // extended=true for tau decay products
652 {
653 {SpecialFillType::Ztautau, "", "non_resonant", 1},
654 },
655 {}}},
656
657 }; // end registry
658
659 auto it = registry.find(schemeName);
660 if (it == registry.end()) {
661 throw std::runtime_error("Unknown parton scheme: " + schemeName);
662 }
663 return it->second;
664}
665
666} // 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.