Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
EGammaLRTConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 # ********************************************************************
4 # EGammaLRTConfig.py
5 # Configures all tools needed for LRT e-gamma object selection and sets
6 # up the kernel algorithms so the results can be accessed/written to
7 # the DAODs. Copied and modified from EGammaCommonConfig.py.
8 # Component accumulator version.
9 # ********************************************************************
10 
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory import CompFactory
13 
14 
15 def EGammaLRTCfg(ConfigFlags):
16  """Main config method for LRT e-gamma decorations"""
17 
18  acc = ComponentAccumulator()
19 
20  # ====================================================================
21  # DISPLACED ELECTRON LH SELECTORS
22  # see Reconstruction/egamma/egammaTools/python/EMPIDBuilderBase.py
23  # on how to configure the selectors
24  # ====================================================================
25  # Setting conf file not supported. These are currently setup in the
26  # LLP1.py config TODO: implement common ID in egamma tools
27 
28  # ====================================================================
29  # ELECTRON CHARGE SELECTION
30  # ====================================================================
31  if not hasattr(acc, "ElectronChargeIDSelectorLoose"):
32  if ConfigFlags.Derivation.Egamma.addECIDS:
33  from ElectronPhotonSelectorTools.AsgElectronChargeIDSelectorToolConfig import (
34  AsgElectronChargeIDSelectorToolCfg,
35  )
36 
37  ElectronChargeIDSelector = acc.popToolsAndMerge(
39  ConfigFlags, name="ElectronChargeIDSelectorLoose"
40  )
41  )
42  ElectronChargeIDSelector.primaryVertexContainer = "PrimaryVertices"
43  ElectronChargeIDSelector.TrainingFile = (
44  "ElectronPhotonSelectorTools/ChargeID/"
45  + "ECIDS_20180731rel21Summer2018.root"
46  )
47  acc.addPublicTool(ElectronChargeIDSelector)
48 
49  # ====================================================================
50  # AUGMENTATION TOOLS
51  # ====================================================================
52  from DerivationFrameworkEGamma.EGammaToolsConfig import (
53  EGElectronLikelihoodToolWrapperCfg,
54  )
55 
56  # decorate electrons with the output of LH very loose
57  # TODO same as above, update with central ID
58 
59  # decorate electrons with the output of ECIDS
60  if ConfigFlags.Derivation.Egamma.addECIDS:
61  LRTElectronPassECIDS = acc.getPrimaryAndMerge(
63  ConfigFlags,
64  name="LRTElectronPassECIDS",
65  EGammaElectronLikelihoodTool=ElectronChargeIDSelector,
66  EGammaFudgeMCTool="",
67  CutType="",
68  StoreGateEntryName="DFCommonElectronsECIDS",
69  ContainerName="LRTElectrons",
70  StoreTResult=True,
71  )
72  )
73 
74  # decorate some electrons with an additional ambiguity flag
75  # against internal and early material conversion
76  from DerivationFrameworkEGamma.EGammaToolsConfig import EGElectronAmbiguityToolCfg
77 
78  LRTElectronAmbiguity = acc.getPrimaryAndMerge(
80  ConfigFlags,
81  name="LRTElectronAdditionnalAmbiguity",
82  idCut="DFCommonElectronsLHLooseNoPix",
83  ContainerName="LRTElectrons",
84  isMC=ConfigFlags.Input.isMC,
85  )
86  )
87 
88  # list of all the decorators so far
89  LRTEGAugmentationTools = [LRTElectronAmbiguity]
90  if ConfigFlags.Derivation.Egamma.addECIDS:
91  LRTEGAugmentationTools.extend([LRTElectronPassECIDS])
92 
93  # ==================================================
94  # Truth Related tools
95  if ConfigFlags.Input.isMC:
96  # Decorate Electron with bkg electron type/origin
97  from MCTruthClassifier.MCTruthClassifierConfig import MCTruthClassifierCfg
98 
99  BkgElectronMCTruthClassifier = acc.popToolsAndMerge(
101  ConfigFlags,
102  name="BkgElectronMCTruthClassifier",
103  ParticleCaloExtensionTool="",
104  )
105  )
106  acc.addPublicTool(BkgElectronMCTruthClassifier)
107 
108  from DerivationFrameworkEGamma.EGammaToolsConfig import (
109  BkgElectronClassificationCfg,
110  )
111 
112  BkgLRTElectronClassificationTool = acc.getPrimaryAndMerge(
114  ConfigFlags,
115  name="BkgLRTElectronClassificationTool",
116  MCTruthClassifierTool=BkgElectronMCTruthClassifier,
117  ElectronContainerName="LRTElectrons",
118  )
119  )
120  LRTEGAugmentationTools.append(BkgLRTElectronClassificationTool)
121 
122  # =======================================
123  # CREATE THE DERIVATION KERNEL ALGORITHM
124  # =======================================
125 
126  acc.addEventAlgo(
127  CompFactory.DerivationFramework.CommonAugmentation(
128  "EGammaLRTKernel", AugmentationTools=LRTEGAugmentationTools
129  )
130  )
131 
132  # =======================================
133  # ADD TOOLS : custom electron, photon and muon track isolation
134  # =======================================
135  from IsolationAlgs.DerivationTrackIsoConfig import DerivationTrackIsoCfg
136 
137  acc.merge(
139  ConfigFlags, object_types=("Electrons", "Muons"), postfix="LRT"
140  )
141  )
142 
143  if not hasattr(acc, "LRTElectronCaloIsolationBuilder"):
144  from IsolationAlgs.IsolationSteeringDerivConfig import (
145  LRTElectronIsolationSteeringDerivCfg,
146  )
147 
148  acc.merge(LRTElectronIsolationSteeringDerivCfg(ConfigFlags))
149 
150  from IsolationAlgs.IsolationBuilderConfig import egIsolationCfg
151 
152  acc.merge(
154  ConfigFlags,
155  name="electronIsolationLRT",
156  # Avoid overlap with the previously-configured IsolationBuilder.
157  noCalo=True,
158  ElectronCollectionContainerName="LRTElectrons",
159  )
160  )
161 
162  return acc
MCTruthClassifierConfig.MCTruthClassifierCfg
def MCTruthClassifierCfg(flags, **kwargs)
Definition: MCTruthClassifier/python/MCTruthClassifierConfig.py:8
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.EGammaLRTConfig.EGammaLRTCfg
def EGammaLRTCfg(ConfigFlags)
Definition: EGammaLRTConfig.py:15
python.EGammaToolsConfig.EGElectronAmbiguityToolCfg
def EGElectronAmbiguityToolCfg(flags, name, **kwargs)
Definition: EGammaToolsConfig.py:51
IsolationSteeringDerivConfig.LRTElectronIsolationSteeringDerivCfg
def LRTElectronIsolationSteeringDerivCfg(flags, name='LRTElectronCaloIsolationSteeringDeriv')
Definition: IsolationSteeringDerivConfig.py:63
python.AsgElectronChargeIDSelectorToolConfig.AsgElectronChargeIDSelectorToolCfg
def AsgElectronChargeIDSelectorToolCfg(ConfigFlags, name, **kwargs)
Definition: AsgElectronChargeIDSelectorToolConfig.py:6
IsolationBuilderConfig.egIsolationCfg
def egIsolationCfg(flags, name='egIsolation', noCalo=False, **kwargs)
Definition: IsolationBuilderConfig.py:11
python.EGammaToolsConfig.EGElectronLikelihoodToolWrapperCfg
def EGElectronLikelihoodToolWrapperCfg(flags, name, **kwargs)
Definition: EGammaToolsConfig.py:31
python.EGammaToolsConfig.BkgElectronClassificationCfg
def BkgElectronClassificationCfg(flags, name, **kwargs)
Definition: EGammaToolsConfig.py:60
DerivationTrackIsoConfig.DerivationTrackIsoCfg
def DerivationTrackIsoCfg(flags, **jwarg)
Definition: DerivationTrackIsoConfig.py:11