ATLAS Offline Software
Loading...
Searching...
No Matches
python.dbgAnalysis Namespace Reference

Functions

 dbgPreRun (inputFileList, outputFileList, argdict=None)
 dbgPostRun (inputFile, outputFile, argdict=None, isSplitStream=False)
 TriggerDBInfo (dbalias=None, smk=None)
 getAsetupString (release)
 getHLTConfigKeys (runNumber=None, args=None)
 getHLTConfigFromArgs (args)
 getHltDecision (accepted, rejected, outputFile)

Variables

 msg = logging.getLogger("PyJobTransforms." + __name__)

Function Documentation

◆ dbgPostRun()

python.dbgAnalysis.dbgPostRun ( inputFile,
outputFile,
argdict = None,
isSplitStream = False )

Definition at line 96 of file dbgAnalysis.py.

96def dbgPostRun(inputFile, outputFile, argdict = None, isSplitStream=False):
97 msg.info('Running debug_stream analysis PostRun operations on files :{0} '.format(inputFile))
98 msg.info('Running debug_stream analysis PostRun, histogram output in :{0} '.format(outputFile))
99
100 # Open root output file
101 hfile = TFile(outputFile, 'UPDATE')
102
103 # Inicialize dbgEventInfo, this is the main event analysis class
104 if isSplitStream:
105 eventInfo = dbgEventInfo('_Pos_Split', inputFile)
106 else:
107 eventInfo = dbgEventInfo('_Pos', inputFile)
108 data = []
109 l1Info = []
110 hltInfo = []
111 configKeys = None
112
113 bsfile = eformat.istream(inputFile)
114 n = 0
115 isFirstEvent = True
116
117 for event in bsfile:
118 # If fist event get l1 and hlt counter and chain info from DB
119 if isFirstEvent:
120 configKeys = getHLTConfigKeys(event.run_no(), argdict)
121
122 if not argdict.get('useDB'):
123 msg.debug("Reading chains and items from database is skipped (missing --useDB=True)")
124 l1Info, hltInfo = ([], [])
125 else:
126 l1Info, hltInfo = TriggerDBInfo(configKeys.get('DB'), configKeys.get('SMK'))
127
128 isFirstEvent = False
129
130 # Log the details of first 5 events
131 n += 1
132 if n < 5:
133 data = [event.run_no(), event.lumi_block(), event.global_id(),
134 event.lvl1_id(), event.bc_time_seconds(), event.bc_time_nanoseconds()]
135 msg.info('Event details :{0}'.format(data))
136
137 # Run debug event analysis and fill output TTree
138 eventInfo.eventCount(event)
139 eventInfo.eventInfo(event, l1Info, hltInfo)
140 eventInfo.eventConfig(configKeys, event)
141 eventInfo.fillTree()
142
143 # Close output TFile
144 hfile.Write()
145 hfile.Close()
146 msg.info('Finished running debug_stream analysis PostRun operations')
147
148

◆ dbgPreRun()

python.dbgAnalysis.dbgPreRun ( inputFileList,
outputFileList,
argdict = None )

Definition at line 23 of file dbgAnalysis.py.

