The Gaudi Framework
master (1a7a3838)
Toggle main menu visibility
Loading...
Searching...
No Matches
extractEvt.cpp
Go to the documentation of this file.
1
/***********************************************************************************\
2
* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
3
* *
4
* This software is distributed under the terms of the Apache version 2 licence, *
5
* copied verbatim in the file "LICENSE". *
6
* *
7
* In applying this licence, CERN does not waive the privileges and immunities *
8
* granted to it by virtue of its status as an Intergovernmental Organization *
9
* or submit itself to any jurisdiction. *
10
\***********************************************************************************/
11
#include "
extractEvt.C
"
12
#include <cstdlib>
13
#include <stdexcept>
14
15
static
int
usage
() {
16
::printf(
"Gaudi event extraction facility for ROOT tree based files.\n"
17
" Usage: \n"
18
"extract_event -o <output-file> -i <input-file> ...]\n\n"
19
"input- and output files may specify any legal (ROOT) file name.\n"
20
" -output Specify output file name.\n"
21
" -input Specify input file name.\n"
22
" -event Specify the event entry number.\n"
);
23
return
1;
24
}
25
26
int
main
(
int
argc,
char
** argv ) {
27
string
input;
28
string
output;
29
int
evt_num = -1;
30
for
(
int
i = 1; i < argc; ++i ) {
31
if
( *argv[i] ==
'-'
) {
32
switch
(
::toupper
( *( argv[i] + 1 ) ) ) {
33
case
'E'
:
34
if
( 1 != ::sscanf( argv[i + 1],
"%d"
, &evt_num ) ) {
35
::printf(
"\nERROR: No valid event identifier given.\n\n"
);
36
return
usage
();
37
}
38
++i;
39
break
;
40
case
'O'
:
41
if
( i + 1 < argc ) output = argv[i + 1];
42
++i;
43
break
;
44
case
'I'
:
45
if
( i + 1 < argc ) input = argv[i + 1];
46
++i;
47
break
;
48
default
:
49
return
usage
();
50
}
51
}
52
}
53
if
( input.empty() ) {
54
::printf(
"\nERROR: No input file(s) supplied\n\n"
);
55
return
usage
();
56
}
else
if
( output.empty() ) {
57
::printf(
"\nERROR: No output file supplied.\n\n"
);
58
return
usage
();
59
}
else
if
( evt_num < 0 ) {
60
::printf(
"\nERROR: No valid event identifier given.\n\n"
);
61
return
usage
();
62
}
63
gROOT->SetBatch( kTRUE );
64
try
{
65
if
(
extract_event
( input.c_str(), output.c_str(), evt_num ) != EXTRACT_SUCCESS ) {
66
::printf(
"\nERROR: Event extraction from file %s failed.\n"
, input.c_str() );
67
return
1;
68
}
69
return
0;
70
}
catch
(
const
std::exception& e ) {
71
::printf(
"\nERROR: Event extraction from file %s failed [%s]\n"
, input.c_str(), e.what() );
72
}
catch
( ... ) { ::printf(
"\nERROR: Event extraction from file %s failed [unknown reason]\n"
, input.c_str() ); }
73
return
1;
74
}
main
int main()
Definition
Allocator.cpp:128
toupper
void toupper(std::string &s)
Definition
ExceptionSvc.cpp:36
extractEvt.C
extract_event
int extract_event(const char *input, const char *output, long num_evt)
Definition
extractEvt.C:384
usage
void usage(const std::string &argv0)
Definition
listcomponents.cpp:40
RootCnv
merge
extractEvt.cpp
Generated on
for The Gaudi Framework by
1.17.0