ATLAS Offline Software
EGAM8.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 # ====================================================================
3 # EGAM8.py
4 # This defines DAOD_EGAM8, a skimmed DAOD format for Run 3.
5 # Z->ee reduction for forward e tag-and-probe (one central e, one fwd e)
6 # Z->emu reduction for bkg studies (one mu, one fwd e)
7 # It requires the flag EGAM8 in Derivation_tf.py
8 # ====================================================================
9 
10 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
11 from AthenaConfiguration.ComponentFactory import CompFactory
12 from AthenaConfiguration.Enums import MetadataCategory
13 
14 from AthenaCommon.SystemOfUnits import MeV
15 
16 from DerivationFrameworkEGamma.PhotonsCPDetailedContent import (
17  PhotonsCPDetailedContent,
18 )
19 
20 
22  """Configure the EGAM8 skimming tool"""
23  acc = ComponentAccumulator()
24 
25  expression = " || ".join(
26  [
27  "(count(EGAM8_DiElectronMass >50.0*GeV) >=1)",
28  "(count(EGAM8_MuonElectronMass >50.0*GeV) >=1)",
29  ]
30  )
31  print("EGAM8 skimming expression: ", expression)
32 
33  acc.setPrivateTools(
34  CompFactory.DerivationFramework.xAODStringSkimmingTool(
35  name="EGAM8SkimmingTool", expression=expression
36  )
37  )
38 
39  return acc
40 
41 
43  """Configure the EGAM8 ee invariant mass augmentation tool"""
44  acc = ComponentAccumulator()
45 
46  # ====================================================================
47  # di-electron invariant mass for events passing the Z->ee
48  # selection based on single e trigger, for reco (central) and ID
49  # SF(central+fwd)
50  #
51  # 1 medium e, central, pT>25 GeV
52  # 1 forward e, pT>20 GeV
53  # OS+SS
54  # mee>50 GeV (cut applied in skimming step later)
55  # ====================================================================
56 
57  requirement_tag = " && ".join(
58  ["(Electrons.DFCommonElectronsLHMedium)", "(Electrons.pt > 24.5*GeV)"]
59  )
60  requirement_probe = "ForwardElectrons.pt > 19.5*GeV"
61 
62  acc.setPrivateTools(
63  CompFactory.DerivationFramework.EGInvariantMassTool(
64  name="EGAM8_ZEEMassTool",
65  Object1Requirements=requirement_tag,
66  Object2Requirements=requirement_probe,
67  StoreGateEntryName="EGAM8_DiElectronMass",
68  Mass1Hypothesis=0.511 * MeV,
69  Mass2Hypothesis=0.511 * MeV,
70  Container1Name="Electrons",
71  Container2Name="ForwardElectrons",
72  CheckCharge=False,
73  DoTransverseMass=False,
74  MinDeltaR=0.0,
75  )
76  )
77 
78  return acc
79 
80 
82  """Configure the EGAM8 mue invariant mass augmentation tool"""
83  acc = ComponentAccumulator()
84 
85  # ====================================================================
86  # mue invariant mass for events passing the Z->mue selection based
87  # on single muon trigger, for ID SF(central+fwd) background studies
88  #
89  # 1 medium muon, central, pT>25 GeV
90  # 1 forward e, pT>20 GeV
91  # OS+SS
92  # m(mue)>50 GeV (cut applied in skimming step later)
93  # ====================================================================
94 
95  requirement_muon = " && ".join(
96  [
97  "Muons.pt>24.5*GeV",
98  "abs(Muons.eta)<2.7",
99  "Muons.DFCommonMuonPassPreselection",
100  ]
101  )
102  requirement_electron = "ForwardElectrons.pt > 19.5*GeV"
103 
104  acc.setPrivateTools(
105  CompFactory.DerivationFramework.EGInvariantMassTool(
106  name="EGAM8_ZMuEMassTool",
107  Object1Requirements=requirement_muon,
108  Object2Requirements=requirement_electron,
109  StoreGateEntryName="EGAM8_MuonElectronMass",
110  Mass1Hypothesis=105 * MeV,
111  Mass2Hypothesis=0.511 * MeV,
112  Container1Name="Muons",
113  Container2Name="ForwardElectrons",
114  CheckCharge=False,
115  DoTransverseMass=False,
116  MinDeltaR=0.0,
117  )
118  )
119 
120  return acc
121 
122 
123 # Main algorithm config
124 def EGAM8KernelCfg(flags, name="EGAM8Kernel", **kwargs):
125  """Configure the derivation framework driving algorithm (kernel)
126  for EGAM8"""
127  acc = ComponentAccumulator()
128 
129  # Common augmentations
130  from DerivationFrameworkPhys.PhysCommonConfig import PhysCommonAugmentationsCfg
131 
132  acc.merge(
134  flags, TriggerListsHelper=kwargs["TriggerListsHelper"]
135  )
136  )
137 
138  # EGAM8 augmentations
139  augmentationTools = []
140 
141  # ====================================================================
142  # ee and mue invariant masses
143  # ====================================================================
144  EGAM8ZeeMassTool = acc.popToolsAndMerge(EGAM8ZeeMassToolCfg(flags))
145  acc.addPublicTool(EGAM8ZeeMassTool)
146  augmentationTools.append(EGAM8ZeeMassTool)
147 
148  EGAM8ZmueMassTool = acc.popToolsAndMerge(EGAM8ZmueMassToolCfg(flags))
149  acc.addPublicTool(EGAM8ZmueMassTool)
150  augmentationTools.append(EGAM8ZmueMassTool)
151 
152  # ====================================================================
153  # Common calo decoration tools
154  # ====================================================================
155  from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
156  CaloDecoratorKernelCfg)
157  acc.merge(CaloDecoratorKernelCfg(flags))
158 
159  from DerivationFrameworkEGamma.EGammaToolsConfig import (
160  EGammaCookieCutClusterToolCfg)
161  cookieCutTool = acc.popToolsAndMerge(
163  name,
164  StoreInputMoments=True,
165  StoreCookedMoments=True,
166  OutputLevel = 3))
167  acc.addPublicTool(cookieCutTool)
168  augmentationTools.append(cookieCutTool)
169 
170  # thinning tools
171  thinningTools = []
172  streamName = kwargs["StreamName"]
173 
174  # Track thinning
175  if flags.Derivation.Egamma.doTrackThinning:
176  from DerivationFrameworkInDet.InDetToolsConfig import (
177  TrackParticleThinningCfg,
178  MuonTrackParticleThinningCfg,
179  TauTrackParticleThinningCfg,
180  )
181 
182  TrackThinningKeepElectronTracks = True
183  TrackThinningKeepPhotonTracks = True
184  TrackThinningKeepAllElectronTracks = False
185  TrackThinningKeepJetTracks = False
186  TrackThinningKeepMuonTracks = True
187  TrackThinningKeepTauTracks = False
188  TrackThinningKeepPVTracks = False
189 
190  # Tracks associated with Electrons
191  if TrackThinningKeepElectronTracks:
192  EGAM8ElectronTPThinningTool = (
193  CompFactory.DerivationFramework.EgammaTrackParticleThinning(
194  name="EGAM8ElectronTPThinningTool",
195  StreamName=streamName,
196  SGKey="Electrons",
197  GSFTrackParticlesKey="GSFTrackParticles",
198  InDetTrackParticlesKey="InDetTrackParticles",
199  SelectionString="Electrons.pt > 0*GeV",
200  BestMatchOnly=True,
201  ConeSize=0.3,
202  )
203  )
204  acc.addPublicTool(EGAM8ElectronTPThinningTool)
205  thinningTools.append(EGAM8ElectronTPThinningTool)
206 
207  # Tracks associated with Electrons (all tracks, large cone, for track
208  # isolation studies of the selected electrons)
209  if TrackThinningKeepAllElectronTracks:
210  EGAM8ElectronTPThinningTool2 = (
211  CompFactory.DerivationFramework.EgammaTrackParticleThinning(
212  name="EGAM8ElectronTPThinningTool2",
213  StreamName=streamName,
214  SGKey="Electrons",
215  GSFTrackParticlesKey="GSFTrackParticles",
216  InDetTrackParticlesKey="InDetTrackParticles",
217  SelectionString="Electrons.pt > 4*GeV",
218  BestMatchOnly=False,
219  ConeSize=0.6,
220  )
221  )
222  acc.addPublicTool(EGAM8ElectronTPThinningTool2)
223  thinningTools.append(EGAM8ElectronTPThinningTool2)
224 
225  # Tracks associated with Photons
226  if TrackThinningKeepPhotonTracks:
227  EGAM8PhotonTPThinningTool = (
228  CompFactory.DerivationFramework.EgammaTrackParticleThinning(
229  name="EGAM8PhotonTPThinningTool",
230  StreamName=streamName,
231  SGKey="Photons",
232  GSFTrackParticlesKey="GSFTrackParticles",
233  InDetTrackParticlesKey="InDetTrackParticles",
234  GSFConversionVerticesKey="GSFConversionVertices",
235  SelectionString="Photons.pt > 0*GeV",
236  BestMatchOnly=True,
237  ConeSize=0.3,
238  )
239  )
240  acc.addPublicTool(EGAM8PhotonTPThinningTool)
241  thinningTools.append(EGAM8PhotonTPThinningTool)
242 
243  # Tracks associated with Jets
244  if TrackThinningKeepJetTracks:
245  EGAM8JetTPThinningTool = (
246  CompFactory.DerivationFramework.JetTrackParticleThinning(
247  name="EGAM8JetTPThinningTool",
248  StreamName=streamName,
249  JetKey="AntiKt4EMPFlowJets",
250  InDetTrackParticlesKey="InDetTrackParticles",
251  )
252  )
253  acc.addPublicTool(EGAM8JetTPThinningTool)
254  thinningTools.append(EGAM8JetTPThinningTool)
255 
256  # Tracks associated with Muons
257  if TrackThinningKeepMuonTracks:
258  EGAM8MuonTPThinningTool = acc.getPrimaryAndMerge(
260  flags,
261  name="EGAM8MuonTPThinningTool",
262  StreamName=streamName,
263  MuonKey="Muons",
264  InDetTrackParticlesKey="InDetTrackParticles",
265  )
266  )
267  thinningTools.append(EGAM8MuonTPThinningTool)
268 
269  # Tracks associated with Taus
270  if TrackThinningKeepTauTracks:
271  EGAM8TauTPThinningTool = acc.getPrimaryAndMerge(
273  flags,
274  name="EGAM8TauTPThinningTool",
275  StreamName=streamName,
276  TauKey="TauJets",
277  ConeSize=0.6,
278  InDetTrackParticlesKey="InDetTrackParticles",
279  DoTauTracksThinning=True,
280  TauTracksKey="TauTracks",
281  )
282  )
283  thinningTools.append(EGAM8TauTPThinningTool)
284 
285  # Tracks from primary vertex
286  thinning_expression = " && ".join(
287  [
288  "(InDetTrackParticles.DFCommonTightPrimary)",
289  "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3.0*mm)",
290  "(InDetTrackParticles.pt>10*GeV)",
291  ]
292  )
293  if TrackThinningKeepPVTracks:
294  EGAM8TPThinningTool = acc.getPrimaryAndMerge(
296  flags,
297  name="EGAM8TPThinningTool",
298  StreamName=streamName,
299  SelectionString=thinning_expression,
300  InDetTrackParticlesKey="InDetTrackParticles",
301  )
302  )
303  thinningTools.append(EGAM8TPThinningTool)
304 
305  # truth thinning
306  if flags.Input.isMC:
307  # W, Z and Higgs
308  truth_cond_WZH = " && ".join(
309  ["(abs(TruthParticles.pdgId) >= 23)", "(abs(TruthParticles.pdgId) <= 25)"]
310  )
311  # Leptons
312  truth_cond_lep = " && ".join(
313  ["(abs(TruthParticles.pdgId) >= 11)", "(abs(TruthParticles.pdgId) <= 16)"]
314  )
315  # Top quark
316  truth_cond_top = "(abs(TruthParticles.pdgId) == 6)"
317  # Photon
318  truth_cond_gam = " && ".join(
319  ["(TruthParticles.isPhoton)", "(TruthParticles.pt > 1*GeV)"]
320  )
321  # stable particles
322  truth_cond_finalState = " && ".join(
323  ["(TruthParticles.isGenStable)", "(!TruthParticles.isSimulationParticle)"]
324  )
325  truth_expression = (
326  "( "
327  + truth_cond_WZH
328  + " ) || "
329  + "( "
330  + truth_cond_lep
331  + " ) || "
332  + "( "
333  + truth_cond_top
334  + " ) || "
335  + "( "
336  + truth_cond_gam
337  + " ) || "
338  + "( "
339  + truth_cond_finalState
340  + " )"
341  )
342  print("EGAM8 truth thinning expression: ", truth_expression)
343 
344  EGAM8TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
345  name="EGAM8TruthThinningTool",
346  StreamName=streamName,
347  ParticleSelectionString=truth_expression,
348  PreserveDescendants=False,
349  PreserveGeneratorDescendants=True,
350  PreserveAncestors=True,
351  )
352  acc.addPublicTool(EGAM8TruthThinningTool)
353  thinningTools.append(EGAM8TruthThinningTool)
354 
355  # skimming
356  skimmingTool = acc.popToolsAndMerge(EGAM8SkimmingToolCfg(flags))
357  acc.addPublicTool(skimmingTool)
358 
359  # setup the kernel
360  acc.addEventAlgo(
361  CompFactory.DerivationFramework.DerivationKernel(
362  name,
363  SkimmingTools=[skimmingTool],
364  AugmentationTools=augmentationTools,
365  ThinningTools=thinningTools,
366  )
367  )
368 
369  return acc
370 
371 
372 def EGAM8Cfg(flags):
373  acc = ComponentAccumulator()
374 
375  # Get the lists of triggers needed for trigger matching.
376  # This is needed at this scope (for the slimming) and further down
377  # in the config chain for actually configuring the matching, so we create
378  # it here and pass it down
379  # TODO: this should ideally be called higher up to avoid it being run
380  # multiple times in a train
381 
382  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
383 
384  EGAM8TriggerListsHelper = TriggerListsHelper(flags)
385 
386  # configure skimming/thinning/augmentation tools
387  acc.merge(
389  flags,
390  name="EGAM8Kernel",
391  StreamName="StreamDAOD_EGAM8",
392  TriggerListsHelper=EGAM8TriggerListsHelper,
393  )
394  )
395 
396  # configure slimming
397  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
398  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
399  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
400 
401  EGAM8SlimmingHelper = SlimmingHelper(
402  "EGAM8SlimmingHelper",
403  NamesAndTypes=flags.Input.TypedCollections,
404  flags=flags,
405  )
406 
407  # ------------------------------------------
408  # containers for which we save all variables
409  # -------------------------------------------
410 
411  # baseline
412  EGAM8SlimmingHelper.AllVariables = [
413  "Electrons",
414  "ForwardElectrons",
415  "GSFTrackParticles",
416  "egammaClusters",
417  "ForwardElectronClusters",
418  ]
419 
420  # for trigger studies we also add:
421  # EGAM8SlimmingHelper.AllVariables += [ ]
422 
423  # and on MC we also add:
424  if flags.Input.isMC:
425  EGAM8SlimmingHelper.AllVariables += [
426  "TruthEvents",
427  "TruthParticles",
428  "TruthVertices",
429  "egammaTruthParticles",
430  ]
431 
432  # -------------------------------------------
433  # containers that we slim
434  # -------------------------------------------
435 
436  # first add variables from smart-slimming
437  # adding only also those for which we add all variables since
438  # the XXXCPContent.py files also bring in some extra variables
439  # for other collections
440  EGAM8SlimmingHelper.SmartCollections = [
441  "Electrons",
442  "Photons",
443  "Muons",
444  "TauJets",
445  "PrimaryVertices",
446  "InDetTrackParticles",
447  "AntiKt4EMPFlowJets",
448  "BTagging_AntiKt4EMPFlow",
449  "MET_Baseline_AntiKt4EMPFlow",
450  ]
451  if flags.Input.isMC:
452  EGAM8SlimmingHelper.SmartCollections += [
453  "AntiKt4TruthJets",
454  "AntiKt4TruthDressedWZJets",
455  ]
456 
457  # then add extra variables:
458 
459  # muons
460  EGAM8SlimmingHelper.ExtraVariables += [
461  "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
462  ]
463 
464  # conversion vertices
465  EGAM8SlimmingHelper.ExtraVariables += [
466  "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
467  "GSFConversionVertices.trackParticleLinks",
468  ]
469 
470  # primary vertices
471  EGAM8SlimmingHelper.ExtraVariables += ["PrimaryVertices.x.y.sumPt2"]
472 
473  # track jets
474  EGAM8SlimmingHelper.ExtraVariables += [
475  "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
476  ]
477 
478  # energy density
479  EGAM8SlimmingHelper.ExtraVariables += [
480  "TopoClusterIsoCentralEventShape.Density",
481  "TopoClusterIsoForwardEventShape.Density",
482  "NeutralParticleFlowIsoCentralEventShape.Density",
483  "NeutralParticleFlowIsoForwardEventShape.Density",
484  ]
485 
486  # photons: detailed shower shape variables
487  EGAM8SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
488 
489  # photons: gain and cluster energy per layer
490  from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
491  getGainDecorations,
492  getClusterEnergyPerLayerDecorations,
493  )
494 
495  gainDecorations = getGainDecorations(acc, flags, "EGAM8Kernel")
496  print("EGAM8 gain decorations: ", gainDecorations)
497  EGAM8SlimmingHelper.ExtraVariables.extend(gainDecorations)
498  clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc, "EGAM8Kernel")
499  print("EGAM8 cluster energy decorations: ", clusterEnergyDecorations)
500  EGAM8SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
501 
502  # truth
503  if flags.Input.isMC:
504  EGAM8SlimmingHelper.ExtraVariables += [
505  "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
506  ]
507 
508  EGAM8SlimmingHelper.ExtraVariables += [
509  "Photons.truthOrigin.truthType.truthParticleLink"
510  ]
511 
512  # Add event info
513  if flags.Derivation.Egamma.doEventInfoSlimming:
514  EGAM8SlimmingHelper.SmartCollections.append("EventInfo")
515  else:
516  EGAM8SlimmingHelper.AllVariables += ["EventInfo"]
517 
518  # Add egamma trigger objects
519  EGAM8SlimmingHelper.IncludeEGammaTriggerContent = True
520  EGAM8SlimmingHelper.IncludeMuonTriggerContent = True
521 
522  # Trigger matching
523  # Run 2
524  if flags.Trigger.EDMVersion == 2:
525  from DerivationFrameworkPhys.TriggerMatchingCommonConfig import AddRun2TriggerMatchingToSlimmingHelper
526  AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM8SlimmingHelper,
527  OutputContainerPrefix = "TrigMatch_",
528  TriggerList = EGAM8TriggerListsHelper.Run2TriggerNamesNoTau)
529  # Run 3, or Run 2 with navigation conversion
530  if flags.Trigger.EDMVersion == 3 or (flags.Trigger.EDMVersion == 2 and flags.Trigger.doEDMVersionConversion):
531  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
533 
534  # Add full CellContainer
535  EGAM8SlimmingHelper.StaticContent = [
536  "CaloCellContainer#AllCalo",
537  "CaloClusterCellLinkContainer#egammaClusters_links",
538  "CaloClusterCellLinkContainer#ForwardElectronClusters_links",
539  "xAOD::CaloClusterContainer#ForwardElectronCookieCutClusters",
540  "xAOD::CaloClusterAuxContainer#ForwardElectronCookieCutClustersAux.",
541  ]
542 
543  EGAM8ItemList = EGAM8SlimmingHelper.GetItemList()
544  acc.merge(
546  flags,
547  "DAOD_EGAM8",
548  ItemList=EGAM8ItemList,
549  AcceptAlgs=["EGAM8Kernel"],
550  )
551  )
552  acc.merge(
554  flags,
555  "DAOD_EGAM8",
556  AcceptAlgs=["EGAM8Kernel"],
557  createMetadata=[
558  MetadataCategory.CutFlowMetaData,
559  MetadataCategory.TruthMetaData,
560  ],
561  )
562  )
563 
564  return acc
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:98
SystemOfUnits
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
python.EGAM8.EGAM8ZeeMassToolCfg
def EGAM8ZeeMassToolCfg(flags)
Definition: EGAM8.py:42
python.EGAM8.EGAM8SkimmingToolCfg
def EGAM8SkimmingToolCfg(flags)
Definition: EGAM8.py:21
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:516
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:49
python.EGammaToolsConfig.EGammaCookieCutClusterToolCfg
def EGammaCookieCutClusterToolCfg(flags, name='EGCookieCutTool', **kwargs)
Definition: EGammaToolsConfig.py:108
python.InDetToolsConfig.MuonTrackParticleThinningCfg
def MuonTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:600
python.InDetToolsConfig.TauTrackParticleThinningCfg
def TauTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:611
python.EGAM8.EGAM8KernelCfg
def EGAM8KernelCfg(flags, name="EGAM8Kernel", **kwargs)
Definition: EGAM8.py:124
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.EGAM8.EGAM8ZmueMassToolCfg
def EGAM8ZmueMassToolCfg(flags)
Definition: EGAM8.py:81
python.EGAM8.EGAM8Cfg
def EGAM8Cfg(flags)
Definition: EGAM8.py:372
DerivationFrameworkCaloConfig.CaloDecoratorKernelCfg
def CaloDecoratorKernelCfg(flags, name="CaloDecoratorKernel", **kwargs)
Definition: DerivationFrameworkCaloConfig.py:105
DerivationFrameworkCaloConfig.getClusterEnergyPerLayerDecorations
def getClusterEnergyPerLayerDecorations(acc, kernel)
Definition: DerivationFrameworkCaloConfig.py:184
DerivationFrameworkCaloConfig.getGainDecorations
def getGainDecorations(acc, flags, kernel, collections=None, info=["E", "nCells"])
Definition: DerivationFrameworkCaloConfig.py:155
python.PhysCommonConfig.PhysCommonAugmentationsCfg
def PhysCommonAugmentationsCfg(flags, **kwargs)
Definition: PhysCommonConfig.py:13
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1