41 << setw(3) << (int) hit.
getPMT() <<
' '
42 << setw(8) << hex << hit.
getT() <<
' '
43 << setw(10) << dec << hit.
getT() <<
' '
44 << setw(3) << (int) hit.
getToT();
53 inline void print(std::ostream& out,
const int type)
60 case JChecksum::TIME_t:
64 case JChecksum::ETDC_t:
68 case JChecksum::EPMT_t:
72 case JChecksum::EUDP_t:
76 case JChecksum::SIZE_t:
94 int main(
int argc,
char **argv)
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;
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;
Dynamic ROOT object management.
General purpose messaging.
#define DEBUG(A)
Message macros.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Scanning of objects from a single file according a format that follows from the extension of each fil...
ROOT TTree parameter settings of various packages.
Auxiliary class for multiplexing object iterators.
virtual bool hasNext() override
Check availability of next element.
virtual const pointer_type & next() override
Get next element.
Utility class to parse command line options.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
Object reading from a list of files.
JPMT_t getPMT() const
Get PMT.
JTDC_t getT() const
Get time.
JTOT_t getToT() const
Get time-over-threshold.
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.
int main(int argc, char **argv)
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