158{
161
163 tree_info ta;
164 tree_info tb;
165 string key;
167
169
176
177 try {
178
180
183
184 JParser<> zap(
"Auxiliary program to print ROOT TTree information.");
185
190
191 zap(argc, argv);
192 }
193 catch(const exception &error) {
194 FATAL(error.what() << endl);
195 }
196
197 gErrorIgnoreLevel = kFatal;
198
199 inputFile = getFilenames(inputFile);
200
201 int number_of_errors = 0;
202
203 for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
204
205 TFile* file = TFile::Open(file_name->c_str());
206
207 if (file == NULL) {
208
209 ++number_of_errors;
210
211 cerr << *file_name << " not opened." << endl;
212
213 continue;
214 }
215
216 if (key == "") {
217 cout << *file_name << endl;
218 }
219
220 TIter iter(file->GetListOfKeys(), kIterBackward);
221
222 for (TKey* _key; (_key = (TKey*) iter.Next()) != NULL; ) {
223
224 TKey* p = dynamic_cast<TKey*>(file->GetListOfKeys()->Before(_key));
225
226 if (p == NULL || strcmp(_key->GetName(), p->GetName()) != 0) {
227
228 tb = tree_info(dynamic_cast<TTree*>(_key->ReadObj()));
229
230 if (tb.is_valid() && ta == tb) {
231
232 if (key == "")
233 cout << tb << endl;
234 else
235 format.
write(cout, key) <<
' ';
236 }
237 }
238 }
239
240 file->Close();
241
242 delete file;
243 }
244
245 return (number_of_errors == 0 ? 0 : 1);
246}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
Utility class to parse parameter values.
std::ostream & write(std::ostream &out) const
Write the current parameter values.
Utility class to parse command line options.
const array_type< JKey_t > & get_keys(const std::map< JKey_t, JValue_t, JComparator_t, JAllocator_t > &data)
Method to create array of keys of map.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Empty structure for specification of parser element that is initialised (i.e. does not require input)...