30{
34
38
39 try {
40
41 JParser<> zap(
"Example program to histogram trigger efficiency.");
42
46
47 zap(argc, argv);
48 }
49 catch(const exception &error) {
50 FATAL(error.what() << endl);
51 }
52
53
54
55
57
58 TH1D h0("h0", NULL, 100, 0.5, 100.5);
59 TH1D h1("h1", NULL, 100, 0.5, 100.5);
60 TH1D h2("h2", NULL, 100, 0.5, 100.5);
61
62 h2.Sumw2();
63
64
66
68
70
71 const Evt*
event = ps;
72
73 const int n =
event->mc_hits.size() - count_if(event->mc_hits.begin(), event->mc_hits.cend(), &
is_noise);
74
75 h1.Fill((Double_t)
n, 1.0);
76 }
78
79
81
82 STATUS(
"event: " << setw(10) << in.getCounter() <<
'\r');
DEBUG(endl);
83
84 const Evt*
event = in.next();
85
86 const int n =
event->
mc_hits.size() - count_if(event->mc_hits.begin(), event->mc_hits.cend(), &
is_noise);
87
88 h0.Fill((Double_t)
n, 1.0);
89 }
91
92
93 for (Int_t i = 1; i <= h1.GetNbinsX(); ++i) {
94
95 const Double_t y1 = h1.GetBinContent(i);
96 const Double_t y0 = h0.GetBinContent(i);
97
98 if (y0 != 0.0) {
99
100 const Double_t y3 = y1 / y0;
101 const Double_t w3 = sqrt(y1 * (y0 - y1) / (y0*y0*y0));
102
103 h2.SetBinContent(i, y3);
104 h2.SetBinError (i, w3);
105
106 } else {
107 ERROR(
"Bin " << h0.GetName() <<
"[" << i <<
"] empty." << endl);
108 }
109 }
110
111 out.Write();
112 out.Close();
113}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
virtual bool hasNext() override
Check availability of next element.
counter_type getCounter() const
Get counter.
bool is_noise(const Hit &hit)
Verify hit origin.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
std::vector< Hit > mc_hits
MC: list of MC truth hits.
General purpose class for multiple pointers.
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
virtual bool hasNext() override
Check availability of next element.
virtual const multi_pointer_type & next() override
Get next element.