101 JLimit_t & numberOfEvents = inputFile.getLimit();
110 JParser<> zap(
"Example program to check timeslice data for errors.");
113 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
114 zap[
'C'] =
make_field(selector) = getROOTClassSelection<JDAQTimesliceTypes_t>();
116 zap[
'N'] =
make_field(N,
"number of rows to print") = 10;
117 zap[
'R'] =
make_field(rate_Hz,
"high-rate veto [Hz]") = 0.0;
122 catch(
const exception& error) {
123 FATAL(error.what() << endl);
136 JFrameIndexRange frame_index = getFrameIndexRange<JDAQSummaryslice>(inputFile);
138 const Long64_t nx = frame_index.
second - frame_index.
first + 1;
139 const Double_t
xmin = (Double_t) frame_index.
first - 0.5;
140 const Double_t
xmax = (Double_t) frame_index.
second + 0.5;
144 for (
counter_type counter = 0; in.hasNext(); ++counter) {
146 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
150 for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
156 errors[error->type] += 1;
158 H1[error->type]->Fill((Double_t) frame->getFrameIndex());
165 if (error->pos >= 0) {
167 const int pmt = (*frame)[error->pos].getPMT();
170 << setw(10) << frame->getModuleID() <<
'.' << setw(2) << setfill(
'0') << pmt << setfill(
' ') <<
' '
171 << setw(8) << frame->getFrameIndex() <<
' '
172 << setw(6) << error->pos <<
'/' << setw(8) << frame->size() <<
' '
173 << setw(2) << error->type <<
' ';
176 cout << setw(1) << frame->testHighRateVeto(pmt)
177 << setw(1) << frame->testFIFOStatus (pmt) <<
' ';
180 cout << setw(4) << frame->getUDPNumberOfReceivedPackets() <<
'/'
181 << setw(4) << frame->getUDPMaximalSequenceNumber();
185 print(cout, error->type);
187 cout << endl << endl;
189 deque<JDAQHit> buffer;
191 for (
int i = error->pos - 1,
n = 0; i >= 0 &&
n <= N; --i) {
192 if ((*frame)[i].getPMT() == (*frame)[error->pos].getPMT()) {
193 buffer.push_front((*frame)[i]);
198 for (deque<JDAQHit>::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
199 print(cout, *i); cout << endl;
202 print(cout, (*frame)[error->pos]);
204 cout <<
" <<< " << endl;
206 for (
int i = error->pos + 1,
n = 0; i < frame->size() &&
n <= N; ++i) {
207 if ((*frame)[i].getPMT() == (*frame)[error->pos].getPMT()) {
208 print(cout, (*frame)[i]); cout << endl;
216 << setw(10) << frame->getModuleID() <<
' ' << setw(2) <<
' ' <<
' '
217 << setw(8) << frame->getFrameIndex() <<
' '
218 << setw(6) << error->pos <<
'/' << setw(8) << frame->size() <<
' '
219 << setw(2) << error->type <<
' ';
221 cout << setw(1) <<
' '
222 << setw(1) <<
' ' <<
' ';
224 cout << setw(4) << frame->getUDPNumberOfReceivedPackets() <<
'/'
225 << setw(4) << frame->getUDPMaximalSequenceNumber();
229 print(cout, error->type);
231 cout << endl << endl;
241 print(cout, i->first);
243 cout <<
' ' << setw(8) << i->second << endl;
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for multiplexing object iterators.
Utility class to parse command line options.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
Object reading from a list of files.
std::ostream & print(std::ostream &out, const JTestSummary &summary, const char delimiter=' ', const bool useColors=true)
Print test summary.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Long64_t counter_type
Type definition for counter.
static const JChecksum checksum
Function object to perform check-sum of raw data.
static int MAXIMAL_FRAME_SIZE
Maximal frame size.
KM3NeT DAQ data structures and auxiliaries.
double getFrameTime()
Get frame time duration.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Auxiliary class to select ROOT class based on class name.
Auxiliary class for defining the range of iterations of objects.
Auxiliary data structure for result of checksum.
result_type::const_iterator const_iterator