ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Algorithms
TruthPartonLevelAnalysisAlgorithms
Root
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
7
#include "
PartonHistory/PartonSchemeConfig.h
"
8
9
#include <map>
10
#include <stdexcept>
11
12
namespace
CP
{
13
14
const
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"
},
130
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
131
{},
132
{
133
{
SpecialFillType::Top
},
134
{
SpecialFillType::AntiTop
},
135
{
SpecialFillType::Ttbar
},
136
},
137
{},
138
{}}},
139
140
// ------------------------------------------------------------------ //
141
// TtbarFCNC: t -> q X, X -> decay1 decay2
142
// ------------------------------------------------------------------ //
143
{
"TtbarFCNC"
,
144
{{
"TruthTop"
},
145
{
DecoratorGroup::TopFCNC
,
DecoratorGroup::AntiTopFCNC
,
DecoratorGroup::Ttbar
},
146
{},
147
{
148
{
SpecialFillType::TopFCNC
},
149
{
SpecialFillType::AntiTopFCNC
},
150
{
SpecialFillType::TtbarFCNC
},
151
},
152
{},
153
{}}},
154
155
// ------------------------------------------------------------------ //
156
// Ttbarbbbar
157
// ------------------------------------------------------------------ //
158
{
"Ttbarbbbar"
,
159
{{
"TruthTop"
,
"TruthBottom"
},
160
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
161
DecoratorGroup::VectorBottom
,
DecoratorGroup::VectorAntiBottom
,
162
DecoratorGroup::Ttbar
},
163
{},
164
{
165
{
SpecialFillType::Top
},
166
{
SpecialFillType::AntiTop
},
167
{
SpecialFillType::Ttbar
},
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"
},
182
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
183
DecoratorGroup::VectorCharm
,
DecoratorGroup::VectorAntiCharm
,
184
DecoratorGroup::Ttbar
},
185
{},
186
{
187
{
SpecialFillType::Top
},
188
{
SpecialFillType::AntiTop
},
189
{
SpecialFillType::Ttbar
},
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"
},
205
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
206
{{
DecoratorZW::Z
, 1,
false
}},
207
{
208
{
SpecialFillType::Top
},
209
{
SpecialFillType::AntiTop
},
210
{
SpecialFillType::Ttbar
},
211
{
SpecialFillType::Z
,
""
,
"resonant"
, 1},
212
},
213
{},
214
{}}},
215
216
// ------------------------------------------------------------------ //
217
// Ttw
218
// ------------------------------------------------------------------ //
219
{
"Ttw"
,
220
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
},
221
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
222
{{
DecoratorZW::W
, 1}},
223
{
224
{
SpecialFillType::Top
},
225
{
SpecialFillType::AntiTop
},
226
{
SpecialFillType::Ttbar
},
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"
},
238
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
,
239
DecoratorGroup::Higgs
},
240
{},
241
{
242
{
SpecialFillType::Top
},
243
{
SpecialFillType::AntiTop
},
244
{
SpecialFillType::Ttbar
},
245
{
SpecialFillType::Higgs
,
""
,
"resonant"
},
246
},
247
{},
248
{}}},
249
250
// ------------------------------------------------------------------ //
251
// Ttgamma
252
// ------------------------------------------------------------------ //
253
{
"Ttgamma"
,
254
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
,
"TruthPhotons"
},
255
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
,
256
DecoratorGroup::Photon
},
257
{},
258
{
259
{
SpecialFillType::Top
},
260
{
SpecialFillType::AntiTop
},
261
{
SpecialFillType::Ttbar
},
262
{
SpecialFillType::Gamma
,
""
},
263
},
264
{},
265
{}}},
266
267
// ------------------------------------------------------------------ //
268
// Tq
269
// ------------------------------------------------------------------ //
270
{
"Tq"
,
271
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
,
"TruthBottom"
},
272
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
},
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"
},
315
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
},
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"
},
360
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
,
DecoratorGroup::Higgs
},
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"
},
445
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
,
DecoratorGroup::Photon
},
446
{},
447
{
448
{
SpecialFillType::Gamma
,
""
},
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"
},
490
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
},
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"
},
549
{
DecoratorGroup::FourTop
},
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"
},
629
{
DecoratorGroup::Higgs
},
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"
},
643
{
DecoratorGroup::Higgs
},
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"
},
657
{
DecoratorGroup::Higgs
},
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"
},
672
{
DecoratorGroup::Bottom
,
DecoratorGroup::AntiBottom
},
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
PartonSchemeConfig.h
CP
Select isolated Photons, Electrons and Muons.
Definition
Control/xAODRootAccess/xAODRootAccess/TEvent.h:27
CP::SpecialFillType::TtbarFCNC
@ TtbarFCNC
pass
Definition
PartonSchemeConfig.h:39
CP::SpecialFillType::TopFCNC
@ TopFCNC
FillTopPartonHistory(true).
Definition
PartonSchemeConfig.h:35
CP::SpecialFillType::Z
@ Z
FillZPartonHistory.
Definition
PartonSchemeConfig.h:40
CP::SpecialFillType::AntiTopFCNC
@ AntiTopFCNC
FillAntiTopPartonHistory(true).
Definition
PartonSchemeConfig.h:37
CP::SpecialFillType::Ttbar
@ Ttbar
FillTtbarPartonHistory.
Definition
PartonSchemeConfig.h:38
CP::SpecialFillType::W
@ W
FillWPartonHistory.
Definition
PartonSchemeConfig.h:42
CP::SpecialFillType::Ztautau
@ Ztautau
FillZtautauPartonHistory.
Definition
PartonSchemeConfig.h:41
CP::SpecialFillType::Higgs
@ Higgs
FillHiggsPartonHistory.
Definition
PartonSchemeConfig.h:43
CP::SpecialFillType::Top
@ Top
FillTopPartonHistory.
Definition
PartonSchemeConfig.h:34
CP::SpecialFillType::AntiTop
@ AntiTop
FillAntiTopPartonHistory.
Definition
PartonSchemeConfig.h:36
CP::SpecialFillType::Gamma
@ Gamma
FillGammaPartonHistory.
Definition
PartonSchemeConfig.h:44
CP::getSchemeConfig
const PartonSchemeConfig & getSchemeConfig(const std::string &schemeName)
Returns the configuration for a given scheme name.
Definition
PartonSchemeConfig.cxx:14
CP::DecoratorGroup::TopFCNC
@ TopFCNC
InitializeTopDecorators(true).
Definition
PartonSchemeConfig.h:58
CP::DecoratorGroup::FourTop
@ FourTop
Initialize4TopDecorators().
Definition
PartonSchemeConfig.h:61
CP::DecoratorGroup::VectorAntiBottom
@ VectorAntiBottom
InitializeVectorAntiBottomDecorators().
Definition
PartonSchemeConfig.h:66
CP::DecoratorGroup::VectorAntiCharm
@ VectorAntiCharm
InitializeVectorAntiCharmDecorators().
Definition
PartonSchemeConfig.h:70
CP::DecoratorGroup::Bottom
@ Bottom
InitializeBottomDecorators().
Definition
PartonSchemeConfig.h:63
CP::DecoratorGroup::AntiTopFCNC
@ AntiTopFCNC
InitializeAntiTopDecorators(true).
Definition
PartonSchemeConfig.h:60
CP::DecoratorGroup::VectorBottom
@ VectorBottom
InitializeVectorBottomDecorators().
Definition
PartonSchemeConfig.h:65
CP::DecoratorGroup::Ttbar
@ Ttbar
InitializeTtbarDecorators().
Definition
PartonSchemeConfig.h:62
CP::DecoratorGroup::VectorCharm
@ VectorCharm
InitializeVectorCharmDecorators().
Definition
PartonSchemeConfig.h:69
CP::DecoratorGroup::Higgs
@ Higgs
InitializeHiggsDecorators().
Definition
PartonSchemeConfig.h:72
CP::DecoratorGroup::Top
@ Top
InitializeTopDecorators().
Definition
PartonSchemeConfig.h:57
CP::DecoratorGroup::AntiBottom
@ AntiBottom
InitializeAntiBottomDecorators().
Definition
PartonSchemeConfig.h:64
CP::DecoratorGroup::AntiTop
@ AntiTop
InitializeAntiTopDecorators().
Definition
PartonSchemeConfig.h:59
CP::DecoratorGroup::Photon
@ Photon
InitializePhotonDecorators().
Definition
PartonSchemeConfig.h:71
CP::DecoratorZW::W
@ W
Definition
PartonSchemeConfig.h:77
CP::DecoratorZW::Z
enum CP::DecoratorZW::Type Z
CP::PartonSchemeConfig
Top-level configuration for a named parton history scheme.
Definition
PartonSchemeConfig.h:83
Generated on
for ATLAS Offline Software by
1.17.0