Jpp 19.3.0-rc.3
the software that should make you happy
Loading...
Searching...
No Matches
JMergeNB.cc File Reference
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include "Jeep/JParser.hh"
#include "TH1.h"
#include "TFile.h"
#include "TKey.h"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 15 of file JMergeNB.cc.

15 {
16
17 vector<string> inputFiles;
18 string outFile;
19
20 try {
21
22 JParser<> zap;
23
24 zap['f'] = make_field(inputFiles);
25 zap['o'] = make_field(outFile ) = "out.root";
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
Definition JParser.hh:2142
Utility class to parse command line options.
Definition JParser.hh:1698
std::map< int, buffer_type > map_type
identifier -> hits
Definition JPerth.cc:71