5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import Format
8 from AthenaCommon.CFElements
import seqOR, parOR
9 from AthenaCommon.Logging
import logging
10 log = logging.getLogger(
'MTCalibPebConfig.py')
12 _menu_name =
'MTCalibPeb'
13 _menu_file_name =
'HLTMenu_{:s}.json'.
format(_menu_name)
18 0x420024, 0x420025, 0x420026, 0x420027, 0x420034, 0x420035, 0x420036, 0x420037,
19 0x42005c, 0x42005d, 0x42005e, 0x42005f, 0x42006c, 0x42006d, 0x42006e, 0x42006f,
20 0x42000c, 0x42000d, 0x420001, 0x42000f, 0x420014, 0x420015, 0x420016, 0x420017,
21 0x42001c, 0x42001d, 0x420030, 0x420031, 0x420002, 0x420003, 0x420011, 0x420013,
22 0x420018, 0x420019, 0x42001a, 0x42001b, 0x42001e, 0x42001f, 0x420032, 0x420033,
23 0x420004, 0x420005, 0x420006, 0x420007, 0x420000, 0x42000e, 0x420020, 0x420021,
24 0x420028, 0x420029, 0x42002c, 0x42002d, 0x420008, 0x420009, 0x42000a, 0x42000b,
25 0x420010, 0x420012, 0x420022, 0x420023, 0x42002a, 0x42002b, 0x42002e, 0x42002f,
26 0x41003c, 0x41003d, 0x41003e, 0x41003f, 0x410038, 0x410046, 0x410058, 0x410059,
27 0x410060, 0x410061, 0x410064, 0x410065, 0x410040, 0x410041, 0x410042, 0x410043,
28 0x410048, 0x41004a, 0x41005a, 0x41005b, 0x410062, 0x410063, 0x410066, 0x410067,
29 0x41007c, 0x41007d, 0x410071, 0x41007f, 0x410084, 0x410085, 0x410086, 0x410087,
30 0x41008c, 0x41008d, 0x4100a0, 0x4100a1, 0x410072, 0x410073, 0x410081, 0x410083,
31 0x410088, 0x410089, 0x41008a, 0x41008b, 0x41008e, 0x41008f, 0x4100a2, 0x4100a3,
32 0x410074, 0x410075, 0x410076, 0x410077, 0x410070, 0x41007e, 0x410090, 0x410091,
33 0x410098, 0x410099, 0x41009c, 0x41009d, 0x410078, 0x410079, 0x41007a, 0x41007b,
34 0x410080, 0x410082, 0x410092, 0x410093, 0x41009a, 0x41009b, 0x41009e, 0x41009f,
35 0x410094, 0x410095, 0x410096, 0x410097, 0x4100a4, 0x4100a5, 0x4100a6, 0x4100a7,
36 0x4100cc, 0x4100cd, 0x4100ce, 0x4100cf, 0x4100dc, 0x4100dd, 0x4100de, 0x4100df,
37 0x41000c, 0x41000d, 0x410001, 0x41000f, 0x410014, 0x410015, 0x410016, 0x410017,
38 0x41001c, 0x41001d, 0x410030, 0x410031, 0x410002, 0x410003, 0x410011, 0x410013,
39 0x410018, 0x410019, 0x41001a, 0x41001b, 0x41001e, 0x41001f, 0x410032, 0x410033,
40 0x410004, 0x410005, 0x410006, 0x410007, 0x410000, 0x41000e, 0x410020, 0x410021,
41 0x410028, 0x410029, 0x41002c, 0x41002d, 0x410008, 0x410009, 0x41000a, 0x41000b,
42 0x410010, 0x410012, 0x410022, 0x410023, 0x41002a, 0x41002b, 0x41002e, 0x41002f,
43 0x410024, 0x410025, 0x410026, 0x410027, 0x410034, 0x410035, 0x410036, 0x410037,
44 0x41005c, 0x41005d, 0x41005e, 0x41005f, 0x41006c, 0x41006d, 0x41006e, 0x41006f,
45 0x410044, 0x410045, 0x410039, 0x410047, 0x41004c, 0x41004d, 0x41004e, 0x41004f,
46 0x410054, 0x410055, 0x410068, 0x410069, 0x41003a, 0x41003b, 0x410049, 0x41004b,
47 0x410050, 0x410051, 0x410052, 0x410053, 0x410056, 0x410057, 0x41006a, 0x41006b,
48 0x4100b4, 0x4100b5, 0x4100a9, 0x4100b7, 0x4100bc, 0x4100bd, 0x4100be, 0x4100bf,
49 0x4100c4, 0x4100c5, 0x4100d8, 0x4100d9, 0x4100aa, 0x4100ab, 0x4100b9, 0x4100bb,
50 0x4100c0, 0x4100c1, 0x4100c2, 0x4100c3, 0x4100c6, 0x4100c7, 0x4100da, 0x4100db,
51 0x4100ac, 0x4100ad, 0x4100ae, 0x4100af, 0x4100a8, 0x4100b6, 0x4100c8, 0x4100c9,
52 0x4100d0, 0x4100d1, 0x4100d4, 0x4100d5, 0x4100b0, 0x4100b1, 0x4100b2, 0x4100b3,
53 0x4100b8, 0x4100ba, 0x4100ca, 0x4100cb, 0x4100d2, 0x4100d3, 0x4100d6, 0x4100d7,
54 0x420044, 0x420045, 0x420039, 0x420047, 0x42004c, 0x42004d, 0x42004e, 0x42004f,
55 0x420054, 0x420055, 0x420068, 0x420069, 0x42003a, 0x42003b, 0x420049, 0x42004b,
56 0x420050, 0x420051, 0x420052, 0x420053, 0x420056, 0x420057, 0x42006a, 0x42006b,
57 0x420074, 0x420075, 0x420076, 0x420077, 0x420070, 0x42007e, 0x420090, 0x420091,
58 0x420098, 0x420099, 0x42009c, 0x42009d, 0x420078, 0x420079, 0x42007a, 0x42007b,
59 0x420080, 0x420082, 0x420092, 0x420093, 0x42009a, 0x42009b, 0x42009e, 0x42009f,
60 0x420094, 0x420095, 0x420096, 0x420097, 0x4200a4, 0x4200a5, 0x4200a6, 0x4200a7,
61 0x4200cc, 0x4200cd, 0x4200ce, 0x4200cf, 0x4200dc, 0x4200dd, 0x4200de, 0x4200df,
62 0x42003c, 0x42003d, 0x42003e, 0x42003f, 0x420038, 0x420046, 0x420058, 0x420059,
63 0x420060, 0x420061, 0x420064, 0x420065, 0x420040, 0x420041, 0x420042, 0x420043,
64 0x420048, 0x42004a, 0x42005a, 0x42005b, 0x420062, 0x420063, 0x420066, 0x420067,
65 0x42007c, 0x42007d, 0x420071, 0x42007f, 0x420084, 0x420085, 0x420086, 0x420087,
66 0x42008c, 0x42008d, 0x4200a0, 0x4200a1, 0x420072, 0x420073, 0x420081, 0x420083,
67 0x420088, 0x420089, 0x42008a, 0x42008b, 0x42008e, 0x42008f, 0x4200a2, 0x4200a3,
68 0x4200b4, 0x4200b5, 0x4200a9, 0x4200b7, 0x4200bc, 0x4200bd, 0x4200be, 0x4200bf,
69 0x4200c4, 0x4200c5, 0x4200d8, 0x4200d9, 0x4200aa, 0x4200ab, 0x4200b9, 0x4200bb,
70 0x4200c0, 0x4200c1, 0x4200c2, 0x4200c3, 0x4200c6, 0x4200c7, 0x4200da, 0x4200db,
71 0x4200ac, 0x4200ad, 0x4200ae, 0x4200af, 0x4200a8, 0x4200b6, 0x4200c8, 0x4200c9,
72 0x4200d0, 0x4200d1, 0x4200d4, 0x4200d5, 0x4200b0, 0x4200b1, 0x4200b2, 0x4200b3,
73 0x4200b8, 0x4200ba, 0x4200ca, 0x4200cb, 0x4200d2, 0x4200d3, 0x4200d6, 0x4200d7,
77 '01 :ADDGET:RND20:': rob_list,
78 '02 :GET:RND10: ': rob_list,
79 '03 :GET:RND5: ': rob_list,
80 '04 :ADD:RND10: ': rob_list,
81 '05 :ADD:RND20: ': rob_list,
82 '06 :ADDGET:RND50:': rob_list,
83 '07 :ADDGET:RND10:': rob_list,
84 '08 :ADDGET:RND5: ': rob_list,
85 '09 :GET:RND20: ': rob_list,
86 '10 :ADDGET:RND20:': rob_list,
87 '11 :GET:RND10: ': rob_list,
88 '12 :ADDGET:RND10:': rob_list
114 flags.Common.isOnline =
True
115 flags.Input.Files = []
116 flags.Input.Format = Format.BS
117 flags.Input.isMC =
False
118 flags.Trigger.doHLT =
True
119 flags.Trigger.EDMVersion = 3
120 flags.Trigger.Online.isPartition =
True
121 flags.Trigger.triggerMenuSetup =
'Dev_pp_run3_v1'
122 flags.Trigger.enableL1MuonPhase1 = options.EnableL1MuonPhase1
123 flags.Trigger.enableL1CaloPhase1 = options.EnableL1CaloPhase1
124 flags.Trigger.enableL1CaloLegacy = options.EnableL1CaloLegacy
125 flags.Trigger.forceEnableAllChains =
True
126 flags.Trigger.ROBPrefetchingOptions = []
128 flags.Trigger.doID =
False
129 flags.Trigger.doCalo =
False
130 flags.Trigger.doMuon =
False
132 flags.Trigger.L1.doMuon =
False
133 flags.Trigger.L1.doCalo =
False
134 flags.Trigger.L1.doTopo =
False
138 from HLTSeeding.HLTSeedingConfig
import HLTSeedingCfg
141 l1_decoder_alg = acc.getEventAlgo(
'HLTSeeding')
142 l1_decoder_alg.prescaler = CompFactory.PrescalingEmulationTool()
145 from TrigConfigSvc.TrigConfigSvcCfg
import generateL1Menu
149 acc.getService(
"HLTConfigSvc").HLTJsonFileName = _menu_file_name
155 hypo = CompFactory.MTCalibPebHypoAlg(name)
156 hypo.HypoInputDecisions =
'HLTSeedingSummary'
157 hypo.HypoOutputDecisions =
'MTCalibPebDecisions_'+name
162 hypo_tool = CompFactory.MTCalibPebHypoTool(name)
163 hypo_tool.UseRandomSeed = options.UseRandomSeed
164 hypo_tool.RandomAcceptRate = options.RandomAcceptRate
165 hypo_tool.BurnTimePerCycleMillisec = options.BurnTimePerCycleMillisec
166 hypo_tool.NumBurnCycles = options.NumBurnCycles
167 hypo_tool.BurnTimeRandomly = options.BurnTimeRandomly
168 hypo_tool.Crunch = options.Crunch
169 hypo_tool.CheckDataConsistency = options.CheckDataConsistency
170 hypo_tool.ROBAccessDict = options.ROBAccessDict
171 hypo_tool.TimeBetweenROBReqMillisec = options.TimeBetweenROBReqMillisec
172 hypo_tool.PEBROBList = options.PEBROBList
173 hypo_tool.PEBSubDetList = options.PEBSubDetList
174 hypo_tool.CreateRandomData = options.CreateRandomData
180 for chain_index
in range(1, 1+num_chains):
183 hypoTool.PEBROBList = rob_list
184 hypoTool.PEBSubDetList = []
186 if chain_index % 3 == 2:
187 hypoTool.PEBROBList = [0x420024, 0x420025, 0x420026, 0x420027]
188 hypoTool.PEBSubDetList = [0x53, 0x54]
190 elif chain_index % 3 == 0:
191 hypoTool.CreateRandomData = {
192 'ExampleCollection_{:d}_1'.
format(chain_index): 5,
193 'ExampleCollection_{:d}_2'.
format(chain_index): 3,
195 hypoTool.PEBROBList = [0x420034, 0x420035, 0x420036, 0x420037]
196 hypoTool.PEBROBList.extend([0x7c0001])
197 hypo_tools.append(hypoTool)
202 for tool
in hypo_tools:
204 hypo.HypoTools += [tool]
205 hypo_algs.append(hypo)
208 for tool
in hypo_tools:
209 hypo.HypoTools += [tool]
210 hypo_algs.append(hypo)
216 from TrigEDMConfig.DataScoutingInfo
import getFullHLTResultID
217 from TrigEDMConfig.TriggerEDMRun3
import EDMDetailsRun3
218 from TrigEDMConfig.TriggerEDM
import getRawTriggerEDMList
219 from TrigOutputHandling.TrigOutputHandlingConfig
import TriggerEDMSerialiserToolCfg, StreamTagMakerToolCfg, TriggerBitsMakerToolCfg
224 serialiser.addCollectionListToMainResult([
225 coll[0]
for coll
in getRawTriggerEDMList(flags, runVersion=3)
if 'BS' in coll[1]
and coll[2]==
'Steer' and not coll[0].
split(
'#')[0]
in EDMDetailsRun3
227 for hypo
in hypo_algs:
228 serialiser.addCollectionListToMainResult([
229 'xAOD::TrigCompositeContainer_v1#%s' % hypo.HypoOutputDecisions,
230 'xAOD::TrigCompositeAuxContainer_v2#%sAux.' % hypo.HypoOutputDecisions,
237 for hypo
in hypo_algs:
238 for hypo_tool
in hypo.HypoTools:
239 chain_names.append(hypo_tool.name)
240 if hasattr(hypo_tool,
'CreateRandomData'):
241 for coll_name
in hypo_tool.CreateRandomData.keys():
242 collections.add(coll_name)
243 for coll_name
in collections:
244 serialiser.addCollectionListToResults([
245 'xAOD::TrigCompositeContainer_v1#{:s}'.
format(coll_name),
246 'xAOD::TrigCompositeAuxContainer_v2#{:s}Aux.'.
format(coll_name)
250 streamPhysicsMain = {
254 'forceFullEventBuilding':
True
257 'name':
'ExamplePEB',
258 'type':
'calibration',
260 'forceFullEventBuilding':
False
262 streamExampleDataScoutingPEB = {
263 'name':
'ExampleDataScoutingPEB',
266 'forceFullEventBuilding':
False
268 chain_to_streams = {}
269 for counter, ch
in enumerate(chain_names, start=1):
271 chain_to_streams[ch] = [streamPhysicsMain]
272 elif counter % 3 == 2:
273 chain_to_streams[ch] = [streamExamplePEB]
274 elif counter % 3 == 0:
275 chain_to_streams[ch] = [streamExampleDataScoutingPEB]
282 from TrigConfigSvc.TrigConfigSvcCfg
import HLTConfigSvcCfg
284 hltConfigSvcCfg.getService(
"HLTConfigSvc").HLTJsonFileName = menu_json
285 acc.merge(hltConfigSvcCfg)
289 stmaker.ChainDecisions =
'HLTNav_Summary'
290 stmaker.PEBDecisionKeys = [
str(hypo.HypoOutputDecisions)
for hypo
in hypo_algs]
294 bitsmaker.ChainDecisions =
'HLTNav_Summary'
297 from TrigServices.TrigServicesConfig
import TrigServicesCfg
299 hltEventLoopMgr = trigServicesCfg.getPrimary()
300 hltEventLoopMgr.ResultMaker.StreamTagMaker = stmaker
301 hltEventLoopMgr.ResultMaker.MakerTools = [bitsmaker, serialiser]
302 acc.merge(trigServicesCfg)
308 summary = CompFactory.TriggerSummaryAlg(
'TriggerSummaryAlg')
309 summary.InputDecision =
'HLTSeedingSummary'
310 summary.FinalDecisions = [
str(hypo.HypoOutputDecisions)
for hypo
in hypo_algs]
312 summMaker = CompFactory.DecisionSummaryMakerAlg()
313 summMaker.FinalDecisionKeys = [
str(hypo.HypoOutputDecisions)
for hypo
in hypo_algs]
314 summMaker.FinalStepDecisions = {}
315 for hypo
in hypo_algs:
316 for tool
in hypo.HypoTools:
317 summMaker.FinalStepDecisions[tool.getName()] = [
str(hypo.HypoOutputDecisions)]
318 log.info(
'summMaker = %s', summMaker)
319 return [summary, summMaker]
322 def hlt_seq_cfg(flags, num_chains, concurrent=False, hypo_algs=None):
326 loadFromSG = [(
'xAOD::EventInfo',
'StoreGateSvc+EventInfo'),
327 (
'TrigConf::L1Menu',
'DetectorStore+L1TriggerMenu'),
328 (
'TrigConf::HLTMenu',
'DetectorStore+HLTTriggerMenu')]
330 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
334 acc.addSequence(
seqOR(
'hltTop'))
335 acc.addSequence(
parOR(
'hltHypoSeq'), parentName=
'hltTop')
336 acc.addSequence(
parOR(
'hltEndSeq'), parentName=
'hltTop')
343 acc.addEventAlgo(hypo_algs, sequenceName=
'hltHypoSeq')
344 acc.addEventAlgo(summary_algs, sequenceName=
'hltEndSeq')
345 acc.merge(hlt_result_ca)
352 from TrigConfHLTUtils.HLTUtils
import string2hash
353 from TrigConfigSvc.TrigConfigSvcCfg
import getHLTPrescalesSetFileName
355 (
"filetype",
"hltmenu"),
356 (
"name", _menu_name),
359 (
"sequencers", dict())
362 (
"filetype",
"hltprescale"),
363 (
"name", _menu_name),
364 (
"prescales", dict())
370 for stream
in chain_to_streams[chain]:
371 stream_name = stream[
'name']
372 chain_streams.append(stream_name)
374 if stream_name
not in menu_dict[
"streams"]:
375 menu_dict[
"streams"][stream_name] = dict([
376 (
"name", stream_name),
377 (
"type", stream[
'type']),
378 (
"obeyLB", stream[
'obeyLB']),
379 (
"forceFullEventBuilding", stream[
'forceFullEventBuilding'])
382 menu_dict[
"chains"][chain] = dict([
383 (
"counter", counter),
385 (
"legMultiplicities", [1]),
387 (
"l1thresholds", [
'FSNOSEED']),
389 (
"streams", chain_streams),
392 hlt_ps_dict[
"prescales"][chain] = dict([
393 (
"counter", counter),
401 log.info(
'Writing trigger menu to %s', _menu_file_name)
402 with open(_menu_file_name,
'w')
as json_file:
403 json.dump(menu_dict, json_file, indent=4, sort_keys=
False)
406 log.info(
'Writing HLT prescales to %s', hlt_ps_file_name)
407 with open(hlt_ps_file_name,
'w')
as json_file:
408 json.dump(hlt_ps_dict, json_file, indent=4, sort_keys=
False)
410 return _menu_file_name
414 if __name__ ==
'__main__':
415 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
422 acc.printConfig(withDetails=
True)
423 with open(
"MTCalibPebConfigTest.pkl",
"wb")
as file: