13 prefix,sample,cmssw_release,tier = filename[:-5].
split(
"__")[:5]
14 run=
int(prefix.split(
"_")[-1][1:])
15 return run,sample,cmssw_release,tier
17 from sys
import argv,exit
40 from optparse
import OptionParser
42 parser = OptionParser(usage=
"usage: %prog file1 file2 [options]")
51 parser.add_option(
"-d",
"--dir_name",
55 help=
"The 'directory' to be checked in the DQM \n(default is %s)" %dir_name)
57 parser.add_option(
"-o",
"--outdir_name",
61 help=
"The directory where the output will be stored \n(default is %s)" %outdir_name)
63 parser.add_option(
"-p",
"--do_pngs",
67 help=
"Do the pngs of the comparison (takes 50%% of the total running time) \n(default is %s)" %
False)
69 parser.add_option(
"--no_successes",
73 help=
"Do not draw successes. Default is False.")
75 parser.add_option(
"-P",
"--pickle",
79 help=
"Pkl file of the dir structure ")
81 parser.add_option(
"--sample",
85 help=
"The name of the sample to be displayed")
87 parser.add_option(
"--metas",
91 help=
"The Metas describing the two files (separated by @@@)")
93 parser.add_option(
"-t",
"--test_threshold",
95 dest=
"test_threshold",
96 default=test_threshold,
97 help=
"Threshold for the statistical test \n(default is %s)" %test_threshold)
99 parser.add_option(
"-s",
"--stat_test",
103 help=
"Statistical test (KS or Chi2) \n(default is %s)" %stat_test)
105 parser.add_option(
"-C",
"--compare",
109 help=
"Make the comparison \n(default is %s)" %compare)
111 parser.add_option(
"-R",
"--Report",
115 help=
"Make the html report \n(default is %s)" %report)
117 parser.add_option(
"--specify_run",
121 help=
"Append the run number to the output dir for data")
124 parser.add_option(
"-B",
"--black_list",
127 default=black_list_str,
128 help=
"Blacklist elements. form is name@hierarchy_level (i.e. HLT@1) \n(default is %s)" %black_list_str)
131 parser.add_option(
"--hash_name",
135 help=
"Set if you want to minimize & hash the output HTML files.")
137 parser.add_option(
"--use_black_file",
139 dest=
"blacklist_file",
141 help=
"Use a black list file of histograms located @ /RelMon/data")
143 parser.add_option(
"--standalone",
147 help=
"Makes CSS files accessible over HTTP")
151 if "RELMON_SA" in os.environ:
152 black_list_file=
"../data/blacklist.txt" 154 black_list_file=
"%s/src/Utilities/RelMon/data/blacklist.txt"%(os.environ[
"CMSSW_BASE"])
155 bListFile = open(black_list_file,
'r') 156 black_listed_histograms = bListFile.read() 159 histogramArray = black_listed_histograms.split("\n")
160 histogramArray.remove(
"")
162 for elem
in histogramArray:
163 tmp = elem.split(
"/")
164 tmp.insert(1,
"Run summary")
165 newarray.append((
"/").
join(tmp))
169 (options, args) = parser.parse_args()
171 if len(args)!=2
and options.compare:
172 print "Wrong number of RootFiles specified (%s)" %len(args)
176 original_pickle_name=
"" 179 if "RELMON_SA" in os.environ:
181 from dqm_interfaces
import DirID,DirWalkerFile,string2blacklist
182 from dirstructure
import Directory
185 from Utilities.RelMon.dqm_interfaces
import DirID,DirWalkerFile,string2blacklist
186 from Utilities.RelMon.dirstructure
import Directory
189 from os
import mkdir,chdir,getcwd
190 from os.path
import exists
194 rootfilename1,rootfilename2 = args
205 if options.metas==
'':
209 print "Reading meta from commandline" 210 sample1=sample2=options.sample
211 cmssw_release1,cmssw_release2=options.metas.split(
'@@@')
212 options.standalone =
True 216 print "I am puzzled. Did you choose two different samples?" 222 print "I am puzzled. Did you choose two different runs?" 226 fulldirname=options.outdir_name
227 if len(fulldirname)==0:
228 fulldirname=options.dir_name
229 if len(fulldirname)==0:
230 fulldirname=
"%s_%s_%s" %(sample1,cmssw_release1,cmssw_release2)
235 if options.blacklist_file:
242 print "Analysing Histograms located in directory %s at: " %options.dir_name
243 for filename
in rootfilename1,rootfilename2:
244 print " o %s" %filename
247 if len(black_list)>0:
248 print "We have a Blacklist:" 249 for dirid
in black_list:
256 rootfilename1,rootfilename2,
260 options.test_threshold,
261 not options.no_successes,
267 outdir_name=options.outdir_name
268 if run>1
and options.specify_run:
269 outdir_name+=
"_%s" %run
270 fulldirname+=
"_%s" %run
272 print "Output Directory will be ", outdir_name
273 options.outdir_name=outdir_name
274 if not exists(outdir_name)
and len(outdir_name )>0:
276 if len(outdir_name)>0:
284 directory=dirwalker.directory
287 directory.meta.sample1=sample1
288 directory.meta.sample2=sample2
289 directory.meta.run1=run1
290 directory.meta.run2=run2
291 directory.meta.release1=cmssw_release1
292 directory.meta.release2=cmssw_release2
293 directory.meta.tier1=tier1
294 directory.meta.tier2=tier2
297 directory.print_report(verbose=
True)
300 directory.prune(
"Run summary")
303 original_pickle_name=
"%s.pkl" %fulldirname
304 print "Pickleing the directory as %s in dir %s" %(original_pickle_name,getcwd())
305 output = open(original_pickle_name,
"w")
306 cPickle.dump(directory, output, -1)
312 if "RELMON_SA" in os.environ:
313 from directories2html
import directory2html
314 from dirstructure
import Directory
316 from Utilities.RelMon.directories2html
import directory2html
317 from Utilities.RelMon.dirstructure
import Directory
319 from os.path
import exists
320 from os
import chdir,mkdir
324 pickle_name=options.pklfile
325 if len(options.pklfile)==0:
326 pickle_name=original_pickle_name
328 print "Reading directory from %s" %(pickle_name)
329 ifile=open(pickle_name,
"rb")
330 directory=cPickle.load(ifile)
333 if not options.compare:
334 if not os.path.exists(options.outdir_name):
335 mkdir(options.outdir_name)
337 if exists(options.outdir_name)
and len(directory.name)==0:
338 chdir(options.outdir_name)
341 print "Calculating stats for the directory..." 342 directory.calcStats()
344 print "Producing html..." 347 if not (options.report
or options.compare):
348 print "Neither comparison nor report to be executed. A typo?"
def getInfoFromFilename(filename)
https://twiki.cern.ch/twiki/bin/view/CMSPublic/RelMon
def directory2html(directory, hashing, standalone, depth=0)
static std::string join(char **cmd)
def string2blacklist(black_list_str)