15 #include "TDirectory.h" 21 int main(
int argc,
char *argv[]){
22 time_t startTime, curTime;
28 while((c=getopt(argc, argv,
"i:o:n:"))!=-1){
44 unsigned nFiles(files.size());
46 if(nDiv == 1 || nFiles==0){
47 cout<<
"nDiv = "<<nDiv<<
" and nFiles = "<<nFiles<<
". Nothing to do, exiting."<<endl<<endl;
51 TString ntuplename, ntupleout, tag;
52 gSystem->mkdir(outfolder, kTRUE);
53 cout<<
"Dividing "<<nFiles<<
" files into "<<nDiv<<
" divisions. outfolder = "<<outfolder<<endl;
54 for(
unsigned file(0); file < nFiles; file++){
55 files[file] =
"/"+files[file];
58 chain.Add(ntuplename);
59 cout<<file<<
": "<<ntuplename<<
" has "<<chain.GetEntries()<<
" entries"<<endl;
60 vector<TChain *> divChains;
61 for(
unsigned div(0); div < nDiv; div++){
62 divChains.push_back(static_cast<TChain *>(chain.CloneTree(0)));
64 for(
int entry(0); entry < chain.GetEntries(); entry++){
65 chain.GetEntry(entry);
66 divChains[entry%nDiv]->Fill();
68 for(
unsigned div(0); div < nDiv; div++){
69 tag =
"_"; tag += div+1; tag +=
"of"; tag += nDiv;
70 ntupleout = outfolder+files[file];
71 ntupleout.ReplaceAll(
".root", tag+
".root");
72 TFile divFile(ntupleout,
"RECREATE");
74 divChains[div]->Write();
81 cout<<
"Dividing ntuples took "<<difftime(curTime,startTime)<<
" seconds"<<endl<<endl;
int main(int argc, char *argv[])
std::vector< TString > dirlist(const TString &folder, const TString &inname="dir", const TString &tag="")