67{
   70 
   73 
   74  try { 
   75 
   76    JParser<> zap(
"Auxiliary program to print ROOT TChain information.");
 
   77    
   80 
   81    zap(argc, argv);
   82  }
   83  catch(const exception &error) {
   84    FATAL(error.what() << endl);
 
   85  }
   86 
   87  gErrorIgnoreLevel = kFatal;
   88 
   90 
   91  for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
   92 
   93    TFile* file = TFile::Open(file_name->c_str());
   94 
   95    if (file != NULL) {
   96 
   97      TIter iter(file->GetListOfKeys(), kIterBackward);
   98 
   99      for (TKey* key; (
key = (TKey*) iter.Next()) != NULL; ) {
 
  100 
  101        TKey* p = dynamic_cast<TKey*>(file->GetListOfKeys()->Before(key));
  102 
  103        if (p == NULL || strcmp(
key->GetName(), p->GetName()) != 0) {                      
 
  104 
  105          TTree* tree = 
dynamic_cast<TTree*
>(
key->ReadObj());
 
  106 
  107          if (tree != NULL) {
  108            buffer.insert(JChain(tree->GetName()));
  109          }
  110        }
  111      }
  112 
  113      file->Close();
  114 
  115      delete file;
  116    }
  117  }
  118 
  119  for (auto& chain : buffer) {
  120 
  121    for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
  122      chain->Add(file_name->c_str());
  123    }
  124 
  125    cout << setw(24) << left  <<  chain->GetName()    << ' '
  126         << setw(10) << right <<  chain->GetEntries() << endl;
  127  }
  128}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary base class for list of file names.