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
228 from IsolationAlgs.IsolationSteeringDerivConfig import FwdElectronIsolationSteeringDerivCfg
229 acc.merge(FwdElectronIsolationSteeringDerivCfg(flags))
230
231 from ElectronPhotonSelectorTools.AsgForwardElectronLikelihoodToolConfig import (
232 AsgForwardElectronLikelihoodToolCfg,
233 )
234
235 ForwardElectronLHSelectorLoose = acc.popToolsAndMerge(
236 AsgForwardElectronLikelihoodToolCfg(
237 flags,
238 name="ForwardElectronLHSelectorLoose",
239 WorkingPoint="LooseLHForwardElectron",
240 )
241 )
242 acc.addPublicTool(ForwardElectronLHSelectorLoose)
243
244 ForwardElectronLHSelectorMedium = acc.popToolsAndMerge(
245 AsgForwardElectronLikelihoodToolCfg(
246 flags,
247 name="ForwardElectronLHSelectorMedium",
248 WorkingPoint="MediumLHForwardElectron",
249 )
250 )
251 acc.addPublicTool(ForwardElectronLHSelectorMedium)
252
253 ForwardElectronLHSelectorTight = acc.popToolsAndMerge(
254 AsgForwardElectronLikelihoodToolCfg(
255 flags,
256 name="ForwardElectronLHSelectorTight",
257 WorkingPoint="TightLHForwardElectron",
258 )
259 )
260 acc.addPublicTool(ForwardElectronLHSelectorTight)
261
262
263
264
265 from ROOT import egammaPID
266
267 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig import (
268 AsgPhotonIsEMSelectorCfg,
269 )
270 from ElectronPhotonSelectorTools.PhotonIsEMSelectorMapping import photonPIDmenu
271 pidMenu = photonPIDmenu.offlineMC21
272 if flags.GeoModel.Run is LHCPeriod.Run2:
273 pidMenu = photonPIDmenu.offlineMC20
274
275
276 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
277 AsgPhotonIsEMSelectorCfg(
278 flags,
279 name="PhotonIsEMSelectorLoose",
280 quality=egammaPID.PhotonIDLoose,
281 menu=pidMenu
282 )
283 )
284 acc.addPublicTool(PhotonIsEMSelectorLoose)
285
286
287 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
288 AsgPhotonIsEMSelectorCfg(
289 flags,
290 name="PhotonIsEMSelectorMedium",
291 quality=egammaPID.PhotonIDMedium,
292 menu=pidMenu
293 )
294 )
295 acc.addPublicTool(PhotonIsEMSelectorMedium)
296
297
298 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
299 AsgPhotonIsEMSelectorCfg(
300 flags,
301 name="PhotonIsEMSelectorTight",
302 quality=egammaPID.PhotonIDTight,
303 menu=pidMenu
304 )
305 )
306 acc.addPublicTool(PhotonIsEMSelectorTight)
307
308
309
310
311 photonIDBDTWP = "TightBDTPhoton_Run3"
312 if flags.GeoModel.Run is LHCPeriod.Run2:
313 photonIDBDTWP = "TightBDTPhoton_Run2"
314 from ElectronPhotonSelectorTools.AsgPhotonBDTSelectorConfig import (
315 PhotonBDTCalculatorCfg,
316 AsgPhotonBDTSelectorCfg,
317 )
318 PhotonBDTCalculator = acc.popToolsAndMerge(
319 PhotonBDTCalculatorCfg(
320 flags,
321 name="PhotonBDTCalculator",
322 useNFs=False,
323 )
324 )
325 PhotonBDTSelectorTight = acc.popToolsAndMerge(
326 AsgPhotonBDTSelectorCfg(
327 flags,
328 name="PhotonBDTSelectorTight",
329 ScoreDecoration="DFCommonPhotonsBDTScore",
330 WorkingPoint=photonIDBDTWP,
331 useNFs=False,
332 SuppressInputDependence=True
333 )
334 )
335 PhotonBDTCalculatorNF = acc.popToolsAndMerge(
336 PhotonBDTCalculatorCfg(
337 flags,
338 name="PhotonBDTCalculatorNF",
339 useNFs=True,
340 )
341 )
342 PhotonBDTSelectorTightNF = acc.popToolsAndMerge(
343 AsgPhotonBDTSelectorCfg(
344 flags,
345 name="PhotonBDTSelectorTightNF",
346 ScoreDecoration="DFCommonPhotonsNFBDTScore",
347 WorkingPoint=photonIDBDTWP+"_NFs",
348 useNFs=True,
349 SuppressInputDependence=True
350 )
351 )
352
353
354
355
356 from egammaCaloTools.egammaCaloToolsConfig import CaloFillRectangularClusterCfg
357
358 EGAMCOM_caloFillRect55 = acc.popToolsAndMerge(
359 CaloFillRectangularClusterCfg(
360 flags,
361 name="EGAMCOMCaloFillRectangularCluster55",
362 cells_name="AllCalo",
363 eta_size=5,
364 phi_size=5,
365 fill_cluster=True,
366 )
367 )
368 acc.addPublicTool(EGAMCOM_caloFillRect55)
369
370 EGAMCOM_caloFillRect35 = acc.popToolsAndMerge(
371 CaloFillRectangularClusterCfg(
372 flags,
373 name="EGAMCOMCaloFillRectangularCluster35",
374 cells_name="AllCalo",
375 eta_size=3,
376 phi_size=5,
377 fill_cluster=True,
378 )
379 )
380 acc.addPublicTool(EGAMCOM_caloFillRect35)
381
382 EGAMCOM_caloFillRect37 = acc.popToolsAndMerge(
383 CaloFillRectangularClusterCfg(
384 flags,
385 name="EGAMCOMCaloFillRectangularCluster37",
386 cells_name="AllCalo",
387 eta_size=3,
388 phi_size=7,
389 fill_cluster=True,
390 )
391 )
392 acc.addPublicTool(EGAMCOM_caloFillRect37)
393
394 EGAMCOM_caloFillRect711 = acc.popToolsAndMerge(
395 CaloFillRectangularClusterCfg(
396 flags,
397 name="EGAMCOMCaloFillRectangularCluster711",
398 cells_name="AllCalo",
399 eta_size=7,
400 phi_size=11,
401 fill_cluster=True,
402 )
403 )
404 acc.addPublicTool(EGAMCOM_caloFillRect711)
405
406
407
408
409 from DerivationFrameworkEGamma.EGammaToolsConfig import EGSelectionToolWrapperCfg
410 from DerivationFrameworkEGamma.EGammaToolsConfig import (
411 EGElectronLikelihoodToolWrapperCfg,
412 EGPhotonBDTToolWrapperCfg,
413 EGPhotonBDTToolDecoratorCfg
414 )
415
416
417
418
419 ElectronPassLHVeryLoose = acc.addPublicTool(acc.popToolsAndMerge(
420 EGElectronLikelihoodToolWrapperCfg(
421 flags,
422 name="ElectronPassLHVeryLoose",
423 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
424 CutType="",
425 StoreGateEntryName="DFCommonElectronsLHVeryLoose",
426 ContainerName="Electrons",
427 StoreTResult=False,
428 )
429 ))
430
431
432 ElectronPassLHLoose = acc.addPublicTool(acc.popToolsAndMerge(
433 EGElectronLikelihoodToolWrapperCfg(
434 flags,
435 name="ElectronPassLHLoose",
436 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
437 CutType="",
438 StoreGateEntryName="DFCommonElectronsLHLoose",
439 ContainerName="Electrons",
440 StoreTResult=False,
441 )
442 ))
443
444
445 ElectronPassLHLooseBL = acc.addPublicTool(acc.popToolsAndMerge(
446 EGElectronLikelihoodToolWrapperCfg(
447 flags,
448 name="ElectronPassLHLooseBL",
449 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
450 CutType="",
451 StoreGateEntryName="DFCommonElectronsLHLooseBL",
452 ContainerName="Electrons",
453 StoreTResult=False,
454 )
455 ))
456
457
458 ElectronPassLHMedium = acc.addPublicTool(acc.popToolsAndMerge(
459 EGElectronLikelihoodToolWrapperCfg(
460 flags,
461 name="ElectronPassLHMedium",
462 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
463 CutType="",
464 StoreGateEntryName="DFCommonElectronsLHMedium",
465 ContainerName="Electrons",
466 StoreTResult=False,
467 )
468 ))
469
470
471 ElectronPassLHTight = acc.addPublicTool(acc.popToolsAndMerge(
472 EGElectronLikelihoodToolWrapperCfg(
473 flags,
474 name="ElectronPassLHTight",
475 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
476 CutType="",
477 StoreGateEntryName="DFCommonElectronsLHTight",
478 ContainerName="Electrons",
479 StoreTResult=False,
480 )
481 ))
482
483
484 ElectronPassDNNLoose = acc.addPublicTool(acc.popToolsAndMerge(
485 EGElectronLikelihoodToolWrapperCfg(
486 flags,
487 name="ElectronPassDNNLoose",
488 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
489 CutType="",
490 StoreGateEntryName="DFCommonElectronsDNNLoose",
491 ContainerName="Electrons",
492 FudgedContainerName="FudgedElectrons" if isMC else "",
493 StoreTResult=False,
494 StoreGateEntryMultipleNames=[
495 "DFCommonElectronsDNN_pel",
496 "DFCommonElectronsDNN_pcf",
497 "DFCommonElectronsDNN_ppc",
498 "DFCommonElectronsDNN_phf",
499 "DFCommonElectronsDNN_ple",
500 "DFCommonElectronsDNN_plh",
501 ],
502 StoreMultipleOutputs=True,
503 )
504 ))
505
506
507 ElectronPassDNNMedium = acc.addPublicTool(acc.popToolsAndMerge(
508 EGElectronLikelihoodToolWrapperCfg(
509 flags,
510 name="ElectronPassDNNMedium",
511 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
512 CutType="",
513 StoreGateEntryName="DFCommonElectronsDNNMedium",
514 ContainerName="Electrons",
515 FudgedContainerName="FudgedElectrons" if isMC else "",
516 StoreTResult=False,
517 )
518 ))
519
520
521 ElectronPassDNNTight = acc.addPublicTool(acc.popToolsAndMerge(
522 EGElectronLikelihoodToolWrapperCfg(
523 flags,
524 name="ElectronPassDNNTight",
525 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
526 CutType="",
527 StoreGateEntryName="DFCommonElectronsDNNTight",
528 ContainerName="Electrons",
529 FudgedContainerName="FudgedElectrons" if isMC else "",
530 StoreTResult=False,
531 )
532 ))
533
534
535 ElectronPassDNNVeryLooseNoCF97 = acc.addPublicTool(acc.popToolsAndMerge(
536 EGElectronLikelihoodToolWrapperCfg(
537 flags,
538 name="ElectronPassDNNVeryLooseNoCF97",
539 EGammaElectronLikelihoodTool=ElectronDNNSelectorVeryLooseNoCF97,
540 CutType="",
541 StoreGateEntryName="DFCommonElectronsDNNVeryLooseNoCF97",
542 ContainerName="Electrons",
543 FudgedContainerName="FudgedElectrons" if isMC else "",
544 StoreTResult=False,
545 )
546 ))
547
548 ElectronPassDNNLooseNoCF = acc.addPublicTool(acc.popToolsAndMerge(
549 EGElectronLikelihoodToolWrapperCfg(
550 flags,
551 name="ElectronPassDNNLooseNoCF",
552 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
553 CutType="",
554 StoreGateEntryName="DFCommonElectronsDNNLooseNoCF",
555 ContainerName="Electrons",
556 FudgedContainerName="FudgedElectrons" if isMC else "",
557 StoreTResult=False,
558 )
559 ))
560
561
562 ElectronPassDNNMediumNoCF = acc.addPublicTool(acc.popToolsAndMerge(
563 EGElectronLikelihoodToolWrapperCfg(
564 flags,
565 name="ElectronPassDNNMediumNoCF",
566 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
567 CutType="",
568 StoreGateEntryName="DFCommonElectronsDNNMediumNoCF",
569 ContainerName="Electrons",
570 FudgedContainerName="FudgedElectrons" if isMC else "",
571 StoreTResult=False,
572 )
573 ))
574
575
576 ElectronPassDNNTightNoCF = acc.addPublicTool(acc.popToolsAndMerge(
577 EGElectronLikelihoodToolWrapperCfg(
578 flags,
579 name="ElectronPassDNNTightNoCF",
580 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
581 CutType="",
582 StoreGateEntryName="DFCommonElectronsDNNTightNoCF",
583 ContainerName="Electrons",
584 FudgedContainerName="FudgedElectrons" if isMC else "",
585 StoreTResult=False,
586 )
587 ))
588
589
590 if flags.Derivation.Egamma.addECIDS:
591 ElectronPassECIDS = acc.addPublicTool(acc.popToolsAndMerge(
592 EGElectronLikelihoodToolWrapperCfg(
593 flags,
594 name="ElectronPassECIDS",
595 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
596 CutType="",
597 StoreGateEntryName="DFCommonElectronsECIDS",
598 ContainerName="Electrons",
599 StoreTResult=True,
600 )
601 ))
602
603 if includeFwdElectrons:
604
605 ForwardElectronPassLHLoose = acc.addPublicTool(acc.popToolsAndMerge(
606 EGElectronLikelihoodToolWrapperCfg(
607 flags,
608 name="ForwardElectronPassLHLoose",
609 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
610 CutType="",
611 StoreGateEntryName="DFCommonForwardElectronsLHLoose",
612 ContainerName="ForwardElectrons",
613 )
614 ))
615
616
617 ForwardElectronPassLHMedium = acc.addPublicTool(acc.popToolsAndMerge(
618 EGElectronLikelihoodToolWrapperCfg(
619 flags,
620 name="ForwardElectronPassLHMedium",
621 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
622 CutType="",
623 StoreGateEntryName="DFCommonForwardElectronsLHMedium",
624 ContainerName="ForwardElectrons",
625 )
626 ))
627
628
629 ForwardElectronPassLHTight = acc.addPublicTool(acc.popToolsAndMerge(
630 EGElectronLikelihoodToolWrapperCfg(
631 flags,
632 name="ForwardElectronPassLHTight",
633 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
634 CutType="",
635 StoreGateEntryName="DFCommonForwardElectronsLHTight",
636 ContainerName="ForwardElectrons",
637 )
638 ))
639
640
641
642
643 PhotonPassIsEMLoose = acc.addPublicTool(acc.popToolsAndMerge(
644 EGSelectionToolWrapperCfg(
645 flags,
646 name="PhotonPassIsEMLoose",
647 EGammaSelectionTool=PhotonIsEMSelectorLoose,
648 CutType="",
649 StoreGateEntryName="DFCommonPhotonsIsEMLoose",
650 ContainerName="Photons",
651 FudgedContainerName="FudgedPhotons" if isFullSim else "",
652 )
653 ))
654
655
656
657
658 PhotonPassIsEMMedium = acc.addPublicTool(acc.popToolsAndMerge(
659 EGSelectionToolWrapperCfg(
660 flags,
661 name="PhotonPassIsEMMedium",
662 EGammaSelectionTool=PhotonIsEMSelectorMedium,
663 CutType="",
664 StoreGateEntryName="DFCommonPhotonsIsEMMedium",
665 ContainerName="Photons",
666 FudgedContainerName="FudgedPhotons" if isFullSim else "",
667 )
668 ))
669
670
671
672
673 PhotonPassIsEMTight = acc.addPublicTool(acc.popToolsAndMerge(
674 EGSelectionToolWrapperCfg(
675 flags,
676 name="PhotonPassIsEMTight",
677 EGammaSelectionTool=PhotonIsEMSelectorTight,
678 CutType="",
679 StoreGateEntryName="DFCommonPhotonsIsEMTight",
680 ContainerName="Photons",
681 FudgedContainerName="FudgedPhotons" if isFullSim else "",
682 )
683 ))
684
685
686
687
688 PhotonBDTDecorator = acc.addPublicTool(acc.popToolsAndMerge(
689 EGPhotonBDTToolDecoratorCfg(
690 flags,
691 name="PhotonBDTDecorator",
692 PhotonObservableTool=PhotonBDTCalculator,
693 StoreGateEntryName="DFCommonPhotonsBDT",
694 ContainerName="Photons",
695 FudgedContainerName= "FudgedPhotons" if isFullSim else ""
696 )
697 ))
698
699
700 PhotonPassBDTTight = acc.addPublicTool(acc.popToolsAndMerge(
701 EGPhotonBDTToolWrapperCfg(
702 flags,
703 name="PhotonPassBDTTight",
704 PhotonBDTSelectionTool=PhotonBDTSelectorTight,
705 CutType="",
706 StoreGateEntryName="DFCommonPhotonsBDT",
707 WorkingPointName="Tight",
708 ContainerName="Photons",
709 FudgedContainerName= "FudgedPhotons" if isFullSim else ""
710 )
711 ))
712
713
714
715
716 PhotonPassIsEMTightNF = acc.addPublicTool(acc.popToolsAndMerge(
717 EGSelectionToolWrapperCfg(
718 flags,
719 name="PhotonPassIsEMTightNF",
720 EGammaSelectionTool=PhotonIsEMSelectorTight,
721 CutType="",
722 StoreGateEntryName="DFCommonPhotonsIsEMTightNF",
723 ContainerName="Photons",
724 FudgedContainerName= "NFFudgedPhotons" if (isMC and isRun2orRun3) else ""
725 )
726 ))
727
728
729
730
731 PhotonBDTDecoratorNF = acc.addPublicTool(acc.popToolsAndMerge(
732 EGPhotonBDTToolDecoratorCfg(
733 flags,
734 name="PhotonBDTDecoratorNF",
735 PhotonObservableTool=PhotonBDTCalculatorNF,
736 StoreGateEntryName="DFCommonPhotonsNFBDT",
737 ContainerName="Photons",
738 FudgedContainerName= "NFFudgedPhotons" if (isMC and isRun2orRun3) else ""
739 )
740 ))
741
742 PhotonPassBDTTightNF = acc.addPublicTool(acc.popToolsAndMerge(
743 EGPhotonBDTToolWrapperCfg(
744 flags,
745 name="PhotonPassBDTTightNF",
746 PhotonBDTSelectionTool=PhotonBDTSelectorTightNF,
747 CutType="",
748 StoreGateEntryName="DFCommonPhotonsNFBDT",
749 WorkingPointName="Tight",
750 ContainerName="Photons",
751 FudgedContainerName= "NFFudgedPhotons" if (isMC and isRun2orRun3) else ""
752 )
753 ))
754
755
756
757
758 from DerivationFrameworkEGamma.EGammaToolsConfig import EGPhotonCleaningWrapperCfg
759
760 PhotonPassCleaning = acc.addPublicTool(acc.popToolsAndMerge(
761 EGPhotonCleaningWrapperCfg(
762 flags,
763 name="PhotonPassCleaning",
764 StoreGateEntryName="DFCommonPhotonsCleaning",
765 ContainerName="Photons",
766 FudgedContainerName= "FudgedPhotons" if isFullSim else ""
767 )
768 ))
769
770
771
772 from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronAmbiguityToolCfg
773
774 ElectronAmbiguity = acc.addPublicTool(acc.popToolsAndMerge(
775 EGElectronAmbiguityToolCfg(
776 flags,
777 name="ElectronAdditionnalAmbiguity",
778 isMC=flags.Input.isMC,
779 )
780 ))
781
782
783 EGAugmentationTools = [
784 DFCommonPhotonsDirection,
785 ElectronPassLHVeryLoose,
786 ElectronPassLHLoose,
787 ElectronPassLHLooseBL,
788 ElectronPassLHMedium,
789 ElectronPassLHTight,
790 ElectronPassDNNLoose,
791 ElectronPassDNNMedium,
792 ElectronPassDNNTight,
793 ElectronPassDNNVeryLooseNoCF97,
794 ElectronPassDNNLooseNoCF,
795 ElectronPassDNNMediumNoCF,
796 ElectronPassDNNTightNoCF,
797 PhotonPassIsEMLoose,
798 PhotonPassIsEMMedium,
799 PhotonPassIsEMTight,
800 PhotonPassIsEMTightNF,
801 PhotonBDTDecorator,
802 PhotonPassBDTTight,
803 PhotonBDTDecoratorNF,
804 PhotonPassBDTTightNF,
805 PhotonPassCleaning,
806 ElectronAmbiguity,
807 ]
808
809 if flags.Derivation.Egamma.addECIDS:
810 EGAugmentationTools.extend([ElectronPassECIDS])
811
812 if includeFwdElectrons:
813 EGAugmentationTools.extend(
814 [
815 ForwardElectronPassLHLoose,
816 ForwardElectronPassLHMedium,
817 ForwardElectronPassLHTight,
818 ]
819 )
820
821 from egammaAlgs.egammaAODFixesConfig import runAODFix
822 _, fixes = runAODFix(flags)
823
824 if not('egammatopoIsoFix' in fixes):
825 if flags.Derivation.Egamma.addMissingCellInfo:
826 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
827 EgammaCoreCellRecoveryCfg,
828 )
829
830 CoreCellRecoveryTool = acc.popToolsAndMerge(
831 EgammaCoreCellRecoveryCfg(flags)
832 )
833 acc.addPublicTool(CoreCellRecoveryTool)
834 EGAugmentationTools.append(CoreCellRecoveryTool)
835
836 if flags.Derivation.Egamma.addMissingCellInfo:
837 from DerivationFrameworkEGamma.EGammaToolsConfig import EGammaEnergyCalibrationWrapperCfg
838 TransformerEnergyCalibration = acc.addPublicTool(acc.popToolsAndMerge(
839 EGammaEnergyCalibrationWrapperCfg(
840 flags,
841 name="TransformerEnergyCalibration",
842 )
843 ))
844 EGAugmentationTools.append(TransformerEnergyCalibration)
845
846
847
848 if flags.Input.isMC:
849
850 from DerivationFrameworkEGamma.EGammaToolsConfig import (
851 BkgElectronClassificationCfg,
852 )
853
854 BkgElectronClassificationTool = acc.addPublicTool(acc.popToolsAndMerge(
855 BkgElectronClassificationCfg(
856 flags,
857 name="BkgElectronClassificationTool"
858 )
859 ))
860 EGAugmentationTools.append(BkgElectronClassificationTool)
861
862
863 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import (
864 TruthIsolationToolCfg,
865 )
866
867 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
868 TruthIsolationToolCfg(
869 flags,
870 name="TruthEgetIsolationTool",
871 isoParticlesKey="egammaTruthParticles",
872 allParticlesKey="TruthParticles",
873 particleIDsToCalculate=[-11, 11, 22],
874 IsolationConeSizes=[0.2, 0.3, 0.4],
875 excludeIDsFromCone=[-16, -14, -13, -12, 12, 13, 14, 16],
876 IsolationVarNamePrefix="etcone",
877 ChargedParticlesOnly=False,
878 )
879 )
880 EGAugmentationTools.append(TruthEgetIsolationTool)
881
882
883 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
884 TruthIsolationToolCfg(
885 flags,
886 name="TruthEgptIsolationTool",
887 isoParticlesKey="egammaTruthParticles",
888 allParticlesKey="TruthParticles",
889 particleIDsToCalculate=[-11, 11, 22],
890 IsolationConeSizes=[0.2, 0.3, 0.4],
891 IsolationVarNamePrefix="ptcone",
892 ChargedParticlesOnly=True,
893 )
894 )
895 EGAugmentationTools.append(TruthEgptIsolationTool)
896
897
898 from EventShapeTools.EventDensityConfig import configEventDensityTool
899 from JetRecConfig.JetRecConfig import (
900 getInputAlgs,
901 getConstitPJGAlg,
902 reOrderAlgs,
903 )
904 from JetRecConfig.StandardJetConstits import stdConstitDic as cst
905
906
907 constit_algs = getInputAlgs(cst.Truth, flags=flags)
908 constit_algs, ca = reOrderAlgs([a for a in constit_algs if a is not None])
909 acc.merge(ca)
910 for a in constit_algs:
911 acc.addEventAlgo(a)
912 constitPJAlg = getConstitPJGAlg(cst.Truth, suffix=None)
913 acc.addEventAlgo(constitPJAlg)
914
915 tc = configEventDensityTool(
916 "EDTruthCentralTool",
917 cst.Truth,
918 0.5,
919 AbsRapidityMin=0.0,
920 AbsRapidityMax=1.5,
921 OutputContainer="TruthIsoCentralEventShape",
922 OutputLevel=3,
923 )
924 acc.addPublicTool(tc)
925
926
927 tf = configEventDensityTool(
928 "EDTruthForwardTool",
929 cst.Truth,
930 0.5,
931 AbsRapidityMin=1.5,
932 AbsRapidityMax=3.0,
933 OutputContainer="TruthIsoForwardEventShape",
934 OutputLevel=3,
935 )
936 acc.addPublicTool(tf)
937
938 acc.addEventAlgo(
939 CompFactory.EventDensityAthAlg("EDTruthCentralAlg", EventDensityTool=tc)
940 )
941 acc.addEventAlgo(
942 CompFactory.EventDensityAthAlg("EDTruthForwardAlg", EventDensityTool=tf)
943 )
944
945
946 if flags.Input.isMC:
947 from DerivationFrameworkEGamma.EGammaToolsConfig import (
948 ElectronFudgeAlgorithmCfg, PhotonFudgeAlgorithmCfg, PhotonNFFudgeAlgorithmCfg)
949 acc.merge(ElectronFudgeAlgorithmCfg(flags))
950 if isRun2orRun3:
951 acc.merge(PhotonNFFudgeAlgorithmCfg(flags))
952 if isFullSim:
953 acc.merge(PhotonFudgeAlgorithmCfg(flags))
954
955
956
957
958
959 acc.addEventAlgo(
960 CompFactory.DerivationFramework.CommonAugmentation(
961 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
962 )
963 )
964
965
966
967
968 from IsolationAlgs.DerivationTrackIsoConfig import DerivationTrackIsoCfg
969
970 if includeFwdElectrons:
971 acc.merge(DerivationTrackIsoCfg(flags, object_types=("Electrons", "Muons", "ForwardElectrons")))
972 else:
973 acc.merge(DerivationTrackIsoCfg(flags, object_types=("Electrons", "Muons")))
974
975 hasFlowObject = (
976 "JetETMissChargedParticleFlowObjects" in flags.Input.Collections
977 and "JetETMissNeutralParticleFlowObjects" in flags.Input.Collections
978 )
979 if hasFlowObject:
980 from IsolationAlgs.IsolationSteeringDerivConfig import IsolationSteeringDerivCfg
981
982 acc.merge(IsolationSteeringDerivCfg(flags))
983
984 return acc
void print(char *figname, TCanvas *c1)