The Gaudi Framework  v29r0 (ff2e7097)
extractEvt.cpp
Go to the documentation of this file.
1 #include "merge/extractEvt.C"
2 #include <cstdlib>
3 #include <stdexcept>
4 
5 static int usage()
6 {
7  ::printf( "Gaudi event extraction facility for ROOT tree based files.\n"
8  " Usage: \n"
9  "extract_event -o <output-file> -i <input-file> ...]\n\n"
10  "input- and output files may specify any legal (ROOT) file name.\n"
11  " -output Specify output file name.\n"
12  " -input Specify input file name.\n"
13  " -event Specify the event entry number.\n" );
14  return 1;
15 }
16 
17 int main( int argc, char** argv )
18 {
19  string input;
20  string output;
21  int evt_num = -1;
22  for ( int i = 1; i < argc; ++i ) {
23  if ( *argv[i] == '-' ) {
24  switch (::toupper( *( argv[i] + 1 ) ) ) {
25  case 'E':
26  if ( 1 != ::sscanf( argv[i + 1], "%d", &evt_num ) ) {
27  ::printf( "\nERROR: No valid event identifier given.\n\n" );
28  return usage();
29  }
30  ++i;
31  break;
32  case 'O':
33  if ( i + 1 < argc ) output = argv[i + 1];
34  ++i;
35  break;
36  case 'I':
37  if ( i + 1 < argc ) input = argv[i + 1];
38  ++i;
39  break;
40  default:
41  return usage();
42  }
43  }
44  }
45  if ( input.empty() ) {
46  ::printf( "\nERROR: No input file(s) supplied\n\n" );
47  return usage();
48  } else if ( output.empty() ) {
49  ::printf( "\nERROR: No output file supplied.\n\n" );
50  return usage();
51  } else if ( evt_num < 0 ) {
52  ::printf( "\nERROR: No valid event identifier given.\n\n" );
53  return usage();
54  }
55  gROOT->SetBatch( kTRUE );
56  try {
57  if ( extract_event( input.c_str(), output.c_str(), evt_num ) != EXTRACT_SUCCESS ) {
58  ::printf( "\nERROR: Event extraction from file %s failed.\n", input.c_str() );
59  return 1;
60  }
61  return 0;
62  } catch ( const std::exception& e ) {
63  ::printf( "\nERROR: Event extraction from file %s failed [%s]\n", input.c_str(), e.what() );
64  } catch ( ... ) {
65  ::printf( "\nERROR: Event extraction from file %s failed [unknown reason]\n", input.c_str() );
66  }
67  return 1;
68 }
list argv
Definition: gaudirun.py:235
void usage(std::string argv0)
T what(T...args)
STL class.
int main(int argc, char **argv)
Definition: extractEvt.cpp:17
void toupper(std::string &s)