3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from AthenaConfiguration.Enums
import Format
6 from IOVDbSvc.IOVDbSvcConfig
import addFolders
12 if flags.Input.Format
is Format.POOL:
13 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
14 acc.merge(
SGInputLoaderCfg(flags, [
"TileRawChannelContainer/MuRcvRawChCnt"]))
16 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
19 from TileConditions.TileInfoLoaderConfig
import TileInfoLoaderCfg
22 from TileConditions.TileCablingSvcConfig
import TileCablingSvcCfg
25 from TileConditions.TileEMScaleConfig
import TileEMScaleCondAlgCfg
28 tmdbAlg = CompFactory.TileMuonReceiverDecision(
'TileMuonReceiverDecision'
29 , TileRawChannelContainer =
"MuRcvRawChCnt"
30 , TileMuonReceiverContainer =
"rerunTileMuRcvCnt"
33 , MuonReceiverEneThreshCellD6Low = 500
34 , MuonReceiverEneThreshCellD6andD5Low = 500
35 , MuonReceiverEneThreshCellD6High = 600
36 , MuonReceiverEneThreshCellD6andD5High = 600
38 , MuonReceiverEneThreshCellD5 = 500
39 , MuonReceiverEneThreshCellD6 = 500
40 , MuonReceiverEneThreshCellD5andD6 = 500)
41 acc.addEventAlgo(tmdbAlg)
49 postFix =
"_L1MuonSim"
50 from MuonConfig.MuonBytestreamDecodeConfig
import MuonCacheNames
51 cacheCreator = CompFactory.MuonCacheCreator(RpcCacheKey = MuonCacheNames.RpcCache,
52 TgcCacheKey = MuonCacheNames.TgcCache,
53 MdtCsmCacheKey = MuonCacheNames.MdtCsmCache,
54 CscCacheKey = (MuonCacheNames.CscCache
if flags.Detector.GeometryCSC
else ""))
55 acc.addEventAlgo(cacheCreator)
57 RPCRodDecoder = CompFactory.Muon.RpcROD_Decoder(name =
"RpcROD_Decoder" + postFix, NOBXS=flags.Trigger.L1MuonSim.RPCNBX)
58 MuonRpcRawDataProviderTool = CompFactory.Muon.RPC_RawDataProviderToolMT(name =
"RPC_RawDataProviderToolMT" + postFix,
59 RpcContainerCacheKey = MuonCacheNames.RpcCache,
60 WriteOutRpcSectorLogic =
False,
61 Decoder = RPCRodDecoder,
62 RdoLocation =
"RPCPAD_L1" )
63 RpcRawDataProvider = CompFactory.Muon.RpcRawDataProvider(name =
"RpcRawDataProvider" + postFix,
64 ProviderTool = MuonRpcRawDataProviderTool)
65 acc.addEventAlgo(RpcRawDataProvider)
67 TGCRodDecoder = CompFactory.Muon.TGC_RodDecoderReadout(name =
"TGC_RodDecoderReadout" + postFix)
68 MuonTgcRawDataProviderTool = CompFactory.Muon.TGC_RawDataProviderToolMT(name =
"TGC_RawDataProviderToolMT" + postFix,
69 TgcContainerCacheKey = MuonCacheNames.TgcCache,
70 Decoder = TGCRodDecoder,
71 RdoLocation =
"TGCRDO_L1")
72 TgcRawDataProvider = CompFactory.Muon.TgcRawDataProvider(name =
"TgcRawDataProvider" + postFix,
73 ProviderTool = MuonTgcRawDataProviderTool)
74 acc.addEventAlgo(TgcRawDataProvider)
76 if flags.Detector.GeometrysTGC:
77 Muon__STGC_RawDataProviderToolMT=CompFactory.Muon.STGC_RawDataProviderToolMT
78 from MuonConfig.MuonBytestreamDecodeConfig
import sTgcRODDecoderCfg
79 MuonsTgcRawDataProviderTool = Muon__STGC_RawDataProviderToolMT(name =
"STGC_RawDataProviderToolMT"+postFix,
81 name =
"sTgcROD_Decoder"+postFix)),
82 RdoLocation =
"sTGCRDO_L1")
83 Muon__sTgcRawDataProvider=CompFactory.Muon.sTgcRawDataProvider
84 sTgcRawDataProvider = Muon__sTgcRawDataProvider(name =
"sTgcRawDataProvider"+postFix,
85 ProviderTool = MuonsTgcRawDataProviderTool )
86 acc.addEventAlgo(sTgcRawDataProvider)
89 if flags.Detector.GeometryMM:
90 from MuonConfig.MuonBytestreamDecodeConfig
import MmRDODDecoderCfg
91 Muon_MM_RawDataProviderToolMT = CompFactory.Muon.MM_RawDataProviderToolMT
92 MuonMmRawDataProviderTool = Muon_MM_RawDataProviderToolMT(name =
"MM_RawDataProviderToolMT"+postFix,
94 name=
"MM_RODDecoder"+postFix)),
95 RdoLocation =
"MMRDO_L1")
96 Muon__MmRawDataProvider = CompFactory.Muon.MM_RawDataProvider
97 MmRawDataProvider = Muon__MmRawDataProvider(name =
"MmRawDataProvider"+postFix, ProviderTool = MuonMmRawDataProviderTool )
98 acc.addEventAlgo(MmRawDataProvider)
105 kwargs.setdefault(
"DecodeSTGC_RDO", flags.Detector.GeometrysTGC)
106 kwargs.setdefault(
"DecodeMM_RDO", flags.Detector.GeometryMM)
107 kwargs.setdefault(
"DecodeNrpcRDO", flags.Muon.enableNRPC)
108 from MuonConfig.MuonByteStreamCnvTestConfig
import STgcRdoDecoderCfg, MMRdoDecoderCfg, MdtRdoDecoderCfg
109 kwargs.setdefault(
"stgcRdoDecoderTool", result.popToolsAndMerge(
STgcRdoDecoderCfg(flags))
110 if flags.Detector.GeometrysTGC
else "" )
111 kwargs.setdefault(
"mmRdoDecoderTool", result.popToolsAndMerge(
MMRdoDecoderCfg(flags))
112 if flags.Detector.GeometryMM
else "" )
113 kwargs.setdefault(
"mdtRdoDecoderTool", result.popToolsAndMerge(
MdtRdoDecoderCfg(flags)))
115 rpcrdo_decode = CompFactory.Muon.RpcRDO_Decoder(
"RpcRDO_Decoder", BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
116 kwargs.setdefault(
"rpcRdoDecoderTool", rpcrdo_decode)
118 the_tool = CompFactory.MuonRdoToMuonDigitTool (name, **kwargs)
119 result.setPrivateTools(the_tool)
125 from MagFieldServices.MagFieldServicesConfig
import AtlasFieldCacheCondAlgCfg
128 suffix =
"" if flags.Input.Format
is Format.POOL
else "_L1"
129 RPCRdoName =
"RPCPAD"+suffix
130 TGCRdoName =
"TGCRDO"+suffix
131 MMRdoName =
"MMRDO"+suffix
132 sTGCRdoName =
"sTGCRDO"+suffix
134 if flags.Input.Format
is Format.POOL:
136 (
'RpcPadContainer',
'RPCPAD'),
137 (
'TgcRdoContainer',
'TGCRDO')
140 if flags.Detector.GeometrysTGC
or flags.Detector.GeometryMM:
142 (
'Muon::MM_RawDataContainer',
'MMRDO'),
143 (
'Muon::STGC_RawDataContainer',
'sTGCRDO')
145 if flags.Muon.enableNRPC:
147 (
'xAOD::NRPCRDOContainer' ,
'NRPCRDO'),
148 (
'xAOD::NRPCRDOAuxContainer',
'NRPCRDOAux.')
150 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
153 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
156 from MuonConfig.MuonByteStreamCnvTestConfig
import RpcRdoToRpcDigitCfg, TgcRdoToTgcDigitCfg, STGC_RdoToDigitCfg, MM_RdoToDigitCfg
158 acc.merge(
RpcRdoToRpcDigitCfg(flags, RpcDigitContainer =
"RPC_DIGITS_L1", RpcRdoContainer = RPCRdoName ))
159 acc.merge(
TgcRdoToTgcDigitCfg(flags, TgcDigitContainer =
"TGC_DIGITS_L1", TgcRdoContainer = TGCRdoName ))
160 if flags.Detector.GeometrysTGC:
161 acc.merge(
STGC_RdoToDigitCfg(flags, sTgcRdoContainer = sTGCRdoName, sTgcDigitContainer =
"sTGC_DIGITS_L1"))
162 if flags.Detector.GeometryMM:
163 acc.merge(
MM_RdoToDigitCfg(flags, MmRdoContainer = MMRdoName, MmDigitContainer =
"MM_DIGITS_L1" ))
169 if not flags.Detector.GeometrysTGC
and not flags.Detector.GeometryMM:
172 if flags.Input.Format
is Format.POOL
and flags.Input.isMC:
174 (
'McEventCollection',
'TruthEvent'),
175 (
'TrackRecordCollection',
'MuonEntryLayer'),
176 (
'MuonSimDataCollection',
'sTGC_SDO')
178 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
181 PadTdsTool = CompFactory.NSWL1.PadTdsOfflineTool(
"NSWL1__PadTdsOfflineTool", IsMC = flags.Input.isMC, sTGC_DigitContainerName=
"sTGC_DIGITS_L1")
182 PadTriggerLogicTool = CompFactory.NSWL1.PadTriggerLogicOfflineTool(
"NSWL1__PadTriggerLogicOfflineTool")
183 StripTdsTool = CompFactory.NSWL1.StripTdsOfflineTool(
"NSWL1__StripTdsOfflineTool",IsMC=flags.Input.isMC,sTGC_DigitContainerName=
"sTGC_DIGITS_L1")
184 StripClusterTool = CompFactory.NSWL1.StripClusterTool(
"NSWL1__StripClusterTool",IsMC=flags.Input.isMC)
185 StripSegmentTool = CompFactory.NSWL1.StripSegmentTool(
"NSWL1__StripSegmentTool")
186 MMTriggerTool = CompFactory.NSWL1.MMTriggerTool(
"NSWL1__MMTriggerTool",DoNtuple=flags.Trigger.L1MuonSim.WriteMMBranches, IsMC = flags.Input.isMC, MmDigitContainer=
"MM_DIGITS_L1")
187 TriggerProcessorTool = CompFactory.NSWL1.TriggerProcessorTool(
"NSWL1__TriggerProcessorTool")
189 dosTGC = flags.Trigger.L1MuonSim.doPadTrigger
or flags.Trigger.L1MuonSim.doStripTrigger
191 from RegionSelector.RegSelToolConfig
import regSelTool_STGC_Cfg
194 nswAlg = CompFactory.NSWL1.NSWL1Simulation(
"NSWL1Simulation",
195 DoNtuple = flags.Trigger.L1MuonSim.WriteNSWDebugNtuple,
196 DoMM = flags.Trigger.L1MuonSim.doMMTrigger,
197 DoMMDiamonds = flags.Trigger.L1MuonSim.doMMTrigger,
199 DoPad = flags.Trigger.L1MuonSim.doPadTrigger,
200 DoStrip = flags.Trigger.L1MuonSim.doStripTrigger,
201 PadTdsTool = PadTdsTool,
202 PadTriggerTool = PadTriggerLogicTool,
203 StripTdsTool = StripTdsTool,
204 StripClusterTool = StripClusterTool,
205 StripSegmentTool = StripSegmentTool,
206 MMTriggerTool = MMTriggerTool,
207 TriggerProcessorTool = TriggerProcessorTool,
208 NSWTrigRDOContainerName =
"L1_NSWTrigContainer" )
209 acc.addEventAlgo(nswAlg)
214 rpcAlg = CompFactory.TrigT1RPC(
"TrigT1RPC",
217 RPCbytestream =
False,
218 RPCbytestreamFile =
"",
219 RPCDigitContainer =
"RPC_DIGITS_L1",
220 useRun3Config =
True,
221 NOBXS=flags.Trigger.L1MuonSim.RPCNBX,
222 BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
223 acc.addEventAlgo(rpcAlg)
224 from MuonConfig.MuonCablingConfig
import RPCCablingConfigCfg
230 tgcAlg = CompFactory.LVL1TGCTrigger.LVL1TGCTrigger(
"LVL1TGCTrigger",
231 InputData_perEvent =
"TGC_DIGITS_L1",
232 InputRDO =
"TGCRDO" if flags.Input.isMC
else "TGCRDO_L1",
233 useRun3Config =
True,
234 TileMuRcv_Input =
"rerunTileMuRcvCnt",
236 if (flags.Detector.GeometrysTGC
or flags.Detector.GeometryMM):
237 tgcAlg.MaskFileName12 =
"TrigT1TGCMaskedChannel.noFI._12.db"
239 tgcAlg.NSWSideInfo =
"AC"
240 tgcAlg.NSWTrigger_Input =
"L1_NSWTrigContainer"
241 tgcAlg.FORCENSWCOIN =
not flags.Trigger.L1MuonSim.NSWVetoMode
242 tgcAlg.USEBIS78 = flags.Trigger.L1MuonSim.doBIS78
244 tgcAlg.MaskFileName12 =
"TrigT1TGCMaskedChannel._12.db"
246 if flags.Input.Format
is Format.BS:
247 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
248 readBSConfig =
ByteStreamReadCfg(flags, [
'ByteStreamMetadataContainer/ByteStreamMetadata'])
249 acc.merge(readBSConfig)
251 tgcAlg.ByteStreamMetadataRHKey =
''
252 acc.addEventAlgo(tgcAlg)
254 from PathResolver
import PathResolver
256 acc.merge(
addFolders(flags,
'<db>sqlite://;schema={0};dbname=OFLP200</db> /TGC/TRIGGER/CW_BW_RUN3'.
format(bwCW_Run3_filePath),
257 tag=
'TgcTriggerCwBwRun3-01',
258 className=
'CondAttrListCollection'))
259 acc.addCondAlgo(CompFactory.TGCTriggerCondAlg())
260 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
266 rpcRecRoiTool = CompFactory.LVL1.TrigT1RPCRecRoiTool(
"TrigT1RPCRecRoiTool", UseRun3Config=
True)
267 tgcRecRoiTool = CompFactory.LVL1.TrigT1TGCRecRoiTool(
"TrigT1TGCRecRoiTool", UseRun3Config=
True)
268 trigThresholdDecTool = CompFactory.LVL1.TrigThresholdDecisionTool(name=
"TrigThresholdDecisionTool",
269 RPCRecRoiTool = rpcRecRoiTool,
270 TGCRecRoiTool = tgcRecRoiTool)
271 muctpiTool = CompFactory.LVL1MUCTPIPHASE1.MUCTPI_AthTool(name=
"MUCTPI_AthTool",
272 MuCTPICTPLocation =
'L1MuCTPItoCTPLocation',
273 OverlapStrategyName = flags.Trigger.MUCTPI.OverlapStrategy,
274 LUTXMLFile = flags.Trigger.MUCTPI.LUTXMLFile,
275 BarrelRoIFile = flags.Trigger.MUCTPI.BarrelRoIFile,
276 EndcapForwardRoIFile = flags.Trigger.MUCTPI.EndcapForwardRoIFile,
277 Side0LUTFile = flags.Trigger.MUCTPI.Side0LUTFile,
278 Side1LUTFile = flags.Trigger.MUCTPI.Side1LUTFile,
279 InputSource =
'DIGITIZATION',
280 RPCRecRoiTool = rpcRecRoiTool,
281 TGCRecRoiTool = tgcRecRoiTool,
282 TrigThresholdDecisionTool = trigThresholdDecTool)
283 muctpiAlg = CompFactory.LVL1MUCTPIPHASE1.MUCTPI_AthAlg(name=
"MUCTPI_AthAlg",
284 MUCTPI_AthTool = muctpiTool)
285 acc.addEventAlgo(muctpiAlg)
286 from TrigConfigSvc.TrigConfigSvcCfg
import L1ConfigSvcCfg
294 if flags.Trigger.L0MuonSim.doEmulation:
295 from L0MuonEmulation.L0MuonSmearingConfig
import L0MuonSmearingCfg
310 if __name__ ==
"__main__":
312 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
314 flags.Input.Files = [
'/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/PhaseIIUpgrade/RDO/ATLAS-P2-RUN4-03-00-00/mc21_14TeV.900498.PG_single_muonpm_Pt100_etaFlatnp0_43.recon.RDO.e8481_s4149_r14697/RDO.33675668._000016.pool.root.1']
315 flags.Exec.MaxEvents = 5
316 flags.Concurrency.NumThreads = 1
317 flags.Trigger.triggerMenuSetup =
'MC_pp_run4_v1'
318 flags.Trigger.enableL0Muon =
True
319 flags.Trigger.L0MuonSim.doEmulation =
True
323 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
326 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
329 from TrigConfigSvc.TrigConfigSvcCfg
import generateL1Menu
334 acc.printConfig(withDetails=
True, summariseProps=
True, printDefaults=
True)
335 sys.exit(acc.run().isFailure())