babymaker  e95a6a9342d4604277fe7cc6149b6b5b24447d89
change_branch.cxx
Go to the documentation of this file.
1 #include <ctime>
2 #include <iostream>
3 #include "TFile.h"
4 #include "TString.h"
5 #include "TTree.h"
6 
7 #include "utilities.hh"
8 
9 using namespace std;
10 
11 int main(int argc, char *argv[]){
12  time_t begtime, endtime;
13  time(&begtime);
14 
15  if(argc<5){
16  cout<<"Format: ./run/change_branch.exe <infolder> <outfolder> <sample> <branch_type1> <branch_name1> <branch_value1> ... <branch_valueN>"<<endl;
17  cout<<"Accepts up to N branches folowing the format above."<<endl;
18  cout<<"<sample> is an indentifier for files in the folder, e.g \"*.root\" or \"*TTJets*SingleLep*\""<<endl;
19  cout<<"<branch_type> must be \"int\", \"float\", \"double\", \"bool\", \"vint\", \"vfloat\", \"vdouble\", or \"vbool\""<<endl;
20  cout<<"Accepts multiplication of branches, i.e. <branch_value>=\"*3.1415\" or <branch_value>=\"3.1415*\""<<endl;
21  return 1;
22  }
23 
24  TString folder(argv[1]), outfolder(argv[2]), sample(argv[3]);
25  if(!folder.EndsWith("/")) folder.Append("/");
26  if(!outfolder.EndsWith("/")) outfolder.Append("/");
27 
28  vector<TString> var_type, var, var_val;
29  for(int ivar=4; ivar<argc; ivar+=3){
30  var_type.push_back(argv[ivar]);
31  var.push_back(argv[ivar+1]);
32  var_val.push_back(argv[ivar+2]);
33  }
34 
35  vector<TString> files = dirlist(folder,sample);
36  for(unsigned int i=0; i<files.size(); i++){
37  if(i%100==0) cout<<"[Change Branch] File #"<<i+1<<"/"<<files.size()<<endl;
38  change_branch_one(folder, files[i], outfolder, var_type, var, var_val);
39  }
40 
41  time(&endtime);
42  cout<<endl<<"Took "<<difftime(endtime, begtime)<<" seconds"<<endl<<endl;
43 }
STL namespace.
int change_branch_one(TString indir, TString name, TString outdir, std::vector< TString > var_type, std::vector< TString > var, std::vector< std::vector< TString > > var_val, int totentries)
Definition: utilities.cc:32
int main(int argc, char *argv[])
std::vector< TString > dirlist(const TString &folder, const TString &inname="dir", const TString &tag="")
Definition: utilities.cc:287