24 TD_shiftUTC = datetime.timedelta(hours = 2)
27 STR_p5 =
'cmsusr0.cern.ch'
28 STR_wwwWBM =
'http://cmswbm/cmsdb/servlet'
30 STR_wwwDBSData =
'dbs_discovery/getData'
31 LSTR_dbsInstances = [
'cms_dbs_caf_analysis_01',
32 'cms_dbs_prod_global' ]
33 STR_headDatasets =
'datasets'
34 STR_headFiles =
'available data files'
35 DICT_tagsRunRegistry = {}
36 DICT_tagsRunRegistry[
'GLOBAL_NAME'] =
'global name '
37 DICT_tagsRunRegistry[
'STATUS'] =
'status '
38 DICT_tagsRunRegistry[
'IN_DBS'] =
'in DBS '
39 DICT_tagsRunRegistry[
'SUBSYSTEMS'] =
'subsystems '
40 DICT_tagsRunRegistry[
'EVENTS'] =
'# of triggers '
41 DICT_tagsRunRegistry[
'START_TIME'] =
'start time (local) '
42 DICT_tagsRunRegistry[
'END_TIME'] =
'end time (local) '
43 DICT_tagsRunRegistry[
'L1KEY'] =
'L1 key '
44 DICT_tagsRunRegistry[
'HLTKEY'] =
'HLT key '
45 DICT_tagsRunRegistry[
'L1SOURCES'] =
'L1 sources '
46 DICT_tagsRunRegistry[
'RUN_RATE'] =
'event rate (Hz) '
47 DICT_tagsRunRegistry[
'STOP_REASON'] =
'stop reason '
48 DICT_tagsRunRegistry[
'SHIFTER'] =
'DQM shifter '
49 DICT_tagsRunRegistry[
'CREATE_USER'] =
'entry created by '
50 DICT_tagsRunRegistry[
'CREATE_TIME'] =
'entry creation time '
51 DICT_tagsRunRegistry[
'ONLINE_COMMENT'] =
'DQM online shifter\'s comment '
52 DICT_tagsRunRegistry[
'OFFLINE_COMMENT'] =
'DQM offline shifter\'s comment '
53 DICT_tagsRunRegistry[
'OFFLINE_COMMENT'] =
'DQM offline shifter\'s comment '
54 DICT_tagsRunRegistry[
'BFIELD'] =
'magnetic field at run creation time'
55 DICT_tagsRunRegistry[
'BFIELD_COMMENT'] =
'comment on magnetic field '
56 STR_htlConfig =
'HLT Config ID'
57 STR_runStart =
'START_TIME'
58 STR_runEnd =
'STOP_TIME'
59 DICT_keysRunSummary = {}
60 DICT_keysRunSummary[STR_runStart] =
'start time '
61 DICT_keysRunSummary[STR_runEnd] =
'end time '
62 DICT_keysRunSummary[
'BField'] =
'magnetic field '
63 DICT_keysRunSummary[
'HLT Version'] =
'HLT version '
64 DICT_keysRunSummary[
'L1 Rate'] =
'L1 rate '
65 DICT_keysRunSummary[
'HLT Rate'] =
'HLT rate '
66 DICT_keysRunSummary[
'L1 Triggers'] =
'L1 triggers '
67 DICT_keysRunSummary[
'HLT Triggers'] =
'HLT triggers '
68 DICT_keysRunSummary[
'LHC Fill'] =
'LHC fill '
69 DICT_keysRunSummary[
'LHC Energy'] =
'LHC energy '
70 DICT_keysRunSummary[
'Initial Lumi'] =
'initial luminosity '
71 DICT_keysRunSummary[
'Ending Lumi'] =
'ending luminosity '
72 DICT_keysRunSummary[
'Run Lumi'] =
'run luminosity '
73 DICT_keysRunSummary[
'Run Live Lumi'] =
'run live luminosity'
74 DICT_keysRunSummaryTrigger = {}
75 DICT_keysRunSummaryTrigger[
'L1 Key'] =
'L1 key '
76 DICT_keysRunSummaryTrigger[
'HLT Key'] =
'HLT key '
77 DICT_keysRunSummaryTrigger[STR_htlConfig] =
'HLT config ID '
84 global Dict_runRegistry
85 global Float_magneticField
86 global Dict_wbmRunSummary
88 global DictDict_dbsDatasets
89 global DictDict_dbsEvents
90 global Dict_dbsDatasets
91 global Dict_maxLenDbsDatasets
95 Float_magneticField = -999.0
96 Dict_wbmRunSummary = {}
98 DictDict_dbsDatasets = {}
99 DictDict_dbsEvents = {}
100 Dict_dbsDatasets = {}
101 Dict_maxLenDbsDatasets = {}
109 """ Func_GetHtmlTags(str_text):
110 Gets HTML tags from a string
114 lstr_split = str_text.split(
'</')
115 for str_split
in lstr_split[1:]:
116 str_key = str_split.split(
'>')[0]
117 dict_tags[str_key] = str_key
in dict_tags
119 lstr_split = str_text.split(
'/>')
120 for str_split
in lstr_split[:-1]:
121 str_key = str_split.split(
'<')[-1].
split()[0]
122 dict_tags[str_key] = str_key
in dict_tags
129 """ Func_GetHtmlTagValue(str_tag, str_text):
130 Gets the value of the n-th oocurence a given HTML tag from a string
132 if int_index > str_text.count(
'<'+str_tag):
134 str_1 = str_text.split(
'<'+str_tag)[int_index]
136 if str_1.split(
'>')[0][-1] ==
'/':
138 return str_1.split(
'>',1)[1].
split(
'</'+str_tag+
'>')[0]
144 """ Func_GetHtmlTagValues(str_text):
145 Gets HTML tag values from a string
147 lstr_split = str_text.split(
'</')
149 for str_split
in lstr_split[:-1]:
150 lstr_values.append(str_split.split(
'>')[-1])
157 """ Func_GetHtmlTagValueAttr(str_value, str_text):
158 Gets the (last) attributes of a given HTML tag value from a string
160 return str_text.split(
'\">'+str_value+
'<')[0].
split(
'=\"')[-1]
166 """ Func_MakeShellWord(str_python)
167 Adds shell escape charakters to Python strings
175 """ Func_GetWBMInfo(str_name, str_path)
176 Logs in on cmsusr0, retrieves WBM information and stores it locally
178 pid, fd = os.forkpty()
180 os.execv(
'/usr/bin/ssh', [
'/usr/bin/ssh',
'-l', Str_userID, STR_p5] + [
'rm',
'-f',
'\"'+str_name +
'\" && ' +
'wget',
'\"'+str_path+
'/'+str_name+
'\"'])
185 os.write(fd, Str_passwd)
199 """ Func_CopyWBMInfo(str_name)
200 Logs in on cmsusr0 and copies file from there
202 pid, fd = os.forkpty()
204 os.execv(
'/usr/bin/scp', [
'/usr/bin/scp', Str_userID+
'@'+STR_p5+
':~/'+str_name,
'.'])
209 os.write(fd, Str_passwd)
223 """ Func_FillInfoRunRegistry():
224 Retrieves run info from RunRegistry and fills it into containers
226 str_runRegistry = urllib.urlencode({
'format':
'xml',
'intpl':
'xml',
'qtype':
'RUN_NUMBER',
'sortname':
'RUN_NUMBER'})
227 file_runRegistry = urllib.urlopen(
"http://pccmsdqm04.cern.ch/runregistry/runregisterdata", str_runRegistry)
228 str_runRegistryLong =
''
229 for str_runRegistry
in file_runRegistry.readlines():
230 str_runRegistryLong += str_runRegistry.splitlines()[0]
231 bool_foundRun =
False
232 str_runRunRegistry =
''
233 for int_runIndex
in range(1,int(str_runRegistryLong.split(
'<RUNS')[1].
split(
'>')[0].
split(
'total=\"')[1].
split(
'\"')[0])):
238 if not bool_foundRun:
239 print '> getRunInfo.py > run %s not found in run registry' %(Str_run)
242 for str_tagRunRegistry
in dict_tagsRunRegistry.keys():
243 if dict_tagsRunRegistry[str_tagRunRegistry] ==
False:
244 Dict_runRegistry[str_tagRunRegistry] =
Func_GetHtmlTagValue(str_tagRunRegistry, str_runRunRegistry)
245 if Dict_runRegistry[
'SUBSYSTEMS'].
find(STR_SiStrip) < 0:
246 print '> getRunInfo.py > SiStrip was not in this run'
254 """ Func_FillInfoRunSummary():
255 Retrieves run info from RunSummary and fills it into containers
257 str_nameRunSummary =
'RunSummary?RUN=' + Str_run
260 file_wbmRunSummary =
file(str_nameRunSummary,
'r')
266 for str_wbmRunSummary
in file_wbmRunSummary.readlines():
267 if str_wbmRunSummary.find(
'<TABLE CLASS="params"><THEAD><TR>') >= 0:
269 if str_wbmRunSummary.find(
'</TBODY></TABLE>') >= 0:
272 if str_wbmRunSummary.startswith(
'<TH>'):
274 if str_wbmRunSummary.find(STR_runStart) >= 0:
275 int_startItem = int_tableHeader
276 if str_wbmRunSummary.find(STR_runEnd) >= 0:
277 int_endItem = int_tableHeader
278 if str_wbmRunSummary.startswith(
'<TD'):
280 if int_tableItem == int_startItem:
281 Dict_wbmRunSummary[STR_runStart] = str_wbmRunSummary.split(
' </TD>')[0].
split(
'<TD>')[-1]
282 if int_tableItem == int_endItem:
283 Dict_wbmRunSummary[STR_runEnd] = str_wbmRunSummary.split(
' </TD>')[0].
split(
'<TD>')[-1]
285 for str_keyRunSummary
in DICT_keysRunSummary.keys():
286 if str_wbmRunSummary.find(str_keyRunSummary) >= 0:
287 Dict_wbmRunSummary[str_keyRunSummary] = str_wbmRunSummary.split(
'</TD></TR>')[0].
split(
'>')[-1]
289 for str_summaryKeysTrigger
in DICT_keysRunSummaryTrigger.keys():
290 if str_wbmRunSummary.find(str_summaryKeysTrigger) >= 0:
291 Dict_wbmRunSummary[str_summaryKeysTrigger] = str_wbmRunSummary.split(
'</A></TD></TR>')[0].
split(
'>')[-1]
292 if str_summaryKeysTrigger ==
'HLT Key':
293 Dict_wbmRunSummary[STR_htlConfig] = str_wbmRunSummary.split(
'HLTConfiguration?KEY=')[1].
split(
'>')[0]
294 file_wbmRunSummary.close()
295 os.remove(str_nameRunSummary)
301 """ Func_FillInfoMagnetHistory():
302 Retrieves run info from MagnetHistory and fills it into containers
304 str_nameMagnetHistory =
'MagnetHistory?TIME_BEGIN=' + str_timeStart +
'&TIME_END=' + str_timeEnd
307 file_wbmMagnetHistory =
file(str_nameMagnetHistory,
'r')
308 float_avMagMeasure = Float_magneticField
309 for str_wbmMagnetHistory
in file_wbmMagnetHistory.readlines():
310 if str_wbmMagnetHistory.find(
'BFIELD, Tesla') >= 0:
311 float_avMagMeasure = float(str_wbmMagnetHistory.split(
'</A>')[0].
split(
'>')[-1])
312 file_wbmMagnetHistory.close()
313 os.remove(str_nameMagnetHistory)
314 return float_avMagMeasure
320 """ Func_FillInfoHlt():
321 Retrieves run info from Hlt and fills it into containers
323 str_nameHlt =
'HLTConfiguration?KEY=' + Dict_wbmRunSummary[STR_htlConfig]
326 file_wbmHlt =
file(str_nameHlt,
'r')
327 bool_foundPaths = False
328 bool_foundPath =
False
329 for str_wbmHlt
in file_wbmHlt.readlines():
330 if str_wbmHlt.find(
'<H3>Paths</H3>') >= 0:
331 bool_foundPaths =
True
332 if bool_foundPaths
and str_wbmHlt.find(
'<HR><H3>') >= 0:
333 bool_foundPaths =
False
334 if bool_foundPaths
and str_wbmHlt.startswith(
'<TR><TD ALIGN=RIGHT>'):
335 Lstr_hltPaths.append(str_wbmHlt.split(
'</TD>')[1].
split(
'<TD>')[-1])
337 os.remove(str_nameHlt)
338 return (len(Lstr_hltPaths)>0)
344 """ Func_FillInfoDBS(str_dbsInstance)
345 Retrieves run info from DBS and fills it into containers
347 str_dbsRuns = urllib.urlencode({
'ajax':
'0',
'_idx':
'0',
'pagerStep':
'0',
'userMode':
'user',
'release':
'Any',
'tier':
'Any',
'dbsInst':str_dbsInstance,
'primType':
'Any',
'primD':
'Any',
'minRun':Str_run,
'maxRun':Str_run})
348 file_dbsRuns = urllib.urlopen(
"https://cmsweb.cern.ch/dbs_discovery/getRunsFromRange", str_dbsRuns)
350 lstr_dbsDatasets = []
351 dict_dbsDatasets = {}
353 for str_dbsRuns
in file_dbsRuns.readlines():
354 lstr_dbsRuns.append(str_dbsRuns)
355 if str_dbsRuns.find(STR_wwwDBSData) >= 0:
356 if str_dbsRuns.split(
'&proc=')[1].
find(
'&') >= 0:
357 lstr_dbsDatasets.append(str_dbsRuns.split(
'&proc=')[1].
split(
'&')[0])
359 lstr_dbsDatasets.append(str_dbsRuns.split(
'&proc=')[1])
360 int_maxLenDbsDatasets = 0
361 for str_dbsDataset
in lstr_dbsDatasets:
362 str_dbsLFN = urllib.urlencode({
'dbsInst':str_dbsInstance,
'blockName':
'*',
'dataset':str_dbsDataset,
'userMode':
'user',
'run':Str_run})
363 file_dbsLFN = urllib.urlopen(
"https://cmsweb.cern.ch/dbs_discovery/getLFNlist", str_dbsLFN)
366 for str_dbsLFN
in file_dbsLFN.readlines():
367 lstr_dbsLFN.append(str_dbsLFN)
368 if str_dbsLFN.find(
'contians') >= 0
and str_dbsLFN.find(
'file(s)'):
369 dict_dbsDatasets[str_dbsDataset] = str_dbsLFN.split()[1]
370 if str_dbsLFN.startswith(
'/store/data/'):
372 dict_dbsEvents[str_dbsDataset] = str(int_events)
373 if len(str_dbsDataset) > int_maxLenDbsDatasets:
374 int_maxLenDbsDatasets = len(str_dbsDataset)
375 DictDict_dbsDatasets[str_dbsInstance] = dict_dbsDatasets
376 DictDict_dbsEvents[str_dbsInstance] = dict_dbsEvents
377 Dict_dbsDatasets[str_dbsInstance] = lstr_dbsDatasets
378 Dict_maxLenDbsDatasets[str_dbsInstance] = int_maxLenDbsDatasets
383 print '> getRunInfo.py > information on run \t*** %s ***' %(Str_run)
388 Str_userID = getpass.getuser()
389 Str_passwd = getpass.getpass(
'> getRunInfo.py > '+Str_userID+
'@'+STR_p5+
'\'s password: ') +
'\n'
399 print '> getRunInfo.py > * information from run registry *'
401 for str_htmlTag
in DICT_tagsRunRegistry.keys():
402 if str_htmlTag
in Dict_runRegistry:
403 print '> getRunInfo.py > %s: %s' %(DICT_tagsRunRegistry[str_htmlTag],Dict_runRegistry[str_htmlTag])
412 print '> getRunInfo.py > * information from run summary *'
414 for str_key
in DICT_keysRunSummary.keys():
415 if str_key
in Dict_wbmRunSummary:
416 print '> getRunInfo.py > %s: %s' %(DICT_keysRunSummary[str_key],Dict_wbmRunSummary[str_key])
417 for str_key
in DICT_keysRunSummaryTrigger.keys():
418 if str_key
in Dict_wbmRunSummary:
419 print '> getRunInfo.py > %s: %s' %(DICT_keysRunSummaryTrigger[str_key],Dict_wbmRunSummary[str_key])
423 if STR_runStart
in Dict_wbmRunSummary
and STR_runEnd
in Dict_wbmRunSummary:
428 if Float_magneticField >= 0.0:
430 print '> getRunInfo.py > * information from magnet history *'
432 print '> getRunInfo.py > (average) magnetic field: %s T' %(str(Float_magneticField))
437 if STR_htlConfig
in Dict_wbmRunSummary:
444 print '> getRunInfo.py > * information from HLT configuration %s *' %(Dict_wbmRunSummary[STR_htlConfig])
446 print '> getRunInfo.py > HLT paths included:'
447 print '> -----------------------------------'
448 for str_hltPaths
in Lstr_hltPaths:
449 if str_hltPaths.find(
'CandHLTTrackerCosmics') >= 0
or str_hltPaths.find(
'HLT_TrackerCosmics') >= 0
or str_hltPaths.find(
'HLTTrackerCosmics') >= 0:
450 print ' %s \t<====== FOR SURE!' %(str_hltPaths)
451 elif str_hltPaths.find(
'Tracker') >= 0:
452 print ' %s \t<====== maybe?' %(str_hltPaths)
454 print ' %s' %(str_hltPaths)
458 for str_dbsInstance
in LSTR_dbsInstances:
464 print '> getRunInfo.py > * information from DBS *'
465 for str_dbsInstance
in LSTR_dbsInstances:
467 print '> getRunInfo.py > DBS instance: %s' %(str_dbsInstance)
468 if str_dbsInstance == LSTR_dbsInstances[0]:
469 print ' (This is the instance used at CAF!)'
470 str_print =
'> getRunInfo.py > ' + STR_headDatasets
471 for int_i
in range(Dict_maxLenDbsDatasets[str_dbsInstance]-len(STR_headDatasets)):
474 int_length = len(str_print)
475 print '%s%s' %(str_print,STR_headFiles)
477 for int_i
in range(int_length-16+len(STR_headFiles)/2+INT_offset+8):
480 for str_dbsDataset
in Dict_dbsDatasets[str_dbsInstance]:
481 str_print =
' ' + str_dbsDataset
482 for int_i
in range(Dict_maxLenDbsDatasets[str_dbsInstance]-len(str_dbsDataset)):
485 for int_i
in range(len(STR_headFiles)/2-len(DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset])):
487 str_print += DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset] +
' ('
488 for int_i
in range(INT_offset-len(DictDict_dbsEvents[str_dbsInstance][str_dbsDataset])):
490 print '%s%s events)' %(str_print,DictDict_dbsEvents[str_dbsInstance][str_dbsDataset])
def Func_GetHtmlTagValue
Func_GetHtmlTagValue(str_tag, str_text)
def Func_GetHtmlTagValueAttr
Func_GetHtmlTagValueAttr(str_tag, str_text)
def Func_FillInfoDBS
Func_FillInfoDBS(str_dbsInstance)
def Func_FillInfoRunSummary
Func_FillInfoRunSummary()
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
def Func_MakeShellWord
Func_MakeShellWord(str_python)
def Func_FillInfoHlt
Func_FillInfoHlt()
def Func_GetWBMInfo
Func_GetWBMInfo(str_name, str_path)
def Func_CopyWBMInfo
Func_CopyWBMInfo(str_name)
def Func_GetHtmlTagValues
Func_GetHtmlTagValues(str_text)
def Func_FillInfoRunRegistry
Func_FillInfoRunRegistry()
def Func_GetHtmlTags
FUNCTIONS.
def Func_FillInfoMagnetHistory
Func_FillInfoMagnetHistory()