19 #include "utilities.hh" 23 int main(
int argc,
char *argv[]){
24 time_t startTime, curTime;
28 while((c=getopt(argc, argv,
"f:i:t:"))!=-1){
41 cout<<endl<<
"Specify input folder and tag: " 42 <<
"./run/json_ntuple.exe -i <infolder> -o <outfolder=out> -t <tag>"<<endl<<endl;
47 map<int, set<int> > lumis;
53 int files = chain.Add(filename);
55 cout<<endl<<
"No files found for "<<filename<<
". Exiting"<<endl<<endl;
59 TBranch *b_lumi(NULL), *b_run(NULL);
60 chain.SetBranchAddress(
"lumiblock", &lumi, &b_lumi);
61 chain.SetBranchAddress(
"run", &run, &b_run);
63 long entries(chain.GetEntries()), tree_entry;
66 cout<<endl<<
"Doing "<<files<<
" files in "<<filename<<
" with "<<entries<<
" entries"<<endl;
67 for(
int entry(0); entry<entries; entry++){
68 if(entry!=0 && entry%1000000==0) {
70 int seconds(difftime(curTime,startTime));
73 <<
" Took "<<setw(6)<<seconds<<
" seconds at " 74 <<setw(4)<<
roundNumber(entry,1,seconds*1000.)<<
" kHz"<<endl;
77 tree_entry = chain.LoadTree(entry);
78 b_run->GetEntry(tree_entry);
79 b_lumi->GetEntry(tree_entry);
81 if(lumis.find(run) == lumis.end()) lumis[run] = set<int>();
82 lumis[
run].insert(lumi);
85 TString txtname(
outfolder+
"/json_"+tag+
".txt");
86 ofstream txtfile(txtname);
88 for(map<
int, set<int> >::const_iterator it = lumis.begin(); it != lumis.end(); ++it) {
89 if(it != lumis.begin()) txtfile<<
"],"<<endl;
91 txtfile<<
"\""<<run<<
"\": [";
94 for (set<int>::iterator itlumi = lumis[run].begin(); itlumi != lumis[
run].end(); ++itlumi){
96 if(itlumi == lumis[run].begin()) txtfile<<
"["<<lumi<<
", ";
98 if(lumi > prev_lumi+1) {
99 txtfile<<prev_lumi<<
"], ["<<lumi<<
", ";
102 if(ind == lumis[run].size()-1) txtfile<<lumi<<
"]";
111 int seconds(difftime(curTime,startTime));
112 cout<<endl<<
"Written json in "<<txtname<<
". Took "<<seconds<<
" seconds"<<endl;
int main(int argc, char *argv[])
tuple run
Parsing run from file name.
TString addCommas(double num)
TString roundNumber(double num, int decimals, double denom=1.)