2 from __future__
import print_function
3 from builtins
import range
4 from optparse
import OptionParser
9 tfile = ROOT.TFile.Open(
"%s/%s/%s.root"%(dir,ana,treename))
11 print(
"Error: dir %s does not contain %s/%s.root" % (dir,ana,treename))
13 tree = tfile.Get(treename)
15 print(
"Error: rootfile %s/%s/%s.root does not contain a TTree %s" % (dir,ana,treename,treename))
18 for e
in range(tree.GetEntries()):
20 run,lumi = tree.run, tree.lumi
21 if run
not in jsonind:
27 jsonind[run] = list(set(jsonind[run]))
30 nlumis = sum(len(v)
for v
in jsonind.values())
32 for r,lumis
in jsonind.items():
33 if len(lumis) == 0:
continue 35 ranges = [ [ lumis[0], lumis[0] ] ]
36 for lumi
in lumis[1:]:
37 if lumi == ranges[-1][1] + 1:
40 ranges.append([lumi,lumi])
42 return (jsonmap, nruns, nlumis)
44 if __name__ ==
'__main__':
45 parser = OptionParser(usage=
'%prog <target_directories> [options]',
46 description=
'Check the output of the JSONAnalyzer and produce a json file of the processed runs and lumisections')
47 parser.add_option(
"-a",
"--analyzer", dest=
"jsonAnalyzer", default=
"JSONAnalyzer", help=
"Name of the JSONAnalyzer")
48 parser.add_option(
"-t",
"--tree", dest=
"treeName", default=
"RLTInfo", help=
"Name of the TTree produced by the JSONAnalyzer")
49 parser.add_option(
"-o",
"--out", dest=
"outputFile", default=
"lumiSummary.json", help=
"Name of the output file")
50 (options,args) = parser.parse_args()
52 print(
'provide at least one directory in argument. Use -h to display help')
55 summary =
root2map(a,options.jsonAnalyzer,options.treeName)
57 oname =
"%s/%s" % (a,options.outputFile)
58 jmap, runs, lumis = summary
59 json.dump(jmap,open(oname,
'w'))
60 print(
"Saved %s (%d runs, %d lumis)" % (oname, runs, lumis))
def root2map(dir, ana, treename)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)