2 from __future__
import print_function
3 from builtins
import range
4 from optparse
import OptionParser
10 tfile = ROOT.TFile.Open(
"%s/%s/%s.root"%(dir,ana,treename))
12 print(
"Error: dir %s does not contain %s/%s.root" % (dir,ana,treename))
14 tree = tfile.Get(treename)
16 print(
"Error: rootfile %s/%s/%s.root does not contain a TTree %s" % (dir,ana,treename,treename))
19 for e
in range(tree.GetEntries()):
21 run,lumi = tree.run, tree.lumi
22 if run
not in jsonind:
28 jsonind[run] =
list(set(jsonind[run]))
31 nlumis = sum(len(v)
for v
in six.itervalues(jsonind))
33 for r,lumis
in six.iteritems(jsonind):
34 if len(lumis) == 0:
continue
36 ranges = [ [ lumis[0], lumis[0] ] ]
37 for lumi
in lumis[1:]:
38 if lumi == ranges[-1][1] + 1:
41 ranges.append([lumi,lumi])
43 return (jsonmap, nruns, nlumis)
45 if __name__ ==
'__main__':
46 parser = OptionParser(usage=
'%prog <target_directories> [options]',
47 description=
'Check the output of the JSONAnalyzer and produce a json file of the processed runs and lumisections')
48 parser.add_option(
"-a",
"--analyzer", dest=
"jsonAnalyzer", default=
"JSONAnalyzer", help=
"Name of the JSONAnalyzer")
49 parser.add_option(
"-t",
"--tree", dest=
"treeName", default=
"RLTInfo", help=
"Name of the TTree produced by the JSONAnalyzer")
50 parser.add_option(
"-o",
"--out", dest=
"outputFile", default=
"lumiSummary.json", help=
"Name of the output file")
51 (options,args) = parser.parse_args()
53 print(
'provide at least one directory in argument. Use -h to display help')
56 summary =
root2map(a,options.jsonAnalyzer,options.treeName)
58 oname =
"%s/%s" % (a,options.outputFile)
59 jmap, runs, lumis = summary
60 json.dump(jmap,open(oname,
'w'))
61 print(
"Saved %s (%d runs, %d lumis)" % (oname, runs, lumis))