ATLAS Offline Software
L1CaloFEXSimCfg.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaCommon.Logging import logging
7 
8 def ReadSCellFromPoolFileCfg(flags, key='SCell'):
9  '''Configure reading SCell container from a Pool file like RDO or ESD'''
10  acc = ComponentAccumulator()
11 
12  # Ensure SCell container is in the input file
13  # TODO this needs to be uncommented once all MC files used in tests contain SCells
14  # e.g. test_trig_mc_v1DevHI_build.py
15  # assert key in flags.Input.Collections or not flags.Input.Collections, 'MC input file is required to contain SCell container'
16 
17  # Need geometry and conditions for the SCell converter from POOL
18  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
19  acc.merge(LArGMCfg(flags))
20 
21  return acc
22 
23 
24 def ReadSCellFromByteStreamCfg(flags, key='SCell', SCmask=True):
26 
27  # Geometry, conditions and cabling setup
28  from TileGeoModel.TileGMConfig import TileGMCfg
29  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
30  from LArCabling.LArCablingConfig import LArLATOMEMappingCfg
31  from LArCabling.LArCablingConfig import LArOnOffIdMappingSCCfg
32  from LArCellRec.LArRAWtoSuperCellConfig import LArRAWtoSuperCellCfg
33  acc.merge(TileGMCfg(flags))
34  acc.merge(LArGMCfg(flags))
35  acc.merge(LArLATOMEMappingCfg(flags))
36  acc.merge(LArOnOffIdMappingSCCfg(flags))
37 
38  # Conversion from ByteStream to LArRawSCContainer
39  decoderTool = CompFactory.LArLATOMEDecoder('LArLATOMEDecoder', ProtectSourceId = True)
40  decoderAlg = CompFactory.LArRawSCDataReadingAlg('LArRawSCDataReadingAlg', LATOMEDecoder=decoderTool)
41  acc.addEventAlgo(decoderAlg)
42 
43  acc.merge(LArRAWtoSuperCellCfg(flags,mask=SCmask, SCellContainerOut=key) )
44 
45  return acc
46 
47 def eFEXTOBEtToolCfg(flags):
48  """
49  Configure the eFEX TOB Et Tool which recalculates isolation variables
50  The tool requires eTowers as inputs (add eTowerMaker algorithm)
51  """
52  acc = ComponentAccumulator()
53 
54  # had to comment this out for now, because it causes a clash with the eTowerMakerFromEfexTowers algorithm
55  # if that gets scheduled
56  #eTowerMakerAlg = CompFactory.LVL1.eTowerMakerFromSuperCells('eTowerMakerFromSuperCells')
57  #acc.addEventAlgo(eTowerMakerAlg)
58 
59  eFEXTOBEtTool = CompFactory.LVL1.eFEXTOBEtTool
60  acc.setPrivateTools(eFEXTOBEtTool())
61 
62  return acc
63 
65  '''Configuration to provide TriggerTowers as input to the Fex simulation'''
66  from AthenaConfiguration.Enums import Format
67  if flags.Input.Format is Format.POOL:
68  # For POOL files produce TT with R2TTMaker
69  from TrigT1CaloSim.TrigT1CaloSimRun2Config import Run2TriggerTowerMakerCfg
70  return Run2TriggerTowerMakerCfg(flags)
71  else:
72  # For RAW decode TT from ByteStream
73  from TrigT1CaloByteStream.LVL1CaloRun2ByteStreamConfig import LVL1CaloRun2ReadBSCfg
74  return LVL1CaloRun2ReadBSCfg(flags)
75 
76 
77 def L1CaloFEXSimCfg(flags, eFexTowerInputs = ["L1_eFexDataTowers","L1_eFexEmulatedTowers"],deadMaterialCorrections=True, outputSuffix="", simulateAltTau=False):
78  from AthenaConfiguration.Enums import Format
79 
80  if not simulateAltTau and flags.DQ.Environment == "tier0":
81  simulateAltTau = True # require alt RoI at tier0 while validating new BDT alg against heuristic
82 
83  acc = ComponentAccumulator()
84 
85  log = logging.getLogger('L1CaloFEXSimCfg')
86 
87 
88  # Configure SCell inputs
89  sCellType = flags.Trigger.L1.L1CaloSuperCellContainerName
90  if flags.Input.Format is Format.POOL:
91  # Read SCell directly from input RDO file unless not necessary
92  if 'L1_eFexEmulatedTowers' in eFexTowerInputs and "L1_eFexEmulatedTowers" not in flags.Input.Collections:
93  acc.merge(ReadSCellFromPoolFileCfg(flags,sCellType))
94  if flags.Input.isMC:
95  # wont have eFexDataTowers available so remove that if it appears in input list
96  eFexTowerInputs = [l for l in eFexTowerInputs if l != "L1_eFexDataTowers"]
97  else:
98  from AthenaConfiguration.Enums import LHCPeriod
99  if flags.GeoModel.Run is LHCPeriod.Run2:
100  # Run-2 data inputs, emulate SCells
101  from TrigT1CaloFexPerf.EmulationConfig import emulateSC_Cfg
102  acc.merge(emulateSC_Cfg(flags))
103  else:
104  # Run-3+ data inputs, decode SCells from ByteStream if needed
105  if 'L1_eFexEmulatedTowers' in eFexTowerInputs and "L1_eFexEmulatedTowers" not in flags.Input.Collections:
106  acc.merge(ReadSCellFromByteStreamCfg(flags,key=sCellType))
107 
108  # Need also TriggerTowers as input .. so reconstruct if not in input collections already
109  if "xAODTriggerTowers" not in flags.Input.Collections:
110  acc.merge(TriggerTowersInputCfg(flags))
111 
112  if 'L1_eFexEmulatedTowers' in eFexTowerInputs and "L1_eFexEmulatedTowers" not in flags.Input.Collections:
113  acc.addEventAlgo( CompFactory.LVL1.eFexTowerBuilder("L1_eFexEmulatedTowers",CaloCellContainerReadKey=sCellType,ApplyMasking=not flags.Input.isMC) ) # builds the emulated towers to use as secondary input to eTowerMaker - name has to match what it gets called in other places to avoid conflict
114 
115  if flags.Trigger.L1.doeFex:
116  if eFexTowerInputs==[]:
117  # no input specified, so use the old eTowerMaker
118  eFEXInputs = CompFactory.LVL1.eTowerMakerFromSuperCells('eTowerMakerFromSuperCells',
119  eSuperCellTowerMapperTool = CompFactory.LVL1.eSuperCellTowerMapper('eSuperCellTowerMapper', SCell=sCellType))
120  else:
121  # if primary is DataTowers, check that caloInputs are enabled (if data towers not already available). If it isn't then skip this
122  if (not flags.Trigger.L1.doCaloInputs) and eFexTowerInputs[0] == "L1_eFexDataTowers" and ("L1_eFexDataTowers" not in flags.Input.Collections):
123  if len(eFexTowerInputs)==1:
124  log.fatal("Requested L1_eFexDataTowers but Trigger.L1.doCaloInputs is False, but not secondary collection given")
125  import sys
126  sys.exit(1)
127  log.warning("Requested L1_eFexDataTowers but Trigger.L1.doCaloInputs is False, falling back to secondary")
128  eFexTowerInputs[0] = eFexTowerInputs[1]
129  eFexTowerInputs[1] = ""
130  eFEXInputs = CompFactory.LVL1.eTowerMakerFromEfexTowers('eTowerMakerFromEfexTowers')
131  eFEXInputs.InputTowers = eFexTowerInputs[0]
132  eFEXInputs.SecondaryInputTowers = eFexTowerInputs[1] if len(eFexTowerInputs) > 1 else ""
133 
134  eFEX = CompFactory.LVL1.eFEXDriver('eFEXDriver')
135  eFEX.eFEXSysSimTool = CompFactory.LVL1.eFEXSysSim('eFEXSysSimTool')
136  eFEX.eFEXSysSimTool.eFEXSimTool = CompFactory.LVL1.eFEXSim('eFEXSimTool')
137  eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool = CompFactory.LVL1.eFEXFPGA('eFEXFPGATool')
138  eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXegAlgoTool = CompFactory.LVL1.eFEXegAlgo('eFEXegAlgoTool',dmCorr=deadMaterialCorrections) # only dmCorrections in data for now
139  eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXtauAlgoTool = CompFactory.LVL1.eFEXtauAlgo("eFEXtauAlgo")
140  # To dump supercells as a decorator to the tau TOB, set
141  # eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXtauAlgoTool.DumpSuperCells = True
142  # and/or
143  # eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXtauBDTAlgoTool.DumpSuperCells = True
144  eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXtauBDTAlgoTool = CompFactory.LVL1.eFEXtauBDTAlgo("eFEXtauBDTAlgo", BDTJsonConfigPath="bdt_config_v16.json")
145  # load noise cuts and dm corrections when running on data
146  from IOVDbSvc.IOVDbSvcConfig import addFolders#, addFoldersSplitOnline
147 
148  acc.merge(addFolders(flags,"/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts","TRIGGER_OFL" if flags.Input.isMC else "TRIGGER_ONL",className="CondAttrListCollection"))
149  eFEXInputs.NoiseCutsKey = "/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts"
150  acc.merge(addFolders(flags,"/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib","TRIGGER_OFL" if flags.Input.isMC else "TRIGGER_ONL",className="CondAttrListCollection")) # dmCorr from DB!
151  eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXegAlgoTool.DMCorrectionsKey = "/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib"
152 
153  acc.addEventAlgo(eFEXInputs)
154  acc.addEventAlgo(eFEX)
155 
156  if simulateAltTau:
157  eFEX.eFEXSysSimTool.Key_eFexAltTauOutputContainer="L1_eTauRoIAlt"
158  eFEX.eFEXSysSimTool.Key_eFexAltTauxTOBOutputContainer="L1_eTauxRoIAlt"
159 
160 
161  if flags.Trigger.L1.dojFex:
162 
163  if flags.Input.Format is not Format.POOL:
164  from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexInputByteStreamToolCfg
165  inputjFexTool = acc.popToolsAndMerge(jFexInputByteStreamToolCfg(flags, 'jFexInputBSDecoderTool'))
166 
167  maybeMissingRobs = []
168  decoderTools = []
169 
170  for module_id in inputjFexTool.ROBIDs:
171  maybeMissingRobs.append(module_id)
172 
173  decoderTools += [inputjFexTool]
174  decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", DecoderTools=[inputjFexTool], MaybeMissingROBs=maybeMissingRobs)
175  acc.addEventAlgo(decoderAlg)
176 
177  if "L1_jFexEmulatedTowers" not in flags.Input.Collections:
178  from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
179  acc.merge(jFexEmulatedTowersCfg(flags))
180 
181  from L1CaloFEXCond.L1CaloFEXCondConfig import jFexDBConfig
182  acc.merge(jFexDBConfig(flags))
183 
184  jFEXInputs = CompFactory.LVL1.jTowerMakerFromJfexTowers('jTowerMakerFromJfexTowers')
185  jFEXInputs.IsMC = flags.Input.isMC
186  jFEXInputs.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType)
187  jFEXInputs.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
188  # need to set an IsMC property on a tool deep inside the toolstack:
189  jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver',jFEXSysSimTool=CompFactory.LVL1.jFEXSysSim(
190  'jFEXSysSimTool',jFEXSimTool=CompFactory.LVL1.jFEXSim(
191  'LVL1::jFEXSim',jFEXFPGATool=CompFactory.LVL1.jFEXFPGA(
192  'LVL1::jFEXFPGA',IjFEXFormTOBsTool=CompFactory.LVL1.jFEXFormTOBs(
193  'LVL1::jFEXFormTOBs',IsMC=flags.Input.isMC)))))
194  acc.addEventAlgo(jFEXInputs)
195  acc.addEventAlgo(jFEX)
196 
197 
198  if flags.Trigger.L1.dogFex:
199 
200  if flags.Input.Format is not Format.POOL:
201  from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import gFexInputByteStreamToolCfg
202  inputgFexTool = acc.popToolsAndMerge(gFexInputByteStreamToolCfg(flags, 'gFexInputBSDecoderTool'))
203 
204  maybeMissingRobs = []
205  decoderTools = []
206 
207  for module_id in inputgFexTool.ROBIDs:
208  maybeMissingRobs.append(module_id)
209 
210  decoderTools += [inputgFexTool]
211  decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", DecoderTools=[inputgFexTool], MaybeMissingROBs=maybeMissingRobs)
212  acc.addEventAlgo(decoderAlg)
213 
214  gFEXInputs = CompFactory.LVL1.gTowerMakerFromGfexTowers('gTowerMakerFromGfexTowers')
215  gFEXInputs.IsMC = flags.Input.isMC
216  gFEXInputs.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper', SCell=sCellType)
217  gFEXInputs.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
218 
219  gFEXInputs50 = CompFactory.LVL1.gTowerMakerFromGfexTowers('gTowerMakerFromGfexTowers50')
220  gFEXInputs50.InputDataTowers = "L1_gFexDataTowers50"
221  gFEXInputs50.MyGTowers = "gTower50Container"
222  gFEXInputs50.IsMC = flags.Input.isMC
223  gFEXInputs50.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper50', SCell=sCellType)
224  gFEXInputs50.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
225 
226  from L1CaloFEXCond.L1CaloFEXCondConfig import gFexDBConfig
227  acc.merge(gFexDBConfig(flags))
228 
229  gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver')
230  gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool')
231  acc.addEventAlgo(gFEXInputs)
232  acc.addEventAlgo(gFEXInputs50)
233  acc.addEventAlgo(gFEX)
234 
235  if flags.Trigger.doHLT:
236  # This will be the case when the offline simulation is actually being run as part of MC
237  # as opposed to running another pass of the simulation on either an MC or data file (e.g in DAOD)
238  # Check the RoI EDM containers are registered in HLT outputs
239  from TrigEDMConfig.TriggerEDM import recordable
240  def check(key):
241  assert key==recordable(key), f'recordable() check failed for {key}'
242  if flags.Trigger.L1.doeFex:
243  check(eFEX.eFEXSysSimTool.Key_eFexEMOutputContainer)
244  check(eFEX.eFEXSysSimTool.Key_eFexTauOutputContainer)
245  if (simulateAltTau):
246  check(eFEX.eFEXSysSimTool.Key_eFexAltTauOutputContainer)
247  if flags.Trigger.L1.dojFex:
248  check(jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer)
249  check(jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer)
250  check(jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer)
251  check(jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer)
252  check(jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer)
253  check(jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer)
254  if flags.Trigger.L1.dogFex:
255  check(gFEX.gFEXSysSimTool.Key_gFexSRJetOutputContainer)
256  check(gFEX.gFEXSysSimTool.Key_gFexLRJetOutputContainer)
257  check(gFEX.gFEXSysSimTool.Key_gFexRhoOutputContainer)
258  check(gFEX.gFEXSysSimTool.Key_gScalarEJwojOutputContainer)
259  check(gFEX.gFEXSysSimTool.Key_gMETComponentsJwojOutputContainer)
260  check(gFEX.gFEXSysSimTool.Key_gMHTComponentsJwojOutputContainer)
261  check(gFEX.gFEXSysSimTool.Key_gMSTComponentsJwojOutputContainer)
262  check(gFEX.gFEXSysSimTool.Key_gMETComponentsNoiseCutOutputContainer)
263  check(gFEX.gFEXSysSimTool.Key_gMETComponentsRmsOutputContainer)
264  check(gFEX.gFEXSysSimTool.Key_gScalarENoiseCutOutputContainer)
265  check(gFEX.gFEXSysSimTool.Key_gScalarERmsOutputContainer)
266  else:
267  # Rename outputs for monitoring resimulation to avoid clash with standard SG keys
268  def getSimHandle(key):
269  """
270  Add 'Sim' to the standard handle path and include user-specified suffix
271  """
272  key += outputSuffix
273  if not key.endswith("Sim"): key += "Sim"
274  return key
275 
276  if flags.Trigger.L1.doeFex:
277  eFEX.eFEXSysSimTool.Key_eFexEMOutputContainer=getSimHandle("L1_eEMRoI")
278  eFEX.eFEXSysSimTool.Key_eFexTauOutputContainer=getSimHandle("L1_eTauRoI")
279  eFEX.eFEXSysSimTool.Key_eFexEMxTOBOutputContainer=getSimHandle("L1_eEMxRoI")
280  eFEX.eFEXSysSimTool.Key_eFexTauxTOBOutputContainer=getSimHandle("L1_eTauxRoI")
281  if simulateAltTau:
282  eFEX.eFEXSysSimTool.Key_eFexAltTauOutputContainer=getSimHandle("L1_eTauRoIAlt")
283  eFEX.eFEXSysSimTool.Key_eFexAltTauxTOBOutputContainer=getSimHandle("L1_eTauxRoIAlt")
284 
285  if flags.Trigger.L1.dojFex:
286  jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer=getSimHandle("L1_jFexSRJetRoI")
287  jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer=getSimHandle("L1_jFexLRJetRoI")
288  jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer=getSimHandle("L1_jFexTauRoI")
289  jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer=getSimHandle("L1_jFexSumETRoI")
290  jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer=getSimHandle("L1_jFexMETRoI")
291  jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer=getSimHandle("L1_jFexFwdElRoI")
292  jFEX.jFEXSysSimTool.Key_xTobOutKey_jJ=getSimHandle("L1_jFexSRJetxRoI")
293  jFEX.jFEXSysSimTool.Key_xTobOutKey_jLJ=getSimHandle("L1_jFexLRJetxRoI")
294  jFEX.jFEXSysSimTool.Key_xTobOutKey_jTau=getSimHandle("L1_jFexTauxRoI")
295  jFEX.jFEXSysSimTool.Key_xTobOutKey_jEM=getSimHandle("L1_jFexFwdElxRoI")
296  if flags.Trigger.L1.dogFex:
297  gFEX.gFEXSysSimTool.Key_gFexSRJetOutputContainer=getSimHandle("L1_gFexSRJetRoI")
298  gFEX.gFEXSysSimTool.Key_gFexLRJetOutputContainer=getSimHandle("L1_gFexLRJetRoI")
299  gFEX.gFEXSysSimTool.Key_gFexRhoOutputContainer=getSimHandle("L1_gFexRhoRoI")
300  gFEX.gFEXSysSimTool.Key_gScalarEJwojOutputContainer=getSimHandle("L1_gScalarEJwoj")
301  gFEX.gFEXSysSimTool.Key_gMETComponentsJwojOutputContainer=getSimHandle("L1_gMETComponentsJwoj")
302  gFEX.gFEXSysSimTool.Key_gMHTComponentsJwojOutputContainer=getSimHandle("L1_gMHTComponentsJwoj")
303  gFEX.gFEXSysSimTool.Key_gMSTComponentsJwojOutputContainer=getSimHandle("L1_gMSTComponentsJwoj")
304  gFEX.gFEXSysSimTool.Key_gMETComponentsNoiseCutOutputContainer=getSimHandle("L1_gMETComponentsNoiseCut")
305  gFEX.gFEXSysSimTool.Key_gMETComponentsRmsOutputContainer=getSimHandle("L1_gMETComponentsRms")
306  gFEX.gFEXSysSimTool.Key_gScalarENoiseCutOutputContainer=getSimHandle("L1_gScalarENoiseCut")
307  gFEX.gFEXSysSimTool.Key_gScalarERmsOutputContainer=getSimHandle("L1_gScalarERms")
308 
309  return acc
310 
311 
312 if __name__ == '__main__':
313 
316  import argparse
317  p = argparse.ArgumentParser()
318  p.add_argument('-i', '--input',
319  metavar='KEY',
320  default='ttbar',
321  help='Key of the input from TrigValInputs to be used, default=%(default)s')
322  p.add_argument('-e', '--execute',
323  action='store_true',
324  help='After building the configuration, also process a few events')
325  p.add_argument('-n', '--nevents',
326  metavar='N',
327  type=int,
328  default=25,
329  help='Number of events to process if --execute is used, default=%(default)s')
330  p.add_argument('-d', '--efexdebug',
331  action='store_true',
332  help='Activate DEBUG mode for eFEX driver .. this option is required by a unit test')
333 
334  args = p.parse_args()
335 
336 
339  from AthenaConfiguration.AllConfigFlags import initConfigFlags
340  from TrigValTools.TrigValSteering import Input
341  import os
342 
343  flags = initConfigFlags()
344  flags.Common.isOnline = True
345  flags.Input.Files = [args.input] if os.path.isfile(args.input) else Input.get_input(args.input).paths
346  if not flags.Input.isMC:
347  from AthenaConfiguration.TestDefaults import defaultGeometryTags
348  flags.GeoModel.AtlasVersion = defaultGeometryTags.autoconfigure(flags)
349  from AthenaConfiguration.Enums import LHCPeriod
350  flags.IOVDb.GlobalTag = 'CONDBR2-HLTP-2023-01' if flags.GeoModel.Run is LHCPeriod.Run3 else 'CONDBR2-HLTP-2018-04'
351  else:
352  flags.IOVDb.GlobalTag = 'OFLCOND-MC23-SDR-RUN3-05'
353  flags.Output.AODFileName = 'AOD.pool.root'
354  flags.Exec.MaxEvents = args.nevents
355  flags.Concurrency.NumThreads = 1
356  flags.Concurrency.NumConcurrentEvents = 1
357  flags.Scheduler.ShowDataDeps = True
358  flags.Scheduler.CheckDependencies = True
359  flags.Scheduler.ShowDataFlow = True
360  flags.Trigger.EDMVersion = 3
361  flags.Trigger.doLVL1 = True
362  flags.Trigger.enableL1CaloPhase1 = True
363  flags.Trigger.triggerConfig = 'FILE'
364 
365  # Enable only calo for this test
366  from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
367  setupDetectorFlags(flags, ['LAr','Tile','MBTS'], toggle_geometry=True)
368 
369  flags.lock()
370 
371 
374  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
375  acc = MainServicesCfg(flags)
376 
377  from AthenaConfiguration.Enums import Format
378  if flags.Input.Format == Format.POOL:
379  from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
380  acc.merge(PoolReadCfg(flags))
381  else:
382  from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
383  acc.merge(ByteStreamReadCfg(flags))
384 
385  from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg, generateL1Menu, createL1PrescalesFileFromMenu
386  generateL1Menu(flags)
388  acc.merge(L1ConfigSvcCfg(flags))
389 
390  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
391  FexEDMList = [
392  'xAOD::eFexEMRoIContainer#L1_eEMRoI','xAOD::eFexEMRoIAuxContainer#L1_eEMRoIAux.',
393  'xAOD::eFexTauRoIContainer#L1_eTauRoI','xAOD::eFexTauRoIAuxContainer#L1_eTauRoIAux.',
394  'xAOD::jFexTauRoIContainer#L1_jFexTauRoI','xAOD::jFexTauRoIAuxContainer#L1_jFexTauRoIAux.',
395  'xAOD::jFexSRJetRoIContainer#L1_jFexSRJetRoI','xAOD::jFexSRJetRoIAuxContainer#L1_jFexSRJetRoIAux.',
396  'xAOD::jFexLRJetRoIContainer#L1_jFexLRJetRoI','xAOD::jFexLRJetRoIAuxContainer#L1_jFexLRJetRoIAux.',
397  'xAOD::jFexMETRoIContainer#L1_jFexMETRoI','xAOD::jFexMETRoIAuxContainer#L1_jFexMETRoIAux.',
398  'xAOD::jFexSumETRoIContainer#L1_jFexSumETRoI','xAOD::jFexSumETRoIAuxContainer#L1_jFexSumETRoIAux.',
399  'xAOD::gFexJetRoIContainer#L1_gFexSRJetRoI','xAOD::gFexJetRoIAuxContainer#L1_gFexSRJetRoIAux.',
400  'xAOD::gFexJetRoIContainer#L1_gFexLRJetRoI','xAOD::gFexJetRoIAuxContainer#L1_gFexLRJetRoIAux.',
401  'xAOD::gFexJetRoIContainer#L1_gFexRhoRoI','xAOD::gFexJetRoIAuxContainer#L1_gFexRhoRoIAux.',
402  'xAOD::gFexGlobalRoIContainer#L1_gScalarEJwoj','xAOD::gFexGlobalRoIAuxContainer#L1_gScalarEJwojAux.',
403  'xAOD::gFexGlobalRoIContainer#L1_gMETComponentsJwoj','xAOD::gFexGlobalRoIAuxContainer#L1_gMETComponentsJwojAux.',
404  'xAOD::gFexGlobalRoIContainer#L1_gMHTComponentsJwoj','xAOD::gFexGlobalRoIAuxContainer#L1_gMHTComponentsJwojAux.',
405  'xAOD::gFexGlobalRoIContainer#L1_gMSTComponentsJwoj','xAOD::gFexGlobalRoIAuxContainer#L1_gMSTComponentsJwojAux.',
406  'xAOD::gFexGlobalRoIContainer#L1_gMETComponentsNoiseCut','xAOD::gFexGlobalRoIAuxContainer#L1_gMETComponentsNoiseCutAux.',
407  'xAOD::gFexGlobalRoIContainer#L1_gMETComponentsRms','xAOD::gFexGlobalRoIAuxContainer#L1_gMETComponentsRmsAux.',
408  'xAOD::gFexGlobalRoIContainer#L1_gScalarENoiseCut','xAOD::gFexGlobalRoIAuxContainer#L1_gScalarENoiseCutAux.',
409  'xAOD::gFexGlobalRoIContainer#L1_gScalarERms','xAOD::gFexGlobalRoIAuxContainer#L1_gScalarERmsAux.',
410 
411  ]
412  acc.merge(OutputStreamCfg(flags, 'AOD', ItemList=FexEDMList))
413 
414 
417  acc.merge(L1CaloFEXSimCfg(flags))
418  if args.efexdebug:
419  from AthenaCommon.Constants import DEBUG
420  acc.getEventAlgo("eFEXDriver").OutputLevel = DEBUG
421 
422 
425  with open("L1Sim.pkl", "wb") as f:
426  acc.store(f)
427  f.close()
428 
429  if args.execute:
430  sc = acc.run()
431  if sc.isFailure():
432  exit(1)
L1CaloFEXSimCfg.ReadSCellFromByteStreamCfg
def ReadSCellFromByteStreamCfg(flags, key='SCell', SCmask=True)
Definition: L1CaloFEXSimCfg.py:24
L1CaloFEXCondConfig.jFexDBConfig
def jFexDBConfig(flags, name="jFEXCondAlgo")
Definition: L1CaloFEXCondConfig.py:8
L1CaloFEXSimCfg.TriggerTowersInputCfg
def TriggerTowersInputCfg(flags)
Definition: L1CaloFEXSimCfg.py:64
LArCablingConfig.LArOnOffIdMappingSCCfg
def LArOnOffIdMappingSCCfg(configFlags)
Definition: LArCablingConfig.py:65
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
FEXReprocessingRun3.getSimHandle
def getSimHandle(key)
Definition: FEXReprocessingRun3.py:87
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.EmulationConfig.emulateSC_Cfg
def emulateSC_Cfg(flags, CellsIn="SeedLessFS", CellsOut="")
Definition: EmulationConfig.py:3
LArRAWtoSuperCellConfig.LArRAWtoSuperCellCfg
def LArRAWtoSuperCellCfg(flags, name="LArRAWtoSuperCell", mask=True, SCellContainerOut="", SCIn="", doReco=False, bcidShift=0)
Definition: LArRAWtoSuperCellConfig.py:8
python.TrigConfigSvcCfg.createL1PrescalesFileFromMenu
def createL1PrescalesFileFromMenu(flags)
Definition: TrigConfigSvcCfg.py:165
python.TrigConfigSvcCfg.generateL1Menu
def generateL1Menu(flags)
Definition: TrigConfigSvcCfg.py:184
L1CaloFEXSimCfg.L1CaloFEXSimCfg
def L1CaloFEXSimCfg(flags, eFexTowerInputs=["L1_eFexDataTowers","L1_eFexEmulatedTowers"], deadMaterialCorrections=True, outputSuffix="", simulateAltTau=False)
Definition: L1CaloFEXSimCfg.py:77
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
LVL1CaloRun2ByteStreamConfig.LVL1CaloRun2ReadBSCfg
def LVL1CaloRun2ReadBSCfg(flags, forRoIBResultToxAOD=False)
Definition: LVL1CaloRun2ByteStreamConfig.py:121
L1CaloFEXByteStreamConfig.jFexInputByteStreamToolCfg
def jFexInputByteStreamToolCfg(flags, name, *writeBS=False)
Definition: L1CaloFEXByteStreamConfig.py:232
LArCablingConfig.LArLATOMEMappingCfg
def LArLATOMEMappingCfg(configFlags)
Definition: LArCablingConfig.py:95
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
Constants
some useful constants -------------------------------------------------—
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:72
calibdata.exit
exit
Definition: calibdata.py:236
L1CaloFEXSimCfg.eFEXTOBEtToolCfg
def eFEXTOBEtToolCfg(flags)
Definition: L1CaloFEXSimCfg.py:47
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
python.DetectorConfigFlags.setupDetectorFlags
def setupDetectorFlags(flags, custom_list=None, use_metadata=False, toggle_geometry=False, validate_only=False, keep_beampipe=False)
Definition: DetectorConfigFlags.py:289
L1CaloFEXSimCfg.ReadSCellFromPoolFileCfg
def ReadSCellFromPoolFileCfg(flags, key='SCell')
Definition: L1CaloFEXSimCfg.py:8
L1CaloFEXByteStreamConfig.gFexInputByteStreamToolCfg
def gFexInputByteStreamToolCfg(flags, name, *writeBS=False)
Definition: L1CaloFEXByteStreamConfig.py:275
LArNewCalib_Delay_OFC_Cali.check
check
Definition: LArNewCalib_Delay_OFC_Cali.py:267
python.TrigConfigSvcCfg.L1ConfigSvcCfg
def L1ConfigSvcCfg(flags)
Definition: TrigConfigSvcCfg.py:198
Trk::open
@ open
Definition: BinningType.h:40
TrigT1CaloSimRun2Config.Run2TriggerTowerMakerCfg
def Run2TriggerTowerMakerCfg(flags, name='Run2TriggerTowerMaker25ns')
Definition: TrigT1CaloSimRun2Config.py:10
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
FexEmulatedTowersConfig.jFexEmulatedTowersCfg
def jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMaker", writeKey="L1_jFexEmulatedTowers")
Definition: FexEmulatedTowersConfig.py:9
L1CaloFEXCondConfig.gFexDBConfig
def gFexDBConfig(flags, name="gFEXCondAlgo")
Definition: L1CaloFEXCondConfig.py:34
python.TriggerEDM.recordable
def recordable(arg, runVersion=3)
Definition: TriggerEDM.py:34
python.PoolReadConfig.PoolReadCfg
def PoolReadCfg(flags)
Definition: PoolReadConfig.py:69
L1CaloFEXSimCfg
Definition: L1CaloFEXSimCfg.py:1
TileGMConfig.TileGMCfg
def TileGMCfg(flags)
Definition: TileGMConfig.py:7