ATLAS Offline Software
Functions
L1CALOCore Namespace Reference

Functions

def L1CALOCoreCfg (flags, deriv='L1CALO1', **kwargs)
 
def addEfexTOBs (slimminghelper, allVariables, postFix="")
 
def addJfexTOBs (slimminghelper, allVariables, postFix="")
 
def addGfexTOBs (slimminghelper, allVariables, postFix="")
 

Function Documentation

◆ addEfexTOBs()

def L1CALOCore.addEfexTOBs (   slimminghelper,
  allVariables,
  postFix = "" 
)
add the list of eFEX containers for given postFix string

Definition at line 497 of file L1CALOCore.py.

497 def addEfexTOBs(slimminghelper, allVariables, postFix = ""):
498  """
499  add the list of eFEX containers for given postFix string
500  """
501  slimminghelper.AppendToDictionary.update (
502  {"L1_eEMRoI"+postFix : "xAOD::eFexEMRoIContainer",
503  "L1_eEMRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
504  "L1_eTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
505  "L1_eTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
506  "L1_eTauRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
507  "L1_eTauRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
508  "L1_cTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
509  "L1_cTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
510  "L1_eEMxRoI"+postFix : "xAOD::eFexEMRoIContainer",
511  "L1_eEMxRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
512  "L1_eTauxRoI"+postFix : "xAOD::eFexTauRoIContainer",
513  "L1_eTauxRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
514  "L1_eTauxRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
515  "L1_eTauxRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer"} )
516 
517  allVariables += ["L1_eEMRoI" + postFix,
518  "L1_eTauRoI" + postFix,
519  "L1_eTauRoIAlt" + postFix,
520  "L1_cTauRoI" + postFix,
521  "L1_eEMxRoI" + postFix,
522  "L1_eTauxRoI" + postFix,
523  "L1_eTauxRoIAlt" + postFix]
524 
525  return slimminghelper, allVariables
526 
527 

◆ addGfexTOBs()

def L1CALOCore.addGfexTOBs (   slimminghelper,
  allVariables,
  postFix = "" 
)
add the list of gFEX containers for given postFix string

Definition at line 574 of file L1CALOCore.py.

574 def addGfexTOBs(slimminghelper, allVariables, postFix = ""):
575  """
576  add the list of gFEX containers for given postFix string
577  """
578  slimminghelper.AppendToDictionary.update (
579  {"L1_gFexRhoRoI"+postFix : "xAOD::gFexJetRoIContainer",
580  "L1_gFexRhoRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
581  "L1_gFexSRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
582  "L1_gFexSRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
583  "L1_gScalarEJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
584  "L1_gScalarEJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
585  "L1_gFexLRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
586  "L1_gFexLRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
587  "L1_gMETComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
588  "L1_gMETComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
589  "L1_gMHTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
590  "L1_gMHTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
591  "L1_gMSTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
592  "L1_gMSTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer"})
593 
594  allVariables += ["L1_gFexRhoRoI" + postFix,
595  "L1_gFexSRJetRoI" + postFix,
596  "L1_gScalarEJwoj" + postFix,
597  "L1_gFexLRJetRoI" + postFix,
598  "L1_gMETComponentsJwoj" + postFix,
599  "L1_gMHTComponentsJwoj" + postFix,
600  "L1_gMSTComponentsJwoj" + postFix]
601 
602  return slimminghelper, allVariables

◆ addJfexTOBs()

def L1CALOCore.addJfexTOBs (   slimminghelper,
  allVariables,
  postFix = "" 
)
add the list of jFEX containers for given postFix string

Definition at line 528 of file L1CALOCore.py.

528 def addJfexTOBs(slimminghelper, allVariables, postFix = ""):
529  """
530  add the list of jFEX containers for given postFix string
531  """
532  slimminghelper.AppendToDictionary.update (
533  {"L1_jFexMETRoI"+postFix : "xAOD::jFexMETRoIContainer",
534  "L1_jFexMETRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
535  "L1_jFexTauRoI"+postFix : "xAOD::jFexTauRoIContainer",
536  "L1_jFexTauRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
537  "L1_jFexFwdElRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
538  "L1_jFexFwdElRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
539  "L1_jFexSRJetRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
540  "L1_jFexSRJetRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
541  "L1_jFexLRJetRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
542  "L1_jFexLRJetRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
543  "L1_jFexSumETRoI"+postFix : "xAOD::jFexSumETRoIContainer",
544  "L1_jFexSumETRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer",
545  "L1_jFexMETxRoI"+postFix : "xAOD::jFexMETRoIContainer",
546  "L1_jFexMETxRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
547  "L1_jFexTauxRoI"+postFix : "xAOD::jFexTauRoIContainer",
548  "L1_jFexTauxRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
549  "L1_jFexFwdElxRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
550  "L1_jFexFwdElxRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
551  "L1_jFexSRJetxRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
552  "L1_jFexSRJetxRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
553  "L1_jFexLRJetxRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
554  "L1_jFexLRJetxRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
555  "L1_jFexSumETxRoI"+postFix : "xAOD::jFexSumETRoIContainer",
556  "L1_jFexSumETxRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer"})
557 
558  allVariables += ["L1_jFexMETRoI" + postFix,
559  "L1_jFexTauRoI" + postFix,
560  "L1_jFexFwdElRoI" + postFix,
561  "L1_jFexSRJetRoI" + postFix,
562  "L1_jFexLRJetRoI" + postFix,
563  "L1_jFexSumETRoI" + postFix,
564  "L1_jFexMETxRoI" + postFix,
565  "L1_jFexTauxRoI" + postFix,
566  "L1_jFexFwdElxRoI" + postFix,
567  "L1_jFexSRJetxRoI" + postFix,
568  "L1_jFexLRJetxRoI" + postFix,
569  "L1_jFexSumETxRoI" + postFix]
570 
571  return slimminghelper, allVariables
572 
573 

