59 JParser<> zap(
"Program to search for sets of consecutive hits on a given PMT that are equidistant in time.");
66 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
71 catch(
const exception& error) {
72 FATAL(error.what() << endl);
87 cerr <<
"FATAL ERROR. Could not open detector file '" << detectorFile <<
"'." << endl;
95 TH1D h1 (
"MEvt",
"", 50, 0.5, 50.5);
97 TH2D h2 (
"FEvt", NULL,
98 stringRouter.size() + 0, -0.5, stringRouter.size() - 0.5,
101 TH1D h3 (
"ML0" ,
"", 50, 0.5, 50.5);
103 TH2D h4 (
"FL0", NULL,
104 stringRouter.size() + 0, -0.5, stringRouter.size() - 0.5,
107 for (Int_t i = 1; i <= h2.GetXaxis()->GetNbins(); ++i) {
108 h2.GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(stringRouter.at(i-1)));
111 for (Int_t i = 1; i <= h2.GetXaxis()->GetNbins(); ++i) {
112 h4.GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(stringRouter.at(i-1)));
124 JHitBuffer& buffer =
event->getHits<
JHit_t>();
126 std::sort(buffer.begin(),buffer.end(),less<JDAQKeyHit>());
128 for (JHitBuffer::const_iterator p = buffer.begin() ; p != buffer.end() ; ) {
130 JHitBuffer::const_iterator q = p;
133 (++q != buffer.end() &&
134 q->getModuleID() == p->getModuleID() &&
135 q->getPMT() == p->getPMT() &&
136 q->getT() == t1 + deltaT);
141 const JPMTChannel& channel = hitRouter.getPMTChannel(*p);
143 if (d >= multiplicity)
144 h2.Fill((
double) stringRouter.getIndex(channel.
getString()), (
double) channel.
getFloor());
165 for(JDAQTimeslice::iterator frame = slice->begin(); frame != slice->end() ; ++frame){
167 const JModule& module = moduleRouter.getModule(frame->getModuleID());
168 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
170 for (JSuperFrame2D_t::iterator pmt = buffer.begin() ; pmt != buffer.end() ; ++pmt) {
172 for (JHitBuffer::const_iterator p = pmt->begin() ; p != pmt->end() ;) {
174 JHitBuffer::const_iterator q = p;
177 (++q != pmt->end() &&
178 q->getT() == t1 + deltaT);
185 if (d >= multiplicity)
186 h4.Fill((
double) stringRouter.getIndex(channel.
getString()), (
double) channel.
getFloor());
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define MAKE_CSTRING(A)
Make C-string.
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Simple wrapper around JModuleRouter class for direct addressing of PMT data in detector data structur...
int getFloor() const
Get floor number.
int getString() const
Get string number.
Router for direct addressing of module data in detector data structure.
Data structure for a composite optical module.
Auxiliary class to uniquely identify PMT readout channel.
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
virtual bool hasNext() override
Check availability of next element.
2-dimensional frame with time calibrated data from one optical module.
unsigned int JTDC_t
leading edge [ns]
JTriggerCounter_t next()
Increment trigger counter.
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
Router for mapping of string identifier to index.
Auxiliary class to set-up Hit.
Auxiliary class for defining the range of iterations of objects.