5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import Format
11 Config for emulating gFex input data from LATOME readout
15 acc.addEventAlgo( CompFactory.LVL1.gFexTowerBuilder(name=name,
16 SCell=flags.Trigger.L1.L1CaloSuperCellContainerName,
17 gTowersWriteKey = writeKey,
18 isDATA =
not flags.Input.isMC,
19 gFEX2SCmapping =
"Run3L1CaloSimulation/L1CaloFEXAlgos/gFEX/gCaloTowers_to_scells_v1.txt",
20 gFEX2Tilemapping =
"Run3L1CaloSimulation/L1CaloFEXAlgos/gFEX/gCaloTowers_to_tile_v1.txt",
21 gFexFiberTowerMapping =
"Run3L1CaloSimulation/L1CaloFEXAlgos/gFEX/gFex_gCaloTowerMap_weighted_v1.txt") )
24 def jFexEmulatedTowersCfg(flags, name="jFexEmulatedTowerMaker", writeKey="L1_jFexEmulatedTowers", SCin="", OfflineCaloCell=""):
26 Config for emulating jFex input data from LATOME readout
27 Supply SCin to build from non-standard SCell container
28 Supply OfflineCaloCell e.g. AllCalo to add offline cell energy decoration
32 emulator = CompFactory.LVL1.jFexEmulatedTowers(name)
33 emulator.SCell = flags.Trigger.L1.L1CaloSuperCellContainerName
if not SCin
else SCin
34 emulator.jTowersWriteKey = writeKey
35 emulator.isDATA =
not flags.Input.isMC
37 emulator.CaloCell = OfflineCaloCell
38 emulator.CaloSuperCellIDTool =
"CaloSuperCellIDTool" if OfflineCaloCell
else ""
39 emulator.TileOfflineETKey =
"CaloCellETByLayer" if (OfflineCaloCell
and not flags.Input.isMC)
else ""
40 emulator.CaloCellSumEtdecorKey =
"CaloCellSumEt" if OfflineCaloCell
else ""
42 acc.addEventAlgo(emulator)
48 Config for emulating eFex input data from LATOME readout
52 emulator = CompFactory.LVL1.eFexTowerBuilder(name,ApplyMasking=
not flags.Input.isMC)
53 emulator.eFexContainerWriteKey = writeKey
54 acc.addEventAlgo(emulator)
59 if __name__ ==
'__main__':
60 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
61 from AthenaCommon.Logging
import logging
66 parser = argparse.ArgumentParser(prog=
'python -m L1CaloFEXAlgos.FexEmulatedTowersConfig',
67 description=
"""Emulator tools for FEX towers athena script.\n\n
68 Example: python -m L1CaloFEXAlgos.FexEmulatedTowersConfig --filesInput "data22*" --evtMax 10 --outputs jTowers """)
69 parser.add_argument(
'--evtMax',type=int,default=-1,help=
"number of events")
70 parser.add_argument(
'--filesInput',nargs=
'+',help=
"input files",required=
True)
71 parser.add_argument(
'--outputs',nargs=
'+',choices={
"jTowers",
"eTowers"},required=
True, help=
"What data to decode and emulate")
72 parser.add_argument(
'--outputLevel',default=
"WARNING",choices={
'INFO',
'WARNING',
'DEBUG',
'VERBOSE'})
73 args = parser.parse_args()
76 log = logging.getLogger(
'FexEmulatedTowersConfig')
77 log.setLevel(logging.DEBUG)
79 from AthenaCommon
import Constants
80 algLogLevel = getattr(Constants,args.outputLevel)
83 if any([
"data" in f
for f
in args.filesInput]):
84 flags.Trigger.triggerConfig=
'DB'
86 flags.Exec.OutputLevel = algLogLevel
87 flags.Exec.MaxEvents = args.evtMax
88 flags.Input.Files = [file
for x
in args.filesInput
for file
in glob.glob(x)]
89 flags.Concurrency.NumThreads = 1
90 flags.Concurrency.NumConcurrentEvents = 1
92 if not flags.Input.isMC:
93 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
94 flags.GeoModel.AtlasVersion = defaultGeometryTags.autoconfigure(flags)
96 if any([
"data" in f
for f
in args.filesInput]):
98 flags.Output.AODFileName =
"AOD."+(s.split(
"/")[-1]).
split(
'_SFO')[0]+
"pool.root"
100 flags.Output.AODFileName =
'AOD.pool.root'
102 flags.Trigger.EDMVersion = 3
103 flags.Trigger.doLVL1 =
True
104 flags.Trigger.enableL1CaloPhase1 =
True
107 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorsFromList
114 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
118 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
123 from TrigConfigSvc.TrigConfigSvcCfg
import L1ConfigSvcCfg
128 maybeMissingRobs = []
131 auxType = edmType.replace(
'Container',
'AuxContainer')
132 return [f
'{edmType}#{edmName}',
133 f
'{auxType}#{edmName}Aux.']
141 from L1CaloFEXSim.L1CaloFEXSimCfg
import ReadSCellFromByteStreamCfg,TriggerTowersInputCfg
151 if 'jTowers' in args.outputs:
153 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer',
'L1_jFexEmulatedTowers')
156 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import jFexInputByteStreamToolCfg
158 for module_id
in inputjFexTool.ROBIDs:
159 maybeMissingRobs.append(module_id)
161 decoderTools += [inputjFexTool]
163 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer', inputjFexTool.jTowersWriteKey.Path)
168 if 'eTowers' in args.outputs:
170 outputEDM +=
addEDM(
'xAOD::eFexTowerContainer',
'L1_eFexEmulatedTowers')
173 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import eFexByteStreamToolCfg
175 flags,
'eFexBSDecoder',TOBs=
False,xTOBs=
False,decodeInputs=
True))
176 for module_id
in inputeFexTool.ROBIDs:
177 maybeMissingRobs.append(module_id)
179 decoderTools += [inputeFexTool]
181 outputEDM +=
addEDM(
'xAOD::eFexTowerContainer',
'L1_eFexDataTowers')
184 decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name=
"L1TriggerByteStreamDecoder",
185 DecoderTools=decoderTools, OutputLevel=algLogLevel,
186 MaybeMissingROBs=maybeMissingRobs)
188 acc.addEventAlgo(decoderAlg, sequenceName=
'AthAlgSeq')
192 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
193 log.debug(
'Adding the following output EDM to ItemList: %s', outputEDM)
196 acc.getEventAlgo(
"EventInfoTagBuilder").PropagateInput = (flags.Input.Format != Format.BS)
198 if acc.run().isFailure():