#include #include #include #include #include "Jeep/JParser.hh" #include "TH1.h" #include "TFile.h" #include "TKey.h" using namespace std; using namespace JPP; int main(int argc , char** argv){ vector inputFiles; string outFile; try { JParser<> zap; zap['f'] = make_field(inputFiles); zap['o'] = make_field(outFile ) = "out.root"; zap(argc,argv); } catch(const exception &error) { ERROR(error.what() << endl); } typedef map map_type; map_type zmap; for(vector::const_iterator i = inputFiles.begin(); i != inputFiles.end(); ++i){ cout << " Now processing: " << *i << endl; TFile in(i->c_str() , "read"); TIter iter(in.GetListOfKeys()); for(TKey *key; (key = (TKey*) iter.Next()) != NULL; ){ TH1* h = dynamic_cast(key->ReadObj()); if( h != NULL){ map_type::iterator p = zmap.find(h->GetName()); if (p == zmap.end()){ p = zmap.insert( make_pair( h->GetName(), (TH1*) h->Clone() )).first; } else { p->second->Add(h); } } } for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) { i->second->SetDirectory(0); } in.Close(); } TFile output(outFile.c_str() , "recreate") ; for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) { TH1D* hist = (TH1D*) i->second; hist->Write(); } output.Close(); }