16 """Main config method for e-gamma decorations"""
20 includeFwdElectrons =
"ForwardElectrons" in ConfigFlags.Input.Collections
25 from DerivationFrameworkEGamma.EGammaToolsConfig
import PhotonsDirectionToolCfg
27 DFCommonPhotonsDirection = acc.getPrimaryAndMerge(
30 name=
"DFCommonPhotonsDirection",
31 EtaSGEntry=
"DFCommonPhotons_eta",
32 PhiSGEntry=
"DFCommonPhotons_phi",
33 EtSGEntry=
"DFCommonPhotons_et",
42 isMC = ConfigFlags.Input.isMC
45 isFullSim = ConfigFlags.Sim.ISF.Simulator.isFullSim()
47 print(
"EGammaCommon: isMC = ", isMC)
49 print(
"EGammaCommon: isFullSim = ", isFullSim)
52 from EGammaVariableCorrection.EGammaVariableCorrectionConfig
import (
53 ElectronVariableCorrectionToolCfg,
54 PhotonVariableCorrectionToolCfg,
57 ElectronVariableCorrectionTool = acc.popToolsAndMerge(
60 acc.addPublicTool(ElectronVariableCorrectionTool)
62 PhotonVariableCorrectionTool = acc.popToolsAndMerge(
65 acc.addPublicTool(PhotonVariableCorrectionTool)
72 from ROOT
import LikeEnum
74 from ElectronPhotonSelectorTools.AsgElectronLikelihoodToolsConfig
import (
75 AsgElectronLikelihoodToolCfg,
77 from ElectronPhotonSelectorTools.ElectronLikelihoodToolMapping
import electronLHmenu
79 lhMenu = electronLHmenu.offlineMC21
80 from AthenaConfiguration.Enums
import LHCPeriod
82 if ConfigFlags.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 ElectronDNNSelectorLooseNoCF = acc.popToolsAndMerge(
189 name=
"ElectronDNNSelectorLooseNoCF",
190 WorkingPoint=
"LooseDNNnoCFElectron",
193 acc.addPublicTool(ElectronDNNSelectorLooseNoCF)
196 ElectronDNNSelectorMediumNoCF = acc.popToolsAndMerge(
199 name=
"ElectronDNNSelectorMediumNoCF",
200 WorkingPoint=
"MediumDNNnoCFElectron",
203 acc.addPublicTool(ElectronDNNSelectorMediumNoCF)
206 ElectronDNNSelectorTightNoCF = acc.popToolsAndMerge(
209 name=
"ElectronDNNSelectorTightNoCF",
210 WorkingPoint=
"TightDNNnoCFElectron",
213 acc.addPublicTool(ElectronDNNSelectorTightNoCF)
218 if ConfigFlags.Derivation.Egamma.addECIDS:
219 from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig
import (
220 AsgElectronChargeIDSelectorToolCfg,
223 ElectronChargeIDSelector = acc.popToolsAndMerge(
225 ConfigFlags, name=
"ElectronChargeIDSelectorLoose"
228 ElectronChargeIDSelector.primaryVertexContainer =
"PrimaryVertices"
229 ElectronChargeIDSelector.TrainingFile = (
230 "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"
232 acc.addPublicTool(ElectronChargeIDSelector)
237 if includeFwdElectrons:
238 from ElectronPhotonSelectorTools.AsgForwardElectronLikelihoodToolConfig
import (
239 AsgForwardElectronLikelihoodToolCfg,
242 ForwardElectronLHSelectorLoose = acc.popToolsAndMerge(
245 name=
"ForwardElectronLHSelectorLoose",
246 WorkingPoint=
"LooseLHForwardElectron",
249 acc.addPublicTool(ForwardElectronLHSelectorLoose)
251 ForwardElectronLHSelectorMedium = acc.popToolsAndMerge(
254 name=
"ForwardElectronLHSelectorMedium",
255 WorkingPoint=
"MediumLHForwardElectron",
258 acc.addPublicTool(ForwardElectronLHSelectorMedium)
260 ForwardElectronLHSelectorTight = acc.popToolsAndMerge(
263 name=
"ForwardElectronLHSelectorTight",
264 WorkingPoint=
"TightLHForwardElectron",
267 acc.addPublicTool(ForwardElectronLHSelectorTight)
272 from ROOT
import egammaPID
274 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig
import (
275 AsgPhotonIsEMSelectorCfg,
277 from ElectronPhotonSelectorTools.PhotonIsEMSelectorMapping
import photonPIDmenu
280 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
282 ConfigFlags, name=
"PhotonIsEMSelectorLoose", quality=egammaPID.PhotonIDLoose
285 acc.addPublicTool(PhotonIsEMSelectorLoose)
288 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
290 ConfigFlags, name=
"PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
293 acc.addPublicTool(PhotonIsEMSelectorMedium)
296 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
298 ConfigFlags, name=
"PhotonIsEMSelectorTight", quality=egammaPID.PhotonIDTight
301 acc.addPublicTool(PhotonIsEMSelectorTight)
305 PhotonIsEMSelectorTightPtIncl = acc.popToolsAndMerge(
308 name=
"PhotonIsEMSelectorTightPtIncl",
309 quality=egammaPID.PhotonIDTight,
310 menu=photonPIDmenu.menuPtInclJan2018,
313 acc.addPublicTool(PhotonIsEMSelectorTightPtIncl)
319 from egammaCaloTools.egammaCaloToolsConfig
import CaloFillRectangularClusterCfg
321 EGAMCOM_caloFillRect55 = acc.popToolsAndMerge(
324 name=
"EGAMCOMCaloFillRectangularCluster55",
325 cells_name=
"AllCalo",
331 acc.addPublicTool(EGAMCOM_caloFillRect55)
333 EGAMCOM_caloFillRect35 = acc.popToolsAndMerge(
336 name=
"EGAMCOMCaloFillRectangularCluster35",
337 cells_name=
"AllCalo",
343 acc.addPublicTool(EGAMCOM_caloFillRect35)
345 EGAMCOM_caloFillRect37 = acc.popToolsAndMerge(
348 name=
"EGAMCOMCaloFillRectangularCluster37",
349 cells_name=
"AllCalo",
355 acc.addPublicTool(EGAMCOM_caloFillRect37)
357 EGAMCOM_caloFillRect711 = acc.popToolsAndMerge(
360 name=
"EGAMCOMCaloFillRectangularCluster711",
361 cells_name=
"AllCalo",
367 acc.addPublicTool(EGAMCOM_caloFillRect711)
372 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGSelectionToolWrapperCfg
373 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
374 EGElectronLikelihoodToolWrapperCfg,
378 ElectronPassLHVeryLoose = acc.getPrimaryAndMerge(
381 name=
"ElectronPassLHVeryLoose",
382 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
383 EGammaFudgeMCTool=
None,
385 StoreGateEntryName=
"DFCommonElectronsLHVeryLoose",
386 ContainerName=
"Electrons",
392 ElectronPassLHLoose = acc.getPrimaryAndMerge(
395 name=
"ElectronPassLHLoose",
396 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
397 EGammaFudgeMCTool=
None,
399 StoreGateEntryName=
"DFCommonElectronsLHLoose",
400 ContainerName=
"Electrons",
406 ElectronPassLHLooseBL = acc.getPrimaryAndMerge(
409 name=
"ElectronPassLHLooseBL",
410 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
411 EGammaFudgeMCTool=
None,
413 StoreGateEntryName=
"DFCommonElectronsLHLooseBL",
414 ContainerName=
"Electrons",
420 ElectronPassLHMedium = acc.getPrimaryAndMerge(
423 name=
"ElectronPassLHMedium",
424 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
425 EGammaFudgeMCTool=
None,
427 StoreGateEntryName=
"DFCommonElectronsLHMedium",
428 ContainerName=
"Electrons",
434 ElectronPassLHTight = acc.getPrimaryAndMerge(
437 name=
"ElectronPassLHTight",
438 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
439 EGammaFudgeMCTool=
None,
441 StoreGateEntryName=
"DFCommonElectronsLHTight",
442 ContainerName=
"Electrons",
448 ElectronPassDNNLoose = acc.getPrimaryAndMerge(
451 name=
"ElectronPassDNNLoose",
452 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
453 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
455 StoreGateEntryName=
"DFCommonElectronsDNNLoose",
456 ContainerName=
"Electrons",
458 StoreGateEntryMultipleNames=[
459 "DFCommonElectronsDNN_pel",
460 "DFCommonElectronsDNN_pcf",
461 "DFCommonElectronsDNN_ppc",
462 "DFCommonElectronsDNN_phf",
463 "DFCommonElectronsDNN_ple",
464 "DFCommonElectronsDNN_plh",
466 StoreMultipleOutputs=
True,
471 ElectronPassDNNMedium = acc.getPrimaryAndMerge(
474 name=
"ElectronPassDNNMedium",
475 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
476 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
478 StoreGateEntryName=
"DFCommonElectronsDNNMedium",
479 ContainerName=
"Electrons",
485 ElectronPassDNNTight = acc.getPrimaryAndMerge(
488 name=
"ElectronPassDNNTight",
489 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
490 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
492 StoreGateEntryName=
"DFCommonElectronsDNNTight",
493 ContainerName=
"Electrons",
499 ElectronPassDNNLooseNoCF = acc.getPrimaryAndMerge(
502 name=
"ElectronPassDNNLooseNoCF",
503 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
504 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
506 StoreGateEntryName=
"DFCommonElectronsDNNLooseNoCF",
507 ContainerName=
"Electrons",
513 ElectronPassDNNMediumNoCF = acc.getPrimaryAndMerge(
516 name=
"ElectronPassDNNMediumNoCF",
517 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
518 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
520 StoreGateEntryName=
"DFCommonElectronsDNNMediumNoCF",
521 ContainerName=
"Electrons",
527 ElectronPassDNNTightNoCF = acc.getPrimaryAndMerge(
530 name=
"ElectronPassDNNTightNoCF",
531 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
532 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
534 StoreGateEntryName=
"DFCommonElectronsDNNTightNoCF",
535 ContainerName=
"Electrons",
541 if ConfigFlags.Derivation.Egamma.addECIDS:
542 ElectronPassECIDS = acc.getPrimaryAndMerge(
545 name=
"ElectronPassECIDS",
546 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
547 EGammaFudgeMCTool=
None,
549 StoreGateEntryName=
"DFCommonElectronsECIDS",
550 ContainerName=
"Electrons",
555 if includeFwdElectrons:
557 ForwardElectronPassLHLoose = acc.getPrimaryAndMerge(
560 name=
"ForwardElectronPassLHLoose",
561 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
562 EGammaFudgeMCTool=
None,
564 StoreGateEntryName=
"DFCommonForwardElectronsLHLoose",
565 ContainerName=
"ForwardElectrons",
570 ForwardElectronPassLHMedium = acc.getPrimaryAndMerge(
573 name=
"ForwardElectronPassLHMedium",
574 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
575 EGammaFudgeMCTool=
None,
577 StoreGateEntryName=
"DFCommonForwardElectronsLHMedium",
578 ContainerName=
"ForwardElectrons",
583 ForwardElectronPassLHTight = acc.getPrimaryAndMerge(
586 name=
"ForwardElectronPassLHTight",
587 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
588 EGammaFudgeMCTool=
None,
590 StoreGateEntryName=
"DFCommonForwardElectronsLHTight",
591 ContainerName=
"ForwardElectrons",
598 PhotonPassIsEMLoose = acc.getPrimaryAndMerge(
601 name=
"PhotonPassIsEMLoose",
602 EGammaSelectionTool=PhotonIsEMSelectorLoose,
603 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
605 StoreGateEntryName=
"DFCommonPhotonsIsEMLoose",
606 ContainerName=
"Photons",
613 PhotonPassIsEMMedium = acc.getPrimaryAndMerge(
616 name=
"PhotonPassIsEMMedium",
617 EGammaSelectionTool=PhotonIsEMSelectorMedium,
618 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
620 StoreGateEntryName=
"DFCommonPhotonsIsEMMedium",
621 ContainerName=
"Photons",
628 PhotonPassIsEMTight = acc.getPrimaryAndMerge(
631 name=
"PhotonPassIsEMTight",
632 EGammaSelectionTool=PhotonIsEMSelectorTight,
633 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
635 StoreGateEntryName=
"DFCommonPhotonsIsEMTight",
636 ContainerName=
"Photons",
644 PhotonPassIsEMTightPtIncl = acc.getPrimaryAndMerge(
647 name=
"PhotonPassIsEMTightPtIncl",
648 EGammaSelectionTool=PhotonIsEMSelectorTightPtIncl,
649 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
651 StoreGateEntryName=
"DFCommonPhotonsIsEMTightPtIncl",
652 ContainerName=
"Photons",
658 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGPhotonCleaningWrapperCfg
660 PhotonPassCleaning = acc.getPrimaryAndMerge(
663 name=
"PhotonPassCleaning",
664 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
665 StoreGateEntryName=
"DFCommonPhotonsCleaning",
666 ContainerName=
"Photons",
672 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGCrackVetoCleaningToolCfg
674 PhotonPassCrackVeto = acc.getPrimaryAndMerge(
677 name=
"PhotonPassCrackVeto",
678 StoreGateEntryName=
"DFCommonCrackVetoCleaning",
679 ContainerName=
"Photons",
682 ElectronPassCrackVeto = acc.getPrimaryAndMerge(
685 name=
"ElectronPassCrackVeto",
686 StoreGateEntryName=
"DFCommonCrackVetoCleaning",
687 ContainerName=
"Electrons",
693 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGElectronAmbiguityToolCfg
695 ElectronAmbiguity = acc.getPrimaryAndMerge(
698 name=
"ElectronAdditionnalAmbiguity",
699 isMC=ConfigFlags.Input.isMC,
704 EGAugmentationTools = [
705 DFCommonPhotonsDirection,
706 ElectronPassLHVeryLoose,
708 ElectronPassLHLooseBL,
709 ElectronPassLHMedium,
711 ElectronPassDNNLoose,
712 ElectronPassDNNMedium,
713 ElectronPassDNNTight,
714 ElectronPassDNNLooseNoCF,
715 ElectronPassDNNMediumNoCF,
716 ElectronPassDNNTightNoCF,
718 PhotonPassIsEMMedium,
720 PhotonPassIsEMTightPtIncl,
723 ElectronPassCrackVeto,
727 if ConfigFlags.Derivation.Egamma.addECIDS:
728 EGAugmentationTools.extend([ElectronPassECIDS])
730 if includeFwdElectrons:
731 EGAugmentationTools.extend(
733 ForwardElectronPassLHLoose,
734 ForwardElectronPassLHMedium,
735 ForwardElectronPassLHTight,
739 if ConfigFlags.Derivation.Egamma.addMissingCellInfo:
740 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
741 EgammaCoreCellRecoveryCfg,
744 CoreCellRecoveryTool = acc.popToolsAndMerge(
747 acc.addPublicTool(CoreCellRecoveryTool)
748 EGAugmentationTools.append(CoreCellRecoveryTool)
752 if ConfigFlags.Input.isMC:
754 from MCTruthClassifier.MCTruthClassifierConfig
import MCTruthClassifierCfg
756 BkgElectronMCTruthClassifier = acc.popToolsAndMerge(
759 name=
"BkgElectronMCTruthClassifier",
760 ParticleCaloExtensionTool=
"",
763 acc.addPublicTool(BkgElectronMCTruthClassifier)
765 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
766 BkgElectronClassificationCfg,
769 BkgElectronClassificationTool = acc.getPrimaryAndMerge(
772 name=
"BkgElectronClassificationTool",
773 MCTruthClassifierTool=BkgElectronMCTruthClassifier,
776 EGAugmentationTools.append(BkgElectronClassificationTool)
779 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import (
780 TruthIsolationToolCfg,
783 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
786 name=
"TruthEgetIsolationTool",
787 isoParticlesKey=
"egammaTruthParticles",
788 allParticlesKey=
"TruthParticles",
789 particleIDsToCalculate=[-11, 11, 22],
790 IsolationConeSizes=[0.2, 0.3, 0.4],
791 excludeIDsFromCone=[-16, -14, -13, -12, 12, 13, 14, 16],
792 IsolationVarNamePrefix=
"etcone",
793 ChargedParticlesOnly=
False,
796 EGAugmentationTools.append(TruthEgetIsolationTool)
799 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
802 name=
"TruthEgptIsolationTool",
803 isoParticlesKey=
"egammaTruthParticles",
804 allParticlesKey=
"TruthParticles",
805 particleIDsToCalculate=[-11, 11, 22],
806 IsolationConeSizes=[0.2, 0.3, 0.4],
807 IsolationVarNamePrefix=
"ptcone",
808 ChargedParticlesOnly=
True,
811 EGAugmentationTools.append(TruthEgptIsolationTool)
814 from EventShapeTools.EventDensityConfig
import configEventDensityTool
815 from JetRecConfig.JetRecConfig
import (
820 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
823 constit_algs =
getInputAlgs(cst.Truth, flags=ConfigFlags)
824 constit_algs, ca =
reOrderAlgs([a
for a
in constit_algs
if a
is not None])
826 for a
in constit_algs:
829 acc.addEventAlgo(constitPJAlg)
832 "EDTruthCentralTool",
837 OutputContainer=
"TruthIsoCentralEventShape",
840 acc.addPublicTool(tc)
844 "EDTruthForwardTool",
849 OutputContainer=
"TruthIsoForwardEventShape",
852 acc.addPublicTool(tf)
855 CompFactory.EventDensityAthAlg(
"EDTruthCentralAlg", EventDensityTool=tc)
858 CompFactory.EventDensityAthAlg(
"EDTruthForwardAlg", EventDensityTool=tf)
866 CompFactory.DerivationFramework.CommonAugmentation(
867 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
874 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
879 "JetETMissChargedParticleFlowObjects" in ConfigFlags.Input.Collections
880 and "JetETMissNeutralParticleFlowObjects" in ConfigFlags.Input.Collections
883 from IsolationAlgs.IsolationSteeringDerivConfig
import IsolationSteeringDerivCfg