33{
   37 
   41 
   42  try { 
   43 
   44    JParser<> zap(
"Auxiliary program to merge time-over-threshold data.");
 
   45    
   46    zap[
'f'] = 
make_field(inputFile,         
"input file (output from JCalibrateToT).");
 
   49 
   50    zap(argc, argv);
   51  }
   52  catch(const exception &error) {
   53    FATAL(error.what() << endl);
 
   54  }
   55 
   56 
   57  gErrorIgnoreLevel = kError;
   58 
   60 
   61  map_type zmap;
   62 
   63 
   64  for (vector<string>::const_iterator i = inputFile.begin(); i != inputFile.end(); ++i) {
   65 
   66    DEBUG(
"Processing " << *i << endl) ;
 
   67 
   68    TFile in(i->c_str(), "read");
   69    
   70    TIter iter(in.GetListOfKeys());
   71 
   72    for (TKey* key; (
key = (TKey*) iter.Next()) != NULL; ) {
 
   73 
   74      if (TString(
key->GetName()).EndsWith(
_2SToT)) {
 
   75 
   76        TH2* h2 = 
dynamic_cast<TH2*
>(
key->ReadObj());
 
   77 
   78        map_type::iterator p = zmap.find(h2->GetName());
   79 
   80        if (p == zmap.end()) {
   81 
   82          DEBUG(
"Clone " << h2->GetName() << endl);
 
   83 
   84          p = zmap.insert(make_pair(h2->GetName(), (TH2*) h2->Clone())).first;
   85 
   86        } else {
   87 
   88          DEBUG(
"Add   " << h2->GetName() << endl);
 
   89 
   90          p->second->Add(h2);
   91        }
   92      }
   93    }
   94    
   95    for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) {
   96      i->second->SetDirectory(0);
   97    }
   98    
   99    in.Close();
  100  }
  101 
  102  
  103 
  105 
  106  for (map_type::iterator i = zmap.begin(); i != zmap.end(); ++i) {
  107 
  108    if (i->first.EndsWith(
_2SToT)) {
 
  109 
  110      TH2D* h2s = (TH2D*) i->second;
  111 
  112      h2s->Write();
  113    } 
  114  }
  115 
  117 
  118  for (vector<string>::const_iterator i = inputFile.begin(); i != inputFile.end(); ++i) {
  119 
  121 
  124    }
  125  }
  126 
  127  out.Write();
  128  out.Close();
  129}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
static const char *const _2SToT
Histogram naming.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
 
KM3NeT DAQ data structures and auxiliaries.
 
std::map< int, range_type > map_type