ATLAS Offline Software
Loading...
Searching...
No Matches
MistimedStreamPhI_runStandalone.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2#
3# ===============================================================
4# __mistimedAlg(flags)__
5# ===============================================================
6def mistimedAlg(flags, myflags):
7
8 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9
10 acc = ComponentAccumulator()
11
12 type_names = [
13 # ===== CPM ================================================================
14 "xAOD::CPMTowerContainer/CPMTowers",
15 "xAOD::CPMTowerAuxContainer/CPMTowersAux.",
16 # ===== PPM ============================================================
17 "xAOD::TriggerTowerContainer/xAODTriggerTowers",
18 "xAOD::TriggerTowerAuxContainer/xAODTriggerTowersAux.",
19 # ===== JETELEMENT =========================================================
20 "xAOD::JetElementContainer/JetElements",
21 "xAOD::JetElementAuxContainer/JetElementsAux.",
22 # ====== CTP ============================================================
23 "CTP_RDO/CTP_RDO"
24 ]
25
26 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
27 acc.merge(ByteStreamReadCfg(flags, type_names=type_names))
28
29 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import L1TriggerByteStreamDecoderCfg
30 acc.merge(L1TriggerByteStreamDecoderCfg(flags))
31
32 from TriggerJobOpts.TriggerRecoConfig import TriggerRecoCfg
33 acc.merge(TriggerRecoCfg(flags))
34
35 #Decoder eFex TOBs
36 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import eFexByteStreamToolCfg
37 acc.popToolsAndMerge(eFexByteStreamToolCfg(flags, 'eFexBSDecoder', xTOBs=True, multiSlice=True))
38
39 #Decoder gFex TOBs
40 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import gFexByteStreamToolCfg
41 acc.popToolsAndMerge(gFexByteStreamToolCfg(flags, 'gFexBSDecoder'))
42
43 #Decoder jFex TOBs
44 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexRoiByteStreamToolCfg
45 acc.popToolsAndMerge(jFexRoiByteStreamToolCfg(flags, 'jFexBSDecoder'))
46
47 #Decodes LATOME into SCell container
48 from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg
49 acc.merge(ReadSCellFromByteStreamCfg(flags))
50
51 #Decorator jFex towers
52 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
53 acc.merge(L1CalojFEXDecoratorCfg(flags,ExtraInfo = False))
54
55 #jFex emulated towers
56 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
57 acc.merge(jFexEmulatedTowersCfg(flags,"jFexEmulatedTowerMaker", "L1_jFexEmulatedTowers"))
58
59 #mistimed algorithm
60 from TrigT1CaloMonitoring.MistimedStreamMonitorAlgorithm import MistimedStreamMonitorConfig
61 MistimedStreamMonitorCfg = MistimedStreamMonitorConfig(flags, myflags)
62 acc.merge(MistimedStreamMonitorCfg)
63
64 MistimedStreamMonitorCfg.OutputLevel = 1 # 1/2 INFO/DEBUG
65
66 # Return our accumulator
67 return acc
68
69# ===============================================================
70# __main__
71# ===============================================================
72if __name__ == "__main__": # typically not needed in top level script
73
74 from AthenaConfiguration.AllConfigFlags import initConfigFlags
75 flags = initConfigFlags()
76 flags.Input.Files = [] # so that when no files given we can detect that
77
78 flags.Trigger.triggerConfig='DB'
79 flags.Exec.MaxEvents = -1
80 flags.GeoModel.AtlasVersion = 'ATLAS-R3S-2021-03-02-00'
81 flags.Trigger.EDMVersion = 3
82 flags.Trigger.L1.doCTP = True
83 flags.Trigger.enableL1CaloPhase1 = True
84 flags.IOVDb.GlobalTag = 'CONDBR2-BLKPA-2023-01'
85
86 import argparse
87 parser = flags.getArgumentParser()
88 parser.add_argument('--systemVersion', default='phaseI', help="legacy or phaseI (default: %(default)s)")
89 parser.add_argument('--streamName', default='physics_Mistimed', help="stream name (default: %(default)s)")
90 parser.add_argument('--dataTag', default='data25_13p6TeV', help="data tag (default: %(default)s)")
91
92 parser.add_argument('--efexItems', nargs='+', default=['L1_eEM26M'], help="eFex items in BC0 (default: %(default)s)")
93 parser.add_argument('--jfexItems', nargs='+', default=['L1_jJ160', 'L1_jJ500'], help="jFex items in BC0 (default: %(default)s)")
94 parser.add_argument('--gfexItems', nargs='+', default=['L1_gJ400p0ETA25', 'L1_gLJ140p0ETA25'], help="gFex items in BC0 (default: %(default)s)")
95
96 requiredNamed = parser.add_argument_group('Required named arguments')
97 requiredNamed.add_argument('--runNumber', default=None, help="8 digit run number (default: %(default)s)", required=True)
98 args,unknown_args = flags.fillFromArgs(parser=parser,return_unknown=True)
99
100 import glob
101 runNumber = args.runNumber
102 systemVersion = args.systemVersion
103 streamName = args.streamName
104 dataTag = args.dataTag
105
106 # if no explicit file names is given, build it from arguments
107 if len(flags.Input.Files)==0:
108 flags.Input.Files = glob.glob("/eos/atlas/atlastier0/rucio/"+dataTag+"/"+streamName+"/"+runNumber+"/"+dataTag+"."+runNumber+"."+streamName+".merge.RAW/"+dataTag+"."+runNumber+"."+streamName+".merge.RAW._lb*._SFO-ALL._0001.1")
109
110 # check that we have proper file name
111 if len(flags.Input.Files)==0:
112 exit('Error: input files do not exist')
113
114 flags.Trigger.DecisionMakerValidation.Execute=False
115 flags.Trigger.DecisionMakerValidation.ErrorMode=False
116
117 flags.Output.HISTFileName = "MistimedPhI_"+runNumber+"_"+systemVersion+".root"
118 flags.lock()
119
120 # create basic infrastructure
121 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
122 sysAcc = MainServicesCfg(flags)
123
124 # set heavy ions tag depending on data tag
125 ionsTag=True if dataTag.endswith("_hi") else False
126
127 # bundle all additional algorithm flags
128 myflags = {}
129 # MW: continue to maintain two independent flags (though atm only one active at a time)
130 if (systemVersion=="legacy"):
131 myflags["legacy"] = True
132 myflags["phaseI"] = False
133 else:
134 myflags["legacy"] = False
135 myflags["phaseI"] = True
136
137 myflags["ions"] = ionsTag
138
139 # trigger selection
140 myflags["efex"] = args.efexItems
141 myflags["jfex"] = args.jfexItems
142 myflags["gfex"] = args.gfexItems
143
144 # add the algorithm to the configuration
145 sysAcc.merge( mistimedAlg(flags, myflags) )
146
147 # debug printout
148 sysAcc.printConfig(withDetails=True, summariseProps=True)
149
150 # print all settings used by this script
151 import os.path
152 for k,v in sorted(vars(args).items()):
153 print("{0}: {1}: {2}".format(os.path.basename(__file__),k,v))
154
155 # run the job
156 status = sysAcc.run()
157
158 # report the execution status (0 ok, else error)
159 import sys
160 sys.exit(not status.isSuccess())
void print(char *figname, TCanvas *c1)