11 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory
import CompFactory
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 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 ConfigFlags.Derivation.Egamma.addECIDS:
229 from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig
import (
230 AsgElectronChargeIDSelectorToolCfg,
233 ElectronChargeIDSelector = acc.popToolsAndMerge(
235 ConfigFlags, 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
290 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
292 ConfigFlags, name=
"PhotonIsEMSelectorLoose", quality=egammaPID.PhotonIDLoose
295 acc.addPublicTool(PhotonIsEMSelectorLoose)
298 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
300 ConfigFlags, name=
"PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
303 acc.addPublicTool(PhotonIsEMSelectorMedium)
306 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
308 ConfigFlags, name=
"PhotonIsEMSelectorTight", quality=egammaPID.PhotonIDTight
311 acc.addPublicTool(PhotonIsEMSelectorTight)
315 PhotonIsEMSelectorTightPtIncl = acc.popToolsAndMerge(
318 name=
"PhotonIsEMSelectorTightPtIncl",
319 quality=egammaPID.PhotonIDTight,
320 menu=photonPIDmenu.menuPtInclJan2018,
323 acc.addPublicTool(PhotonIsEMSelectorTightPtIncl)
329 from egammaCaloTools.egammaCaloToolsConfig
import CaloFillRectangularClusterCfg
331 EGAMCOM_caloFillRect55 = acc.popToolsAndMerge(
334 name=
"EGAMCOMCaloFillRectangularCluster55",
335 cells_name=
"AllCalo",
341 acc.addPublicTool(EGAMCOM_caloFillRect55)
343 EGAMCOM_caloFillRect35 = acc.popToolsAndMerge(
346 name=
"EGAMCOMCaloFillRectangularCluster35",
347 cells_name=
"AllCalo",
353 acc.addPublicTool(EGAMCOM_caloFillRect35)
355 EGAMCOM_caloFillRect37 = acc.popToolsAndMerge(
358 name=
"EGAMCOMCaloFillRectangularCluster37",
359 cells_name=
"AllCalo",
365 acc.addPublicTool(EGAMCOM_caloFillRect37)
367 EGAMCOM_caloFillRect711 = acc.popToolsAndMerge(
370 name=
"EGAMCOMCaloFillRectangularCluster711",
371 cells_name=
"AllCalo",
377 acc.addPublicTool(EGAMCOM_caloFillRect711)
382 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGSelectionToolWrapperCfg
383 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
384 EGElectronLikelihoodToolWrapperCfg,
388 ElectronPassLHVeryLoose = acc.getPrimaryAndMerge(
391 name=
"ElectronPassLHVeryLoose",
392 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
393 EGammaFudgeMCTool=
None,
395 StoreGateEntryName=
"DFCommonElectronsLHVeryLoose",
396 ContainerName=
"Electrons",
402 ElectronPassLHLoose = acc.getPrimaryAndMerge(
405 name=
"ElectronPassLHLoose",
406 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
407 EGammaFudgeMCTool=
None,
409 StoreGateEntryName=
"DFCommonElectronsLHLoose",
410 ContainerName=
"Electrons",
416 ElectronPassLHLooseBL = acc.getPrimaryAndMerge(
419 name=
"ElectronPassLHLooseBL",
420 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
421 EGammaFudgeMCTool=
None,
423 StoreGateEntryName=
"DFCommonElectronsLHLooseBL",
424 ContainerName=
"Electrons",
430 ElectronPassLHMedium = acc.getPrimaryAndMerge(
433 name=
"ElectronPassLHMedium",
434 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
435 EGammaFudgeMCTool=
None,
437 StoreGateEntryName=
"DFCommonElectronsLHMedium",
438 ContainerName=
"Electrons",
444 ElectronPassLHTight = acc.getPrimaryAndMerge(
447 name=
"ElectronPassLHTight",
448 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
449 EGammaFudgeMCTool=
None,
451 StoreGateEntryName=
"DFCommonElectronsLHTight",
452 ContainerName=
"Electrons",
458 ElectronPassDNNLoose = acc.getPrimaryAndMerge(
461 name=
"ElectronPassDNNLoose",
462 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
463 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
465 StoreGateEntryName=
"DFCommonElectronsDNNLoose",
466 ContainerName=
"Electrons",
468 StoreGateEntryMultipleNames=[
469 "DFCommonElectronsDNN_pel",
470 "DFCommonElectronsDNN_pcf",
471 "DFCommonElectronsDNN_ppc",
472 "DFCommonElectronsDNN_phf",
473 "DFCommonElectronsDNN_ple",
474 "DFCommonElectronsDNN_plh",
476 StoreMultipleOutputs=
True,
481 ElectronPassDNNMedium = acc.getPrimaryAndMerge(
484 name=
"ElectronPassDNNMedium",
485 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
486 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
488 StoreGateEntryName=
"DFCommonElectronsDNNMedium",
489 ContainerName=
"Electrons",
495 ElectronPassDNNTight = acc.getPrimaryAndMerge(
498 name=
"ElectronPassDNNTight",
499 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
500 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
502 StoreGateEntryName=
"DFCommonElectronsDNNTight",
503 ContainerName=
"Electrons",
509 ElectronPassDNNVeryLooseNoCF97 = acc.getPrimaryAndMerge(
512 name=
"ElectronPassDNNVeryLooseNoCF97",
513 EGammaElectronLikelihoodTool=ElectronDNNSelectorVeryLooseNoCF97,
514 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
516 StoreGateEntryName=
"DFCommonElectronsDNNVeryLooseNoCF97",
517 ContainerName=
"Electrons",
522 ElectronPassDNNLooseNoCF = acc.getPrimaryAndMerge(
525 name=
"ElectronPassDNNLooseNoCF",
526 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
527 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
529 StoreGateEntryName=
"DFCommonElectronsDNNLooseNoCF",
530 ContainerName=
"Electrons",
536 ElectronPassDNNMediumNoCF = acc.getPrimaryAndMerge(
539 name=
"ElectronPassDNNMediumNoCF",
540 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
541 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
543 StoreGateEntryName=
"DFCommonElectronsDNNMediumNoCF",
544 ContainerName=
"Electrons",
550 ElectronPassDNNTightNoCF = acc.getPrimaryAndMerge(
553 name=
"ElectronPassDNNTightNoCF",
554 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
555 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isFullSim
else None),
557 StoreGateEntryName=
"DFCommonElectronsDNNTightNoCF",
558 ContainerName=
"Electrons",
564 if ConfigFlags.Derivation.Egamma.addECIDS:
565 ElectronPassECIDS = acc.getPrimaryAndMerge(
568 name=
"ElectronPassECIDS",
569 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
570 EGammaFudgeMCTool=
None,
572 StoreGateEntryName=
"DFCommonElectronsECIDS",
573 ContainerName=
"Electrons",
578 if includeFwdElectrons:
580 ForwardElectronPassLHLoose = acc.getPrimaryAndMerge(
583 name=
"ForwardElectronPassLHLoose",
584 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
585 EGammaFudgeMCTool=
None,
587 StoreGateEntryName=
"DFCommonForwardElectronsLHLoose",
588 ContainerName=
"ForwardElectrons",
593 ForwardElectronPassLHMedium = acc.getPrimaryAndMerge(
596 name=
"ForwardElectronPassLHMedium",
597 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
598 EGammaFudgeMCTool=
None,
600 StoreGateEntryName=
"DFCommonForwardElectronsLHMedium",
601 ContainerName=
"ForwardElectrons",
606 ForwardElectronPassLHTight = acc.getPrimaryAndMerge(
609 name=
"ForwardElectronPassLHTight",
610 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
611 EGammaFudgeMCTool=
None,
613 StoreGateEntryName=
"DFCommonForwardElectronsLHTight",
614 ContainerName=
"ForwardElectrons",
621 PhotonPassIsEMLoose = acc.getPrimaryAndMerge(
624 name=
"PhotonPassIsEMLoose",
625 EGammaSelectionTool=PhotonIsEMSelectorLoose,
626 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
628 StoreGateEntryName=
"DFCommonPhotonsIsEMLoose",
629 ContainerName=
"Photons",
636 PhotonPassIsEMMedium = acc.getPrimaryAndMerge(
639 name=
"PhotonPassIsEMMedium",
640 EGammaSelectionTool=PhotonIsEMSelectorMedium,
641 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
643 StoreGateEntryName=
"DFCommonPhotonsIsEMMedium",
644 ContainerName=
"Photons",
651 PhotonPassIsEMTight = acc.getPrimaryAndMerge(
654 name=
"PhotonPassIsEMTight",
655 EGammaSelectionTool=PhotonIsEMSelectorTight,
656 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
658 StoreGateEntryName=
"DFCommonPhotonsIsEMTight",
659 ContainerName=
"Photons",
667 PhotonPassIsEMTightPtIncl = acc.getPrimaryAndMerge(
670 name=
"PhotonPassIsEMTightPtIncl",
671 EGammaSelectionTool=PhotonIsEMSelectorTightPtIncl,
672 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
674 StoreGateEntryName=
"DFCommonPhotonsIsEMTightPtIncl",
675 ContainerName=
"Photons",
681 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGPhotonCleaningWrapperCfg
683 PhotonPassCleaning = acc.getPrimaryAndMerge(
686 name=
"PhotonPassCleaning",
687 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
688 StoreGateEntryName=
"DFCommonPhotonsCleaning",
689 ContainerName=
"Photons",
695 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGElectronAmbiguityToolCfg
697 ElectronAmbiguity = acc.getPrimaryAndMerge(
700 name=
"ElectronAdditionnalAmbiguity",
701 isMC=ConfigFlags.Input.isMC,
706 EGAugmentationTools = [
707 DFCommonPhotonsDirection,
708 ElectronPassLHVeryLoose,
710 ElectronPassLHLooseBL,
711 ElectronPassLHMedium,
713 ElectronPassDNNLoose,
714 ElectronPassDNNMedium,
715 ElectronPassDNNTight,
716 ElectronPassDNNVeryLooseNoCF97,
717 ElectronPassDNNLooseNoCF,
718 ElectronPassDNNMediumNoCF,
719 ElectronPassDNNTightNoCF,
721 PhotonPassIsEMMedium,
723 PhotonPassIsEMTightPtIncl,
728 if ConfigFlags.Derivation.Egamma.addECIDS:
729 EGAugmentationTools.extend([ElectronPassECIDS])
731 if includeFwdElectrons:
732 EGAugmentationTools.extend(
734 ForwardElectronPassLHLoose,
735 ForwardElectronPassLHMedium,
736 ForwardElectronPassLHTight,
740 if ConfigFlags.Derivation.Egamma.addMissingCellInfo:
741 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
742 EgammaCoreCellRecoveryCfg,
745 CoreCellRecoveryTool = acc.popToolsAndMerge(
748 acc.addPublicTool(CoreCellRecoveryTool)
749 EGAugmentationTools.append(CoreCellRecoveryTool)
753 if ConfigFlags.Input.isMC:
755 from MCTruthClassifier.MCTruthClassifierConfig
import MCTruthClassifierCfg
757 BkgElectronMCTruthClassifier = acc.popToolsAndMerge(
760 name=
"BkgElectronMCTruthClassifier",
761 ParticleCaloExtensionTool=
"",
764 acc.addPublicTool(BkgElectronMCTruthClassifier)
766 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
767 BkgElectronClassificationCfg,
770 BkgElectronClassificationTool = acc.getPrimaryAndMerge(
773 name=
"BkgElectronClassificationTool",
774 MCTruthClassifierTool=BkgElectronMCTruthClassifier,
777 EGAugmentationTools.append(BkgElectronClassificationTool)
780 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import (
781 TruthIsolationToolCfg,
784 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
787 name=
"TruthEgetIsolationTool",
788 isoParticlesKey=
"egammaTruthParticles",
789 allParticlesKey=
"TruthParticles",
790 particleIDsToCalculate=[-11, 11, 22],
791 IsolationConeSizes=[0.2, 0.3, 0.4],
792 excludeIDsFromCone=[-16, -14, -13, -12, 12, 13, 14, 16],
793 IsolationVarNamePrefix=
"etcone",
794 ChargedParticlesOnly=
False,
797 EGAugmentationTools.append(TruthEgetIsolationTool)
800 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
803 name=
"TruthEgptIsolationTool",
804 isoParticlesKey=
"egammaTruthParticles",
805 allParticlesKey=
"TruthParticles",
806 particleIDsToCalculate=[-11, 11, 22],
807 IsolationConeSizes=[0.2, 0.3, 0.4],
808 IsolationVarNamePrefix=
"ptcone",
809 ChargedParticlesOnly=
True,
812 EGAugmentationTools.append(TruthEgptIsolationTool)
815 from EventShapeTools.EventDensityConfig
import configEventDensityTool
816 from JetRecConfig.JetRecConfig
import (
821 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
824 constit_algs =
getInputAlgs(cst.Truth, flags=ConfigFlags)
825 constit_algs, ca =
reOrderAlgs([a
for a
in constit_algs
if a
is not None])
827 for a
in constit_algs:
830 acc.addEventAlgo(constitPJAlg)
833 "EDTruthCentralTool",
838 OutputContainer=
"TruthIsoCentralEventShape",
841 acc.addPublicTool(tc)
845 "EDTruthForwardTool",
850 OutputContainer=
"TruthIsoForwardEventShape",
853 acc.addPublicTool(tf)
856 CompFactory.EventDensityAthAlg(
"EDTruthCentralAlg", EventDensityTool=tc)
859 CompFactory.EventDensityAthAlg(
"EDTruthForwardAlg", EventDensityTool=tf)
867 CompFactory.DerivationFramework.CommonAugmentation(
868 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
875 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
880 "JetETMissChargedParticleFlowObjects" in ConfigFlags.Input.Collections
881 and "JetETMissNeutralParticleFlowObjects" in ConfigFlags.Input.Collections
884 from IsolationAlgs.IsolationSteeringDerivConfig
import IsolationSteeringDerivCfg