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",
43 isMC = ConfigFlags.Input.isMC
46 isFullSim = ConfigFlags.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
83 if ConfigFlags.GeoModel.Run
is LHCPeriod.Run2:
84 lhMenu = electronLHmenu.offlineMC20
87 ElectronLHSelectorVeryLoose = acc.popToolsAndMerge(
90 name=
"ElectronLHSelectorVeryLoose",
91 quality=LikeEnum.VeryLoose,
95 ElectronLHSelectorVeryLoose.primaryVertexContainer =
"PrimaryVertices"
96 acc.addPublicTool(ElectronLHSelectorVeryLoose)
99 ElectronLHSelectorLoose = acc.popToolsAndMerge(
102 name=
"ElectronLHSelectorLoose",
103 quality=LikeEnum.Loose,
107 ElectronLHSelectorLoose.primaryVertexContainer =
"PrimaryVertices"
108 acc.addPublicTool(ElectronLHSelectorLoose)
111 ElectronLHSelectorLooseBL = acc.popToolsAndMerge(
114 name=
"ElectronLHSelectorLooseBL",
115 quality=LikeEnum.LooseBL,
119 ElectronLHSelectorLooseBL.primaryVertexContainer =
"PrimaryVertices"
120 acc.addPublicTool(ElectronLHSelectorLooseBL)
123 ElectronLHSelectorMedium = acc.popToolsAndMerge(
126 name=
"ElectronLHSelectorMedium",
127 quality=LikeEnum.Medium,
131 ElectronLHSelectorMedium.primaryVertexContainer =
"PrimaryVertices"
132 acc.addPublicTool(ElectronLHSelectorMedium)
135 ElectronLHSelectorTight = acc.popToolsAndMerge(
138 name=
"ElectronLHSelectorTight",
139 quality=LikeEnum.Tight,
143 ElectronLHSelectorTight.primaryVertexContainer =
"PrimaryVertices"
144 acc.addPublicTool(ElectronLHSelectorTight)
149 from ElectronPhotonSelectorTools.AsgElectronSelectorToolConfig
import (
150 AsgElectronSelectorToolCfg,
154 ElectronDNNSelectorLoose = acc.popToolsAndMerge(
157 name=
"ElectronDNNSelectorLoose",
158 WorkingPoint=
"LooseDNNElectron",
161 acc.addPublicTool(ElectronDNNSelectorLoose)
164 ElectronDNNSelectorMedium = acc.popToolsAndMerge(
167 name=
"ElectronDNNSelectorMedium",
168 WorkingPoint=
"MediumDNNElectron",
171 acc.addPublicTool(ElectronDNNSelectorMedium)
174 ElectronDNNSelectorTight = acc.popToolsAndMerge(
177 name=
"ElectronDNNSelectorTight",
178 WorkingPoint=
"TightDNNElectron",
181 acc.addPublicTool(ElectronDNNSelectorTight)
187 ElectronDNNSelectorVeryLooseNoCF97 = acc.popToolsAndMerge(
190 name=
"ElectronDNNSelectorVeryLooseNoCF97",
191 WorkingPoint=
"VeryLooseNoCF97DNNElectron",
194 acc.addPublicTool(ElectronDNNSelectorVeryLooseNoCF97)
197 ElectronDNNSelectorLooseNoCF = acc.popToolsAndMerge(
200 name=
"ElectronDNNSelectorLooseNoCF",
201 WorkingPoint=
"LooseNoCFDNNElectron",
204 acc.addPublicTool(ElectronDNNSelectorLooseNoCF)
207 ElectronDNNSelectorMediumNoCF = acc.popToolsAndMerge(
210 name=
"ElectronDNNSelectorMediumNoCF",
211 WorkingPoint=
"MediumNoCFDNNElectron",
214 acc.addPublicTool(ElectronDNNSelectorMediumNoCF)
217 ElectronDNNSelectorTightNoCF = acc.popToolsAndMerge(
220 name=
"ElectronDNNSelectorTightNoCF",
221 WorkingPoint=
"TightNoCFDNNElectron",
224 acc.addPublicTool(ElectronDNNSelectorTightNoCF)
229 if ConfigFlags.Derivation.Egamma.addECIDS:
230 from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig
import (
231 AsgElectronChargeIDSelectorToolCfg,
234 ElectronChargeIDSelector = acc.popToolsAndMerge(
236 ConfigFlags, name=
"ElectronChargeIDSelectorLoose"
239 ElectronChargeIDSelector.primaryVertexContainer =
"PrimaryVertices"
240 ElectronChargeIDSelector.TrainingFile = (
241 "ElectronPhotonSelectorTools/ChargeID/ECIDS_20180731rel21Summer2018.root"
243 acc.addPublicTool(ElectronChargeIDSelector)
248 if includeFwdElectrons:
249 from ElectronPhotonSelectorTools.AsgForwardElectronLikelihoodToolConfig
import (
250 AsgForwardElectronLikelihoodToolCfg,
253 ForwardElectronLHSelectorLoose = acc.popToolsAndMerge(
256 name=
"ForwardElectronLHSelectorLoose",
257 WorkingPoint=
"LooseLHForwardElectron",
260 acc.addPublicTool(ForwardElectronLHSelectorLoose)
262 ForwardElectronLHSelectorMedium = acc.popToolsAndMerge(
265 name=
"ForwardElectronLHSelectorMedium",
266 WorkingPoint=
"MediumLHForwardElectron",
269 acc.addPublicTool(ForwardElectronLHSelectorMedium)
271 ForwardElectronLHSelectorTight = acc.popToolsAndMerge(
274 name=
"ForwardElectronLHSelectorTight",
275 WorkingPoint=
"TightLHForwardElectron",
278 acc.addPublicTool(ForwardElectronLHSelectorTight)
283 from ROOT
import egammaPID
285 from ElectronPhotonSelectorTools.AsgPhotonIsEMSelectorsConfig
import (
286 AsgPhotonIsEMSelectorCfg,
288 from ElectronPhotonSelectorTools.PhotonIsEMSelectorMapping
import photonPIDmenu
291 PhotonIsEMSelectorLoose = acc.popToolsAndMerge(
293 ConfigFlags, name=
"PhotonIsEMSelectorLoose", quality=egammaPID.PhotonIDLoose
296 acc.addPublicTool(PhotonIsEMSelectorLoose)
299 PhotonIsEMSelectorMedium = acc.popToolsAndMerge(
301 ConfigFlags, name=
"PhotonIsEMSelectorMedium", quality=egammaPID.PhotonIDMedium
304 acc.addPublicTool(PhotonIsEMSelectorMedium)
307 PhotonIsEMSelectorTight = acc.popToolsAndMerge(
309 ConfigFlags, name=
"PhotonIsEMSelectorTight", quality=egammaPID.PhotonIDTight
312 acc.addPublicTool(PhotonIsEMSelectorTight)
316 PhotonIsEMSelectorTightPtIncl = acc.popToolsAndMerge(
319 name=
"PhotonIsEMSelectorTightPtIncl",
320 quality=egammaPID.PhotonIDTight,
321 menu=photonPIDmenu.menuPtInclJan2018,
324 acc.addPublicTool(PhotonIsEMSelectorTightPtIncl)
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,
391 ElectronPassLHVeryLoose = acc.getPrimaryAndMerge(
394 name=
"ElectronPassLHVeryLoose",
395 EGammaElectronLikelihoodTool=ElectronLHSelectorVeryLoose,
396 EGammaFudgeMCTool=
None,
398 StoreGateEntryName=
"DFCommonElectronsLHVeryLoose",
399 ContainerName=
"Electrons",
405 ElectronPassLHLoose = acc.getPrimaryAndMerge(
408 name=
"ElectronPassLHLoose",
409 EGammaElectronLikelihoodTool=ElectronLHSelectorLoose,
410 EGammaFudgeMCTool=
None,
412 StoreGateEntryName=
"DFCommonElectronsLHLoose",
413 ContainerName=
"Electrons",
419 ElectronPassLHLooseBL = acc.getPrimaryAndMerge(
422 name=
"ElectronPassLHLooseBL",
423 EGammaElectronLikelihoodTool=ElectronLHSelectorLooseBL,
424 EGammaFudgeMCTool=
None,
426 StoreGateEntryName=
"DFCommonElectronsLHLooseBL",
427 ContainerName=
"Electrons",
433 ElectronPassLHMedium = acc.getPrimaryAndMerge(
436 name=
"ElectronPassLHMedium",
437 EGammaElectronLikelihoodTool=ElectronLHSelectorMedium,
438 EGammaFudgeMCTool=
None,
440 StoreGateEntryName=
"DFCommonElectronsLHMedium",
441 ContainerName=
"Electrons",
447 ElectronPassLHTight = acc.getPrimaryAndMerge(
450 name=
"ElectronPassLHTight",
451 EGammaElectronLikelihoodTool=ElectronLHSelectorTight,
452 EGammaFudgeMCTool=
None,
454 StoreGateEntryName=
"DFCommonElectronsLHTight",
455 ContainerName=
"Electrons",
461 ElectronPassDNNLoose = acc.getPrimaryAndMerge(
464 name=
"ElectronPassDNNLoose",
465 EGammaElectronLikelihoodTool=ElectronDNNSelectorLoose,
466 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
468 StoreGateEntryName=
"DFCommonElectronsDNNLoose",
469 ContainerName=
"Electrons",
471 StoreGateEntryMultipleNames=[
472 "DFCommonElectronsDNN_pel",
473 "DFCommonElectronsDNN_pcf",
474 "DFCommonElectronsDNN_ppc",
475 "DFCommonElectronsDNN_phf",
476 "DFCommonElectronsDNN_ple",
477 "DFCommonElectronsDNN_plh",
479 StoreMultipleOutputs=
True,
484 ElectronPassDNNMedium = acc.getPrimaryAndMerge(
487 name=
"ElectronPassDNNMedium",
488 EGammaElectronLikelihoodTool=ElectronDNNSelectorMedium,
489 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
491 StoreGateEntryName=
"DFCommonElectronsDNNMedium",
492 ContainerName=
"Electrons",
498 ElectronPassDNNTight = acc.getPrimaryAndMerge(
501 name=
"ElectronPassDNNTight",
502 EGammaElectronLikelihoodTool=ElectronDNNSelectorTight,
503 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
505 StoreGateEntryName=
"DFCommonElectronsDNNTight",
506 ContainerName=
"Electrons",
512 ElectronPassDNNVeryLooseNoCF97 = acc.getPrimaryAndMerge(
515 name=
"ElectronPassDNNVeryLooseNoCF97",
516 EGammaElectronLikelihoodTool=ElectronDNNSelectorVeryLooseNoCF97,
517 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
519 StoreGateEntryName=
"DFCommonElectronsDNNVeryLooseNoCF97",
520 ContainerName=
"Electrons",
525 ElectronPassDNNLooseNoCF = acc.getPrimaryAndMerge(
528 name=
"ElectronPassDNNLooseNoCF",
529 EGammaElectronLikelihoodTool=ElectronDNNSelectorLooseNoCF,
530 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
532 StoreGateEntryName=
"DFCommonElectronsDNNLooseNoCF",
533 ContainerName=
"Electrons",
539 ElectronPassDNNMediumNoCF = acc.getPrimaryAndMerge(
542 name=
"ElectronPassDNNMediumNoCF",
543 EGammaElectronLikelihoodTool=ElectronDNNSelectorMediumNoCF,
544 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
546 StoreGateEntryName=
"DFCommonElectronsDNNMediumNoCF",
547 ContainerName=
"Electrons",
553 ElectronPassDNNTightNoCF = acc.getPrimaryAndMerge(
556 name=
"ElectronPassDNNTightNoCF",
557 EGammaElectronLikelihoodTool=ElectronDNNSelectorTightNoCF,
558 EGammaFudgeMCTool=(ElectronVariableCorrectionTool
if isMC
else None),
560 StoreGateEntryName=
"DFCommonElectronsDNNTightNoCF",
561 ContainerName=
"Electrons",
567 if ConfigFlags.Derivation.Egamma.addECIDS:
568 ElectronPassECIDS = acc.getPrimaryAndMerge(
571 name=
"ElectronPassECIDS",
572 EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
573 EGammaFudgeMCTool=
None,
575 StoreGateEntryName=
"DFCommonElectronsECIDS",
576 ContainerName=
"Electrons",
581 if includeFwdElectrons:
583 ForwardElectronPassLHLoose = acc.getPrimaryAndMerge(
586 name=
"ForwardElectronPassLHLoose",
587 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorLoose,
588 EGammaFudgeMCTool=
None,
590 StoreGateEntryName=
"DFCommonForwardElectronsLHLoose",
591 ContainerName=
"ForwardElectrons",
596 ForwardElectronPassLHMedium = acc.getPrimaryAndMerge(
599 name=
"ForwardElectronPassLHMedium",
600 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorMedium,
601 EGammaFudgeMCTool=
None,
603 StoreGateEntryName=
"DFCommonForwardElectronsLHMedium",
604 ContainerName=
"ForwardElectrons",
609 ForwardElectronPassLHTight = acc.getPrimaryAndMerge(
612 name=
"ForwardElectronPassLHTight",
613 EGammaElectronLikelihoodTool=ForwardElectronLHSelectorTight,
614 EGammaFudgeMCTool=
None,
616 StoreGateEntryName=
"DFCommonForwardElectronsLHTight",
617 ContainerName=
"ForwardElectrons",
624 PhotonPassIsEMLoose = acc.getPrimaryAndMerge(
627 name=
"PhotonPassIsEMLoose",
628 EGammaSelectionTool=PhotonIsEMSelectorLoose,
629 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
631 StoreGateEntryName=
"DFCommonPhotonsIsEMLoose",
632 ContainerName=
"Photons",
639 PhotonPassIsEMMedium = acc.getPrimaryAndMerge(
642 name=
"PhotonPassIsEMMedium",
643 EGammaSelectionTool=PhotonIsEMSelectorMedium,
644 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
646 StoreGateEntryName=
"DFCommonPhotonsIsEMMedium",
647 ContainerName=
"Photons",
654 PhotonPassIsEMTight = acc.getPrimaryAndMerge(
657 name=
"PhotonPassIsEMTight",
658 EGammaSelectionTool=PhotonIsEMSelectorTight,
659 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
661 StoreGateEntryName=
"DFCommonPhotonsIsEMTight",
662 ContainerName=
"Photons",
670 PhotonPassIsEMTightPtIncl = acc.getPrimaryAndMerge(
673 name=
"PhotonPassIsEMTightPtIncl",
674 EGammaSelectionTool=PhotonIsEMSelectorTightPtIncl,
675 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
677 StoreGateEntryName=
"DFCommonPhotonsIsEMTightPtIncl",
678 ContainerName=
"Photons",
684 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGPhotonCleaningWrapperCfg
686 PhotonPassCleaning = acc.getPrimaryAndMerge(
689 name=
"PhotonPassCleaning",
690 EGammaFudgeMCTool=(PhotonVariableCorrectionTool
if isFullSim
else None),
691 StoreGateEntryName=
"DFCommonPhotonsCleaning",
692 ContainerName=
"Photons",
698 from DerivationFrameworkEGamma.EGammaToolsConfig
import EGElectronAmbiguityToolCfg
700 ElectronAmbiguity = acc.getPrimaryAndMerge(
703 name=
"ElectronAdditionnalAmbiguity",
704 isMC=ConfigFlags.Input.isMC,
709 EGAugmentationTools = [
710 DFCommonPhotonsDirection,
711 ElectronPassLHVeryLoose,
713 ElectronPassLHLooseBL,
714 ElectronPassLHMedium,
716 ElectronPassDNNLoose,
717 ElectronPassDNNMedium,
718 ElectronPassDNNTight,
719 ElectronPassDNNVeryLooseNoCF97,
720 ElectronPassDNNLooseNoCF,
721 ElectronPassDNNMediumNoCF,
722 ElectronPassDNNTightNoCF,
724 PhotonPassIsEMMedium,
726 PhotonPassIsEMTightPtIncl,
731 if ConfigFlags.Derivation.Egamma.addECIDS:
732 EGAugmentationTools.extend([ElectronPassECIDS])
734 if includeFwdElectrons:
735 EGAugmentationTools.extend(
737 ForwardElectronPassLHLoose,
738 ForwardElectronPassLHMedium,
739 ForwardElectronPassLHTight,
743 if ConfigFlags.Derivation.Egamma.addMissingCellInfo:
744 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
745 EgammaCoreCellRecoveryCfg,
748 CoreCellRecoveryTool = acc.popToolsAndMerge(
751 acc.addPublicTool(CoreCellRecoveryTool)
752 EGAugmentationTools.append(CoreCellRecoveryTool)
756 if ConfigFlags.Input.isMC:
758 from MCTruthClassifier.MCTruthClassifierConfig
import MCTruthClassifierCfg
760 BkgElectronMCTruthClassifier = acc.popToolsAndMerge(
763 name=
"BkgElectronMCTruthClassifier",
764 ParticleCaloExtensionTool=
"",
767 acc.addPublicTool(BkgElectronMCTruthClassifier)
769 from DerivationFrameworkEGamma.EGammaToolsConfig
import (
770 BkgElectronClassificationCfg,
773 BkgElectronClassificationTool = acc.getPrimaryAndMerge(
776 name=
"BkgElectronClassificationTool",
777 MCTruthClassifierTool=BkgElectronMCTruthClassifier,
780 EGAugmentationTools.append(BkgElectronClassificationTool)
783 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig
import (
784 TruthIsolationToolCfg,
787 TruthEgetIsolationTool = acc.getPrimaryAndMerge(
790 name=
"TruthEgetIsolationTool",
791 isoParticlesKey=
"egammaTruthParticles",
792 allParticlesKey=
"TruthParticles",
793 particleIDsToCalculate=[-11, 11, 22],
794 IsolationConeSizes=[0.2, 0.3, 0.4],
795 excludeIDsFromCone=[-16, -14, -13, -12, 12, 13, 14, 16],
796 IsolationVarNamePrefix=
"etcone",
797 ChargedParticlesOnly=
False,
800 EGAugmentationTools.append(TruthEgetIsolationTool)
803 TruthEgptIsolationTool = acc.getPrimaryAndMerge(
806 name=
"TruthEgptIsolationTool",
807 isoParticlesKey=
"egammaTruthParticles",
808 allParticlesKey=
"TruthParticles",
809 particleIDsToCalculate=[-11, 11, 22],
810 IsolationConeSizes=[0.2, 0.3, 0.4],
811 IsolationVarNamePrefix=
"ptcone",
812 ChargedParticlesOnly=
True,
815 EGAugmentationTools.append(TruthEgptIsolationTool)
818 from EventShapeTools.EventDensityConfig
import configEventDensityTool
819 from JetRecConfig.JetRecConfig
import (
824 from JetRecConfig.StandardJetConstits
import stdConstitDic
as cst
827 constit_algs =
getInputAlgs(cst.Truth, flags=ConfigFlags)
828 constit_algs, ca =
reOrderAlgs([a
for a
in constit_algs
if a
is not None])
830 for a
in constit_algs:
833 acc.addEventAlgo(constitPJAlg)
836 "EDTruthCentralTool",
841 OutputContainer=
"TruthIsoCentralEventShape",
844 acc.addPublicTool(tc)
848 "EDTruthForwardTool",
853 OutputContainer=
"TruthIsoForwardEventShape",
856 acc.addPublicTool(tf)
859 CompFactory.EventDensityAthAlg(
"EDTruthCentralAlg", EventDensityTool=tc)
862 CompFactory.EventDensityAthAlg(
"EDTruthForwardAlg", EventDensityTool=tf)
870 CompFactory.DerivationFramework.CommonAugmentation(
871 "EGammaCommonKernel", AugmentationTools=EGAugmentationTools
878 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
883 "JetETMissChargedParticleFlowObjects" in ConfigFlags.Input.Collections
884 and "JetETMissNeutralParticleFlowObjects" in ConfigFlags.Input.Collections
887 from IsolationAlgs.IsolationSteeringDerivConfig
import IsolationSteeringDerivCfg