ATLAS Offline Software
egammaConfigFlags.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
4 from AthenaConfiguration.Enums import HIMode
5 
7  egcf = AthConfigFlags()
8 
9  # Do standard cluster-based egamma algorithm.
10  egcf.addFlag("Egamma.doCentral",
11  lambda prevFlags: prevFlags.Detector.EnableCalo)
12 
13  egcf.addFlag("Egamma.doForward",
14  lambda prevFlags: prevFlags.Detector.EnableCalo
15  and prevFlags.Reco.HIMode is not HIMode.HI)
16 
17  # Run the GSF refitting/egamma Tracking it is calo seeded.
18  egcf.addFlag("Egamma.doTracking",
19  lambda prevFlags: (
20  prevFlags.Detector.EnableID
21  or prevFlags.Detector.EnableITk)
22  and prevFlags.Detector.EnableCalo)
23 
24  # Build photon conversion vertices.
25  egcf.addFlag("Egamma.doConversionBuilding",
26  lambda prevFlags: prevFlags.Egamma.doTracking)
27 
28  from egammaConfig.egammaPhotonConvFlags import (
29  createEGammaPhotonConvFlags)
30  egcf.addFlagsCategory("Egamma.PhotonConv",
31  createEGammaPhotonConvFlags, prefix=True)
32 
33  # Do egamma truth association when running on MC.
34  egcf.addFlag("Egamma.doTruthAssociation",
35  lambda prevFlags: prevFlags.Input.isMC or
36  prevFlags.Overlay.DataOverlay)
37 
38  # Do e/gamma track thinning (Although we call the alg slimming...).
39  egcf.addFlag("Egamma.doTrackThinning",
40  lambda prevFlags: prevFlags.Output.doWriteAOD and
41  prevFlags.Egamma.doTracking)
42 
43  # Keep egamma Cells in AOD.
44  # Should these not be an internal key if they are not written the xAOD?
45  egcf.addFlag("Egamma.keepCaloCellsAOD",
46  lambda prevFlags: prevFlags.Egamma.doCentral or
47  prevFlags.Egamma.doForward)
48 
49  egcf.addFlag("Egamma.slimGSFTrkTracks",
50  lambda prevFlags: prevFlags.Egamma.doTracking)
51 
52  # Egamma runs in low <mu> mode (e.g UPC )
53  egcf.addFlag("Egamma.doLowMu",
54  lambda prevFlags: prevFlags.Reco.HIMode is HIMode.UPC)
55 
56  # The cluster corrections/calib.
57  egcf.addFlag("Egamma.Calib.ClusterCorrectionVersion",
58  'v12phiflip_noecorrnogap')
59  egcf.addFlag("Egamma.Calib.SuperClusterCorrectionVersion",
60  'v12phiflip_supercluster')
61  egcf.addFlag("Egamma.Calib.MVAVersion", 'egammaMVACalib/offline/v7')
62 
63  # The input keys
64  egcf.addFlag("Egamma.Keys.Input.CaloCells",
65  lambda prevFlags: prevFlags.HeavyIon.Egamma.SubtractedCells
66  if prevFlags.HeavyIon.Egamma.doSubtractedClusters
67  else 'AllCalo')
68  egcf.addFlag("Egamma.Keys.Input.TopoClusters",
69  lambda prevFlags: prevFlags.HeavyIon.Egamma.UncalibCaloTopoCluster
70  if prevFlags.HeavyIon.Egamma.doSubtractedClusters
71  else 'CaloTopoClusters')
72  egcf.addFlag("Egamma.Keys.Input.TruthParticles", 'TruthParticles')
73  egcf.addFlag("Egamma.Keys.Input.TruthEvents", 'TruthEvents')
74  egcf.addFlag("Egamma.Keys.Input.TrackParticles", 'InDetTrackParticles') # Input to GSF.
75 
76  # The topoclusters selected for egamma from the input topoclusters.
77  egcf.addFlag("Egamma.Keys.Internal.EgammaTopoClusters",
78  lambda prevFlags: prevFlags.HeavyIon.Egamma.EgammaTopoCluster
79  if prevFlags.HeavyIon.Egamma.doSubtractedClusters
80  else 'egammaTopoClusters')
81  egcf.addFlag("Egamma.Keys.Internal.ForwardTopoClusters",
82  lambda prevFlags: (
83  prevFlags.Egamma.Keys.Internal.EgammaTopoClusters + 'Fwd'))
84  egcf.addFlag("Egamma.Keys.Internal.EgammaRecs", 'egammaRecCollection')
85  egcf.addFlag("Egamma.Keys.Internal.PhotonSuperRecs",
86  'PhotonSuperRecCollection')
87  egcf.addFlag("Egamma.Keys.Internal.ElectronSuperRecs",
88  'ElectronSuperRecCollection')
89  egcf.addFlag("Egamma.Keys.Internal.PhotonSuperClusters",
90  'PhotonSuperClusters')
91  egcf.addFlag("Egamma.Keys.Internal.ElectronSuperClusters",
92  'ElectronSuperClusters')
93 
94  egcf.addFlag("Egamma.Keys.Output.ConversionVertices",
95  'GSFConversionVertices')
96  egcf.addFlag("Egamma.Keys.Output.ConversionVerticesSuppESD",
97  '-vxTrackAtVertex')
98  egcf.addFlag("Egamma.Keys.Output.ConversionVerticesSuppAOD",
99  lambda prevFlags: (
100  prevFlags.Egamma.Keys.Output.ConversionVerticesSuppESD))
101 
102  egcf.addFlag("Egamma.Keys.Output.CaloClusters", 'egammaClusters')
103  egcf.addFlag("Egamma.Keys.Output.CaloClustersSuppESD", '')
104  egcf.addFlag("Egamma.Keys.Output.CaloClustersSuppAOD", '')
105  egcf.addFlag("Egamma.Keys.Output.EgammaSuppAOD",
106  '-e033.-e011.-e333.-e335.-e337.-e377.'
107  '-isEMLoose.-isEMTight')
108 
109  # Remove GlobalFELinks - these are links between FlowElement (FE)
110  # containers created in jet finding and electrons/photons.
111  # Since these transient FE containers are not in the ESD/AOD,
112  # we should not write out these links.
113  egcf.addFlag("Egamma.Keys.Output.EgammaSuppESD",
114  '-ptconeCorrBitset.-ptconecoreTrackPtrCorrection.'
115  '-topoetconeCorrBitset.'
116  '-chargedGlobalFELinks.-neutralGlobalFELinks')
117 
118  egcf.addFlag("Egamma.Keys.Output.Electrons", 'Electrons')
119  egcf.addFlag("Egamma.Keys.Output.ElectronsSuppESD",
120  lambda prevFlags: (prevFlags.Egamma.Keys.Output.EgammaSuppESD))
121  egcf.addFlag("Egamma.Keys.Output.ElectronsSuppAOD",
122  lambda prevFlags: (
123  prevFlags.Egamma.Keys.Output.ElectronsSuppESD + '.' +
124  prevFlags.Egamma.Keys.Output.EgammaSuppAOD + '.'
125  "-isEMLHLoose.-isEMLHTight.-isEMLHMedium.-isEMMedium"))
126 
127  egcf.addFlag("Egamma.Keys.Output.ForwardElectrons", 'ForwardElectrons')
128  egcf.addFlag("Egamma.Keys.Output.ForwardElectronsSuppESD", '')
129  egcf.addFlag("Egamma.Keys.Output.ForwardElectronsSuppAOD",
130  lambda prevFlags: (
131  prevFlags.Egamma.Keys.Output.ForwardElectronsSuppESD +
132  '-isEMTight.-isEMMedium.-isEMLoose'))
133 
134  egcf.addFlag("Egamma.Keys.Output.ForwardClusters",
135  'ForwardElectronClusters')
136  egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppESD", '-SisterCluster.-sigmaWidth')
137  egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppAOD",
138  lambda prevFlags: (
139  prevFlags.Egamma.Keys.Output.ForwardClustersSuppESD))
140 
141  egcf.addFlag("Egamma.Keys.Output.Photons", 'Photons')
142  egcf.addFlag("Egamma.Keys.Output.PhotonsSuppESD",
143  lambda prevFlags: (
144  prevFlags.Egamma.Keys.Output.EgammaSuppESD +
145  '.-ptvarcone20.-ptvarcone30'))
146  egcf.addFlag("Egamma.Keys.Output.PhotonsSuppAOD",
147  lambda prevFlags: (
148  prevFlags.Egamma.Keys.Output.PhotonsSuppESD + '.' +
149  prevFlags.Egamma.Keys.Output.EgammaSuppAOD))
150 
151  egcf.addFlag("Egamma.Keys.Output.GSFTrackParticles", 'GSFTrackParticles')
152  egcf.addFlag("Egamma.Keys.Output.FwdGSFTrackParticles",
153  lambda prevFlags: (
154  prevFlags.Egamma.Keys.Output.GSFTrackParticles + 'Fwd'))
155  egcf.addFlag("Egamma.Keys.Output.GSFTrackParticlesSuppESD", '')
156  egcf.addFlag("Egamma.Keys.Output.GSFTrackParticlesSuppAOD",
157  lambda prevFlags: (
158  prevFlags.Egamma.Keys.Output.GSFTrackParticlesSuppESD))
159 
160  egcf.addFlag("Egamma.Keys.Output.TruthParticles", 'egammaTruthParticles')
161  egcf.addFlag("Egamma.Keys.Output.TruthParticlesSuppESD", '')
162  egcf.addFlag("Egamma.Keys.Output.TruthParticlesSuppAOD",
163  lambda prevFlags: (
164  prevFlags.Egamma.Keys.Output.TruthParticlesSuppESD))
165 
166  # Not written in AOD.
167  egcf.addFlag("Egamma.Keys.Output.GSFTracks", 'GSFTracks')
168  egcf.addFlag("Egamma.Keys.Output.FwdGSFTracks",
169  lambda prevFlags: (
170  prevFlags.Egamma.Keys.Output.GSFTracks + 'Fwd'))
171 
172  # These are the clusters that are used to determine which cells to write
173  # out to AOD don't define SuppAOD because the whole container is suppressed.
174  egcf.addFlag("Egamma.Keys.Output.EgammaLargeClusters", 'egamma711Clusters')
175  egcf.addFlag("Egamma.Keys.Output.EgammaLargeClustersSuppESD", '')
176 
177  egcf.addFlag("Egamma.Keys.Output.EgammaLargeFWDClusters",
178  'egamma66FWDClusters')
179  egcf.addFlag("Egamma.Keys.Output.EgammaLargeFWDClustersSuppESD", '')
180 
181  egcf.addFlag("Egamma.Keys.Output.TrkPartContainerName",
182  'egammaSelectedTrackParticles')
183 
184  egcf.addFlag("Egamma.Keys.Output.FwdTrkPartContainerName",
185  lambda prevFlags: (
186  prevFlags.Egamma.Keys.Output.TrkPartContainerName + 'Fwd'))
187 
188  return egcf
189 
190 
191 if __name__ == "__main__":
192 
194  flags.dump()
python.egammaConfigFlags.createEgammaConfigFlags
def createEgammaConfigFlags()
Definition: egammaConfigFlags.py:6