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