26{
28
29 string inputFile;
31
32 try {
33
34 JParser<> zap(
"Auxiliary program to print JSirene job statistics.");
35
38
39 zap(argc, argv);
40 }
41 catch(const exception &error) {
42 FATAL(error.what() << endl);
43 }
44
45
46 gErrorIgnoreLevel = kError;
47
48 TFile* in = TFile::Open(inputFile.c_str(), "exist");
49
50 if (in == NULL || !in->IsOpen()) {
51 FATAL(
"File: " << inputFile <<
" not opened." << endl);
52 }
53
54
55 TH1D* job = dynamic_cast<TH1D*>(in->Get("job"));
56
57 if (job == NULL) {
58 FATAL(
"No job statistics.");
59 }
60
62
63 const int hit_types[] = {
64 DIRECT_LIGHT_FROM_MUON,
65 SCATTERED_LIGHT_FROM_MUON,
66 DIRECT_LIGHT_FROM_DELTARAYS,
67 SCATTERED_LIGHT_FROM_DELTARAYS,
68 DIRECT_LIGHT_FROM_EMSHOWER,
69 SCATTERED_LIGHT_FROM_EMSHOWER,
70
71 DIRECT_LIGHT_FROM_MUON + 20,
72 SCATTERED_LIGHT_FROM_MUON + 20,
73 DIRECT_LIGHT_FROM_DELTARAYS + 20,
74 SCATTERED_LIGHT_FROM_DELTARAYS + 20,
75
76 DIRECT_LIGHT_FROM_EMSHOWER + 40,
77 SCATTERED_LIGHT_FROM_EMSHOWER + 40,
78
79 -1
80 };
81
82
84
85 map_type zmap;
86
87 zmap[100] = "Number of photons";
88 zmap[200] = "Number of errors";
89 zmap[300] = "Number of misses";
90
91
92 NOTICE(
"Job summary" << endl);
93
94 NOTICE(
LEFT(40) <<
"Number of events input " <<
FIXED(13,0) << job->GetBinContent( 1) << endl);
95 NOTICE(
LEFT(40) <<
"Number of muons " <<
FIXED(13,0) << job->GetBinContent( 2) << endl);
96 NOTICE(
LEFT(40) <<
"Number of muons in can " <<
FIXED(13,0) << job->GetBinContent( 3) << endl);
97 NOTICE(
LEFT(40) <<
"Number of muons within road " <<
FIXED(13,0) << job->GetBinContent( 4) << endl);
98 NOTICE(
LEFT(40) <<
"Number of decayed particles (i.e. tau) " <<
FIXED(13,0) << job->GetBinContent( 6) << endl);
99 NOTICE(
LEFT(40) <<
"Number of detectable decayed particles " <<
FIXED(13,0) << job->GetBinContent( 7) << endl);
100 NOTICE(
LEFT(40) <<
"Number of electrons/hadrons " <<
FIXED(13,0) << job->GetBinContent( 8) << endl);
101 NOTICE(
LEFT(40) <<
"Number of detectable electrons/hadrons " <<
FIXED(13,0) << job->GetBinContent( 9) << endl);
102 NOTICE(
LEFT(40) <<
"Number of events output " <<
FIXED(13,0) << job->GetBinContent( 10) << endl);
103 NOTICE(
LEFT(40) <<
"Number of unknown particles " <<
FIXED(13,0) << job->GetBinContent( 21) << endl);
104
105 for (map_type::const_iterator entry = zmap.begin(); entry != zmap.end(); ++entry) {
107 for (const int* i = hit_types; *i != -1; ++i) {
109 <<
LEFT (19) << entry->second <<
FILL(1)
112 <<
FIXED(13,0) << job->GetBinContent(entry->first + *i) << endl);
113 }
114 }
115
116 in->Close();
117}
#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 data structure for sequence of same character.
Auxiliary data structure for floating point format specification.
Auxiliary data structure for alignment of data.
Auxiliary data structure for alignment of data.