CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
getRunInfo.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 #
4 # $Id: getRunInfo.py,v 1.6 2008/11/27 17:18:38 vadler Exp $
5 #
6 
7 ## CMSSW/DQM/SiStripMonitorClient/scripts/getRunInfo.py
8 #
9 # For a given run, this script collects information useful for SiStrip DQM
10 # from web sources.
11 # Questions and comments to: volker.adler@cern.ch
12 
13 
14 import sys
15 import os
16 import string
17 import urllib
18 import time
19 import datetime
20 import getpass
21 
22 # Constants
23 
24 # numbers
25 TD_shiftUTC = datetime.timedelta(hours = 2) # positive for timezones with later time than UTC
26 INT_offset = 8
27 # strings
28 STR_p5 = 'cmsusr0.cern.ch'
29 STR_wwwWBM = 'http://cmswbm/cmsdb/servlet'
30 STR_SiStrip = 'SIST'
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 '
79 
80 # Globals
81 
82 global Str_passwd
83 global Str_userID
84 global Str_run
85 global Dict_runRegistry
86 global Float_magneticField
87 global Dict_wbmRunSummary
88 global Lstr_hltPaths
89 global DictDict_dbsDatasets
90 global DictDict_dbsEvents
91 global Dict_dbsDatasets
92 global Dict_maxLenDbsDatasets
93 # initialise
94 Str_run = sys.argv[1]
95 Dict_runRegistry = {}
96 Float_magneticField = -999.0
97 Dict_wbmRunSummary = {}
98 Lstr_hltPaths = []
99 DictDict_dbsDatasets = {}
100 DictDict_dbsEvents = {}
101 Dict_dbsDatasets = {}
102 Dict_maxLenDbsDatasets = {}
103 
104 ## FUNCTIONS
105 
106 ## Func_GetHtmlTags(str_text)
107 #
108 # Gets HTML tags from a string
109 def Func_GetHtmlTags(str_text):
110  """ Func_GetHtmlTags(str_text):
111  Gets HTML tags from a string
112  """
113  dict_tags = {}
114  # first look for tags w/ values
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
119  # second look for tags w/o values
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
124  return dict_tags
125 
126 ## Func_GetHtmlTagValue(str_tag, str_text)
127 #
128 # Gets the value of the n-th oocurence a given HTML tag from a string
129 def Func_GetHtmlTagValue(str_tag, str_text, int_index = 1):
130  """ Func_GetHtmlTagValue(str_tag, str_text):
131  Gets the value of the n-th oocurence a given HTML tag from a string
132  """
133  if int_index > str_text.count('<'+str_tag):
134  return ''
135  str_1 = str_text.split('<'+str_tag)[int_index]
136  if str_1[0] != '>':
137  if str_1.split('>')[0][-1] == '/':
138  return ''
139  return str_1.split('>',1)[1].split('</'+str_tag+'>')[0]
140 
141 ## Func_GetHtmlTagValues(str_text)
142 #
143 # Gets HTML tag values from a string
144 def Func_GetHtmlTagValues(str_text):
145  """ Func_GetHtmlTagValues(str_text):
146  Gets HTML tag values from a string
147  """
148  lstr_split = str_text.split('</')
149  lstr_values = []
150  for str_split in lstr_split[:-1]:
151  lstr_values.append(str_split.split('>')[-1])
152  return lstr_values
153 
154 ## Func_GetHtmlTagValueAttr(str_tag, str_text)
155 #
156 # Gets the (last) attribute of a given HTML tag value from a string
157 def Func_GetHtmlTagValueAttr(str_value, str_text):
158  """ Func_GetHtmlTagValueAttr(str_value, str_text):
159  Gets the (last) attributes of a given HTML tag value from a string
160  """
161  return str_text.split('\">'+str_value+'<')[0].split('=\"')[-1]
162 
163 ## Func_MakeShellWord(str_python)
164 #
165 # Adds shell escape charakters to Python strings
166 def Func_MakeShellWord(str_python):
167  """ Func_MakeShellWord(str_python)
168  Adds shell escape charakters to Python strings
169  """
170  return str_python.replace('?','\\?').replace('=','\\=').replace(' ','\\ ').replace('&','\\&').replace(':','\\:')
171 
172 ## Func_GetWBMInfo(str_name, str_path)
173 #
174 # Logs in on cmsusr0, retrieves WBM information and stores it locally
175 def Func_GetWBMInfo(str_name, str_path):
176  """ Func_GetWBMInfo(str_name, str_path)
177  Logs in on cmsusr0, retrieves WBM information and stores it locally
178  """
179  pid, fd = os.forkpty()
180  if pid == 0:
181  os.execv('/usr/bin/ssh', ['/usr/bin/ssh', '-l', Str_userID, STR_p5] + ['rm', '-f', '\"'+str_name + '\" && ' + 'wget', '\"'+str_path+'/'+str_name+'\"'])
182  else:
183  time.sleep(1)
184  os.read(fd, 1000)
185  time.sleep(1)
186  os.write(fd, Str_passwd)
187  time.sleep(1)
188  c = 0
189  s = os.read(fd, 1)
190  while s:
191  c += 1
192  s = os.read(fd, 1)
193  if c >= 2:
194  break
195 
196 ## Func_CopyWBMInfo(str_name)
197 #
198 # Logs in on cmsusr0 and copies file from there
199 def Func_CopyWBMInfo(str_name):
200  """ Func_CopyWBMInfo(str_name)
201  Logs in on cmsusr0 and copies file from there
202  """
203  pid, fd = os.forkpty()
204  if pid == 0:
205  os.execv('/usr/bin/scp', ['/usr/bin/scp', Str_userID+'@'+STR_p5+':~/'+str_name, '.'])
206  else:
207  time.sleep(1)
208  os.read(fd, 1000)
209  time.sleep(1)
210  os.write(fd, Str_passwd)
211  time.sleep(1)
212  c = 0
213  s = os.read(fd, 1)
214  while s:
215  c += 1
216  s = os.read(fd, 1)
217  if c >= 163:
218  break
219 
220 ## Func_FillInfoRunRegistry()
221 #
222 # Retrieves run info from RunRegistry and fills it into containers
224  """ Func_FillInfoRunRegistry():
225  Retrieves run info from RunRegistry and fills it into containers
226  """
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])):
235  str_runRunRegistry = Func_GetHtmlTagValue('RUN', str_runRegistryLong, int_runIndex)
236  if Func_GetHtmlTagValue('NUMBER', str_runRunRegistry) == Str_run:
237  bool_foundRun = True
238  break
239  if not bool_foundRun:
240  print '> getRunInfo.py > run %s not found in run registry' %(Str_run)
241  return False
242  dict_tagsRunRegistry = Func_GetHtmlTags(str_runRunRegistry)
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'
248  return False
249  return True
250 
251 ## Func_FillInfoRunSummary()
252 #
253 # Retrieves run info from RunSummary and fills it into containers
255  """ Func_FillInfoRunSummary():
256  Retrieves run info from RunSummary and fills it into containers
257  """
258  str_nameRunSummary = 'RunSummary?RUN=' + Str_run
259  Func_GetWBMInfo(str_nameRunSummary, STR_wwwWBM)
260  Func_CopyWBMInfo(Func_MakeShellWord(str_nameRunSummary))
261  file_wbmRunSummary = file(str_nameRunSummary, 'r')
262  bool_table = False
263  int_tableHeader = 0
264  int_tableItem = 0
265  int_startItem = 0
266  int_endItem = 0
267  for str_wbmRunSummary in file_wbmRunSummary.readlines():
268  if str_wbmRunSummary.find('<TABLE CLASS="params"><THEAD><TR>') >= 0:
269  bool_table = True
270  if str_wbmRunSummary.find('</TBODY></TABLE>') >= 0:
271  bool_table = False
272  if bool_table:
273  if str_wbmRunSummary.startswith('<TH>'):
274  int_tableHeader += 1
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'):
280  int_tableItem += 1
281  if int_tableItem == int_startItem:
282  Dict_wbmRunSummary[STR_runStart] = str_wbmRunSummary.split('&nbsp;</TD>')[0].split('<TD>')[-1]
283  if int_tableItem == int_endItem:
284  Dict_wbmRunSummary[STR_runEnd] = str_wbmRunSummary.split('&nbsp;</TD>')[0].split('<TD>')[-1]
285  continue
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]
289  break
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)
297 
298 ## Func_FillInfoMagnetHistory()
299 #
300 # Retrieves run info from MagnetHistory and fills it into containers
301 def Func_FillInfoMagnetHistory(str_timeStart, str_timeEnd):
302  """ Func_FillInfoMagnetHistory():
303  Retrieves run info from MagnetHistory and fills it into containers
304  """
305  str_nameMagnetHistory = 'MagnetHistory?TIME_BEGIN=' + str_timeStart + '&TIME_END=' + str_timeEnd
306  Func_GetWBMInfo(str_nameMagnetHistory, STR_wwwWBM)
307  Func_CopyWBMInfo(Func_MakeShellWord(str_nameMagnetHistory))
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
316 
317 ## Func_FillInfoHlt()
318 #
319 # Retrieves run info from Hlt and fills it into containers
321  """ Func_FillInfoHlt():
322  Retrieves run info from Hlt and fills it into containers
323  """
324  str_nameHlt = 'HLTConfiguration?KEY=' + Dict_wbmRunSummary[STR_htlConfig]
325  Func_GetWBMInfo(str_nameHlt, STR_wwwWBM)
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])
337  file_wbmHlt.close()
338  os.remove(str_nameHlt)
339  return (len(Lstr_hltPaths)>0)
340 
341 ## Func_FillInfoDBS(str_dbsInstance)
342 #
343 # Retrieves run info from DBS and fills it into containers
344 def Func_FillInfoDBS(str_dbsInstance):
345  """ Func_FillInfoDBS(str_dbsInstance)
346  Retrieves run info from DBS and fills it into containers
347  """
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)
350  lstr_dbsRuns = []
351  lstr_dbsDatasets = []
352  dict_dbsDatasets = {}
353  dict_dbsEvents = {}
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('&amp;proc=')[1].find('&amp;') >= 0:
358  lstr_dbsDatasets.append(str_dbsRuns.split('&amp;proc=')[1].split('&amp;')[0])
359  else:
360  lstr_dbsDatasets.append(str_dbsRuns.split('&amp;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)
365  lstr_dbsLFN = []
366  int_events = 0
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)'): # FIXME: be careful, this typo might be corrected sometimes on the web page...
370  dict_dbsDatasets[str_dbsDataset] = str_dbsLFN.split()[1]
371  if str_dbsLFN.startswith('/store/data/'):
372  int_events += int(Func_GetHtmlTagValue('td' ,lstr_dbsLFN[len(lstr_dbsLFN)-4]))
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
380 
381 ## MAIN PROGRAM
382 
383 print
384 print '> getRunInfo.py > information on run \t*** %s ***' %(Str_run)
385 print
386 
387 # enter online password
388 
389 Str_userID = getpass.getuser()
390 Str_passwd = getpass.getpass('> getRunInfo.py > '+Str_userID+'@'+STR_p5+'\'s password: ') + '\n'
391 
392 # get run RunRegistry entries
393 
394 bool_runRegistry = Func_FillInfoRunRegistry()
395 
396 # print run RunRegistry info
397 
398 if bool_runRegistry:
399  print
400  print '> getRunInfo.py > * information from run registry *'
401  print
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])
405 
406 # get run RunSummary entries
407 
409 
410 # print run RunSummary info
411 
412 print
413 print '> getRunInfo.py > * information from run summary *'
414 print
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])
421 
422 # get run MagnetHistory info
423 
424 if Dict_wbmRunSummary.has_key(STR_runStart) and Dict_wbmRunSummary.has_key(STR_runEnd): # need run summary start and end time here
425  Float_magneticField = Func_FillInfoMagnetHistory(Dict_wbmRunSummary[STR_runStart],Dict_wbmRunSummary[STR_runEnd])
426 
427 # print run MagnetHistory info
428 
429 if Float_magneticField >= 0.0:
430  print
431  print '> getRunInfo.py > * information from magnet history *'
432  print
433  print '> getRunInfo.py > (average) magnetic field: %s T' %(str(Float_magneticField))
434 
435 # get run HLT info
436 
437 bool_hlt = False
438 if Dict_wbmRunSummary.has_key(STR_htlConfig): # need HLT config ID from run summary here
439  bool_hlt = Func_FillInfoHlt()
440 
441 # print run HLT info
442 
443 if bool_hlt:
444  print
445  print '> getRunInfo.py > * information from HLT configuration %s *' %(Dict_wbmRunSummary[STR_htlConfig])
446  print
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)
454  else:
455  print ' %s' %(str_hltPaths)
456 
457 # get run DBS entries
458 
459 for str_dbsInstance in LSTR_dbsInstances:
460  Func_FillInfoDBS(str_dbsInstance)
461 
462 # print run DBS info
463 
464 print
465 print '> getRunInfo.py > * information from DBS *'
466 for str_dbsInstance in LSTR_dbsInstances:
467  print
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)):
473  str_print += ' '
474  str_print += ' '
475  int_length = len(str_print)
476  print '%s%s' %(str_print,STR_headFiles)
477  str_print = ' '
478  for int_i in range(int_length-16+len(STR_headFiles)/2+INT_offset+8):
479  str_print += '-'
480  print str_print
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)):
484  str_print += ' '
485  str_print += ' '
486  for int_i in range(len(STR_headFiles)/2-len(DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset])):
487  str_print += ' '
488  str_print += DictDict_dbsDatasets[str_dbsInstance][str_dbsDataset] + ' ('
489  for int_i in range(INT_offset-len(DictDict_dbsEvents[str_dbsInstance][str_dbsDataset])):
490  str_print += ' '
491  print '%s%s events)' %(str_print,DictDict_dbsEvents[str_dbsInstance][str_dbsDataset])
492 
493 print
def Func_GetHtmlTagValue
Func_GetHtmlTagValue(str_tag, str_text)
Definition: getRunInfo.py:129
def Func_GetHtmlTagValueAttr
Func_GetHtmlTagValueAttr(str_tag, str_text)
Definition: getRunInfo.py:157
def Func_FillInfoDBS
Func_FillInfoDBS(str_dbsInstance)
Definition: getRunInfo.py:344
def Func_FillInfoRunSummary
Func_FillInfoRunSummary()
Definition: getRunInfo.py:254
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
def Func_MakeShellWord
Func_MakeShellWord(str_python)
Definition: getRunInfo.py:166
def Func_FillInfoHlt
Func_FillInfoHlt()
Definition: getRunInfo.py:320
def Func_GetWBMInfo
Func_GetWBMInfo(str_name, str_path)
Definition: getRunInfo.py:175
def Func_CopyWBMInfo
Func_CopyWBMInfo(str_name)
Definition: getRunInfo.py:199
def Func_GetHtmlTagValues
Func_GetHtmlTagValues(str_text)
Definition: getRunInfo.py:144
def Func_FillInfoRunRegistry
Func_FillInfoRunRegistry()
Definition: getRunInfo.py:223
def Func_GetHtmlTags
FUNCTIONS.
Definition: getRunInfo.py:109
def Func_FillInfoMagnetHistory
Func_FillInfoMagnetHistory()
Definition: getRunInfo.py:301
double split
Definition: MVATrainer.cc:139