110 JLimit_t& numberOfEvents = inputFile.getLimit();
121 JParser<> zap(
"Example program to search for spurious hits.");
123 zap[
'f'] =
make_field(inputFile,
"input file).");
124 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
125 zap[
'C'] =
make_field(selector,
"timeslice selector, e.g. JDAQTimeslice.") = getROOTClassSelection<JDAQTimesliceTypes_t>();
126 zap[
'T'] =
make_field(ToT_ns,
"time-over-threshold range [ns]");
127 zap[
'p'] =
make_field(is_periodic,
"periodicity");
128 zap[
'M'] =
make_field(numberOfHits,
"minimum number of hits for periodicity");
129 zap[
'N'] =
make_field(numberOfColumns,
"number of columns for printing") = 5;
135 catch(
const exception& error) {
136 FATAL(error.what() << endl);
142 for (
counter_type counter = 0; in.hasNext() && counter != inputFile.getLimit(); ++counter) {
144 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
148 for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
155 buffer2D_type buffer(numeric_limits<JDAQHit::JPMT_t>::max(), buffer1D_type());
158 buffer[hit->getPMT()].push_back(*hit);
167 if (!buffer[pmt].empty()) {
171 for (buffer1D_type::iterator i = buffer[pmt].begin(); i != buffer[pmt].end(); ) {
173 if (ToT_ns(i->getToT())) {
175 buffer1D_type::iterator p = i;
177 for (++p; p != buffer[pmt].end() && ToT_ns(p->getToT()) && is_periodic(*i, *p); ++p) {}
179 if (
distance(i, p) >= numberOfHits) {
180 top[id].push_back(*i);
198 if (veto.count(i->first) == 0) {
200 const int pmt = i->first.getPMTAddress();
203 << setw(9) << i->first.getModuleID() <<
'.' <<
FILL(2,
'0') << i->first.getPMTAddress() <<
FILL() <<
' '
204 << setw(1) << frame->testHighRateVeto(pmt)
205 << setw(1) << frame->testFIFOStatus (pmt) << endl;
213 const bool has_pmt = (hit->getPMT() == i->first.getPMTAddress());
214 const bool has_hit = (find(i->second.begin(), i->second.end(), *hit) != i->second.end());
222 cout << setw(10) << hit->getT() <<
' ' << setw(3) << (int) hit->getToT() <<
' ' <<
RESET;
224 if ((++count % numberOfColumns) == 0) {
233 cout << endl <<
"press any key to continue> " << flush;
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Auxiliary class for multiplexing object iterators.
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
Enable unbuffered terminal input.
char get()
Get single character.
int getRunNumber() const
Get run number.
int getFrameIndex() const
Get frame index.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Long64_t counter_type
Type definition for counter.
KM3NeT DAQ data structures and auxiliaries.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Auxiliary data structure for sequence of same character.
Type definition of range.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary class to select ROOT class based on class name.
Auxiliary class for defining the range of iterations of objects.