25 TD_shiftUTC = datetime.timedelta(hours = 2)
28 STR_p5 =
'cmsusr0.cern.ch'
29 STR_wwwWBM =
'http://cmswbm/cmsdb/servlet'
31 STR_wwwDBSData =
'dbs_discovery/getData'
32 LSTR_dbsInstances = [
'cms_dbs_caf_analysis_01',
33 'cms_dbs_prod_global' ]
34 STR_headDatasets =
'datasets'
35 STR_headFiles =
'available data files'
36 DICT_tagsRunRegistry = {}
37 DICT_tagsRunRegistry[
'GLOBAL_NAME'] =
'global name '
38 DICT_tagsRunRegistry[
'STATUS'] =
'status '
39 DICT_tagsRunRegistry[
'IN_DBS'] =
'in DBS '
40 DICT_tagsRunRegistry[
'SUBSYSTEMS'] =
'subsystems '
41 DICT_tagsRunRegistry[
'EVENTS'] =
'# of triggers '
42 DICT_tagsRunRegistry[
'START_TIME'] =
'start time (local) '
43 DICT_tagsRunRegistry[
'END_TIME'] =
'end time (local) '
44 DICT_tagsRunRegistry[
'L1KEY'] =
'L1 key '
45 DICT_tagsRunRegistry[
'HLTKEY'] =
'HLT key '
46 DICT_tagsRunRegistry[
'L1SOURCES'] =
'L1 sources '
47 DICT_tagsRunRegistry[
'RUN_RATE'] =
'event rate (Hz) '
48 DICT_tagsRunRegistry[
'STOP_REASON'] =
'stop reason '
49 DICT_tagsRunRegistry[
'SHIFTER'] =
'DQM shifter '
50 DICT_tagsRunRegistry[
'CREATE_USER'] =
'entry created by '
51 DICT_tagsRunRegistry[
'CREATE_TIME'] =
'entry creation time '
52 DICT_tagsRunRegistry[
'ONLINE_COMMENT'] =
'DQM online shifter\'s comment '
53 DICT_tagsRunRegistry[
'OFFLINE_COMMENT'] =
'DQM offline shifter\'s comment '
54 DICT_tagsRunRegistry[
'OFFLINE_COMMENT'] =
'DQM offline shifter\'s comment '
55 DICT_tagsRunRegistry[
'BFIELD'] =
'magnetic field at run creation time'
56 DICT_tagsRunRegistry[
'BFIELD_COMMENT'] =
'comment on magnetic field '
57 STR_htlConfig =
'HLT Config ID'
58 STR_runStart =
'START_TIME'
59 STR_runEnd =
'STOP_TIME'
60 DICT_keysRunSummary = {}
61 DICT_keysRunSummary[STR_runStart] =
'start time '
62 DICT_keysRunSummary[STR_runEnd] =
'end time '
63 DICT_keysRunSummary[
'BField'] =
'magnetic field '
64 DICT_keysRunSummary[
'HLT Version'] =
'HLT version '
65 DICT_keysRunSummary[
'L1 Rate'] =
'L1 rate '
66 DICT_keysRunSummary[
'HLT Rate'] =
'HLT rate '
67 DICT_keysRunSummary[
'L1 Triggers'] =
'L1 triggers '
68 DICT_keysRunSummary[
'HLT Triggers'] =
'HLT triggers '
69 DICT_keysRunSummary[
'LHC Fill'] =
'LHC fill '
70 DICT_keysRunSummary[
'LHC Energy'] =
'LHC energy '
71 DICT_keysRunSummary[
'Initial Lumi'] =
'initial luminosity '
72 DICT_keysRunSummary[
'Ending Lumi'] =
'ending luminosity '
73 DICT_keysRunSummary[
'Run Lumi'] =
'run luminosity '
74 DICT_keysRunSummary[
'Run Live Lumi'] =
'run live luminosity'
75 DICT_keysRunSummaryTrigger = {}
76 DICT_keysRunSummaryTrigger[
'L1 Key'] =
'L1 key '
77 DICT_keysRunSummaryTrigger[
'HLT Key'] =
'HLT key '
78 DICT_keysRunSummaryTrigger[STR_htlConfig] =
'HLT config ID '
85 global Dict_runRegistry
86 global Float_magneticField
87 global Dict_wbmRunSummary
89 global DictDict_dbsDatasets
90 global DictDict_dbsEvents
91 global Dict_dbsDatasets
92 global Dict_maxLenDbsDatasets
96 Float_magneticField = -999.0
97 Dict_wbmRunSummary = {}
99 DictDict_dbsDatasets = {}
100 DictDict_dbsEvents = {}
101 Dict_dbsDatasets = {}
102 Dict_maxLenDbsDatasets = {}
110 """ Func_GetHtmlTags(str_text):
111 Gets HTML tags from a string
115 lstr_split = str_text.split(
'</')
116 for str_split
in lstr_split[1:]:
117 str_key = str_split.split(
'>')[0]
118 dict_tags[str_key] = str_key
in dict_tags
120 lstr_split = str_text.split(
'/>')
121 for str_split
in lstr_split[:-1]:
122 str_key = str_split.split(
'<')[-1].
split()[0]
123 dict_tags[str_key] = str_key
in dict_tags
130 """ Func_GetHtmlTagValue(str_tag, str_text):
131 Gets the value of the n-th oocurence a given HTML tag from a string
133 if int_index > str_text.count(
'<'+str_tag):
135 str_1 = str_text.split(
'<'+str_tag)[int_index]
137 if str_1.split(
'>')[0][-1] ==
'/':
139 return str_1.split(
'>',1)[1].
split(
'</'+str_tag+
'>')[0]
145 """ Func_GetHtmlTagValues(str_text):
146 Gets HTML tag values from a string
148 lstr_split = str_text.split(
'</')
150 for str_split
in lstr_split[:-1]:
151 lstr_values.append(str_split.split(
'>')[-1])
158 """ Func_GetHtmlTagValueAttr(str_value, str_text):
159 Gets the (last) attributes of a given HTML tag value from a string
161 return str_text.split(
'\">'+str_value+
'<')[0].
split(
'=\"')[-1]
167 """ Func_MakeShellWord(str_python)
168 Adds shell escape charakters to Python strings
176 """ Func_GetWBMInfo(str_name, str_path)
177 Logs in on cmsusr0, retrieves WBM information and stores it locally
179 pid, fd = os.forkpty()
181 os.execv(
'/usr/bin/ssh', [
'/usr/bin/ssh',
'-l', Str_userID, STR_p5] + [
'rm',
'-f',
'\"'+str_name +
'\" && ' +
'wget',
'\"'+str_path+
'/'+str_name+
'\"'])
186 os.write(fd, Str_passwd)
200 """ Func_CopyWBMInfo(str_name)
201 Logs in on cmsusr0 and copies file from there
203 pid, fd = os.forkpty()
205 os.execv(
'/usr/bin/scp', [
'/usr/bin/scp', Str_userID+
'@'+STR_p5+
':~/'+str_name,
'.'])
210 os.write(fd, Str_passwd)
224 """ Func_FillInfoRunRegistry():
225 Retrieves run info from RunRegistry and fills it into containers
227 str_runRegistry = urllib.urlencode({
'format':
'xml',
'intpl':
'xml',
'qtype':
'RUN_NUMBER',
'sortname':
'RUN_NUMBER'})
228 file_runRegistry = urllib.urlopen(
"http://pccmsdqm04.cern.ch/runregistry/runregisterdata", str_runRegistry)
229 str_runRegistryLong =
''
230 for str_runRegistry
in file_runRegistry.readlines():
231 str_runRegistryLong += str_runRegistry.splitlines()[0]
232 bool_foundRun =
False
233 str_runRunRegistry =
''
234 for int_runIndex
in range(1,int(str_runRegistryLong.split(
'<RUNS')[1].
split(
'>')[0].
split(
'total=\"')[1].
split(
'\"')[0])):
239 if not bool_foundRun:
240 print '> getRunInfo.py > run %s not found in run registry' %(Str_run)
243 for str_tagRunRegistry
in dict_tagsRunRegistry.keys():
244 if dict_tagsRunRegistry[str_tagRunRegistry] ==
False:
245 Dict_runRegistry[str_tagRunRegistry] =
Func_GetHtmlTagValue(str_tagRunRegistry, str_runRunRegistry)
246 if Dict_runRegistry[
'SUBSYSTEMS'].
find(STR_SiStrip) < 0:
247 print '> getRunInfo.py > SiStrip was not in this run'
255 """ Func_FillInfoRunSummary():
256 Retrieves run info from RunSummary and fills it into containers
258 str_nameRunSummary =
'RunSummary?RUN=' + Str_run
261 file_wbmRunSummary =
file(str_nameRunSummary,
'r')
267 for str_wbmRunSummary
in file_wbmRunSummary.readlines():
268 if str_wbmRunSummary.find(
'<TABLE CLASS="params"><THEAD><TR>') >= 0:
270 if str_wbmRunSummary.find(
'</TBODY></TABLE>') >= 0:
273 if str_wbmRunSummary.startswith(
'<TH>'):
275 if str_wbmRunSummary.find(STR_runStart) >= 0:
276 int_startItem = int_tableHeader
277 if str_wbmRunSummary.find(STR_runEnd) >= 0:
278 int_endItem = int_tableHeader
279 if str_wbmRunSummary.startswith(
'<TD'):
281 if int_tableItem == int_startItem:
282 Dict_wbmRunSummary[STR_runStart] = str_wbmRunSummary.split(
' </TD>')[0].
split(
'<TD>')[-1]
283 if int_tableItem == int_endItem:
284 Dict_wbmRunSummary[STR_runEnd] = str_wbmRunSummary.split(
' </TD>')[0].
split(
'<TD>')[-1]
286 for str_keyRunSummary
in DICT_keysRunSummary.keys():
287 if str_wbmRunSummary.find(str_keyRunSummary) >= 0:
288 Dict_wbmRunSummary[str_keyRunSummary] = str_wbmRunSummary.split(
'</TD></TR>')[0].
split(
'>')[-1]
290 for str_summaryKeysTrigger
in DICT_keysRunSummaryTrigger.keys():
291 if str_wbmRunSummary.find(str_summaryKeysTrigger) >= 0:
292 Dict_wbmRunSummary[str_summaryKeysTrigger] = str_wbmRunSummary.split(
'</A></TD></TR>')[0].
split(
'>')[-1]
293 if str_summaryKeysTrigger ==
'HLT Key':
294 Dict_wbmRunSummary[STR_htlConfig] = str_wbmRunSummary.split(
'HLTConfiguration?KEY=')[1].
split(
'>')[0]
295 file_wbmRunSummary.close()
296 os.remove(str_nameRunSummary)
302 """ Func_FillInfoMagnetHistory():
303 Retrieves run info from MagnetHistory and fills it into containers
305 str_nameMagnetHistory =
'MagnetHistory?TIME_BEGIN=' + str_timeStart +
'&TIME_END=' + str_timeEnd
308 file_wbmMagnetHistory =
file(str_nameMagnetHistory,
'r')
309 float_avMagMeasure = Float_magneticField
310 for str_wbmMagnetHistory
in file_wbmMagnetHistory.readlines():
311 if str_wbmMagnetHistory.find(
'BFIELD, Tesla') >= 0:
312 float_avMagMeasure = float(str_wbmMagnetHistory.split(
'</A>')[0].
split(
'>')[-1])
313 file_wbmMagnetHistory.close()
314 os.remove(str_nameMagnetHistory)
315 return float_avMagMeasure
321 """ Func_FillInfoHlt():
322 Retrieves run info from Hlt and fills it into containers
324 str_nameHlt =
'HLTConfiguration?KEY=' + Dict_wbmRunSummary[STR_htlConfig]
327 file_wbmHlt =
file(str_nameHlt,
'r')
328 bool_foundPaths = False
329 bool_foundPath =
False
330 for str_wbmHlt
in file_wbmHlt.readlines():
331 if str_wbmHlt.find(
'<H3>Paths</H3>') >= 0:
332 bool_foundPaths =
True
333 if bool_foundPaths
and str_wbmHlt.find(
'<HR><H3>') >= 0:
334 bool_foundPaths =
False
335 if bool_foundPaths
and str_wbmHlt.startswith(
'<TR><TD ALIGN=RIGHT>'):
336 Lstr_hltPaths.append(str_wbmHlt.split(
'</TD>')[1].
split(
'<TD>')[-1])
338 os.remove(str_nameHlt)
339 return (len(Lstr_hltPaths)>0)
345 """ Func_FillInfoDBS(str_dbsInstance)
346 Retrieves run info from DBS and fills it into containers
348 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})
349 file_dbsRuns = urllib.urlopen(
"https://cmsweb.cern.ch/dbs_discovery/getRunsFromRange", str_dbsRuns)
351 lstr_dbsDatasets = []
352 dict_dbsDatasets = {}
354 for str_dbsRuns
in file_dbsRuns.readlines():
355 lstr_dbsRuns.append(str_dbsRuns)
356 if str_dbsRuns.find(STR_wwwDBSData) >= 0:
357 if str_dbsRuns.split(
'&proc=')[1].
find(
'&') >= 0:
358 lstr_dbsDatasets.append(str_dbsRuns.split(
'&proc=')[1].
split(
'&')[0])
360 lstr_dbsDatasets.append(str_dbsRuns.split(
'&proc=')[1])
361 int_maxLenDbsDatasets = 0
362 for str_dbsDataset
in lstr_dbsDatasets:
363 str_dbsLFN = urllib.urlencode({
'dbsInst':str_dbsInstance,
'blockName':
'*',
'dataset':str_dbsDataset,
'userMode':
'user',
'run':Str_run})
364 file_dbsLFN = urllib.urlopen(
"https://cmsweb.cern.ch/dbs_discovery/getLFNlist", str_dbsLFN)
367 for str_dbsLFN
in file_dbsLFN.readlines():
368 lstr_dbsLFN.append(str_dbsLFN)
369 if str_dbsLFN.find(
'contians') >= 0
and str_dbsLFN.find(
'file(s)'):
370 dict_dbsDatasets[str_dbsDataset] = str_dbsLFN.split()[1]
371 if str_dbsLFN.startswith(
'/store/data/'):
373 dict_dbsEvents[str_dbsDataset] = str(int_events)
374 if len(str_dbsDataset) > int_maxLenDbsDatasets:
375 int_maxLenDbsDatasets = len(str_dbsDataset)
376 DictDict_dbsDatasets[str_dbsInstance] = dict_dbsDatasets
377 DictDict_dbsEvents[str_dbsInstance] = dict_dbsEvents
378 Dict_dbsDatasets[str_dbsInstance] = lstr_dbsDatasets
379 Dict_maxLenDbsDatasets[str_dbsInstance] = int_maxLenDbsDatasets
384 print '> getRunInfo.py > information on run \t*** %s ***' %(Str_run)
389 Str_userID = getpass.getuser()
390 Str_passwd = getpass.getpass(
'> getRunInfo.py > '+Str_userID+
'@'+STR_p5+
'\'s password: ') +
'\n'
400 print '> getRunInfo.py > * information from run registry *'
402 for str_htmlTag
in DICT_tagsRunRegistry.keys():
403 if str_htmlTag
in Dict_runRegistry:
404 print '> getRunInfo.py > %s: %s' %(DICT_tagsRunRegistry[str_htmlTag],Dict_runRegistry[str_htmlTag])
413 print '> getRunInfo.py > * information from run summary *'
415 for str_key
in DICT_keysRunSummary.keys():
416 if str_key
in Dict_wbmRunSummary:
417 print '> getRunInfo.py > %s: %s' %(DICT_keysRunSummary[str_key],Dict_wbmRunSummary[str_key])
418 for str_key
in DICT_keysRunSummaryTrigger.keys():
419 if str_key
in Dict_wbmRunSummary:
420 print '> getRunInfo.py > %s: %s' %(DICT_keysRunSummaryTrigger[str_key],Dict_wbmRunSummary[str_key])
424 if Dict_wbmRunSummary.has_key(STR_runStart)
and Dict_wbmRunSummary.has_key(STR_runEnd):
429 if Float_magneticField >= 0.0:
431 print '> getRunInfo.py > * information from magnet history *'
433 print '> getRunInfo.py > (average) magnetic field: %s T' %(str(Float_magneticField))
438 if Dict_wbmRunSummary.has_key(STR_htlConfig):
445 print '> getRunInfo.py > * information from HLT configuration %s *' %(Dict_wbmRunSummary[STR_htlConfig])
447 print '> getRunInfo.py > HLT paths included:'
448 print '> -----------------------------------'
449 for str_hltPaths
in Lstr_hltPaths:
450 if str_hltPaths.find(
'CandHLTTrackerCosmics') >= 0
or str_hltPaths.find(
'HLT_TrackerCosmics') >= 0
or str_hltPaths.find(
'HLTTrackerCosmics') >= 0:
451 print ' %s \t<====== FOR SURE!' %(str_hltPaths)
452 elif str_hltPaths.find(
'Tracker') >= 0:
453 print ' %s \t<====== maybe?' %(str_hltPaths)
455 print ' %s' %(str_hltPaths)
459 for str_dbsInstance
in LSTR_dbsInstances:
465 print '> getRunInfo.py > * information from DBS *'
466 for str_dbsInstance
in LSTR_dbsInstances:
468 print '> getRunInfo.py > DBS instance: %s' %(str_dbsInstance)
469 if str_dbsInstance == LSTR_dbsInstances[0]:
470 print ' (This is the instance used at CAF!)'
471 str_print =
'> getRunInfo.py > ' + STR_headDatasets
472 for int_i
in range(Dict_maxLenDbsDatasets[str_dbsInstance]-len(STR_headDatasets)):
475 int_length = len(str_print)
476 print '%s%s' %(str_print,STR_headFiles)
478 for int_i
in range(int_length-16+len(STR_headFiles)/2+INT_offset+8):
481 for str_dbsDataset
in Dict_dbsDatasets[str_dbsInstance]:
482 str_print =
' ' + str_dbsDataset
483 for int_i
in range(Dict_maxLenDbsDatasets[str_dbsInstance]-len(str_dbsDataset)):
486 for int_i
in range(len(STR_headFiles)/2-len(DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset])):
488 str_print += DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset] +
' ('
489 for int_i
in range(INT_offset-len(DictDict_dbsEvents[str_dbsInstance][str_dbsDataset])):
491 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()