15 {
16
18 string outFile;
19
20 try {
21
23
26
27 zap(argc,argv);
28 }
29 catch(const exception &error) {
30 ERROR(error.what() << endl);
31 }
32
34 map_type zmap;
35
36 for(vector<string>::const_iterator i = inputFiles.begin(); i != inputFiles.end(); ++i){
37 cout << " Now processing: " << *i << endl;
38 TFile in(i->c_str() , "read");
39
40 TIter iter(in.GetListOfKeys());
41
42 for(TKey *key; (
key = (TKey*) iter.Next()) != NULL; ){
43
44 TH1* h =
dynamic_cast<TH1*
>(
key->ReadObj());
45
46 if( h != NULL){
47
48 map_type::iterator p = zmap.find(h->GetName());
49
50 if (p == zmap.end()){
51
52 p = zmap.insert( make_pair( h->GetName(), (TH1*) h->Clone() )).first;
53
54 } else {
55
56 p->second->Add(h);
57 }
58 }
59 }
60
61 for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) {
62 i->second->SetDirectory(0);
63 }
64
65 in.Close();
66 }
67
68 TFile output(outFile.c_str() , "recreate") ;
69 for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) {
70
71 TH1D* hist = (TH1D*) i->second;
72 hist->Write();
73 }
74 output.Close();
75}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Utility class to parse command line options.
std::map< int, buffer_type > map_type
identifier -> hits