23def dbgPreRun(inputFileList, outputFileList, argdict = None):
24 msg.info('Running debug_stream analysis PreRun operations on files :{0} '.format(inputFileList))
25 msg.info('Running debug_stream analysis PreRun, histogram output in :{0} '.format(outputFileList))
26
27 # Open root output file
28 outFile = outputFileList[0]
29 hfile = TFile(outFile, 'RECREATE')
30
31 maxEvents = argdict.get('maxEvents')
32 maxEvents = maxEvents.value.get('first') if maxEvents else -1
33
34 skipEvents = argdict.get('skipEvents')
35 skipEvents = skipEvents.value.get('first') if skipEvents else 0
36
37 # Initialize dbgEventInfo, this is the main event analysis class
38 eventInfo = dbgEventInfo('_Pre', inputFileList.value[0])
39 data = []
40 l1Info = []
41 hltInfo = []
42 configKeys = None
43 for inputFile in inputFileList.value:
44 bsfile = eformat.istream(inputFile)
45 n = 0
46 isFirstEvent = True
47
48 bsfile = bsfile[skipEvents:skipEvents+maxEvents] if maxEvents > -1 else bsfile[skipEvents:]
49
50 for event in bsfile:
51
52 if isFirstEvent:
53 runNumber = event.run_no() if event.run_no() else int(inputFile.split(".")[1])
54 configKeys = getHLTConfigKeys(runNumber, argdict)
55
56 if not argdict.get('useDB'):
57 msg.debug("Reading chains and items from database is skipped (missing --useDB=True)")
58 l1Info, hltInfo = ([], [])
59 else:
60 l1Info, hltInfo = TriggerDBInfo(configKeys.get('DB'), configKeys.get('SMK'))
61
62 isFirstEvent = False
63
64 # Log the details of first 5 events
65 n += 1
66 if n < 5:
67 data = [event.run_no(), event.lumi_block(), event.global_id(),
68 event.lvl1_id(), event.bc_time_seconds(), event.bc_time_nanoseconds()]
69 msg.info('Event details :%s', data)
70
71 # Run debug event analysis and fill output TTree
72 eventInfo.eventCount(event)
73 eventInfo.eventInfo(event, l1Info, hltInfo)
74 eventInfo.eventConfig(configKeys, event)
75 eventInfo.fillTree()
76
77 # Close output TFile
78 hfile.Write()
79 hfile.Close()
80
81 msg.info('Finished running debug_stream analysis PreRun operations')
82
83 dbAlias = configKeys.get('DB')
84
85 # Check release format, if relInfo is 'unknown' then print error
86 if 'REL' in configKeys:
87 # Returns the local asetupString from runs in input files and to be used by asetup
88 return getAsetupString(configKeys['REL']), dbAlias
89 else:
90 msg.warn("Release not found in configuration - asetup string won't be created")
91
92 # Without release and project asetup string is not available
93 return None, dbAlias
94
95

◆ getAsetupString()

python.dbgAnalysis.getAsetupString ( release)

Definition at line 197 of file dbgAnalysis.py.

197def getAsetupString(release):
198
199 asetupString = release
200
201 # If TestArea is for tzero (tzero/software/patches/AtlasP1HLT-RELEASE),
202 # then returns tzero/software/patches/AtlasP1HLT-release where release is
203 # the parameter given to this function getAsetupString(release)
204 if os.environ['TestArea']:
205 TestArea = os.environ['TestArea']
206 if TestArea.find('tzero/software/patches/AthenaP1-') > 0:
207 testarea = TestArea.split('-')
208 TestArea = testarea[0] + '-' + release
209 asetupString += ' --testarea ' + TestArea
210
211 return asetupString
212
213

◆ getHLTConfigFromArgs()

python.dbgAnalysis.getHLTConfigFromArgs ( args)
Prepare dictionary with data extracted from arguments if available. Contains:
    DB - database alias
    SMK - Super Master Key
    HLTPSC - HLT Prescale key

Definition at line 244 of file dbgAnalysis.py.

244def getHLTConfigFromArgs(args):
245 '''
246 Prepare dictionary with data extracted from arguments if available. Contains:
247 DB - database alias
248 SMK - Super Master Key
249 HLTPSC - HLT Prescale key
250 '''
251
252 configKeys = {}
253
254 try:
255 configKeys['DB'] = args['DBserver'].value
256 configKeys['SMK'] = int(args['DBsmkey'].value)
257 configKeys['HLTPSK'] = int(args['DBhltpskey'].value)
258
259 msg.info("Found config keys in args %s", configKeys)
260
261 except KeyError:
262 msg.warn("Config keys not found in argdict")
263 return {}
264
265 return configKeys
266

◆ getHLTConfigKeys()

python.dbgAnalysis.getHLTConfigKeys ( runNumber = None,
args = None )
Returns map with config keys:
    DB - database alias
    REL - release
    SMK - Super Master Key
    HLTPSK - HLT Prescale key

Definition at line 214 of file dbgAnalysis.py.

