15def EGammaCommonCfg(flags):
16 """Main config method for e-gamma decorations"""
17
18 acc = ComponentAccumulator()
19
20 includeFwdElectrons = "ForwardElectrons" in flags.Input.Collections
21
22
23
24
25 from DerivationFrameworkEGamma.EGammaToolsConfig import PhotonsDirectionToolCfg
26
27 DFCommonPhotonsDirection = acc.addPublicTool(acc.popToolsAndMerge(
28 PhotonsDirectionToolCfg(
29 flags,
30 name="DFCommonPhotonsDirection",
31 EtaSGEntry="DFCommonPhotons_eta",
32 PhiSGEntry="DFCommonPhotons_phi",
33 EtSGEntry="DFCommonPhotons_et",
34 )
35 ))
36
37
38
39
40
41
42
43 isMC = flags.Input.isMC
44 isFullSim = False
45 if isMC:
46 isFullSim = flags.Sim.ISF.Simulator.isFullSim()
47
48 print(
"EGammaCommon: isMC = ", isMC)
49 if isMC:
50 print(
"EGammaCommon: isFullSim = ", isFullSim)
51
52 if isMC:
53 from EGammaVariableCorrection.EGammaVariableCorrectionConfig import (
54 ElectronVariableCorrectionToolCfg,
55 PhotonVariableCorrectionToolCfg,
56 )
57
58 ElectronVariableCorrectionTool = acc.popToolsAndMerge(
59 ElectronVariableCorrectionToolCfg(flags)
60 )
61 acc.addPublicTool(ElectronVariableCorrectionTool)
62
63 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
64 PhotonVariableCorrectionToolCfg(flags)
65 )
66 acc.addPublicTool(PhotonVariableCorrectionTool)
67
68
69
70
71
72
73 from ROOT import LikeEnum
74
75 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig import (
76 AsgElectronLikelihoodToolCfg,
77 )
78 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping import electronLHmenu
79
80 lhMenu = electronLHmenu.offlineMC21
81 from AthenaConfiguration.Enums import LHCPeriod
82 if flags.GeoModel.Run is LHCPeriod.Run2:
83 lhMenu = electronLHmenu.offlineMC20
84
85
86 ElectronLHSelectorVeryLoose = acc.popToolsAndMerge(
87 AsgElectronLikelihoodToolCfg(
88 flags,
89 name="ElectronLHSelectorVeryLoose",
90 quality=LikeEnum.VeryLoose,
91 menu=lhMenu,
92 )
93 )
94 ElectronLHSelectorVeryLoose.primaryVertexContainer = "PrimaryVertices"
95 acc.addPublicTool(ElectronLHSelectorVeryLoose)
96
97
98 ElectronLHSelectorLoose = acc.popToolsAndMerge(
99 AsgElectronLikelihoodToolCfg(
100 flags,
101 name="ElectronLHSelectorLoose",
102 quality=LikeEnum.Loose,
103 menu=lhMenu,
104 )
105 )
106 ElectronLHSelectorLoose.primaryVertexContainer = "PrimaryVertices"
107 acc.addPublicTool(ElectronLHSelectorLoose)
108
109
110 ElectronLHSelectorLooseBL = acc.popToolsAndMerge(
111 AsgElectronLikelihoodToolCfg(
112 flags,
113 name="ElectronLHSelectorLooseBL",
114 quality=LikeEnum.LooseBL,
115 menu=lhMenu,
116 )
117 )
118 ElectronLHSelectorLooseBL.primaryVertexContainer = "PrimaryVertices"
119 acc.addPublicTool(ElectronLHSelectorLooseBL)
120
121
122 ElectronLHSelectorMedium = acc.popToolsAndMerge(
123 AsgElectronLikelihoodToolCfg(
124 flags,
125 name="ElectronLHSelectorMedium",
126 quality=LikeEnum.Medium,
127 menu=lhMenu,
128 )
129 )
130 ElectronLHSelectorMedium.primaryVertexContainer = "PrimaryVertices"
131 acc.addPublicTool(ElectronLHSelectorMedium)
132
133
134 ElectronLHSelectorTight = acc.popToolsAndMerge(
135 AsgElectronLikelihoodToolCfg(
136 flags,
137 name="ElectronLHSelectorTight",
138 quality=LikeEnum.Tight,
139 menu=lhMenu,
140 )
141 )
142 ElectronLHSelectorTight.primaryVertexContainer = "PrimaryVertices"
143 acc.addPublicTool(ElectronLHSelectorTight)
144
145
146
147
148 from ElectronPhotonSelectorTools.AsgElectronSelectorToolConfig import (
149 AsgElectronSelectorToolCfg,
150 )
151
152
153 ElectronDNNSelectorLoose = acc.popToolsAndMerge(
154 AsgElectronSelectorToolCfg(
155 flags,
156 name="ElectronDNNSelectorLoose",
157 WorkingPoint="LooseDNNElectron",
158 )
159 )
160 acc.addPublicTool(ElectronDNNSelectorLoose)
161
162
163 ElectronDNNSelectorMedium = acc.popToolsAndMerge(
164 AsgElectronSelectorToolCfg(
165 flags,
166 name="ElectronDNNSelectorMedium",
167 WorkingPoint="MediumDNNElectron",
168 )
169 )
170 acc.addPublicTool(ElectronDNNSelectorMedium)
171
172
173 ElectronDNNSelectorTight = acc.popToolsAndMerge(
174 AsgElectronSelectorToolCfg(
175 flags,
176 name="ElectronDNNSelectorTight",
177 WorkingPoint="TightDNNElectron",
178 )
179 )
180 acc.addPublicTool(ElectronDNNSelectorTight)
181
182
183
184
185
186 ElectronDNNSelectorVeryLooseNoCF97 = acc.popToolsAndMerge(
187 AsgElectronSelectorToolCfg(
188 flags,
189 name="ElectronDNNSelectorVeryLooseNoCF97",
190 WorkingPoint="VeryLooseNoCF97DNNElectron",
191 )
192 )
193 acc.addPublicTool(ElectronDNNSelectorVeryLooseNoCF97)
194
195
196 ElectronDNNSelectorLooseNoCF = acc.popToolsAndMerge(
197 AsgElectronSelectorToolCfg(
198 flags,
199 name="ElectronDNNSelectorLooseNoCF",
200 WorkingPoint="LooseNoCFDNNElectron",
201 )
202 )
203 acc.addPublicTool(ElectronDNNSelectorLooseNoCF)
204
205
206 ElectronDNNSelectorMediumNoCF = acc.popToolsAndMerge(
207 AsgElectronSelectorToolCfg(
208 flags,
209 name="ElectronDNNSelectorMediumNoCF",
210 WorkingPoint="MediumNoCFDNNElectron",
211 )
212 )
213 acc.addPublicTool(ElectronDNNSelectorMediumNoCF)
214
215
216 ElectronDNNSelectorTightNoCF = acc.popToolsAndMerge(
217 AsgElectronSelectorToolCfg(
218 flags,
219 name="ElectronDNNSelectorTightNoCF",
220 WorkingPoint="TightNoCFDNNElectron",
221 )
222 )
223 acc.addPublicTool(ElectronDNNSelectorTightNoCF)
224
225
226
227
228 if flags.Derivation.Egamma.addECIDS:
229 from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig import (
230 AsgElectronChargeIDSelectorToolCfg,
231 )
232
233 ElectronChargeIDSelector = acc.popToolsAndMerge(
234 AsgElectronChargeIDSelectorToolCfg(
235 flags, name="ElectronChargeIDSelectorLoose"
236 )
237 )
238 ElectronChargeIDSelector.primaryVertexContainer = "PrimaryVertices"
239 ElectronChargeIDSelector.TrainingFile = (
240 "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"
241 )
242 acc.addPublicTool(ElectronChargeIDSelector)
243
244
245
246
247 if includeFwdElectrons:
248 from ElectronPhotonSelectorTools.AsgForwardElectronLikelihoodToolConfig import (
249 AsgForwardElectronLikelihoodToolCfg,
250 )
251
252 ForwardElectronLHSelectorLoose = acc.popToolsAndMerge(
253 AsgForwardElectronLikelihoodToolCfg(
254 flags,
255 name="ForwardElectronLHSelectorLoose",
256 WorkingPoint="LooseLHForwardElectron",
257 )
258 )
259 acc.addPublicTool(ForwardElectronLHSelectorLoose)
260
261 ForwardElectronLHSelectorMedium = acc.popToolsAndMerge(
262 AsgForwardElectronLikelihoodToolCfg(
263 flags,
264 name="ForwardElectronLHSelectorMedium",
265 WorkingPoint="MediumLHForwardElectron",
266 )
267 )
268 acc.addPublicTool(ForwardElectronLHSelectorMedium)
269
270 ForwardElectronLHSelectorTight = acc.popToolsAndMerge(
271 AsgForwardElectronLikelihoodToolCfg(
272 flags,
273 name="ForwardElectronLHSelectorTight",
274 WorkingPoint="TightLHForwardElectron",
275 )
276 )
277 acc.addPublicTool(ForwardElectronLHSelectorTight)
278
279
280
281
282 from ROOT import egammaPID
283
284 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
285 AsgPhotonIsEMSelectorCfg,
286 )
287 from ElectronPhotonSelectorTools.PhotonIsEMSelectorMapping import photonPIDmenu
288 pidMenu = photonPIDmenu.offlineMC21
289 if flags.GeoModel.Run is LHCPeriod.Run2:
290 pidMenu = photonPIDmenu.offlineMC20
291
292
293 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
294 AsgPhotonIsEMSelectorCfg(
295 flags,
296 name="PhotonIsEMSelectorLoose",
297 quality=egammaPID.PhotonIDLoose,
298 menu=pidMenu
299 )
300 )
301 acc.addPublicTool(PhotonIsEMSelectorLoose)
302
303
304 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
305 AsgPhotonIsEMSelectorCfg(
306 flags,
307 name="PhotonIsEMSelectorMedium",
308 quality=egammaPID.PhotonIDMedium,
309 menu=pidMenu
310 )
311 )
312 acc.addPublicTool(PhotonIsEMSelectorMedium)
313
314
315 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
316 AsgPhotonIsEMSelectorCfg(
317 flags,
318 name="PhotonIsEMSelectorTight",
319 quality=egammaPID.PhotonIDTight,
320 menu=pidMenu
321 )
322 )
323 acc.addPublicTool(PhotonIsEMSelectorTight)
324
325
326
327
328
329
330 from egammaCaloTools.egammaCaloToolsConfig import CaloFillRectangularClusterCfg
331
332 EGAMCOM_caloFillRect55 = acc.popToolsAndMerge(
333 CaloFillRectangularClusterCfg(
334 flags,
335 name="EGAMCOMCaloFillRectangularCluster55",
336 cells_name="AllCalo",
337 eta_size=5,
338 phi_size=5,
339 fill_cluster=True,
340 )
341 )
342 acc.addPublicTool(EGAMCOM_caloFillRect55)
343
344 EGAMCOM_caloFillRect35 = acc.popToolsAndMerge(
345 CaloFillRectangularClusterCfg(
346 flags,
347 name="EGAMCOMCaloFillRectangularCluster35",
348 cells_name="AllCalo",
349 eta_size=3,
350 phi_size=5,
351 fill_cluster=True,
352 )
353 )
354 acc.addPublicTool(EGAMCOM_caloFillRect35)
355
356 EGAMCOM_caloFillRect37 = acc.popToolsAndMerge(
357 CaloFillRectangularClusterCfg(
358 flags,
359 name="EGAMCOMCaloFillRectangularCluster37",
360 cells_name="AllCalo",
361 eta_size=3,
362 phi_size=7,
363 fill_cluster=True,
364 )
365 )
366 acc.addPublicTool(EGAMCOM_caloFillRect37)
367
368 EGAMCOM_caloFillRect711 = acc.popToolsAndMerge(
369 CaloFillRectangularClusterCfg(
370 flags,
371 name="EGAMCOMCaloFillRectangularCluster711",
372 cells_name="AllCalo",
373 eta_size=7,
374 phi_size=11,
375 fill_cluster=True,
376 )
377 )
378 acc.addPublicTool(EGAMCOM_caloFillRect711)
379
380
381
382
383 from DerivationFrameworkEGamma.EGammaToolsConfig import EGSelectionToolWrapperCfg
384 from DerivationFrameworkEGamma.EGammaToolsConfig import (
385 EGElectronLikelihoodToolWrapperCfg,
386 )
387
388
389
390
391 ElectronPassLHVeryLoose = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
392 flags,
393 name="ElectronPassLHVeryLoose",
394 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
395 EGammaFudgeMCTool=None,
396 CutType="",
397 StoreGateEntryName="DFCommonElectronsLHVeryLoose",
398 ContainerName="Electrons",
399 StoreTResult=False,
400 )
401 ))
402
403
404 ElectronPassLHLoose = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
405 flags,
406 name="ElectronPassLHLoose",
407 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
408 EGammaFudgeMCTool=None,
409 CutType="",
410 StoreGateEntryName="DFCommonElectronsLHLoose",
411 ContainerName="Electrons",
412 StoreTResult=False,
413 )
414 ))
415
416
417 ElectronPassLHLooseBL = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
418 flags,
419 name="ElectronPassLHLooseBL",
420 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
421 EGammaFudgeMCTool=None,
422 CutType="",
423 StoreGateEntryName="DFCommonElectronsLHLooseBL",
424 ContainerName="Electrons",
425 StoreTResult=False,
426 )
427 ))
428
429
430 ElectronPassLHMedium = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
431 flags,
432 name="ElectronPassLHMedium",
433 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
434 EGammaFudgeMCTool=None,
435 CutType="",
436 StoreGateEntryName="DFCommonElectronsLHMedium",
437 ContainerName="Electrons",
438 StoreTResult=False,
439 )
440 ))
441
442
443 ElectronPassLHTight = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
444 flags,
445 name="ElectronPassLHTight",
446 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
447 EGammaFudgeMCTool=None,
448 CutType="",
449 StoreGateEntryName="DFCommonElectronsLHTight",
450 ContainerName="Electrons",
451 StoreTResult=False,
452 )
453 ))
454
455
456 ElectronPassDNNLoose = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
457 flags,
458 name="ElectronPassDNNLoose",
459 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
460 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
461 CutType="",
462 StoreGateEntryName="DFCommonElectronsDNNLoose",
463 ContainerName="Electrons",
464 StoreTResult=False,
465 StoreGateEntryMultipleNames=[
466 "DFCommonElectronsDNN_pel",
467 "DFCommonElectronsDNN_pcf",
468 "DFCommonElectronsDNN_ppc",
469 "DFCommonElectronsDNN_phf",
470 "DFCommonElectronsDNN_ple",
471 "DFCommonElectronsDNN_plh",
472 ],
473 StoreMultipleOutputs=True,
474 )
475 ))
476
477
478 ElectronPassDNNMedium = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
479 flags,
480 name="ElectronPassDNNMedium",
481 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
482 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
483 CutType="",
484 StoreGateEntryName="DFCommonElectronsDNNMedium",
485 ContainerName="Electrons",
486 StoreTResult=False,
487 )
488 ))
489
490
491 ElectronPassDNNTight = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
492 flags,
493 name="ElectronPassDNNTight",
494 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
495 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
496 CutType="",
497 StoreGateEntryName="DFCommonElectronsDNNTight",
498 ContainerName="Electrons",
499 StoreTResult=False,
500 )
501 ))
502
503
504 ElectronPassDNNVeryLooseNoCF97 = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
505 flags,
506 name="ElectronPassDNNVeryLooseNoCF97",
507 EGammaElectronLikelihoodTool=ElectronDNNSelectorVeryLooseNoCF97,
508 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
509 CutType="",
510 StoreGateEntryName="DFCommonElectronsDNNVeryLooseNoCF97",
511 ContainerName="Electrons",
512 StoreTResult=False,
513 )
514 ))
515
516 ElectronPassDNNLooseNoCF = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
517 flags,
518 name="ElectronPassDNNLooseNoCF",
519 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
520 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
521 CutType="",
522 StoreGateEntryName="DFCommonElectronsDNNLooseNoCF",
523 ContainerName="Electrons",
524 StoreTResult=False,
525 )
526 ))
527
528
529 ElectronPassDNNMediumNoCF = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
530 flags,
531 name="ElectronPassDNNMediumNoCF",
532 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
533 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
534 CutType="",
535 StoreGateEntryName="DFCommonElectronsDNNMediumNoCF",
536 ContainerName="Electrons",
537 StoreTResult=False,
538 )
539 ))
540
541
542 ElectronPassDNNTightNoCF = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
543 flags,
544 name="ElectronPassDNNTightNoCF",
545 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
546 EGammaFudgeMCTool=(ElectronVariableCorrectionTool if isMC else None),
547 CutType="",
548 StoreGateEntryName="DFCommonElectronsDNNTightNoCF",
549 ContainerName="Electrons",
550 StoreTResult=False,
551 )
552 ))
553
554
555 if flags.Derivation.Egamma.addECIDS:
556 ElectronPassECIDS = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
557 flags,
558 name="ElectronPassECIDS",
559 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
560 EGammaFudgeMCTool=None,
561 CutType="",
562 StoreGateEntryName="DFCommonElectronsECIDS",
563 ContainerName="Electrons",
564 StoreTResult=True,
565 )
566 ))
567
568 if includeFwdElectrons:
569
570 ForwardElectronPassLHLoose = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
571 flags,
572 name="ForwardElectronPassLHLoose",
573 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
574 EGammaFudgeMCTool=None,
575 CutType="",
576 StoreGateEntryName="DFCommonForwardElectronsLHLoose",
577 ContainerName="ForwardElectrons",
578 )
579 ))
580
581
582 ForwardElectronPassLHMedium = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
583 flags,
584 name="ForwardElectronPassLHMedium",
585 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
586 EGammaFudgeMCTool=None,
587 CutType="",
588 StoreGateEntryName="DFCommonForwardElectronsLHMedium",
589 ContainerName="ForwardElectrons",
590 )
591 ))
592
593
594 ForwardElectronPassLHTight = acc.addPublicTool(acc.popToolsAndMerge(EGElectronLikelihoodToolWrapperCfg(
595 flags,
596 name="ForwardElectronPassLHTight",
597 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
598 EGammaFudgeMCTool=None,
599 CutType="",
600 StoreGateEntryName="DFCommonForwardElectronsLHTight",
601 ContainerName="ForwardElectrons",
602 )
603 ))
604
605
606
607
608 PhotonPassIsEMLoose = acc.addPublicTool(acc.popToolsAndMerge(
609 EGSelectionToolWrapperCfg(
610 flags,
611 name="PhotonPassIsEMLoose",
612 EGammaSelectionTool=PhotonIsEMSelectorLoose,
613 EGammaFudgeMCTool=(PhotonVariableCorrectionTool if isFullSim else None),
614 CutType="",
615 StoreGateEntryName="DFCommonPhotonsIsEMLoose",
616 ContainerName="Photons",
617 )
618 ))
619
620
621
622
623 PhotonPassIsEMMedium = acc.addPublicTool(acc.popToolsAndMerge(
624 EGSelectionToolWrapperCfg(
625 flags,
626 name="PhotonPassIsEMMedium",
627 EGammaSelectionTool=PhotonIsEMSelectorMedium,
628 EGammaFudgeMCTool=(PhotonVariableCorrectionTool if isFullSim else None),
629 CutType="",
630 StoreGateEntryName="DFCommonPhotonsIsEMMedium",
631 ContainerName="Photons",
632 )
633 ))
634
635
636
637
638 PhotonPassIsEMTight = acc.addPublicTool(acc.popToolsAndMerge(
639 EGSelectionToolWrapperCfg(
640 flags,
641 name="PhotonPassIsEMTight",
642 EGammaSelectionTool=PhotonIsEMSelectorTight,
643 EGammaFudgeMCTool=(PhotonVariableCorrectionTool if isFullSim else None),
644 CutType="",
645 StoreGateEntryName="DFCommonPhotonsIsEMTight",
646 ContainerName="Photons",
647 )
648 ))
649
650
651
652
653 from DerivationFrameworkEGamma.EGammaToolsConfig import EGPhotonCleaningWrapperCfg
654
655 PhotonPassCleaning = acc.addPublicTool(acc.popToolsAndMerge(
656 EGPhotonCleaningWrapperCfg(
657 flags,
658 name="PhotonPassCleaning",
659 EGammaFudgeMCTool=(PhotonVariableCorrectionTool if isFullSim else None),
660 StoreGateEntryName="DFCommonPhotonsCleaning",
661 ContainerName="Photons",
662 )
663 ))
664
665
666
667 from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronAmbiguityToolCfg
668
669 ElectronAmbiguity = acc.addPublicTool(acc.popToolsAndMerge(
670 EGElectronAmbiguityToolCfg(
671 flags,
672 name="ElectronAdditionnalAmbiguity",
673 isMC=flags.Input.isMC,
674 )
675 ))
676
677
678 EGAugmentationTools = [
679 DFCommonPhotonsDirection,
680 ElectronPassLHVeryLoose,
681 ElectronPassLHLoose,
682 ElectronPassLHLooseBL,
683 ElectronPassLHMedium,
684 ElectronPassLHTight,
685 ElectronPassDNNLoose,
686 ElectronPassDNNMedium,
687 ElectronPassDNNTight,
688 ElectronPassDNNVeryLooseNoCF97,
689 ElectronPassDNNLooseNoCF,
690 ElectronPassDNNMediumNoCF,
691 ElectronPassDNNTightNoCF,
692 PhotonPassIsEMLoose,
693 PhotonPassIsEMMedium,
694 PhotonPassIsEMTight,
695 PhotonPassCleaning,
696 ElectronAmbiguity,
697 ]
698
699 if flags.Derivation.Egamma.addECIDS:
700 EGAugmentationTools.extend([ElectronPassECIDS])
701
702 if includeFwdElectrons:
703 EGAugmentationTools.extend(
704 [
705 ForwardElectronPassLHLoose,
706 ForwardElectronPassLHMedium,
707 ForwardElectronPassLHTight,
708 ]
709 )
710
711 if flags.Derivation.Egamma.addMissingCellInfo:
712 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
713 EgammaCoreCellRecoveryCfg,
714 )
715
716 CoreCellRecoveryTool = acc.popToolsAndMerge(
717 EgammaCoreCellRecoveryCfg(flags)
718 )
719 acc.addPublicTool(CoreCellRecoveryTool)
720 EGAugmentationTools.append(CoreCellRecoveryTool)
721
722
723
724 if flags.Input.isMC:
725
726 from DerivationFrameworkEGamma.EGammaToolsConfig import (
727 BkgElectronClassificationCfg,
728 )
729
730 BkgElectronClassificationTool = acc.addPublicTool(acc.popToolsAndMerge(
731 BkgElectronClassificationCfg(
732 flags,
733 name="BkgElectronClassificationTool"
734 )
735 ))
736 EGAugmentationTools.append(BkgElectronClassificationTool)
737
738
739 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
740 TruthIsolationToolCfg,
741 )
742
743 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
744 TruthIsolationToolCfg(
745 flags,
746 name="TruthEgetIsolationTool",
747 isoParticlesKey="egammaTruthParticles",
748 allParticlesKey="TruthParticles",
749 particleIDsToCalculate=[-11, 11, 22],
750 IsolationConeSizes=[0.2, 0.3, 0.4],
751 excludeIDsFromCone=[-16, -14, -13, -12, 12, 13, 14, 16],
752 IsolationVarNamePrefix="etcone",
753 ChargedParticlesOnly=False,
754 )
755 )
756 EGAugmentationTools.append(TruthEgetIsolationTool)
757
758
759 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
760 TruthIsolationToolCfg(
761 flags,
762 name="TruthEgptIsolationTool",
763 isoParticlesKey="egammaTruthParticles",
764 allParticlesKey="TruthParticles",
765 particleIDsToCalculate=[-11, 11, 22],
766 IsolationConeSizes=[0.2, 0.3, 0.4],
767 IsolationVarNamePrefix="ptcone",
768 ChargedParticlesOnly=True,
769 )
770 )
771 EGAugmentationTools.append(TruthEgptIsolationTool)
772
773
774 from EventShapeTools.EventDensityConfig import configEventDensityTool
775 from JetRecConfig.JetRecConfig import (
776 getInputAlgs,
777 getConstitPJGAlg,
778 reOrderAlgs,
779 )
780 from JetRecConfig.StandardJetConstits import stdConstitDic as cst
781
782
783 constit_algs = getInputAlgs(cst.Truth, flags=flags)
784 constit_algs, ca = reOrderAlgs([a for a in constit_algs if a is not None])
785 acc.merge(ca)
786 for a in constit_algs:
787 acc.addEventAlgo(a)
788 constitPJAlg = getConstitPJGAlg(cst.Truth, suffix=None)
789 acc.addEventAlgo(constitPJAlg)
790
791 tc = configEventDensityTool(
792 "EDTruthCentralTool",
793 cst.Truth,
794 0.5,
795 AbsRapidityMin=0.0,
796 AbsRapidityMax=1.5,
797 OutputContainer="TruthIsoCentralEventShape",
798 OutputLevel=3,
799 )
800 acc.addPublicTool(tc)
801
802
803 tf = configEventDensityTool(
804 "EDTruthForwardTool",
805 cst.Truth,
806 0.5,
807 AbsRapidityMin=1.5,
808 AbsRapidityMax=3.0,
809 OutputContainer="TruthIsoForwardEventShape",
810 OutputLevel=3,
811 )
812 acc.addPublicTool(tf)
813
814 acc.addEventAlgo(
815 CompFactory.EventDensityAthAlg("EDTruthCentralAlg", EventDensityTool=tc)
816 )
817 acc.addEventAlgo(
818 CompFactory.EventDensityAthAlg("EDTruthForwardAlg", EventDensityTool=tf)
819 )
820
821
822
823
824
825 acc.addEventAlgo(
826 CompFactory.DerivationFramework.CommonAugmentation(
827 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
828 )
829 )
830
831
832
833
834 from IsolationAlgs.DerivationTrackIsoConfig import DerivationTrackIsoCfg
835
836 acc.merge(DerivationTrackIsoCfg(flags, object_types=("Electrons", "Muons")))
837
838 hasFlowObject = (
839 "JetETMissChargedParticleFlowObjects" in flags.Input.Collections
840 and "JetETMissNeutralParticleFlowObjects" in flags.Input.Collections
841 )
842 if hasFlowObject:
843 from IsolationAlgs.IsolationSteeringDerivConfig import IsolationSteeringDerivCfg
844
845 acc.merge(IsolationSteeringDerivCfg(flags))
846
847 return acc
void print(char *figname, TCanvas *c1)