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.