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 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"
},
130
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
131
{},
132
{
133
{
SpecialFillType::Top
},
134
{
SpecialFillType::AntiTop
},
135
{
SpecialFillType::Ttbar
},
136
},
137
{}}},
138
139
// ------------------------------------------------------------------ //
140
// TtbarFCNC: t -> q X, X -> decay1 decay2
141
// ------------------------------------------------------------------ //
142
{
"TtbarFCNC"
,
143
{{
"TruthTop"
},
144
{
DecoratorGroup::TopFCNC
,
DecoratorGroup::AntiTopFCNC
,
DecoratorGroup::Ttbar
},
145
{},
146
{
147
{
SpecialFillType::TopFCNC
},
148
{
SpecialFillType::AntiTopFCNC
},
149
{
SpecialFillType::TtbarFCNC
},
150
},
151
{}}},
152
153
// ------------------------------------------------------------------ //
154
// Ttbarbbbar
155
// ------------------------------------------------------------------ //
156
{
"Ttbarbbbar"
,
157
{{
"TruthTop"
,
"TruthBottom"
},
158
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
159
DecoratorGroup::VectorBottom
,
DecoratorGroup::VectorAntiBottom
,
160
DecoratorGroup::Ttbar
},
161
{},
162
{
163
{
SpecialFillType::Top
},
164
{
SpecialFillType::AntiTop
},
165
{
SpecialFillType::Ttbar
},
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"
},
179
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
180
DecoratorGroup::VectorCharm
,
DecoratorGroup::VectorAntiCharm
,
181
DecoratorGroup::Ttbar
},
182
{},
183
{
184
{
SpecialFillType::Top
},
185
{
SpecialFillType::AntiTop
},
186
{
SpecialFillType::Ttbar
},
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"
},
201
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
202
{{
DecoratorZW::Z
, 1,
false
}},
203
{
204
{
SpecialFillType::Top
},
205
{
SpecialFillType::AntiTop
},
206
{
SpecialFillType::Ttbar
},
207
{
SpecialFillType::Z
,
""
,
"resonant"
, 1},
208
},
209
{}}},
210
211
// ------------------------------------------------------------------ //
212
// Ttw
213
// ------------------------------------------------------------------ //
214
{
"Ttw"
,
215
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
},
216
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
},
217
{{
DecoratorZW::W
, 1}},
218
{
219
{
SpecialFillType::Top
},
220
{
SpecialFillType::AntiTop
},
221
{
SpecialFillType::Ttbar
},
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"
},
246
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
,
247
DecoratorGroup::Higgs
},
248
{},
249
{
250
{
SpecialFillType::Top
},
251
{
SpecialFillType::AntiTop
},
252
{
SpecialFillType::Ttbar
},
253
{
SpecialFillType::Higgs
,
""
,
"resonant"
},
254
},
255
{}}},
256
257
// ------------------------------------------------------------------ //
258
// Ttgamma
259
// ------------------------------------------------------------------ //
260
{
"Ttgamma"
,
261
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
,
"TruthPhotons"
},
262
{
DecoratorGroup::Top
,
DecoratorGroup::AntiTop
,
DecoratorGroup::Ttbar
,
263
DecoratorGroup::Photon
},
264
{},
265
{
266
{
SpecialFillType::Top
},
267
{
SpecialFillType::AntiTop
},
268
{
SpecialFillType::Ttbar
},
269
{
SpecialFillType::Gamma
,
""
},
270
},
271
{}}},
272
273
// ------------------------------------------------------------------ //
274
// Tzq
275
// ------------------------------------------------------------------ //
276
{
"Tzq"
,
277
{{
"TruthTop"
,
"TruthBosonsWithDecayParticles"
,
"TruthBottom"
},
278
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
},
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"
},
322
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
,
DecoratorGroup::Higgs
},
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"
},
403
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
,
DecoratorGroup::Photon
},
404
{},
405
{
406
{
SpecialFillType::Gamma
,
""
},
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"
},
447
{
DecoratorGroup::Top
,
DecoratorGroup::Bottom
},
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"
},
517
{
DecoratorGroup::FourTop
},
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"
},
595
{
DecoratorGroup::Higgs
},
596
{},
597
{
598
{
SpecialFillType::Higgs
,
""
,
"resonant"
},
599
},
600
{}}},
601
602
// ------------------------------------------------------------------ //
603
// HWW_nonresonant
604
// ------------------------------------------------------------------ //
605
{
"HWW_nonresonant"
,
606
{{
"TruthBosonsWithDecayParticles"
,
"TruthElectrons"
,
"TruthMuons"
,
607
"TruthTaus"
,
"TruthNeutrinos"
},
608
{
DecoratorGroup::Higgs
},
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"
},
621
{
DecoratorGroup::Higgs
},
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"
},
635
{
DecoratorGroup::Bottom
,
DecoratorGroup::AntiBottom
},
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
PartonSchemeConfig.h
CP
Select isolated Photons, Electrons and Muons.
Definition
Control/xAODRootAccess/xAODRootAccess/TEvent.h:27
CP::SpecialFillType::TtbarFCNC
@ TtbarFCNC
pass
Definition
PartonSchemeConfig.h:31
CP::SpecialFillType::TopFCNC
@ TopFCNC
FillTopPartonHistory(true).
Definition
PartonSchemeConfig.h:27
CP::SpecialFillType::Z
@ Z
FillZPartonHistory.
Definition
PartonSchemeConfig.h:32
CP::SpecialFillType::AntiTopFCNC
@ AntiTopFCNC
FillAntiTopPartonHistory(true).
Definition
PartonSchemeConfig.h:29
CP::SpecialFillType::Ttbar
@ Ttbar
FillTtbarPartonHistory.
Definition
PartonSchemeConfig.h:30
CP::SpecialFillType::W
@ W
FillWPartonHistory.
Definition
PartonSchemeConfig.h:34
CP::SpecialFillType::Ztautau
@ Ztautau
FillZtautauPartonHistory.
Definition
PartonSchemeConfig.h:33
CP::SpecialFillType::Higgs
@ Higgs
FillHiggsPartonHistory.
Definition
PartonSchemeConfig.h:35
CP::SpecialFillType::Top
@ Top
FillTopPartonHistory.
Definition
PartonSchemeConfig.h:26
CP::SpecialFillType::AntiTop
@ AntiTop
FillAntiTopPartonHistory.
Definition
PartonSchemeConfig.h:28
CP::SpecialFillType::Gamma
@ Gamma
FillGammaPartonHistory.
Definition
PartonSchemeConfig.h:36
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:51
CP::DecoratorGroup::FourTop
@ FourTop
Initialize4TopDecorators().
Definition
PartonSchemeConfig.h:54
CP::DecoratorGroup::VectorAntiBottom
@ VectorAntiBottom
InitializeVectorAntiBottomDecorators().
Definition
PartonSchemeConfig.h:59
CP::DecoratorGroup::VectorAntiCharm
@ VectorAntiCharm
InitializeVectorAntiCharmDecorators().
Definition
PartonSchemeConfig.h:63
CP::DecoratorGroup::Bottom
@ Bottom
InitializeBottomDecorators().
Definition
PartonSchemeConfig.h:56
CP::DecoratorGroup::AntiTopFCNC
@ AntiTopFCNC
InitializeAntiTopDecorators(true).
Definition
PartonSchemeConfig.h:53
CP::DecoratorGroup::VectorBottom
@ VectorBottom
InitializeVectorBottomDecorators().
Definition
PartonSchemeConfig.h:58
CP::DecoratorGroup::Ttbar
@ Ttbar
InitializeTtbarDecorators().
Definition
PartonSchemeConfig.h:55
CP::DecoratorGroup::VectorCharm
@ VectorCharm
InitializeVectorCharmDecorators().
Definition
PartonSchemeConfig.h:62
CP::DecoratorGroup::Higgs
@ Higgs
InitializeHiggsDecorators().
Definition
PartonSchemeConfig.h:65
CP::DecoratorGroup::Top
@ Top
InitializeTopDecorators().
Definition
PartonSchemeConfig.h:50
CP::DecoratorGroup::AntiBottom
@ AntiBottom
InitializeAntiBottomDecorators().
Definition
PartonSchemeConfig.h:57
CP::DecoratorGroup::AntiTop
@ AntiTop
InitializeAntiTopDecorators().
Definition
PartonSchemeConfig.h:52
CP::DecoratorGroup::Photon
@ Photon
InitializePhotonDecorators().
Definition
PartonSchemeConfig.h:64
CP::DecoratorZW::W
@ W
Definition
PartonSchemeConfig.h:70
CP::DecoratorZW::Z
enum CP::DecoratorZW::Type Z
CP::PartonSchemeConfig
Top-level configuration for a named parton history scheme.
Definition
PartonSchemeConfig.h:76
Generated on
for ATLAS Offline Software by
1.17.0