31{
35
37 JLimit_t& numberOfEvents = inputFile.getLimit();
39 bool correct;
41
42 try {
43
44 JParser<> zap(
"Example program to histogram summary data.");
45
51
52 zap(argc, argv);
53 }
54 catch(const exception& error) {
55 FATAL(error.what() << endl);
56 }
57
58
59 const double factor = 1.0e-3;
60
61
63
65 TProfile h1("h1", NULL, 32,-0.5, 31.5);
66 TProfile h2("h2", NULL, 32,-0.5, 31.5);
67
68 TH2D hu("hu", NULL, 201, -0.5, +200.5, 201, -0.5, +200.5);
69
70 TH2D hv("hv", NULL, 51, -0.5, +50.5, 200, 0.0, 50.0);
71 TH2D hw("hw", NULL, 51, -0.5, +50.5, 200, 0.0, 50.0);
72
73 TH2D hx("hx", NULL, NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5, 200, 0.0, 50.0);
74 TH2D hy("hy", NULL, NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5, 200, 0.0, 50.0);
75
76
78
80
82
87 << setw(6) << summaryslice->size() << endl);
88
90
91 for (JDAQSummaryslice::const_iterator frame = summaryslice->begin(); frame != summaryslice->end(); ++frame) {
92
94
95 int N[2] = { 0 };
96 double R[2] = { 0.0 };
97
98 int lower[2] = { 0 };
99 int upper[2] = { 0 };
100
102
103 const int index = (!frame->testHighRateVeto(pmt) && !frame->testFIFOStatus(pmt) ? 0 : 1);
104
105 N[index] += 1;
106 R[index] += correct ?
getRate(*frame, pmt, factor) : frame->
getRate(pmt, factor);
107
109 lower[index] += 1;
110 else
111 upper[index] += 1;
112
113 h0.Fill(correct ?
getRate(*frame, pmt, factor) : frame->getRate(pmt, factor), frame->getWeight(pmt, factor));
114
115 h1.Fill((Double_t) pmt, (frame->testHighRateVeto(pmt) ? 1.0 : 0.0));
116 h2.Fill((Double_t) pmt, (frame->testFIFOStatus (pmt) ? 1.0 : 0.0));
117 }
118
119 hu.Fill((double) frame->getUDPMaximalSequenceNumber(),
120 (double) frame->getUDPNumberOfReceivedPackets());
121
122 if (N[0] != 0) { hv.Fill((double) frame->getUDPMaximalSequenceNumber(), R[0] / N[0]); }
123 if (N[1] != 0) { hw.Fill((double) frame->getUDPMaximalSequenceNumber(), R[1] / N[1]); }
124
125 if (N[0] != 0) {
126
127 hx.Fill((double) N[1], R[0] / N[0]);
128
129 if (lower[0] != 0 && upper[0] != 0) {
130 hy.Fill((double) N[1], R[0] / N[0]);
131 }
132 }
133
134 const bool status = (frame->getUDPNumberOfReceivedPackets() == frame->getUDPMaximalSequenceNumber() + 1 &&
135 frame->hasUDPTrailer());
136
137 h1.Fill((Double_t) 31, (frame->testWhiteRabbitStatus() ? 1.0 : 0.0));
138 h2.Fill((Double_t) 31, (status ? 1.0 : 0.0));
139 }
140 }
142
143 out.Write();
144 out.Close();
145}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Lookup table for PMT addresses in detector.
const JModuleAddressMap & get(const int id) const
Get module address map.
Lookup table for PMT addresses in optical module.
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.
char ring
ring number ['A','F']
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.
virtual const pointer_type & next() override
Get next element.
int getDetectorID() const
Get detector identifier.
int getRunNumber() const
Get run number.
int getFrameIndex() const
Get frame index.
static int getN()
Get number of bins.
static const double * getData(const double factor=1.0)
Get abscissa values.
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
double getRate(const JDAQSummaryFrame &frame, const int pmt, const double factor=1.0)
Get corrected rate of PMT.
KM3NeT DAQ data structures and auxiliaries.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.