◆ L1CALOCoreCfg()

def L1CALOCore.L1CALOCoreCfg (   flags,
  deriv = 'L1CALO1',
**  kwargs 
)
Core fragment for L1CALO derivations

Definition at line 16 of file L1CALOCore.py.

16 def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs):
17  """
18  Core fragment for L1CALO derivations
19  """
20  from AthenaCommon.Logging import logging
21  log = logging.getLogger('L1CALO')
22  log.info('Called L1CaloCore config for derivation %s',deriv)
23 
24  streamNameStem = "DAOD_" + deriv
25  streamName = "Stream" + streamNameStem
26 
27  acc = ComponentAccumulator()
28 
29  # the derivation can also be run on pool files e.g. MC - need to switch off many decoders etc..
30  # Note: static content not allowed when running on pool
31  isNotPool = flags.Input.Format is not Format.POOL
32 
33  fillSuperCells=False
34 
35  # decode the legacy L1Calo information - required because flags.Trigger.doLVL1 is False
36  if isNotPool:
37  from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
38  acc.merge(LVL1CaloRun2ReadBSCfg(flags))
39 
40 
41  # set up thinning tools
42  thinningTools = []
43 
44  # set up legacy trigger tower thinning for L1CALO1
45  if 'L1CALO1' in deriv and isNotPool:
46  from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerThinningCfg
47  LegacyTowerThinningTool = acc.getPrimaryAndMerge(LegacyTriggerTowerThinningCfg(
48  flags,
49  name = "L1CALOCaloThinningTool",
50  StreamName = streamName,
51  TriggerTowerLocation = "xAODTriggerTowers",
52  MinCaloCellET = 0.8,
53  MinADC = 36,
54  UseRandom = True,
55  MinRandom = 0.01 ) )
56  thinningTools.append(LegacyTowerThinningTool)
57 
58  # set up decorators
59  # Legacy Trigger Tower decorator
60  if isNotPool:
61  from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerDecoratorCfg
62  acc.merge(LegacyTriggerTowerDecoratorCfg(flags, name = 'L1CaloTriggerTowerDecorator'))
63 
64  # setup skimming tool example (AOD data only)
65  skimmingTools = []
66  if not isNotPool and not flags.Input.isMC:
67  # example trigger skimming tool as with JETM10.py
68  skimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(name = "L1CALOSkimmingTool1",
69  TriggerListOR = ["HLT_noalg_L1XE.*"] )
70  acc.addPublicTool(skimmingTool, primary = True)
71  skimmingTools.append(skimmingTool)
72 
73  #
74  augmentationTools = []
75 
76  # Set up the derivation kernel
77  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
78  acc.addEventAlgo(DerivationKernel(
79  name = "DFL1CALO_KERN",
80  AugmentationTools = augmentationTools,
81  ThinningTools = thinningTools,
82  SkimmingTools = skimmingTools,
83  RunSkimmingFirst = not isNotPool,
84  doChronoStat=(flags.Concurrency.NumThreads <= 1),
85  OutputLevel = INFO))
86 
87  # Phase 1 setup
88  # emulate/decorate the input towers
89  # first need to decode LATOME readout
90  if isNotPool:
91  from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg
92  acc.merge(ReadSCellFromByteStreamCfg(flags))
93 
94  # Emulate jFEX input towers
95  emulatedDataTowersKey = "L1_jFexEmulatedTowers"
96  if flags.Trigger.L1.dojFex and isNotPool:
97  from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
98  acc.merge(jFexEmulatedTowersCfg(flags, writeKey=emulatedDataTowersKey))
99 
100  # Decorate any jFEX data towers
101  extraJfexInfo = False # for decorating with SCell inputs to the towers
102  if flags.Trigger.L1.dojFex and isNotPool:
103  from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
104  acc.merge(L1CalojFEXDecoratorCfg(flags, ExtraInfo=extraJfexInfo))
105 
106  # Decorate the emulated jFEX towers
107  if flags.Trigger.L1.dojFex and isNotPool:
108  acc.merge(L1CalojFEXDecoratorCfg(flags,name='jFexTower2SCellEmulatedDecorator',jTowersReadKey=emulatedDataTowersKey,ExtraInfo=extraJfexInfo))
109 
110  # Emulate eFEX input towers
111  if flags.Trigger.L1.doeFex and isNotPool:
112  from L1CaloFEXAlgos.FexEmulatedTowersConfig import eFexEmulatedTowersCfg
113  eFexEmulatedTool = eFexEmulatedTowersCfg(flags,'L1_eFexEmulatedTowers')
114  acc.merge(eFexEmulatedTool)
115 
116  # Re-simulate from LATOME (for both data and POOL files with SCells)
117  from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg
118  if isNotPool:
119  acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
120  else:
121  SCellType = flags.Trigger.L1.L1CaloSuperCellContainerName
122  if SCellType in flags.Input.Collections:
123  acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
124 
125  # decorate the eFEX TOBs
126  if flags.Trigger.L1.doeFex and isNotPool:
127  from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import eFexTOBDecoratorCfg
128  # Temporary fix to ensure the L1 TOBs are decoded by the Trigger
129  from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput
130  ExtraInputs = [('xAOD::TrigCompositeContainer', 'StoreGateSvc+'+getRun3NavigationContainerFromInput(flags))]
131  DecoratorAlgo = eFexTOBDecoratorCfg(flags,'eFexTOBDecorator','L1_eEMRoI','L1_eTauRoI',ExtraInputs)
132  acc.merge(DecoratorAlgo)
133  DecoratorAlgoSim = eFexTOBDecoratorCfg(flags,'eFexTOBDecoratorSim','L1_eEMRoISim','L1_eTauRoIAltSim')
134  acc.merge(DecoratorAlgoSim)
135 
136  if fillSuperCells :
137  from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import eFexTOBSuperCellDecoratorCfg
138  acc.merge(eFexTOBSuperCellDecoratorCfg(flags,'eFexTOBSuperCellDecoratorSim','L1_eEMRoISim','L1_eTauxRoISim'))
139 
140  # set up the slimming helper
141  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
142 
143  L1CaloSlimmingHelper = SlimmingHelper("L1CaloSlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
144 
145  AllVariables = []
146  StaticContent = []
147  SmartCollections = []
148  ExtraVariables = []
149 
150  L1CaloSlimmingHelper.IncludeTriggerNavigation = True # Trigger info is actually stored only when running on data...
151  L1CaloSlimmingHelper.IncludeAdditionalTriggerContent = False # precludes EGamma/Jet TriggerContent
152 
153  L1CaloSlimmingHelper.IncludeEGammaTriggerContent = True
154  L1CaloSlimmingHelper.IncludeJetTriggerContent = True
155  L1CaloSlimmingHelper.IncludeBJetTriggerContent = True
156  L1CaloSlimmingHelper.IncludeTauTriggerContent = True # does not select any Run3 HLT collections - added below
157 
158  # Container selection based on share/L1CALO versions
159  # Note: if the container is in the on-the-fly list (ContainersOnTheFly.py) then we do not have to add it to the dictionary
160  # We can do smart slimming if the container is in the smart list (FullListOfSmartContainers.py)
161 
162  # some gymnastics for HLT from RAWD
163  if isNotPool and L1CaloSlimmingHelper.IncludeEGammaTriggerContent:
164  # replicate adding EGammaTriggerContent
165  # switch the eGamma Trigger off for RAW data - smart slimming not required
166  L1CaloSlimmingHelper.IncludeEGammaTriggerContent = False
167  ElToKeep = ['ptcone20', 'ptvarcone20', 'ptcone30', 'ptvarcone30', 'trk_d0','cl_eta2','cl_phi2', 'deltaEta1PearDistortion']
168  ElVars = '.'.join(ElToKeep)
169  StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons"]
170  StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_ElectronsAux."+ElVars]
171  StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons_GSF"]
172  StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_Electrons_GSFAux."+ElVars]
173  # non-slimmed
174  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_CaloEMClusters_Electron":"xAOD::CaloClusterContainer",
175  "HLT_CaloEMClusters_ElectronAux":"xAOD::CaloClusterAuxContainer"})
176  AllVariables += ["HLT_CaloEMClusters_Electron"]
177  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_IDTrig":"xAOD::TrackParticleContainer",
178  "HLT_IDTrack_Electron_IDTrigAux":"xAOD::TrackParticleAuxContainer"})
179  AllVariables += ["HLT_IDTrack_Electron_IDTrig"]
180  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_GSF":"xAOD::TrackParticleContainer",
181  "HLT_IDTrack_Electron_GSFAux":"xAOD::TrackParticleAuxContainer"})
182  AllVariables += ["HLT_IDTrack_Electron_GSF"]
183 
184  if isNotPool and L1CaloSlimmingHelper.IncludeJetTriggerContent:
185  # replicate adding JetTriggerContent - easier because this is genuine smart slimming
186  # Update the dictionary with the containers that will be smart slimmed
187  L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_AntiKt4EMTopoJets_nojcalib":"xAOD::JetContainer",
188  "HLT_AntiKt4EMTopoJets_nojcalibAux":"xAOD::JetAuxContainer",
189  "HLT_AntiKt4EMTopoJets_nojcalib_ftf":"xAOD::JetContainer",
190  "HLT_AntiKt4EMTopoJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
191  "HLT_AntiKt4EMTopoJets_subjesIS":"xAOD::JetContainer",
192  "HLT_AntiKt4EMTopoJets_subjesISAux":"xAOD::ShallowAuxContainer",
193  "HLT_AntiKt4EMPFlowJets_nojcalib_ftf":"xAOD::JetContainer",
194  "HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
195  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":"xAOD::JetContainer",
196  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
197  "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf":"xAOD::JetContainer",
198  "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
199  "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf":"xAOD::JetContainer",
200  "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux":"xAOD::JetAuxContainer",
201  "HLT_IDVertex_FS":"xAOD::VertexContainer",
202  "HLT_IDVertex_FSAux":"xAOD::VertexAuxContainer",
203  "HLT_TCEventInfo_jet":"xAOD::TrigCompositeContainer",
204  "HLT_TCEventInfo_jetAux":"xAOD::TrigCompositeAuxContainer",
205  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging": "xAOD::BTaggingContainer",
206  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAux": "xAOD::BTaggingAuxContainer",
207  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets": "xAOD::JetContainer",
208  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux": "xAOD::JetAuxContainer"})
209 
210  AllVariables += ["HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging", "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets"]
211 
212  if L1CaloSlimmingHelper.IncludeTauTriggerContent:
213  L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_TrigTauRecMerged_MVA":"xAOD::TauJetContainer",
214  "HLT_TrigTauRecMerged_MVAAux":"xAOD::TauJetAuxContainer",
215  "HLT_TrigTauRecMerged_LLP":"xAOD::TauJetContainer",
216  "HLT_TrigTauRecMerged_LLPAux":"xAOD::TauJetAuxContainer",
217  "HLT_TrigTauRecMerged_LRT":"xAOD::TauJetContainer",
218  "HLT_TrigTauRecMerged_LRTAux":"xAOD::TauJetAuxContainer",
219  "HLT_TrigTauRecMerged_CaloMVAOnly":"xAOD::TauJetContainer",
220  "HLT_TrigTauRecMerged_CaloMVAOnlyAux":"xAOD::TauJetAuxContainer"})
221  AllVariables += ["HLT_TrigTauRecMerged_MVA", "HLT_TrigTauRecMerged_LLP", "HLT_TrigTauRecMerged_LRT", "HLT_TrigTauRecMerged_CaloMVAOnly"]
222 
223  # Generic event info
224  L1CaloSlimmingHelper.AppendToDictionary.update({"EventInfo":"xAOD::EventInfo","EventInfoAux":"xAOD::EventAuxInfo"})
225 
226  # We keep all of EventInfo rather than smart slim
227  AllVariables += ["EventInfo","Kt4EMPFlowEventShape"]
228 
229  # Physics Objects
230  # Those for which there is smart slimming but not in the on the fly list
231  L1CaloSlimmingHelper.AppendToDictionary.update (
232  {"Muons":"xAOD::MuonContainer", "MuonsAux":"xAOD::MuonAuxContainer",
233  "Photons":"xAOD::PhotonContainer", "PhotonsAux":"xAOD::PhotonAuxContainer",
234  "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"}
235  )
236  AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"]
237  AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
238  # TauJets require smart slimming in order not to cause issues
239  SmartCollections += ["TauJets"]
240 
241  # Use unslimmed electrons in order to use Likelihood qualities
242  L1CaloSlimmingHelper.AppendToDictionary.update (
243  {"Electrons":"xAOD::ElectronContainer", "ElectronsAux":"xAOD::ElectronAuxContainer"} )
244  AllVariables += ["Electrons"]
245 
246  L1CaloSlimmingHelper.AppendToDictionary.update (
247  {"ForwardElectrons":"xAOD::ElectronContainer", "ForwardElectronsAux":"xAOD::ElectronAuxContainer"} )
248  AllVariables += ["ForwardElectrons"]
249 
250  # Missing ET - unslimmed container
251  AllVariables += ["METAssoc_AntiKt4EMPFlow"]
252 
253  # using MET slimming as per share/L1CALOX.py
254  if isNotPool:
255  StaticContent += ["xAOD::MissingETContainer#MET_Reference_AntiKt4EMPFlow"]
256  StaticContent += ["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMPFlowAux.-ConstitObjectLinks.-ConstitObjectWeights"]
257 
258  StaticContent += ["xAOD::MissingETContainer#MET_Core_AntiKt4EMPFlow"]
259  StaticContent += ["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMPFlowAux.name.mpx.mpy.sumet.source"]
260 
261  StaticContent += ["xAOD::MissingETContainer#MET_Track"]
262  StaticContent += ["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"]
263  else:
264  AllVariables += ["MET_Reference_AntiKt4EMPFlow"]
265  AllVariables += ["MET_Core_AntiKt4EMPFlow"]
266  L1CaloSlimmingHelper.AppendToDictionary.update (
267  {"MET_Track":"xAOD::MissingETContainer", "MET_TrackAux":"xAOD::MissingETAuxContainer"} )
268  AllVariables += ["MET_Track"]
269 
270  # Primary vertices
271  if isNotPool:
272  StaticContent += ["xAOD::VertexContainer#PrimaryVertices"]
273  StaticContent += ["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"]
274  else:
275  L1CaloSlimmingHelper.AppendToDictionary.update(
276  {"PrimaryVertices":"xAOD::VertexContainer","PrimaryVerticesAux":"xAOD::VertexAuxContainer"}
277  )
278  AllVariables += ["PrimaryVertices"]
279 
280 
281  # Egamma CP additions
282  L1CaloSlimmingHelper.AppendToDictionary.update (
283  {"egammaTopoSeededClusters":"xAOD::CaloClusterContainer","egammaTopoSeededClustersAux":"xAOD::CaloClusterAuxContainer"}
284  )
285  AllVariables += ["egammaTopoSeededClusters"]
286 
287  # GSF vertices and tracks
288  if isNotPool:
289  StaticContent += ["xAOD::VertexContainer#GSFConversionVertices"]
290  # we have to disable vxTrackAtVertex branch since it is not xAOD compatible
291  StaticContent += ["xAOD::VertexAuxContainer#GSFConversionVerticesAux.-vxTrackAtVertex"]
292  #
293  trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
294  StaticContent += ["xAOD::TrackParticleContainer#GSFTrackParticles"]
295  StaticContent += ["xAOD::TrackParticleAuxContainer#GSFTrackParticlesAux."+trackParticleAuxExclusions]
296  else:
297  L1CaloSlimmingHelper.AppendToDictionary.update (
298  {"GSFConversionVertices":"xAOD::VertexContainer",
299  "GSFConversionVerticesAux":"xAOD::VertexAuxContainer",
300  "GSFTrackParticles":"xAOD::TrackParticleContainer",
301  "GSFTrackParticlesAux":"xAOD::TrackParticleAuxContainer"}
302  )
303  AllVariables += ["GSFConversionVertices","GSFTrackParticles"]
304 
305  L1CaloSlimmingHelper.AppendToDictionary.update (
306  {"egammaClusters":"xAOD::CaloClusterContainer",
307  "egammaClustersAux":"xAOD::CaloClusterAuxContainer",
308  "TauPi0Clusters":"xAOD::CaloClusterContainer",
309  "TauPi0ClustersAux":"xAOD::CaloClusterAuxContainer",
310  "CaloCalTopoClusters":"xAOD::CaloClusterContainer",
311  "CaloCalTopoClustersAux":"xAOD::CaloClusterAuxContainer",
312  "MuonSegments":"xAOD::MuonSegmentContainer",
313  "MuonSegmentsAux":"xAOD::MuonSegmentAuxContainer"}
314  )
315  AllVariables += ["egammaClusters","TauPi0Clusters","CaloCalTopoClusters","MuonSegments"]
316 
317  # Add b-tagging information directly using ExtraVariables - as done for PHYSLITE
318  ExtraVariables += [
319  'BTagging_AntiKt4EMPFlow.DL1dv01_pu.DL1dv01_pc.DL1dv01_pb.GN2v00_pu.GN2v00_pc.GN2v00_pb'
320  ]
321 
322  # L1Calo information
323  # Legacy RoI Containers
324  L1CaloSlimmingHelper.AppendToDictionary.update (
325  {"LVL1EmTauRoIs":"xAOD::EmTauRoIContainer",
326  "LVL1EmTauRoIsAux":"xAOD::EmTauRoIAuxContainer",
327  "LVL1EnergySumRoI":"xAOD::EnergySumRoI",
328  "LVL1EnergySumRoIAux":"xAOD::EnergySumRoIAuxInfo",
329  "LVL1JetEtRoI":"xAOD::JetEtRoI",
330  "LVL1JetEtRoIAux":"xAOD::JetEtRoIAuxInfo",
331  "LVL1JetRoIs":"xAOD::JetRoIContainer",
332  "LVL1JetRoIsAux":"xAOD::JetRoIAuxContainer",
333  "LVL1MuonRoIs":"xAOD::MuonRoIContainer",
334  "LVL1MuonRoIsAux":"xAOD::MuonRoIAuxContainer"}
335  )
336  AllVariables += [ "LVL1EmTauRoIs","LVL1EnergySumRoI","LVL1JetEtRoI","LVL1JetRoIs","LVL1MuonRoIs"]
337 
338  # Legacy sub-systems
339  L1CaloSlimmingHelper.AppendToDictionary.update (
340  {"JEMTobRoIsRoIB":"xAOD::JEMTobRoIContainer",
341  "JEMTobRoIsRoIBAux":"xAOD::JEMTobRoIAuxContainer",
342  "JEMTobRoIs":"xAOD::JEMTobRoIContainer",
343  "JEMTobRoIsAux":"xAOD::JEMTobRoIAuxContainer",
344  "JEMEtSums":"xAOD::JEMEtSumsContainer",
345  "JEMEtSumsAux":"xAOD::JEMEtSumsAuxContainer"}
346  )
347  AllVariables += ["JEMTobRoIsRoIB",
348  "JEMTobRoIs",
349  "JEMEtSums"]
350 
351  L1CaloSlimmingHelper.AppendToDictionary.update (
352  {"CMXCPHits":"xAOD::CMXCPHitsContainer",
353  "CMXCPHitsAux":"xAOD::CMXCPHitsAuxContainer",
354  "CMXCPTobs":"xAOD::CMXCPTobContainer",
355  "CMXCPTobsAux":"xAOD::CMXCPTobAuxContainer",
356  "CMXEtSums":"xAOD::CMXEtSumsContainer",
357  "CMXEtSumsAux":"xAOD::CMXEtSumsAuxContainer",
358  "CMXJetHits":"xAOD::CMXJetHitsContainer",
359  "CMXJetHitsAux":"xAOD::CMXJetHitsAuxContainer",
360  "CMXJetTobs":"xAOD::CMXJetTobContainer",
361  "CMXJetTobsAux":"xAOD::CMXJetTobAuxContainer",
362  "CMXRoIs":"xAOD::CMXRoIContainer",
363  "CMXRoIsAux":"xAOD::CMXRoIAuxContainer"}
364  )
365  AllVariables += ["CMXCPHits",
366  "CMXCPTobs",
367  "CMXEtSums",
368  "CMXJetHits",
369  "CMXJetTobs",
370  "CMXRoIs"]
371 
372 
373  L1CaloSlimmingHelper.AppendToDictionary.update (
374  {"CPMTobRoIs":"xAOD::CPMTobRoIContainer",
375  "CPMTobRoIsAux":"xAOD::CPMTobRoIAuxContainer",
376  "CPMTobRoIsRoIB":"xAOD::CPMTobRoIContainer",
377  "CPMTobRoIsRoIBAux":"xAOD::CPMTobRoIAuxContainer",
378  "CPMTowers":"xAOD::CPMTowerContainer",
379  "CPMTowersAux":"xAOD::CPMTowerAuxContainer",
380  "CPMTowersOverlap":"xAOD::CPMTowerContainer",
381  "CPMTowersOverlapAux":"xAOD::CPMTowerAuxContainer",
382  "RODHeaders":"xAOD::RODHeaderContainer",
383  "RODHeadersAux":"xAOD::RODHeaderAuxContainer",
384  "xAODTriggerTowers":"xAOD::TriggerTowerContainer",
385  "xAODTriggerTowersAux":"xAOD::TriggerTowerAuxContainer",
386  "JetElements":"xAOD::JetElementContainer",
387  "JetElementsAux":"xAOD::JetElementAuxContainer",
388  "JetElementsOverlap":"xAOD::JetElementContainer",
389  "JetElementsOverlapAux":"xAOD::JetElementAuxContainer",
390  "L1TopoRawData":"xAOD::L1TopoRawDataContainer",
391  "L1TopoRawDataAux":"xAOD::L1TopoRawDataAuxContainer",
392  "L1_Phase1L1TopoRAWData":"xAOD::L1TopoRawDataContainer",
393  "L1_Phase1L1TopoRAWDataAux":"xAOD::L1TopoRawDataAuxContainer"}
394  )
395  AllVariables += ["CPMTobRoIs",
396  "CPMTobRoIsRoIB",
397  "CPMTowers",
398  "CPMTowersOverlap",
399  "RODHeaders",
400  "xAODTriggerTowers",
401  "JetElements",
402  "JetElementsOverlap",
403  "L1TopoRawData",
404  "L1_Phase1L1TopoRAWData"]
405 
406 
407  # Phase 1
408  # TOBs from HLT
409  L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables)
410  L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables)
411  L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables)
412 
413  # re-simulated
414  L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
415  L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
416  L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
417 
418 
419  # FEX input data towers
420  L1CaloSlimmingHelper.AppendToDictionary.update (
421  {"L1_eFexDataTowers":"xAOD::eFexTowerContainer",
422  "L1_eFexDataTowersAux":"xAOD::eFexTowerAuxContainer",
423  "L1_jFexDataTowers":"xAOD::jFexTowerContainer",
424  "L1_jFexDataTowersAux":"xAOD::jFexTowerAuxContainer",
425  "L1_gFexDataTowers":"xAOD::gFexTowerContainer",
426  "L1_gFexDataTowersAux":"xAOD::gFexTowerAuxContainer",
427  "L1_gFexDataTowers50":"xAOD::gFexTowerContainer",
428  "L1_gFexDataTowers50Aux":"xAOD::gFexTowerAuxContainer"}
429  )
430  AllVariables += ["L1_eFexDataTowers","L1_jFexDataTowers","L1_gFexDataTowers","L1_gFexDataTowers50"]
431 
432  # Emulated eFEX input tower data from LATOME
433  L1CaloSlimmingHelper.AppendToDictionary.update (
434  {"L1_eFexEmulatedTowers":"xAOD::eFexTowerContainer",
435  "L1_eFexEmulatedTowersAux":"xAOD::eFexTowerAuxContainer"}
436  )
437  AllVariables += ["L1_eFexEmulatedTowers"]
438 
439  # Emulated jFEX input tower data from LATOME
440  L1CaloSlimmingHelper.AppendToDictionary.update (
441  {"L1_jFexEmulatedTowers":"xAOD::jFexTowerContainer",
442  "L1_jFexEmulatedTowersAux":"xAOD::jFexTowerAuxContainer"}
443  )
444  AllVariables += ["L1_jFexEmulatedTowers"]
445 
446  # Truth collections
447  if flags.Input.isMC:
448  from DerivationFrameworkMCTruth.MCTruthCommonConfig import PreJetMCTruthAugmentationsCfg,AddTruthJetsCfg
449  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTruthCollectionNavigationDecorationsCfg,AddBornLeptonCollectionCfg
450  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddHardScatterCollectionCfg,AddTruthMETCfg,PostJetMCTruthAugmentationsCfg
451 
452  acc.merge(PreJetMCTruthAugmentationsCfg(flags,decorationDressing = 'dressedPhoton'))
453  acc.merge(AddTruthJetsCfg(flags))
454  acc.merge(AddTruthMETCfg(flags))
455  acc.merge(PostJetMCTruthAugmentationsCfg(flags, decorationDressing = 'dressedPhoton'))
456  acc.addEventAlgo(CompFactory.DerivationFramework.LockDecoration(name ="L1CALOTruthContentsLockDecoration", Decoration = 'TruthParticles.dressedPhoton'))
457  acc.merge(AddTruthCollectionNavigationDecorationsCfg(flags, ["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos"]))
458  # Special collection for Born leptons
459  acc.merge(AddBornLeptonCollectionCfg(flags))
460  # Special collection for hard scatter (matrix element) - save TWO extra generations of particles
461  acc.merge(AddHardScatterCollectionCfg(flags, 2))
462 
463  L1CaloSlimmingHelper.AppendToDictionary.update (
464  {'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
465  'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
466  'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
467  'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer',
468  'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
469  'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
470  'HardScatterParticles':'xAOD::TruthParticleContainer','HardScatterParticlesAux':'xAOD::TruthParticleAuxContainer',
471  'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer'}
472  )
473  AllVariables += [
474  "TruthElectrons",
475  "TruthMuons",
476  "TruthPhotons",
477  "TruthTaus",
478  "TruthNeutrinos",
479  "BornLeptons",
480  "HardScatterParticles",
481  "MET_Truth"
482  ]
483 
484  L1CaloSlimmingHelper.AllVariables = AllVariables
485  L1CaloSlimmingHelper.StaticContent = StaticContent
486  L1CaloSlimmingHelper.SmartCollections = SmartCollections
487  L1CaloSlimmingHelper.ExtraVariables = ExtraVariables
488 
489  # Output stream
490  L1CaloItemList = L1CaloSlimmingHelper.GetItemList()
491  acc.merge(OutputStreamCfg(flags, streamNameStem, ItemList=L1CaloItemList, AcceptAlgs=["DFL1CALO_KERN"]))
492  acc.merge(SetupMetaDataForStreamCfg(flags, streamNameStem, AcceptAlgs=["DFL1CALO_KERN"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TriggerMenuMetaData]))
493 
494  return acc
495 
496 
L1CaloFEXSimCfg.ReadSCellFromByteStreamCfg
def ReadSCellFromByteStreamCfg(flags, key='SCell', SCmask=True)
Definition: L1CaloFEXSimCfg.py:24
L1CaloFEXAlgosConfig.L1CalojFEXDecoratorCfg
def L1CalojFEXDecoratorCfg(flags, name="jFexTower2SCellDecorator", jTowersReadKey="L1_jFexDataTowers", ExtraInfo=False, SCMasking=True)
Definition: L1CaloFEXAlgosConfig.py:12
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, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
L1CALOCore.L1CALOCoreCfg
def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs)
Definition: L1CALOCore.py:16
L1CaloFEXAlgosConfig.eFexTOBSuperCellDecoratorCfg
def eFexTOBSuperCellDecoratorCfg(flags, name, eFexEMRoIContainer="L1_eEMRoI", eFexTauRoIContainer="L1_eTauxRoI")
Definition: L1CaloFEXAlgosConfig.py:67
L1CaloCalibToolsConfig.LegacyTriggerTowerDecoratorCfg
def LegacyTriggerTowerDecoratorCfg(flags, name, **kwargs)
Definition: L1CaloCalibToolsConfig.py:59
L1CALOCore.addGfexTOBs
def addGfexTOBs(slimminghelper, allVariables, postFix="")
Definition: L1CALOCore.py:574
L1CaloCalibToolsConfig.LegacyTriggerTowerThinningCfg
def LegacyTriggerTowerThinningCfg(flags, name, **kwargs)
Definition: L1CaloCalibToolsConfig.py:11
LVL1CaloRun2ByteStreamConfig.LVL1CaloRun2ReadBSCfg
def LVL1CaloRun2ReadBSCfg(flags, forRoIBResultToxAOD=False)
Definition: LVL1CaloRun2ByteStreamConfig.py:121
FexEmulatedTowersConfig.eFexEmulatedTowersCfg
def eFexEmulatedTowersCfg(flags, name, writeKey="L1_eFexEmulatedTowers")
Definition: FexEmulatedTowersConfig.py:23
python.MCTruthCommonConfig.AddBornLeptonCollectionCfg
def AddBornLeptonCollectionCfg(flags)
Definition: MCTruthCommonConfig.py:370
python.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:63
python.MCTruthCommonConfig.AddTruthMETCfg
def AddTruthMETCfg(flags)
Definition: MCTruthCommonConfig.py:79
python.MCTruthCommonConfig.PreJetMCTruthAugmentationsCfg
def PreJetMCTruthAugmentationsCfg(flags, **kwargs)
Definition: MCTruthCommonConfig.py:91
python.MCTruthCommonConfig.PostJetMCTruthAugmentationsCfg
def PostJetMCTruthAugmentationsCfg(flags, **kwargs)
Definition: MCTruthCommonConfig.py:127
L1CALOCore.addEfexTOBs
def addEfexTOBs(slimminghelper, allVariables, postFix="")
Definition: L1CALOCore.py:497
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
L1CALOCore.addJfexTOBs
def addJfexTOBs(slimminghelper, allVariables, postFix="")
Definition: L1CALOCore.py:528
L1CaloFEXAlgosConfig.eFexTOBDecoratorCfg
def eFexTOBDecoratorCfg(flags, name, eFexEMRoIContainer="L1_eEMRoI", eFexTauRoIContainer="L1_eTauRoI", ExtraInputs=[])
Definition: L1CaloFEXAlgosConfig.py:32
python.MCTruthCommonConfig.AddTruthCollectionNavigationDecorationsCfg
def AddTruthCollectionNavigationDecorationsCfg(flags, TruthCollections=[], prefix='')
Definition: MCTruthCommonConfig.py:339
python.MCTruthCommonConfig.AddHardScatterCollectionCfg
def AddHardScatterCollectionCfg(flags, generations=1)
Definition: MCTruthCommonConfig.py:332
FexEmulatedTowersConfig.jFexEmulatedTowersCfg
def jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMaker", writeKey="L1_jFexEmulatedTowers")
Definition: FexEmulatedTowersConfig.py:9
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:219
SlimmingHelper
Definition: SlimmingHelper.py:1
python.MCTruthCommonConfig.AddTruthJetsCfg
def AddTruthJetsCfg(flags)
Definition: MCTruthCommonConfig.py:62
python.HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:67
L1CaloFEXSimCfg
Definition: L1CaloFEXSimCfg.py:1