214def getHLTConfigKeys(runNumber = None, args = None):
215 '''
216 Returns map with config keys:
217 DB - database alias
218 REL - release
219 SMK - Super Master Key
220 HLTPSK - HLT Prescale key
221 '''
222
223 dbconn = TriggerCoolUtil.GetConnection("CONDBR2")
224 configKeys = TriggerCoolUtil.getHLTConfigKeys(dbconn, [[runNumber, runNumber]])
225
226 if configKeys and runNumber in configKeys.keys():
227 configKeys = configKeys[runNumber]
228
229 configKeys['HLTPSK'] = TriggerCoolUtil.getHLTPrescaleKeys(dbconn, [[runNumber, runNumber]])[runNumber]['HLTPSK2']
230
231 msg.info("Found config keys %s", configKeys)
232 else:
233 msg.info("Config keys not found in COOL")
234 configKeys = getHLTConfigFromArgs(args)
235
236 if 'DB' in configKeys:
237 if 'DBserver' in args and configKeys['DB'] != args['DBserver'].value:
238 msg.warn("Different database read from config keys ({0}) and from args ({1})".format(configKeys['DB'], args['DBserver'].value))
239 msg.warn("Database {0} from config keys will be used.".format(configKeys['DB']))
240
241 return configKeys
242
243

◆ getHltDecision()

python.dbgAnalysis.getHltDecision ( accepted,
rejected,
outputFile )
   Add HLT_accepted_events and HLT_rejected_events to outputFile 

Definition at line 267 of file dbgAnalysis.py.

267def getHltDecision(accepted, rejected, outputFile):
268 '''
269 Add HLT_accepted_events and HLT_rejected_events to outputFile
270 '''
271
272 # Open root output file
273 hfile = TFile(outputFile, 'UPDATE')
274 # Define a new histogram called HLT_rejected_events
275 HLT_rejected_events = TH1F("HLT_rejected_events", "HLT_rejected_events", 3, 0.0, 3.0)
276 # Define a new histogram called HLT_accepted_events
277 HLT_accepted_events = TH1F("HLT_accepted_events", "HLT_accepted_events", 3, 0.0, 3.0)
278
279 # Fill the histogram if events are rejected by the HLT
280 # HLT_rejected_events are assigned the value 1
281 # If all events are accepted the Histogram is empty
282 HLT_rejected_events.Fill(1, rejected)
283
284 # Fill the histogram if events are accepted by the HLT
285 # HLT_accepted_events are assigned the value 1
286 # If all events are rejected the Histogram is empty
287 HLT_accepted_events.Fill(1, accepted)
288
289 # Close output TFile
290 hfile.Write("", TFile.kOverwrite)
291 hfile.Close()
292 return msg.info("Added HLT_accepted_events and HLT_rejeceted_events to %s", outputFile)
293

◆ TriggerDBInfo()

python.dbgAnalysis.TriggerDBInfo ( dbalias = None,
smk = None )

Definition at line 149 of file dbgAnalysis.py.

149def TriggerDBInfo(dbalias = None, smk = None):
150 l1Info = []
151 hltInfo = []
152
153 if not dbalias or not smk:
154 msg.warn("Reading chains and items from database is skipped (config keys are not available)")
155 return (l1Info, hltInfo)
156
157 # L1 DB Info
158 try:
159 l1Cfg = L1MenuAccess(dbalias = dbalias, smkey = smk)
160
161 # Create map id to item and then fill the array
162 # that on i spot has item with i ctpid
163 l1Items = l1Cfg.items()
164 l1ItemsMap = {}
165 for item in l1Items:
166 ctpid = l1Items[item]['ctpid']
167 l1ItemsMap[ctpid] = item
168
169 l1Info = (max(l1ItemsMap.keys()) + 1) * [0]
170
171 for item in l1ItemsMap:
172 l1Info[item] = l1ItemsMap[item]
173
174 except RuntimeError:
175 msg.info("Database for L1 Menu not available")
176
177 # HLT DB Info
178 try:
179 hltCfg = HLTMenuAccess(dbalias = dbalias, smkey = smk)
180 hltChains = hltCfg.chains()
181 hltChainsMap = {}
182 for chain in hltChains:
183 counter = hltChains[chain]['counter']
184 hltChainsMap[counter] = chain
185
186 hltInfo = (max(hltChainsMap.keys()) + 1) * [0]
187
188 for chain in hltChainsMap:
189 hltInfo[chain] = hltChainsMap[chain]
190 except RuntimeError:
191 msg.info("Database for HLT Menu not available")
192
193
194 return (l1Info, hltInfo)
195
196
#define max(a, b)
Definition cfImp.cxx:41

Variable Documentation

◆ msg

python.dbgAnalysis.msg = logging.getLogger("PyJobTransforms." + __name__)

Definition at line 20 of file dbgAnalysis.py.