30 int main(
int argc,
char **argv)
34 using namespace KM3NETDAQ;
44 JParser<> zap(
"Example program to histogram summary data.");
48 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
54 catch(
const exception& error) {
55 FATAL(error.what() << endl);
59 const double factor = 1.0e-3;
65 TProfile h1(
"h1", NULL, 32,-0.5, 31.5);
66 TProfile h2(
"h2", NULL, 32,-0.5, 31.5);
68 TH2D hu(
"hu", NULL, 201, -0.5, +200.5, 201, -0.5, +200.5);
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);
77 while (inputFile.hasNext()) {
79 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
84 << setw(8) << inputFile.getCounter() <<
' '
87 << setw(6) << summaryslice->size() << endl);
91 for (JDAQSummaryslice::const_iterator frame = summaryslice->begin(); frame != summaryslice->end(); ++frame) {
96 double R[2] = { 0.0 };
103 const int index = (!frame->testHighRateVeto(pmt) && !frame->testFIFOStatus(pmt) ? 0 : 1);
106 R[index] += correct ?
getRate(*frame, pmt, factor) : frame->getRate(pmt, factor);
113 h0.Fill(correct ?
getRate(*frame, pmt, factor) : frame->getRate(pmt, factor), frame->getWeight(pmt, factor));
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));
119 hu.Fill((
double) frame->getUDPMaximalSequenceNumber(),
120 (double) frame->getUDPNumberOfReceivedPackets());
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]); }
127 hx.Fill((
double) N[1], R[0] / N[0]);
129 if (lower[0] != 0 && upper[0] != 0) {
130 hy.Fill((
double) N[1], R[0] / N[0]);
134 const bool status = (frame->getUDPNumberOfReceivedPackets() == frame->getUDPMaximalSequenceNumber() + 1 &&
135 frame->hasUDPTrailer());
137 h1.Fill((Double_t) 31, (frame->testWhiteRabbitStatus() ? 1.0 : 0.0));
138 h2.Fill((Double_t) 31, (status ? 1.0 : 0.0));
Utility class to parse command line options.
int main(int argc, char *argv[])
ROOT TTree parameter settings of various packages.
int getDetectorID() const
Get detector identifier.
Lookup table for PMT addresses in detector.
int getRunNumber() const
Get run number.
int getFrameIndex() const
Get frame index.
Auxiliary class for defining the range of iterations of objects.
Lookup table for PMT addresses in optical module.
double getRate(const JDAQSummaryFrame &frame, const int pmt, const double factor=1.0)
Get corrected rate of PMT.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
char ring
ring number ['A','F']
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
General purpose messaging.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
then JCookie sh JDataQuality D $DETECTOR_ID R
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
Utility class to parse command line options.
const JLimit & getLimit() const
Get limit.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
#define DEBUG(A)
Message macros.