16 """Main config method for e-gamma decorations"""
20 includeFwdElectrons =
"ForwardElectrons" in flags.Input.Collections
25 from DerivationFrameworkEGamma.EGammaToolsConfig
import PhotonsDirectionToolCfg
27 DFCommonPhotonsDirection = acc.addPublicTool(acc.popToolsAndMerge(
30 name=
"DFCommonPhotonsDirection",
31 EtaSGEntry=
"DFCommonPhotons_eta",
32 PhiSGEntry=
"DFCommonPhotons_phi",
33 EtSGEntry=
"DFCommonPhotons_et",
43 isMC = flags.Input.isMC
46 isFullSim = flags.Sim.ISF.Simulator.isFullSim()
48 print(
"EGammaCommon: isMC = ", isMC)
50 print(
"EGammaCommon: isFullSim = ", isFullSim)
53 from EGammaVariableCorrection.EGammaVariableCorrectionConfig
import (
54 ElectronVariableCorrectionToolCfg,
55 PhotonVariableCorrectionToolCfg,
58 ElectronVariableCorrectionTool = acc.popToolsAndMerge(
61 acc.addPublicTool(ElectronVariableCorrectionTool)
63 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
66 acc.addPublicTool(PhotonVariableCorrectionTool)
73 from ROOT
import LikeEnum
75 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig
import (
76 AsgElectronLikelihoodToolCfg,
78 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping
import electronLHmenu
80 lhMenu = electronLHmenu.offlineMC21
81 from AthenaConfiguration.Enums
import LHCPeriod
82 if flags.GeoModel.Run
is LHCPeriod.Run2:
83 lhMenu = electronLHmenu.offlineMC20
86 ElectronLHSelectorVeryLoose = acc.popToolsAndMerge(
89 name=
"ElectronLHSelectorVeryLoose",
90 quality=LikeEnum.VeryLoose,
94 ElectronLHSelectorVeryLoose.primaryVertexContainer =
"PrimaryVertices"
95 acc.addPublicTool(ElectronLHSelectorVeryLoose)
98 ElectronLHSelectorLoose = acc.popToolsAndMerge(
101 name=
"ElectronLHSelectorLoose",
102 quality=LikeEnum.Loose,
106 ElectronLHSelectorLoose.primaryVertexContainer =
"PrimaryVertices"
107 acc.addPublicTool(ElectronLHSelectorLoose)
110 ElectronLHSelectorLooseBL = acc.popToolsAndMerge(
113 name=
"ElectronLHSelectorLooseBL",
114 quality=LikeEnum.LooseBL,
118 ElectronLHSelectorLooseBL.primaryVertexContainer =
"PrimaryVertices"
119 acc.addPublicTool(ElectronLHSelectorLooseBL)
122 ElectronLHSelectorMedium = acc.popToolsAndMerge(
125 name=
"ElectronLHSelectorMedium",
126 quality=LikeEnum.Medium,
130 ElectronLHSelectorMedium.primaryVertexContainer =
"PrimaryVertices"
131 acc.addPublicTool(ElectronLHSelectorMedium)
134 ElectronLHSelectorTight = acc.popToolsAndMerge(
137 name=
"ElectronLHSelectorTight",
138 quality=LikeEnum.Tight,
142 ElectronLHSelectorTight.primaryVertexContainer =
"PrimaryVertices"
143 acc.addPublicTool(ElectronLHSelectorTight)
148 from ElectronPhotonSelectorTools.AsgElectronSelectorToolConfig
import (
149 AsgElectronSelectorToolCfg,
153 ElectronDNNSelectorLoose = acc.popToolsAndMerge(
156 name=
"ElectronDNNSelectorLoose",
157 WorkingPoint=
"LooseDNNElectron",
160 acc.addPublicTool(ElectronDNNSelectorLoose)
163 ElectronDNNSelectorMedium = acc.popToolsAndMerge(
166 name=
"ElectronDNNSelectorMedium",
167 WorkingPoint=
"MediumDNNElectron",
170 acc.addPublicTool(ElectronDNNSelectorMedium)
173 ElectronDNNSelectorTight = acc.popToolsAndMerge(
176 name=
"ElectronDNNSelectorTight",
177 WorkingPoint=
"TightDNNElectron",
180 acc.addPublicTool(ElectronDNNSelectorTight)
186 ElectronDNNSelectorVeryLooseNoCF97 = acc.popToolsAndMerge(
189 name=
"ElectronDNNSelectorVeryLooseNoCF97",
190 WorkingPoint=
"VeryLooseNoCF97DNNElectron",
193 acc.addPublicTool(ElectronDNNSelectorVeryLooseNoCF97)
196 ElectronDNNSelectorLooseNoCF = acc.popToolsAndMerge(
199 name=
"ElectronDNNSelectorLooseNoCF",
200 WorkingPoint=
"LooseNoCFDNNElectron",
203 acc.addPublicTool(ElectronDNNSelectorLooseNoCF)
206 ElectronDNNSelectorMediumNoCF = acc.popToolsAndMerge(
209 name=
"ElectronDNNSelectorMediumNoCF",
210 WorkingPoint=
"MediumNoCFDNNElectron",
213 acc.addPublicTool(ElectronDNNSelectorMediumNoCF)
216 ElectronDNNSelectorTightNoCF = acc.popToolsAndMerge(
219 name=
"ElectronDNNSelectorTightNoCF",
220 WorkingPoint=
"TightNoCFDNNElectron",
223 acc.addPublicTool(ElectronDNNSelectorTightNoCF)
228 if flags.Derivation.Egamma.addECIDS:
229 from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig
import (
230 AsgElectronChargeIDSelectorToolCfg,
233 ElectronChargeIDSelector = acc.popToolsAndMerge(
235 flags, name=
"ElectronChargeIDSelectorLoose"
238 ElectronChargeIDSelector.primaryVertexContainer =
"PrimaryVertices"
239 ElectronChargeIDSelector.TrainingFile = (
240 "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"
242 acc.addPublicTool(ElectronChargeIDSelector)
247 if includeFwdElectrons:
248 from ElectronPhotonSelectorTools.AsgForwardElectronLikelihoodToolConfig
import (
249 AsgForwardElectronLikelihoodToolCfg,
252 ForwardElectronLHSelectorLoose = acc.popToolsAndMerge(
255 name=
"ForwardElectronLHSelectorLoose",
256 WorkingPoint=
"LooseLHForwardElectron",
259 acc.addPublicTool(ForwardElectronLHSelectorLoose)
261 ForwardElectronLHSelectorMedium = acc.popToolsAndMerge(
264 name=
"ForwardElectronLHSelectorMedium",
265 WorkingPoint=
"MediumLHForwardElectron",
268 acc.addPublicTool(ForwardElectronLHSelectorMedium)
270 ForwardElectronLHSelectorTight = acc.popToolsAndMerge(
273 name=
"ForwardElectronLHSelectorTight",
274 WorkingPoint=
"TightLHForwardElectron",
277 acc.addPublicTool(ForwardElectronLHSelectorTight)
282 from ROOT
import egammaPID
284 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig
import (
285 AsgPhotonIsEMSelectorCfg,
287 from ElectronPhotonSelectorTools.PhotonIsEMSelectorMapping
import photonPIDmenu
288 pidMenu = photonPIDmenu.offlineMC21
289 if flags.GeoModel.Run
is LHCPeriod.Run2:
290 pidMenu = photonPIDmenu.offlineMC20
293 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
296 name=
"PhotonIsEMSelectorLoose",
297 quality=egammaPID.PhotonIDLoose,
301 acc.addPublicTool(PhotonIsEMSelectorLoose)
304 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
307 name=
"PhotonIsEMSelectorMedium",
308 quality=egammaPID.PhotonIDMedium,
312 acc.addPublicTool(PhotonIsEMSelectorMedium)
315 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
318 name=
"PhotonIsEMSelectorTight",
319 quality=egammaPID.PhotonIDTight,
323 acc.addPublicTool(PhotonIsEMSelectorTight)
330 from egammaCaloTools.egammaCaloToolsConfig
import CaloFillRectangularClusterCfg
332 EGAMCOM_caloFillRect55 = acc.popToolsAndMerge(
335 name=
"EGAMCOMCaloFillRectangularCluster55",
336 cells_name=
"AllCalo",
342 acc.addPublicTool(EGAMCOM_caloFillRect55)
344 EGAMCOM_caloFillRect35 = acc.popToolsAndMerge(
347 name=
"EGAMCOMCaloFillRectangularCluster35",
348 cells_name=
"AllCalo",
354 acc.addPublicTool(EGAMCOM_caloFillRect35)
356 EGAMCOM_caloFillRect37 = acc.popToolsAndMerge(
359 name=
"EGAMCOMCaloFillRectangularCluster37",
360 cells_name=
"AllCalo",
366 acc.addPublicTool(EGAMCOM_caloFillRect37)
368 EGAMCOM_caloFillRect711 = acc.popToolsAndMerge(
371 name=
"EGAMCOMCaloFillRectangularCluster711",
372 cells_name=
"AllCalo",
378 acc.addPublicTool(EGAMCOM_caloFillRect711)
383 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGSelectionToolWrapperCfg
384 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
385 EGElectronLikelihoodToolWrapperCfg,
393 name=
"ElectronPassLHVeryLoose",
394 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
395 EGammaFudgeMCTool=
None,
397 StoreGateEntryName=
"DFCommonElectronsLHVeryLoose",
398 ContainerName=
"Electrons",
406 name=
"ElectronPassLHLoose",
407 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
408 EGammaFudgeMCTool=
None,
410 StoreGateEntryName=
"DFCommonElectronsLHLoose",
411 ContainerName=
"Electrons",
419 name=
"ElectronPassLHLooseBL",
420 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
421 EGammaFudgeMCTool=
None,
423 StoreGateEntryName=
"DFCommonElectronsLHLooseBL",
424 ContainerName=
"Electrons",
432 name=
"ElectronPassLHMedium",
433 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
434 EGammaFudgeMCTool=
None,
436 StoreGateEntryName=
"DFCommonElectronsLHMedium",
437 ContainerName=
"Electrons",
445 name=
"ElectronPassLHTight",
446 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
447 EGammaFudgeMCTool=
None,
449 StoreGateEntryName=
"DFCommonElectronsLHTight",
450 ContainerName=
"Electrons",
458 name=
"ElectronPassDNNLoose",
459 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
460 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
462 StoreGateEntryName=
"DFCommonElectronsDNNLoose",
463 ContainerName=
"Electrons",
465 StoreGateEntryMultipleNames=[
466 "DFCommonElectronsDNN_pel",
467 "DFCommonElectronsDNN_pcf",
468 "DFCommonElectronsDNN_ppc",
469 "DFCommonElectronsDNN_phf",
470 "DFCommonElectronsDNN_ple",
471 "DFCommonElectronsDNN_plh",
473 StoreMultipleOutputs=
True,
480 name=
"ElectronPassDNNMedium",
481 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
482 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
484 StoreGateEntryName=
"DFCommonElectronsDNNMedium",
485 ContainerName=
"Electrons",
493 name=
"ElectronPassDNNTight",
494 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
495 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
497 StoreGateEntryName=
"DFCommonElectronsDNNTight",
498 ContainerName=
"Electrons",
506 name=
"ElectronPassDNNVeryLooseNoCF97",
507 EGammaElectronLikelihoodTool=ElectronDNNSelectorVeryLooseNoCF97,
508 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
510 StoreGateEntryName=
"DFCommonElectronsDNNVeryLooseNoCF97",
511 ContainerName=
"Electrons",
518 name=
"ElectronPassDNNLooseNoCF",
519 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
520 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
522 StoreGateEntryName=
"DFCommonElectronsDNNLooseNoCF",
523 ContainerName=
"Electrons",
531 name=
"ElectronPassDNNMediumNoCF",
532 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
533 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
535 StoreGateEntryName=
"DFCommonElectronsDNNMediumNoCF",
536 ContainerName=
"Electrons",
544 name=
"ElectronPassDNNTightNoCF",
545 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
546 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
548 StoreGateEntryName=
"DFCommonElectronsDNNTightNoCF",
549 ContainerName=
"Electrons",
555 if flags.Derivation.Egamma.addECIDS:
558 name=
"ElectronPassECIDS",
559 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
560 EGammaFudgeMCTool=
None,
562 StoreGateEntryName=
"DFCommonElectronsECIDS",
563 ContainerName=
"Electrons",
568 if includeFwdElectrons:
572 name=
"ForwardElectronPassLHLoose",
573 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
574 EGammaFudgeMCTool=
None,
576 StoreGateEntryName=
"DFCommonForwardElectronsLHLoose",
577 ContainerName=
"ForwardElectrons",
584 name=
"ForwardElectronPassLHMedium",
585 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
586 EGammaFudgeMCTool=
None,
588 StoreGateEntryName=
"DFCommonForwardElectronsLHMedium",
589 ContainerName=
"ForwardElectrons",
596 name=
"ForwardElectronPassLHTight",
597 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
598 EGammaFudgeMCTool=
None,
600 StoreGateEntryName=
"DFCommonForwardElectronsLHTight",
601 ContainerName=
"ForwardElectrons",
608 PhotonPassIsEMLoose = acc.addPublicTool(acc.popToolsAndMerge(
611 name=
"PhotonPassIsEMLoose",
612 EGammaSelectionTool=PhotonIsEMSelectorLoose,
613 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
615 StoreGateEntryName=
"DFCommonPhotonsIsEMLoose",
616 ContainerName=
"Photons",
623 PhotonPassIsEMMedium = acc.addPublicTool(acc.popToolsAndMerge(
626 name=
"PhotonPassIsEMMedium",
627 EGammaSelectionTool=PhotonIsEMSelectorMedium,
628 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
630 StoreGateEntryName=
"DFCommonPhotonsIsEMMedium",
631 ContainerName=
"Photons",
638 PhotonPassIsEMTight = acc.addPublicTool(acc.popToolsAndMerge(
641 name=
"PhotonPassIsEMTight",
642 EGammaSelectionTool=PhotonIsEMSelectorTight,
643 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
645 StoreGateEntryName=
"DFCommonPhotonsIsEMTight",
646 ContainerName=
"Photons",
653 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGPhotonCleaningWrapperCfg
655 PhotonPassCleaning = acc.addPublicTool(acc.popToolsAndMerge(
658 name=
"PhotonPassCleaning",
659 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
660 StoreGateEntryName=
"DFCommonPhotonsCleaning",
661 ContainerName=
"Photons",
667 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGElectronAmbiguityToolCfg
669 ElectronAmbiguity = acc.addPublicTool(acc.popToolsAndMerge(
672 name=
"ElectronAdditionnalAmbiguity",
673 isMC=flags.Input.isMC,
678 EGAugmentationTools = [
679 DFCommonPhotonsDirection,
680 ElectronPassLHVeryLoose,
682 ElectronPassLHLooseBL,
683 ElectronPassLHMedium,
685 ElectronPassDNNLoose,
686 ElectronPassDNNMedium,
687 ElectronPassDNNTight,
688 ElectronPassDNNVeryLooseNoCF97,
689 ElectronPassDNNLooseNoCF,
690 ElectronPassDNNMediumNoCF,
691 ElectronPassDNNTightNoCF,
693 PhotonPassIsEMMedium,
699 if flags.Derivation.Egamma.addECIDS:
700 EGAugmentationTools.extend([ElectronPassECIDS])
702 if includeFwdElectrons:
703 EGAugmentationTools.extend(
705 ForwardElectronPassLHLoose,
706 ForwardElectronPassLHMedium,
707 ForwardElectronPassLHTight,
711 if flags.Derivation.Egamma.addMissingCellInfo:
712 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
713 EgammaCoreCellRecoveryCfg,
716 CoreCellRecoveryTool = acc.popToolsAndMerge(
719 acc.addPublicTool(CoreCellRecoveryTool)
720 EGAugmentationTools.append(CoreCellRecoveryTool)
726 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
727 BkgElectronClassificationCfg,
730 BkgElectronClassificationTool = acc.addPublicTool(acc.popToolsAndMerge(
733 name=
"BkgElectronClassificationTool"
736 EGAugmentationTools.append(BkgElectronClassificationTool)
739 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import (
740 TruthIsolationToolCfg,
743 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
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,
756 EGAugmentationTools.append(TruthEgetIsolationTool)
759 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
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,
771 EGAugmentationTools.append(TruthEgptIsolationTool)
774 from EventShapeTools.EventDensityConfig
import configEventDensityTool
775 from JetRecConfig.JetRecConfig
import (
780 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
784 constit_algs, ca =
reOrderAlgs([a
for a
in constit_algs
if a
is not None])
786 for a
in constit_algs:
789 acc.addEventAlgo(constitPJAlg)
792 "EDTruthCentralTool",
797 OutputContainer=
"TruthIsoCentralEventShape",
800 acc.addPublicTool(tc)
804 "EDTruthForwardTool",
809 OutputContainer=
"TruthIsoForwardEventShape",
812 acc.addPublicTool(tf)
815 CompFactory.EventDensityAthAlg(
"EDTruthCentralAlg", EventDensityTool=tc)
818 CompFactory.EventDensityAthAlg(
"EDTruthForwardAlg", EventDensityTool=tf)
826 CompFactory.DerivationFramework.CommonAugmentation(
827 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
834 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
839 "JetETMissChargedParticleFlowObjects" in flags.Input.Collections
840 and "JetETMissNeutralParticleFlowObjects" in flags.Input.Collections
843 from IsolationAlgs.IsolationSteeringDerivConfig
import IsolationSteeringDerivCfg