61 const int t1 = (second.
getT() - first.
getT()) % period;
63 return (t1 <= margin || t1 >= period - margin);
73 friend std::istream&
operator>>(std::istream&
in, JPeriod&
object)
75 return in >>
object.period >>
object.margin;
85 friend std::ostream&
operator<<(std::ostream& out,
const JPeriod&
object)
87 return out <<
object.period <<
' ' <<
object.margin;
101 int main(
int argc,
char **argv)
105 using namespace KM3NETDAQ;
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);
144 for (
counter_type counter = 0; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
146 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
150 for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
157 buffer2D_type buffer(numeric_limits<JDAQHit::JPMT_t>::max(), buffer1D_type());
160 buffer[hit->getPMT()].push_back(*hit);
169 if (!buffer[
pmt].empty()) {
173 for (buffer1D_type::iterator i = buffer[
pmt].begin(); i != buffer[
pmt].end(); ) {
175 if (ToT_ns(i->getToT())) {
177 buffer1D_type::iterator p = i;
179 for (++p; p != buffer[
pmt].end() && ToT_ns(p->getToT()) && is_periodic(*i, *p); ++p) {}
181 if (
distance(i, p) >= numberOfHits) {
182 top[id].push_back(*i);
200 if (veto.count(i->first) == 0) {
202 const int pmt = i->
first.getPMTAddress();
205 << setw(9) << i->first.getModuleID() <<
'.' <<
FILL(2,
'0') << i->first.getPMTAddress() <<
FILL() <<
' '
206 << setw(1) << frame->testHighRateVeto(pmt)
207 << setw(1) << frame->testFIFOStatus (pmt) << endl;
215 const bool has_pmt = (hit->getPMT() == i->first.getPMTAddress());
216 const bool has_hit = (find(i->second.begin(), i->second.end(), *hit) != i->second.end());
224 cout << setw(10) << hit->getT() <<
' ' << setw(3) << (int) hit->getToT() <<
' ' <<
RESET;
226 if ((++count % numberOfColumns) == 0) {
235 cout << endl <<
"press any key to continue> " << flush;
Utility class to parse command line options.
ROOT TTree parameter settings.
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 to select ROOT class based on class name.
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Long64_t counter_type
Type definition for counter.
Auxiliary class for multiplexing object iterators.
JTDC_t getT() const
Get time.
int getRunNumber() const
Get run number.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
int getFrameIndex() const
Get frame index.
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
Auxiliary class for defining the range of iterations of objects.
I/O formatting auxiliaries.
char get()
Get single character.
Keyboard settings for unbuffered input.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Enable unbuffered terminal input.
virtual const pointer_type & next()
Get next element.
General purpose messaging.
Auxiliary data structure for sequence of same character.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
JRange< Double_t > JRange_t
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
Auxiliary class to define a range between two values.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
virtual bool hasNext()
Check availability of next element.
const JLimit & getLimit() const
Get limit.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
#define DEBUG(A)
Message macros.
int main(int argc, char *argv[])