ATLAS Offline Software
L1CALOCore.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 #====================================================================
3 # L1CALOCore.py
4 # Define the list of containers for the L1Calo derivations
5 #====================================================================
6 
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
9 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
10 from AthenaCommon.Constants import INFO
11 from AthenaConfiguration.ComponentFactory import CompFactory
12 from AthenaConfiguration.Enums import Format, MetadataCategory
13 
14 #
15 def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs):
16  """
17  Core fragment for L1CALO derivations
18  """
19  from AthenaCommon.Logging import logging
20  log = logging.getLogger('L1CALO')
21  log.info('Called L1CaloCore config for derivation %s',deriv)
22 
23  streamNameStem = "DAOD_" + deriv
24  streamName = "Stream" + streamNameStem
25 
26  acc = ComponentAccumulator()
27 
28  # the derivation can also be run on pool files e.g. MC - need to switch off many decoders etc..
29  # Note: static content not allowed when running on pool
30  isNotPool = flags.Input.Format is not Format.POOL
31 
32  fillSuperCells=False
33 
34  # has the L1Calo simulation been configured by job flags
35  isL1CaloSim = flags.Trigger.L1.doeFex and flags.Trigger.L1.dojFex and flags.Trigger.L1.dogFex
36 
37  # decode the legacy L1Calo information - required because flags.Trigger.doLVL1 is False
38  if isNotPool:
39  from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
40  acc.merge(LVL1CaloRun2ReadBSCfg(flags))
41 
42  # set up thinning tools
43  thinningTools = []
44 
45  # set up legacy trigger tower thinning for L1CALO1
46  if 'L1CALO1' in deriv and isNotPool:
47  from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerThinningCfg
48  LegacyTowerThinningTool = acc.getPrimaryAndMerge(LegacyTriggerTowerThinningCfg(
49  flags,
50  name = "L1CALOCaloThinningTool",
51  StreamName = streamName,
52  TriggerTowerLocation = "xAODTriggerTowers",
53  MinCaloCellET = 0.8,
54  MinADC = 36,
55  UseRandom = True,
56  MinRandom = 0.01 ) )
57  thinningTools.append(LegacyTowerThinningTool)
58 
59  # set up decorators
60  # Legacy Trigger Tower decorator
61  if isNotPool:
62  from TrigT1CaloCalibTools.L1CaloCalibToolsConfig import LegacyTriggerTowerDecoratorCfg
63  acc.merge(LegacyTriggerTowerDecoratorCfg(flags, name = 'L1CaloTriggerTowerDecorator'))
64 
65  # setup skimming tool example (AOD data only)
66  skimmingTools = []
67  if not isNotPool and not flags.Input.isMC:
68  # example trigger skimming tool as with JETM10.py
69  skimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(name = "L1CALOSkimmingTool1",
70  TriggerListOR = ["HLT_noalg_L1XE.*"] )
71  acc.addPublicTool(skimmingTool, primary = True)
72  skimmingTools.append(skimmingTool)
73 
74  #
75  augmentationTools = []
76 
77  # Set up the derivation kernel
78  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
79  acc.addEventAlgo(DerivationKernel(
80  name = "DFL1CALO_KERN",
81  AugmentationTools = augmentationTools,
82  ThinningTools = thinningTools,
83  SkimmingTools = skimmingTools,
84  RunSkimmingFirst = not isNotPool,
85  doChronoStat=(flags.Concurrency.NumThreads <= 1),
86  OutputLevel = INFO))
87 
88  # Phase 1 setup
89  # emulate/decorate the input towers
90  # first need to decode LATOME readout
91  if isNotPool:
92  from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg
93  acc.merge(ReadSCellFromByteStreamCfg(flags))
94 
95  # Emulate jFEX input towers
96  emulatedDataTowersKey = "L1_jFexEmulatedTowers"
97  if flags.Trigger.L1.dojFex and isNotPool:
98  from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
99  acc.merge(jFexEmulatedTowersCfg(flags, writeKey=emulatedDataTowersKey))
100 
101  # Decorate any jFEX data towers
102  extraJfexInfo = False # for decorating with SCell inputs to the towers
103  if flags.Trigger.L1.dojFex and isNotPool:
104  from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
105  acc.merge(L1CalojFEXDecoratorCfg(flags, ExtraInfo=extraJfexInfo))
106 
107  # Decorate the emulated jFEX towers
108  if flags.Trigger.L1.dojFex and isNotPool:
109  from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
110  acc.merge(L1CalojFEXDecoratorCfg(flags,name='jFexTower2SCellEmulatedDecorator',jTowersReadKey=emulatedDataTowersKey,ExtraInfo=extraJfexInfo))
111 
112  # determine if enough samples to build SC_ET
113  nsamples=-1
114  if not flags.Input.isMC:
115  from LArConditionsCommon.LArRunFormat import getLArDTInfoForRun
116  runinfo = getLArDTInfoForRun(flags.Input.RunNumbers[0], connstring="COOLONL_LAR/CONDBR2")
117  #
118  for i in range(0,len(runinfo.streamTypes())):
119  log.info("LAr DT runinfo index: %s type: %s nsamples: %s", i, runinfo.streamTypes()[i], runinfo.streamLengths()[i])
120  if "ADC" in runinfo.streamTypes()[i]:
121  nsamples=runinfo.streamLengths()[i]
122 
123  # Create SC_ET if sufficient samples in data or it is MC
124  if nsamples==6:
125  # first built the Supercells from the ADC
126  from LArConfiguration.LArElecCalibDBConfig import LArElecCalibDBSCCfg
127  acc.merge(LArElecCalibDBSCCfg(flags, condObjs=["DAC2uA", "HVScaleCorr", "MphysOverMcal", "OFC", "Pedestal", "Ramp", "uA2MeV"]))
128  larLATOMEBuilderAlg=CompFactory.LArLATOMEBuilderAlg("LArLATOMEBuilderAlg2")
129  # for standard runs with baseline corrections
130  baselineCorr = True # need to find a run with no baseline corrections and the correct settings to see what to expect
131  larLATOMEBuilderAlg.isADCBas = True if baselineCorr else False
132  larLATOMEBuilderAlg.LArDigitKey = "SC_ADC_BAS" if baselineCorr else 'SC'
133  # output
134  larLATOMEBuilderAlg.LArRawSCKey = "SC_RECO2"
135  acc.addEventAlgo(larLATOMEBuilderAlg)
136 
137  # create SCell_ET without timing applied
138  from LArCellRec.LArRAWtoSuperCellConfig import LArRAWtoSuperCellCfg
139  acc.merge(LArRAWtoSuperCellCfg(flags, name="LArRAWRecotoSuperCell2", mask=True, doReco=True, SCIn="SC_RECO2", SCellContainerOut="SCell_ET") )
140  # build jFEX towers from SC_ET
141  acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell_ET", writeKey="L1_jFexEmulatedNoIdTowers",
142  OfflineCaloCell="AllCalo"))
143  elif flags.Input.isMC:
144  # the TriggerTowerDecoration for tile not useable for MC, but we can decorate for LAr
145  # if we do not run the simulation on MC the SCells are written so nothing to do here
146  if isL1CaloSim:
147  # read SCell (default is without timing applied)
148  # Need geometry and conditions for the SCell converter from POOL
149  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
150  acc.merge(LArGMCfg(flags))
151  # build jFEX towers with extra decoration
152  from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
153  acc.merge(jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMakerNoId", SCin="SCell", writeKey="L1_jFexEmulatedNoIdTowers",
154  OfflineCaloCell="AllCalo"))
155 
156  # Emulate eFEX input towers
157  if flags.Trigger.L1.doeFex and isNotPool:
158  from L1CaloFEXAlgos.FexEmulatedTowersConfig import eFexEmulatedTowersCfg
159  eFexEmulatedTool = eFexEmulatedTowersCfg(flags,'L1_eFexEmulatedTowers')
160  acc.merge(eFexEmulatedTool)
161 
162 
163  # Re-simulate from LATOME (for both data and POOL files with SCells)
164  from L1CaloFEXSim.L1CaloFEXSimCfg import L1CaloFEXSimCfg
165  if isNotPool:
166  acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
167  elif isL1CaloSim:
168  SCellType = flags.Trigger.L1.L1CaloSuperCellContainerName
169  if SCellType in flags.Input.Collections:
170  acc.merge(L1CaloFEXSimCfg(flags, simulateAltTau=True))
171  # Need to deal with database for MC productions where L1Calo DB was not in global tag
172  if flags.Input.isMC:
173  from Campaigns.Utils import Campaign
174  log.info("MC Campaign",flags.Input.MCCampaign)
175  if flags.Input.MCCampaign != Campaign.MC23e:
176  if flags.Trigger.L1.doeFex:
177  from IOVDbSvc.IOVDbSvcConfig import addOverride
178  acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts', 'EfexNoiseCuts-RUN3-MCDEFAULT-TEST-00'))
179  acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib', 'EfexEnergyCalib-RUN3-MCDEFAULT-TEST-00'))
180  if flags.Trigger.L1.dojFex:
181  from IOVDbSvc.IOVDbSvcConfig import addOverride
182  acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexSystemSettings', 'JfexSystemSettings-RUN3-MCDEFAULT-TEST'))
183  acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexModuleSettings', 'JfexModuleSettings-RUN3-MCDEFAULT-TEST'))
184  acc.merge(addOverride(flags, '/TRIGGER/L1Calo/V1/Calibration/JfexNoiseCuts', 'JfexNoiseCuts-RUN3-MCDEFAULT-TEST'))
185 
186  # decorate the eFEX TOBs
187  if flags.Trigger.L1.doeFex and isNotPool:
188  # Temporary fix to ensure the L1 TOBs are decoded by the Trigger
189  from TrigDecisionTool.TrigDecisionToolConfig import getRun3NavigationContainerFromInput
190  ExtraInputs = [('xAOD::TrigCompositeContainer', 'StoreGateSvc+'+getRun3NavigationContainerFromInput(flags))]
191  acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecorator',
192  eFexEMRoIContainer = 'L1_eEMRoI',
193  eFexTauRoIContainer = 'L1_eTauRoI',
194  ExtraInputs=ExtraInputs) )
195  acc.addEventAlgo( CompFactory.LVL1.eFexTOBDecorator('eFexTOBDecoratorSim',
196  eFexEMRoIContainer = 'L1_eEMRoISim',
197  eFexTauRoIContainer = 'L1_eTauRoIAltSim',
198  ExtraInputs=[]) )
199 
200  if fillSuperCells:
201  acc.addEventAlgo( CompFactory.LVL1.eFexTOBSuperCellDecorator('eFexTOBSuperCellDecoratorSim',
202  eFexEMRoIContainer = 'L1_eEMRoISim',
203  eFexTauRoIContainer = 'L1_eTauxRoISim') )
204 
205  # set up the slimming helper
206  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
207 
208  L1CaloSlimmingHelper = SlimmingHelper("L1CaloSlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
209 
210  AllVariables = []
211  StaticContent = []
212  SmartCollections = []
213  ExtraVariables = []
214 
215  L1CaloSlimmingHelper.IncludeTriggerNavigation = True # Trigger info is actually stored only when running on data...
216  L1CaloSlimmingHelper.IncludeAdditionalTriggerContent = False # precludes EGamma/Jet TriggerContent
217 
218  L1CaloSlimmingHelper.IncludeEGammaTriggerContent = True
219  L1CaloSlimmingHelper.IncludeJetTriggerContent = True
220  L1CaloSlimmingHelper.IncludeBJetTriggerContent = True
221  L1CaloSlimmingHelper.IncludeTauTriggerContent = True # does not select any Run3 HLT collections - added below
222  IncludeEtMissTriggerContent = True # very useful to have MET trigger info
223 
224  # Container selection based on share/L1CALO versions
225  # Note: if the container is in the on-the-fly list (ContainersOnTheFly.py) then we do not have to add it to the dictionary
226  # We can do smart slimming if the container is in the smart list (FullListOfSmartContainers.py)
227 
228  # if we do not run the simulation on MC, write SCells
229  if flags.Input.isMC and not isL1CaloSim:
230  L1CaloSlimmingHelper.AppendToDictionary.update({"SCell":"CaloCellContainer"})
231  AllVariables += ["SCell"]
232 
233  # some gymnastics for HLT from RAWD
234  if isNotPool and L1CaloSlimmingHelper.IncludeEGammaTriggerContent:
235  # replicate adding EGammaTriggerContent
236  # switch the eGamma Trigger off for RAW data - smart slimming not required
237  L1CaloSlimmingHelper.IncludeEGammaTriggerContent = False
238  ElToKeep = ['ptcone20', 'ptvarcone20', 'ptcone30', 'ptvarcone30', 'trk_d0','cl_eta2','cl_phi2', 'deltaEta1PearDistortion']
239  ElVars = '.'.join(ElToKeep)
240  StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons"]
241  StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_ElectronsAux."+ElVars]
242  StaticContent += ["xAOD::ElectronContainer#HLT_egamma_Electrons_GSF"]
243  StaticContent += ["xAOD::ElectronAuxContainer#HLT_egamma_Electrons_GSFAux."+ElVars]
244  # non-slimmed
245  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_CaloEMClusters_Electron":"xAOD::CaloClusterContainer",
246  "HLT_CaloEMClusters_ElectronAux":"xAOD::CaloClusterAuxContainer"})
247  AllVariables += ["HLT_CaloEMClusters_Electron"]
248  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_IDTrig":"xAOD::TrackParticleContainer",
249  "HLT_IDTrack_Electron_IDTrigAux":"xAOD::TrackParticleAuxContainer"})
250  AllVariables += ["HLT_IDTrack_Electron_IDTrig"]
251  L1CaloSlimmingHelper.AppendToDictionary.update({"HLT_IDTrack_Electron_GSF":"xAOD::TrackParticleContainer",
252  "HLT_IDTrack_Electron_GSFAux":"xAOD::TrackParticleAuxContainer"})
253  AllVariables += ["HLT_IDTrack_Electron_GSF"]
254 
255  if isNotPool and L1CaloSlimmingHelper.IncludeJetTriggerContent:
256  # replicate adding JetTriggerContent - easier because this is genuine smart slimming
257  # Update the dictionary with the containers that will be smart slimmed
258  L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_AntiKt4EMTopoJets_nojcalib":"xAOD::JetContainer",
259  "HLT_AntiKt4EMTopoJets_nojcalibAux":"xAOD::JetAuxContainer",
260  "HLT_AntiKt4EMTopoJets_nojcalib_ftf":"xAOD::JetContainer",
261  "HLT_AntiKt4EMTopoJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
262  "HLT_AntiKt4EMTopoJets_subjesIS":"xAOD::JetContainer",
263  "HLT_AntiKt4EMTopoJets_subjesISAux":"xAOD::ShallowAuxContainer",
264  "HLT_AntiKt4EMPFlowJets_nojcalib_ftf":"xAOD::JetContainer",
265  "HLT_AntiKt4EMPFlowJets_nojcalib_ftfAux":"xAOD::JetAuxContainer",
266  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf":"xAOD::JetContainer",
267  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
268  "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf":"xAOD::JetContainer",
269  "HLT_AntiKt4EMPFlowJets_subjesgscIS_ftfAux":"xAOD::ShallowAuxContainer",
270  "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf":"xAOD::JetContainer",
271  "HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftfAux":"xAOD::JetAuxContainer",
272  "HLT_IDVertex_FS":"xAOD::VertexContainer",
273  "HLT_IDVertex_FSAux":"xAOD::VertexAuxContainer",
274  "HLT_TCEventInfo_jet":"xAOD::TrigCompositeContainer",
275  "HLT_TCEventInfo_jetAux":"xAOD::TrigCompositeAuxContainer",
276  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging": "xAOD::BTaggingContainer",
277  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTaggingAux": "xAOD::BTaggingAuxContainer",
278  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets": "xAOD::JetContainer",
279  "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJetsAux": "xAOD::JetAuxContainer"})
280 
281  AllVariables += ["HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_BTagging", "HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf_bJets"]
282 
283  if L1CaloSlimmingHelper.IncludeTauTriggerContent:
284  L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_TrigTauRecMerged_MVA":"xAOD::TauJetContainer",
285  "HLT_TrigTauRecMerged_MVAAux":"xAOD::TauJetAuxContainer",
286  "HLT_TrigTauRecMerged_LLP":"xAOD::TauJetContainer",
287  "HLT_TrigTauRecMerged_LLPAux":"xAOD::TauJetAuxContainer",
288  "HLT_TrigTauRecMerged_LRT":"xAOD::TauJetContainer",
289  "HLT_TrigTauRecMerged_LRTAux":"xAOD::TauJetAuxContainer",
290  "HLT_TrigTauRecMerged_CaloMVAOnly":"xAOD::TauJetContainer",
291  "HLT_TrigTauRecMerged_CaloMVAOnlyAux":"xAOD::TauJetAuxContainer"})
292  AllVariables += ["HLT_TrigTauRecMerged_MVA", "HLT_TrigTauRecMerged_LLP", "HLT_TrigTauRecMerged_LRT", "HLT_TrigTauRecMerged_CaloMVAOnly"]
293 
294  if IncludeEtMissTriggerContent:
295  L1CaloSlimmingHelper.AppendToDictionary.update ({"HLT_MET_tcpufit":"xAOD::TrigMissingETContainer",
296  "HLT_MET_tcpufitAux":"xAOD::TrigMissingETAuxContainer",
297  "HLT_MET_cell":"xAOD::TrigMissingETContainer",
298  "HLT_MET_cellAux":"xAOD::TrigMissingETAuxContainer", # not present
299  "HLT_MET_trkmht":"xAOD::TrigMissingETContainer",
300  "HLT_MET_trkmhtAux":"xAOD::TrigMissingETAuxContainer",
301  "HLT_MET_cvfpufit":"xAOD::TrigMissingETContainer",
302  "HLT_MET_cvfpufitAux":"xAOD::TrigMissingETAuxContainer",
303  "HLT_MET_pfopufit":"xAOD::TrigMissingETContainer",
304  "HLT_MET_pfopufitAux":"xAOD::TrigMissingETAuxContainer",
305  "HLT_MET_mhtpufit_em":"xAOD::TrigMissingETContainer",
306  "HLT_MET_mhtpufit_emAux":"xAOD::TrigMissingETAuxContainer",
307  "HLT_MET_mhtpufit_pf":"xAOD::TrigMissingETContainer",
308  "HLT_MET_mhtpufit_pfAux":"xAOD::TrigMissingETAuxContainer",
309  "HLT_MET_pfsum":"xAOD::TrigMissingETContainer",
310  "HLT_MET_pfsumAux":"xAOD::TrigMissingETAuxContainer",
311  "HLT_MET_pfsum_vssk":"xAOD::TrigMissingETContainer",
312  "HLT_MET_pfsum_vsskAux":"xAOD::TrigMissingETAuxContainer",
313  "HLT_MET_pfsum_cssk":"xAOD::TrigMissingETContainer",
314  "HLT_MET_pfsum_csskAux":"xAOD::TrigMissingETAuxContainer",
315  "HLT_MET_nn":"xAOD::TrigMissingETContainer",
316  "HLT_MET_nnAux":"xAOD::TrigMissingETAuxContainer"})
317 
318  AllVariables += ["HLT_MET_tcpufit","HLT_MET_cell","HLT_MET_trkmht","HLT_MET_cvfpufit","HLT_MET_pfopufit","HLT_MET_mhtpufit_em","HLT_MET_mhtpufit_pf","HLT_MET_pfsum","HLT_MET_pfsum_vssk","HLT_MET_pfsum_cssk","HLT_MET_nn"]
319 
320  # Generic event info
321  L1CaloSlimmingHelper.AppendToDictionary.update({"EventInfo":"xAOD::EventInfo","EventInfoAux":"xAOD::EventAuxInfo"})
322 
323  # We keep all of EventInfo rather than smart slim
324  AllVariables += ["EventInfo","Kt4EMPFlowEventShape"]
325 
326  # Physics Objects
327  # Those for which there is smart slimming but not in the on the fly list
328  L1CaloSlimmingHelper.AppendToDictionary.update (
329  {"Muons":"xAOD::MuonContainer", "MuonsAux":"xAOD::MuonAuxContainer",
330  "Photons":"xAOD::PhotonContainer", "PhotonsAux":"xAOD::PhotonAuxContainer",
331  "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"}
332  )
333  AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"]
334  AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
335  # TauJets require smart slimming in order not to cause issues
336  SmartCollections += ["TauJets"]
337 
338  # Use unslimmed electrons in order to use Likelihood qualities
339  L1CaloSlimmingHelper.AppendToDictionary.update (
340  {"Electrons":"xAOD::ElectronContainer", "ElectronsAux":"xAOD::ElectronAuxContainer"} )
341  AllVariables += ["Electrons"]
342 
343  L1CaloSlimmingHelper.AppendToDictionary.update (
344  {"ForwardElectrons":"xAOD::ElectronContainer", "ForwardElectronsAux":"xAOD::ElectronAuxContainer"} )
345  AllVariables += ["ForwardElectrons"]
346 
347  # Missing ET - unslimmed container
348  AllVariables += ["METAssoc_AntiKt4EMPFlow"]
349 
350  # using MET slimming as per share/L1CALOX.py
351  if isNotPool:
352  StaticContent += ["xAOD::MissingETContainer#MET_Reference_AntiKt4EMPFlow"]
353  StaticContent += ["xAOD::MissingETAuxContainer#MET_Reference_AntiKt4EMPFlowAux.-ConstitObjectLinks.-ConstitObjectWeights"]
354 
355  StaticContent += ["xAOD::MissingETContainer#MET_Core_AntiKt4EMPFlow"]
356  StaticContent += ["xAOD::MissingETAuxContainer#MET_Core_AntiKt4EMPFlowAux.name.mpx.mpy.sumet.source"]
357 
358  StaticContent += ["xAOD::MissingETContainer#MET_Track"]
359  StaticContent += ["xAOD::MissingETAuxContainer#MET_TrackAux.name.mpx.mpy"]
360  else:
361  AllVariables += ["MET_Reference_AntiKt4EMPFlow"]
362  AllVariables += ["MET_Core_AntiKt4EMPFlow"]
363  L1CaloSlimmingHelper.AppendToDictionary.update (
364  {"MET_Track":"xAOD::MissingETContainer", "MET_TrackAux":"xAOD::MissingETAuxContainer"} )
365  AllVariables += ["MET_Track"]
366 
367  # Primary vertices
368  if isNotPool:
369  StaticContent += ["xAOD::VertexContainer#PrimaryVertices"]
370  StaticContent += ["xAOD::VertexAuxContainer#PrimaryVerticesAux.-vxTrackAtVertex.-MvfFitInfo.-isInitialized.-VTAV"]
371  else:
372  L1CaloSlimmingHelper.AppendToDictionary.update(
373  {"PrimaryVertices":"xAOD::VertexContainer","PrimaryVerticesAux":"xAOD::VertexAuxContainer"}
374  )
375  AllVariables += ["PrimaryVertices"]
376 
377 
378  # Egamma CP additions
379  L1CaloSlimmingHelper.AppendToDictionary.update (
380  {"egammaTopoSeededClusters":"xAOD::CaloClusterContainer","egammaTopoSeededClustersAux":"xAOD::CaloClusterAuxContainer"}
381  )
382  AllVariables += ["egammaTopoSeededClusters"]
383 
384  # GSF vertices and tracks
385  if isNotPool:
386  StaticContent += ["xAOD::VertexContainer#GSFConversionVertices"]
387  # we have to disable vxTrackAtVertex branch since it is not xAOD compatible
388  StaticContent += ["xAOD::VertexAuxContainer#GSFConversionVerticesAux.-vxTrackAtVertex"]
389  #
390  trackParticleAuxExclusions="-caloExtension.-cellAssociation.-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
391  StaticContent += ["xAOD::TrackParticleContainer#GSFTrackParticles"]
392  StaticContent += ["xAOD::TrackParticleAuxContainer#GSFTrackParticlesAux."+trackParticleAuxExclusions]
393  else:
394  L1CaloSlimmingHelper.AppendToDictionary.update (
395  {"GSFConversionVertices":"xAOD::VertexContainer",
396  "GSFConversionVerticesAux":"xAOD::VertexAuxContainer",
397  "GSFTrackParticles":"xAOD::TrackParticleContainer",
398  "GSFTrackParticlesAux":"xAOD::TrackParticleAuxContainer"}
399  )
400  AllVariables += ["GSFConversionVertices","GSFTrackParticles"]
401 
402  L1CaloSlimmingHelper.AppendToDictionary.update (
403  {"egammaClusters":"xAOD::CaloClusterContainer",
404  "egammaClustersAux":"xAOD::CaloClusterAuxContainer",
405  "TauPi0Clusters":"xAOD::CaloClusterContainer",
406  "TauPi0ClustersAux":"xAOD::CaloClusterAuxContainer",
407  "CaloCalTopoClusters":"xAOD::CaloClusterContainer",
408  "CaloCalTopoClustersAux":"xAOD::CaloClusterAuxContainer",
409  "MuonSegments":"xAOD::MuonSegmentContainer",
410  "MuonSegmentsAux":"xAOD::MuonSegmentAuxContainer"}
411  )
412  AllVariables += ["egammaClusters","TauPi0Clusters","CaloCalTopoClusters","MuonSegments"]
413 
414  # Add b-tagging information directly using ExtraVariables - as done for PHYSLITE
415  ExtraVariables += [
416  'BTagging_AntiKt4EMPFlow.DL1dv01_pu.DL1dv01_pc.DL1dv01_pb.GN2v00_pu.GN2v00_pc.GN2v00_pb'
417  ]
418 
419  # L1Calo information
420  # Legacy RoI Containers
421  L1CaloSlimmingHelper.AppendToDictionary.update (
422  {"LVL1EmTauRoIs":"xAOD::EmTauRoIContainer",
423  "LVL1EmTauRoIsAux":"xAOD::EmTauRoIAuxContainer",
424  "LVL1EnergySumRoI":"xAOD::EnergySumRoI",
425  "LVL1EnergySumRoIAux":"xAOD::EnergySumRoIAuxInfo",
426  "LVL1JetEtRoI":"xAOD::JetEtRoI",
427  "LVL1JetEtRoIAux":"xAOD::JetEtRoIAuxInfo",
428  "LVL1JetRoIs":"xAOD::JetRoIContainer",
429  "LVL1JetRoIsAux":"xAOD::JetRoIAuxContainer",
430  "LVL1MuonRoIs":"xAOD::MuonRoIContainer",
431  "LVL1MuonRoIsAux":"xAOD::MuonRoIAuxContainer"}
432  )
433  AllVariables += [ "LVL1EmTauRoIs","LVL1EnergySumRoI","LVL1JetEtRoI","LVL1JetRoIs","LVL1MuonRoIs"]
434 
435  # Legacy sub-systems
436  L1CaloSlimmingHelper.AppendToDictionary.update (
437  {"JEMTobRoIsRoIB":"xAOD::JEMTobRoIContainer",
438  "JEMTobRoIsRoIBAux":"xAOD::JEMTobRoIAuxContainer",
439  "JEMTobRoIs":"xAOD::JEMTobRoIContainer",
440  "JEMTobRoIsAux":"xAOD::JEMTobRoIAuxContainer",
441  "JEMEtSums":"xAOD::JEMEtSumsContainer",
442  "JEMEtSumsAux":"xAOD::JEMEtSumsAuxContainer"}
443  )
444  AllVariables += ["JEMTobRoIsRoIB",
445  "JEMTobRoIs",
446  "JEMEtSums"]
447 
448  L1CaloSlimmingHelper.AppendToDictionary.update (
449  {"CMXCPHits":"xAOD::CMXCPHitsContainer",
450  "CMXCPHitsAux":"xAOD::CMXCPHitsAuxContainer",
451  "CMXCPTobs":"xAOD::CMXCPTobContainer",
452  "CMXCPTobsAux":"xAOD::CMXCPTobAuxContainer",
453  "CMXEtSums":"xAOD::CMXEtSumsContainer",
454  "CMXEtSumsAux":"xAOD::CMXEtSumsAuxContainer",
455  "CMXJetHits":"xAOD::CMXJetHitsContainer",
456  "CMXJetHitsAux":"xAOD::CMXJetHitsAuxContainer",
457  "CMXJetTobs":"xAOD::CMXJetTobContainer",
458  "CMXJetTobsAux":"xAOD::CMXJetTobAuxContainer",
459  "CMXRoIs":"xAOD::CMXRoIContainer",
460  "CMXRoIsAux":"xAOD::CMXRoIAuxContainer"}
461  )
462  AllVariables += ["CMXCPHits",
463  "CMXCPTobs",
464  "CMXEtSums",
465  "CMXJetHits",
466  "CMXJetTobs",
467  "CMXRoIs"]
468 
469 
470  L1CaloSlimmingHelper.AppendToDictionary.update (
471  {"CPMTobRoIs":"xAOD::CPMTobRoIContainer",
472  "CPMTobRoIsAux":"xAOD::CPMTobRoIAuxContainer",
473  "CPMTobRoIsRoIB":"xAOD::CPMTobRoIContainer",
474  "CPMTobRoIsRoIBAux":"xAOD::CPMTobRoIAuxContainer",
475  "CPMTowers":"xAOD::CPMTowerContainer",
476  "CPMTowersAux":"xAOD::CPMTowerAuxContainer",
477  "CPMTowersOverlap":"xAOD::CPMTowerContainer",
478  "CPMTowersOverlapAux":"xAOD::CPMTowerAuxContainer",
479  "RODHeaders":"xAOD::RODHeaderContainer",
480  "RODHeadersAux":"xAOD::RODHeaderAuxContainer",
481  "xAODTriggerTowers":"xAOD::TriggerTowerContainer",
482  "xAODTriggerTowersAux":"xAOD::TriggerTowerAuxContainer",
483  "JetElements":"xAOD::JetElementContainer",
484  "JetElementsAux":"xAOD::JetElementAuxContainer",
485  "JetElementsOverlap":"xAOD::JetElementContainer",
486  "JetElementsOverlapAux":"xAOD::JetElementAuxContainer",
487  "L1TopoRawData":"xAOD::L1TopoRawDataContainer",
488  "L1TopoRawDataAux":"xAOD::L1TopoRawDataAuxContainer",
489  "L1_Phase1L1TopoRAWData":"xAOD::L1TopoRawDataContainer",
490  "L1_Phase1L1TopoRAWDataAux":"xAOD::L1TopoRawDataAuxContainer"}
491  )
492  AllVariables += ["CPMTobRoIs",
493  "CPMTobRoIsRoIB",
494  "CPMTowers",
495  "CPMTowersOverlap",
496  "RODHeaders",
497  "xAODTriggerTowers",
498  "JetElements",
499  "JetElementsOverlap",
500  "L1TopoRawData",
501  "L1_Phase1L1TopoRAWData"]
502 
503 
504  # Phase 1
505  # TOBs from HLT
506  L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables)
507  L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables)
508  L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables)
509 
510  # re-simulated
511  L1CaloSlimmingHelper,AllVariables = addEfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
512  L1CaloSlimmingHelper,AllVariables = addJfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
513  L1CaloSlimmingHelper,AllVariables = addGfexTOBs(L1CaloSlimmingHelper, AllVariables, "Sim")
514 
515 
516  # FEX input data towers
517  L1CaloSlimmingHelper.AppendToDictionary.update (
518  {"L1_eFexDataTowers":"xAOD::eFexTowerContainer",
519  "L1_eFexDataTowersAux":"xAOD::eFexTowerAuxContainer",
520  "L1_jFexDataTowers":"xAOD::jFexTowerContainer",
521  "L1_jFexDataTowersAux":"xAOD::jFexTowerAuxContainer",
522  "L1_gFexDataTowers":"xAOD::gFexTowerContainer",
523  "L1_gFexDataTowersAux":"xAOD::gFexTowerAuxContainer",
524  "L1_gFexDataTowers50":"xAOD::gFexTowerContainer",
525  "L1_gFexDataTowers50Aux":"xAOD::gFexTowerAuxContainer"}
526  )
527  AllVariables += ["L1_eFexDataTowers","L1_jFexDataTowers","L1_gFexDataTowers","L1_gFexDataTowers50"]
528 
529  # Emulated eFEX input tower data from LATOME
530  L1CaloSlimmingHelper.AppendToDictionary.update (
531  {"L1_eFexEmulatedTowers":"xAOD::eFexTowerContainer",
532  "L1_eFexEmulatedTowersAux":"xAOD::eFexTowerAuxContainer"}
533  )
534  AllVariables += ["L1_eFexEmulatedTowers"]
535 
536  # Emulated jFEX input tower data from LATOME
537  L1CaloSlimmingHelper.AppendToDictionary.update (
538  {"L1_jFexEmulatedTowers":"xAOD::jFexTowerContainer",
539  "L1_jFexEmulatedTowersAux":"xAOD::jFexTowerAuxContainer"}
540  )
541  AllVariables += ["L1_jFexEmulatedTowers"]
542 
543  # jTowers built from SC_ET aka "NoId"
544  L1CaloSlimmingHelper.AppendToDictionary.update (
545  {"L1_jFexEmulatedNoIdTowers":"xAOD::jFexTowerContainer",
546  "L1_jFexEmulatedNoIdTowersAux":"xAOD::jFexTowerAuxContainer"}
547  )
548  AllVariables += ["L1_jFexEmulatedNoIdTowers"]
549 
550  # For MC, add emulated gFEX input towers
551  if flags.Input.isMC:
552  L1CaloSlimmingHelper.AppendToDictionary.update (
553  {"L1_gFexEmulatedTowers":"xAOD::gFexTowerContainer",
554  "L1_gFexEmulatedTowersAux":"xAOD::gFexTowerAuxContainer"}
555  )
556  AllVariables += [ "L1_gFexEmulatedTowers" ]
557 
558  # In case MC has no jets, b-tagging or MET, schedule reconstruction
559  if flags.Input.isMC:
560  from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow
561  from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger
562  jets_to_schedule = [jet for jet in (AntiKt4EMPFlow, AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger)
563  if jet.fullname() not in flags.Input.Collections]
564 
565  if jets_to_schedule:
566  from JetRecConfig.JetRecConfig import JetRecCfg
567  for container in jets_to_schedule:
568  acc.merge(JetRecCfg(flags, container))
569 
570  jet_collections = set([_.fullname().replace('Jets','') for _ in jets_to_schedule])
571  btag_jet_collections = set(['AntiKt4EMPFlow'])
572  met_jet_collections = set(['AntiKt4EMPFlow'])
573 
574  if jet_collections & btag_jet_collections:
575  log.info('Scheduling b-tagging of rebuilt jets')
576  from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
577  acc.merge(BeamSpotCondAlgCfg(flags))
578  from BTagging.BTagConfig import BTagRecoSplitCfg
579  #
580  for container in jet_collections & btag_jet_collections:
581  acc.merge(BTagRecoSplitCfg(flags, [container]))
582 
583  # MET
584  if jet_collections & met_jet_collections:
585  log.info('Scheduling rebuild of standard MET')
586  from METReconstruction.METAssociatorCfg import METAssociatorCfg
587  from METUtilities.METMakerConfig import getMETMakerAlg
588  for container in jet_collections & met_jet_collections:
589  if container == 'AntiKt4EMPFlow':
590  # build links between FlowElements and electrons, photons, muons and taus
591  log.info('Scheduling FlowElement linking')
592  from eflowRec.PFCfg import PFGlobalFlowElementLinkingCfg
593  acc.merge(PFGlobalFlowElementLinkingCfg(flags))
594  acc.merge(METAssociatorCfg(flags, container))
595  acc.addEventAlgo(getMETMakerAlg(container))
596  from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
597  acc.merge(CaloNoiseCondAlgCfg(flags)) # Prereq for Calo MET
598  from METReconstruction.METCalo_Cfg import METCalo_Cfg
599  acc.merge(METCalo_Cfg(flags))
600 
601 
602  # Truth collections
603  if flags.Input.isMC:
604  from DerivationFrameworkMCTruth.MCTruthCommonConfig import PreJetMCTruthAugmentationsCfg
605  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddTruthCollectionNavigationDecorationsCfg,AddBornLeptonCollectionCfg
606  from DerivationFrameworkMCTruth.MCTruthCommonConfig import PostJetMCTruthAugmentationsCfg
607 
608  acc.merge(PreJetMCTruthAugmentationsCfg(flags,decorationDressing = 'dressedPhoton'))
609  #
610  from JetRecConfig.StandardSmallRJets import AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged
611  from JetRecConfig.StandardLargeRJets import AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop
612  from JetRecConfig.JetRecConfig import JetRecCfg
613  jetList = [AntiKt4Truth,AntiKt4TruthWZ,AntiKt4TruthDressedWZ,AntiKtVRTruthCharged,
614  AntiKt10TruthTrimmed,AntiKt10TruthSoftDrop]
615 
616  for jd in jetList:
617  if jd.fullname() not in flags.Input.Collections:
618  acc.merge(JetRecCfg(flags,jd))
619 
620  if ( "xAOD::MissingETContainer#MET_Truth") not in flags.Input.TypedCollections:
621  from METReconstruction.METTruth_Cfg import METTruth_Cfg
622  acc.merge(METTruth_Cfg(flags))
623 
624  acc.merge(PostJetMCTruthAugmentationsCfg(flags, decorationDressing = 'dressedPhoton'))
625  acc.addEventAlgo(CompFactory.DerivationFramework.LockDecorations(name ="L1CALOTruthContentsLockDecoration", Decorations = ['TruthParticles.dressedPhoton']))
626  acc.merge(AddTruthCollectionNavigationDecorationsCfg(flags, ["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos"]))
627  # Special collection for Born leptons
628  acc.merge(AddBornLeptonCollectionCfg(flags))
629 
630  AllVariables += [
631  "TruthElectrons",
632  "TruthMuons",
633  "TruthPhotons",
634  "TruthTaus",
635  "TruthNeutrinos",
636  "BornLeptons",
637  "MET_Truth",
638  "AntiKt4TruthJets",
639  "AntiKt4TruthWZJets",
640  "AntiKt10TruthTrimmedPtFrac5SmallR20Jets",
641  "AntiKt10TruthSoftDropBeta100Zcut10Jets"
642  ]
643 
644  L1CaloSlimmingHelper.AllVariables = AllVariables
645  L1CaloSlimmingHelper.StaticContent = StaticContent
646  L1CaloSlimmingHelper.SmartCollections = SmartCollections
647  L1CaloSlimmingHelper.ExtraVariables = ExtraVariables
648 
649  # Output stream
650  L1CaloItemList = L1CaloSlimmingHelper.GetItemList()
651  acc.merge(OutputStreamCfg(flags, streamNameStem, ItemList=L1CaloItemList, AcceptAlgs=["DFL1CALO_KERN"]))
652  acc.merge(SetupMetaDataForStreamCfg(flags, streamNameStem, AcceptAlgs=["DFL1CALO_KERN"], createMetadata=[MetadataCategory.CutFlowMetaData,MetadataCategory.TriggerMenuMetaData]))
653 
654  return acc
655 
656 
657 def addEfexTOBs(slimminghelper, allVariables, postFix = ""):
658  """
659  add the list of eFEX containers for given postFix string
660  """
661  slimminghelper.AppendToDictionary.update (
662  {"L1_eEMRoI"+postFix : "xAOD::eFexEMRoIContainer",
663  "L1_eEMRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
664  "L1_eTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
665  "L1_eTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
666  "L1_eTauRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
667  "L1_eTauRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
668  "L1_cTauRoI"+postFix : "xAOD::eFexTauRoIContainer",
669  "L1_cTauRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
670  "L1_eEMxRoI"+postFix : "xAOD::eFexEMRoIContainer",
671  "L1_eEMxRoI"+postFix+"Aux" : "xAOD::eFexEMRoIAuxContainer",
672  "L1_eTauxRoI"+postFix : "xAOD::eFexTauRoIContainer",
673  "L1_eTauxRoI"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer",
674  "L1_eTauxRoIAlt"+postFix : "xAOD::eFexTauRoIContainer",
675  "L1_eTauxRoIAlt"+postFix+"Aux" : "xAOD::eFexTauRoIAuxContainer"} )
676 
677  allVariables += ["L1_eEMRoI" + postFix,
678  "L1_eTauRoI" + postFix,
679  "L1_eTauRoIAlt" + postFix,
680  "L1_cTauRoI" + postFix,
681  "L1_eEMxRoI" + postFix,
682  "L1_eTauxRoI" + postFix,
683  "L1_eTauxRoIAlt" + postFix]
684 
685  return slimminghelper, allVariables
686 
687 
688 def addJfexTOBs(slimminghelper, allVariables, postFix = ""):
689  """
690  add the list of jFEX containers for given postFix string
691  """
692  slimminghelper.AppendToDictionary.update (
693  {"L1_jFexMETRoI"+postFix : "xAOD::jFexMETRoIContainer",
694  "L1_jFexMETRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
695  "L1_jFexTauRoI"+postFix : "xAOD::jFexTauRoIContainer",
696  "L1_jFexTauRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
697  "L1_jFexFwdElRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
698  "L1_jFexFwdElRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
699  "L1_jFexSRJetRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
700  "L1_jFexSRJetRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
701  "L1_jFexLRJetRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
702  "L1_jFexLRJetRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
703  "L1_jFexSumETRoI"+postFix : "xAOD::jFexSumETRoIContainer",
704  "L1_jFexSumETRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer",
705  "L1_jFexMETxRoI"+postFix : "xAOD::jFexMETRoIContainer",
706  "L1_jFexMETxRoI"+postFix+"Aux" : "xAOD::jFexMETRoIAuxContainer",
707  "L1_jFexTauxRoI"+postFix : "xAOD::jFexTauRoIContainer",
708  "L1_jFexTauxRoI"+postFix+"Aux" : "xAOD::jFexTauRoIAuxContainer",
709  "L1_jFexFwdElxRoI"+postFix : "xAOD::jFexFwdElRoIContainer",
710  "L1_jFexFwdElxRoI"+postFix+"Aux" : "xAOD::jFexFwdElRoIAuxContainer",
711  "L1_jFexSRJetxRoI"+postFix : "xAOD::jFexSRJetRoIContainer",
712  "L1_jFexSRJetxRoI"+postFix+"Aux" : "xAOD::jFexSRJetRoIAuxContainer",
713  "L1_jFexLRJetxRoI"+postFix : "xAOD::jFexLRJetRoIContainer",
714  "L1_jFexLRJetxRoI"+postFix+"Aux" : "xAOD::jFexLRJetRoIAuxContainer",
715  "L1_jFexSumETxRoI"+postFix : "xAOD::jFexSumETRoIContainer",
716  "L1_jFexSumETxRoI"+postFix+"Aux" : "xAOD::jFexSumETRoIAuxContainer"})
717 
718  allVariables += ["L1_jFexMETRoI" + postFix,
719  "L1_jFexTauRoI" + postFix,
720  "L1_jFexFwdElRoI" + postFix,
721  "L1_jFexSRJetRoI" + postFix,
722  "L1_jFexLRJetRoI" + postFix,
723  "L1_jFexSumETRoI" + postFix,
724  "L1_jFexMETxRoI" + postFix,
725  "L1_jFexTauxRoI" + postFix,
726  "L1_jFexFwdElxRoI" + postFix,
727  "L1_jFexSRJetxRoI" + postFix,
728  "L1_jFexLRJetxRoI" + postFix,
729  "L1_jFexSumETxRoI" + postFix]
730 
731  return slimminghelper, allVariables
732 
733 
734 def addGfexTOBs(slimminghelper, allVariables, postFix = ""):
735  """
736  add the list of gFEX containers for given postFix string
737  """
738  slimminghelper.AppendToDictionary.update (
739  {"L1_gFexRhoRoI"+postFix : "xAOD::gFexJetRoIContainer",
740  "L1_gFexRhoRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
741  "L1_gFexSRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
742  "L1_gFexSRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
743  "L1_gScalarEJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
744  "L1_gScalarEJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
745  "L1_gFexLRJetRoI"+postFix : "xAOD::gFexJetRoIContainer",
746  "L1_gFexLRJetRoI"+postFix+"Aux" : "xAOD::gFexJetRoIAuxContainer",
747  "L1_gMETComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
748  "L1_gMETComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
749  "L1_gMHTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
750  "L1_gMHTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer",
751  "L1_gMSTComponentsJwoj"+postFix : "xAOD::gFexGlobalRoIContainer",
752  "L1_gMSTComponentsJwoj"+postFix+"Aux" : "xAOD::gFexGlobalRoIAuxContainer"})
753 
754  allVariables += ["L1_gFexRhoRoI" + postFix,
755  "L1_gFexSRJetRoI" + postFix,
756  "L1_gScalarEJwoj" + postFix,
757  "L1_gFexLRJetRoI" + postFix,
758  "L1_gMETComponentsJwoj" + postFix,
759  "L1_gMHTComponentsJwoj" + postFix,
760  "L1_gMSTComponentsJwoj" + postFix]
761 
762  return slimminghelper, allVariables
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=None, MetadataItemList=None, disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=None, HelperTools=None)
Definition: OutputStreamConfig.py:13
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:310
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
METCalo_Cfg
Definition: METCalo_Cfg.py:1
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:342
python.BTagConfig.BTagRecoSplitCfg
def BTagRecoSplitCfg(flags, JetCollection=['AntiKt4EMPFlowJets'])
Definition: BTagConfig.py:114
python.BeamSpotConditionsConfig.BeamSpotCondAlgCfg
def BeamSpotCondAlgCfg(flags, name="BeamSpotCondAlg", **kwargs)
Definition: BeamSpotConditionsConfig.py:7
LArRAWtoSuperCellConfig.LArRAWtoSuperCellCfg
def LArRAWtoSuperCellCfg(flags, name="LArRAWtoSuperCell", mask=True, SCellContainerOut="", SCIn="", doReco=False, bcidShift=0)
Definition: LArRAWtoSuperCellConfig.py:8
METMakerConfig.getMETMakerAlg
def getMETMakerAlg(suffix, jetSelection="Tier0", jetColl="")
Definition: METMakerConfig.py:59
L1CALOCore.L1CALOCoreCfg
def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs)
Definition: L1CALOCore.py:15
L1CaloCalibToolsConfig.LegacyTriggerTowerDecoratorCfg
def LegacyTriggerTowerDecoratorCfg(flags, name, **kwargs)
Definition: L1CaloCalibToolsConfig.py:59
L1CALOCore.addGfexTOBs
def addGfexTOBs(slimminghelper, allVariables, postFix="")
Definition: L1CALOCore.py:734
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:46
METAssociatorCfg
Definition: METAssociatorCfg.py:1
python.MCTruthCommonConfig.AddBornLeptonCollectionCfg
def AddBornLeptonCollectionCfg(flags)
Definition: MCTruthCommonConfig.py:380
python.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:63
FexEmulatedTowersConfig.jFexEmulatedTowersCfg
def jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMaker", writeKey="L1_jFexEmulatedTowers", SCin="", OfflineCaloCell="")
Definition: FexEmulatedTowersConfig.py:24
python.LArRunFormat.getLArDTInfoForRun
def getLArDTInfoForRun(run, quiet=False, connstring="COOLONL_LAR/CONDBR2")
Definition: LArRunFormat.py:153
python.JetRecConfig.JetRecCfg
def JetRecCfg(flags, jetdef, returnConfiguredDef=False)
Top level functions returning ComponentAccumulator out of JetDefinition.
Definition: JetRecConfig.py:36
python.CaloNoiseCondAlgConfig.CaloNoiseCondAlgCfg
def CaloNoiseCondAlgCfg(flags, noisetype="totalNoise")
Definition: CaloNoiseCondAlgConfig.py:11
LArRunFormat
python.MCTruthCommonConfig.PreJetMCTruthAugmentationsCfg
def PreJetMCTruthAugmentationsCfg(flags, **kwargs)
Definition: MCTruthCommonConfig.py:107
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
Constants
some useful constants -------------------------------------------------—
python.MCTruthCommonConfig.PostJetMCTruthAugmentationsCfg
def PostJetMCTruthAugmentationsCfg(flags, **kwargs)
Definition: MCTruthCommonConfig.py:142
L1CALOCore.addEfexTOBs
def addEfexTOBs(slimminghelper, allVariables, postFix="")
Definition: L1CALOCore.py:657
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
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:688
python.MCTruthCommonConfig.AddTruthCollectionNavigationDecorationsCfg
def AddTruthCollectionNavigationDecorationsCfg(flags, TruthCollections=[], prefix='')
Definition: MCTruthCommonConfig.py:348
python.IOVDbSvcConfig.addOverride
def addOverride(flags, folder, tag, tagType="tag", db=None)
Definition: IOVDbSvcConfig.py:238
python.LArElecCalibDBConfig.LArElecCalibDBSCCfg
def LArElecCalibDBSCCfg(flags, condObjs, sqlite=None)
Definition: LArElecCalibDBConfig.py:126
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
METTruth_Cfg
Definition: METTruth_Cfg.py:1
python.HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:66
L1CaloFEXSimCfg
Definition: L1CaloFEXSimCfg.py:1
PFCfg.PFGlobalFlowElementLinkingCfg
def PFGlobalFlowElementLinkingCfg(inputFlags, **kwargs)
Definition: PFCfg.py:499