43    int number_of_hits = 0;
 
   47      while (p != data1.end() && q != data2.end() && *p < *q - Tmax_ns) { ++p; }
 
   48      while (p != data1.end() && q != data2.end() && *q < *p - Tmax_ns) { ++q; }
 
   50      if (p == data1.end() || q == data2.end()) {
 
   54      if (fabs(*p - *q) <= Tmax_ns) {
 
   59    return number_of_hits;
 
   70int main(
int argc, 
char **argv)
 
   77  JLimit_t&      numberOfEvents = inputFile.getLimit();
 
   84    JParser<> zap(
"Example program to test conversion between Monte Carlo and DAQ times.");
 
   94  catch(
const exception &error) {
 
   95    FATAL(error.what() << endl);
 
  124    const Evt*       
event = ps;
 
  133    for (vector<Hit>::const_iterator i = event->mc_hits.begin(); i != event->mc_hits.end(); ++i) {
 
  137        DEBUG(
"Hit (MC):  " << setw(5) << i->pmt_id << 
' ' << 
FIXED(6,1) << 
getTime(*i) << endl);
 
  139        mc[i->pmt_id].insert(
getTime(*i));
 
  143    for (
int test : {1, 2} ) {
 
  145      DEBUG(
"Test "<< test << endl);
 
  158          const JPMT&    pmt    = 
module.getPMT(i->getPMT());
 
  160          data[pmt.
getID()].insert(converter.
getTime(getTime(*i, pmt)));
 
  163      } 
else if (test == 2) {
 
  171        for (vector<Hit>::const_iterator i = evt.
hits.begin(); i != evt.
hits.end(); ++i) {
 
  176            const JPMT&    pmt    = 
module.getPMT(i->channel_id);
 
  178            data[pmt.
getID()].insert(converter.
getTime(getTime(i->tdc, pmt)));
 
  183      for (map_type::const_iterator i = data.begin(); i != data.end(); ++i) {
 
  185          DEBUG(
"Hit (DAQ): " << setw(5) << i->first << 
' ' << 
FIXED(6,1) << *hit << endl);
 
  189      int number_of_hits = 0;
 
  191      for (map_type::const_iterator p = mc.begin(), q = data.begin(); ; ++p, ++q) {
 
  193        while (p != mc.end() && q != data.end() && p->first < q->first) { ++p; }
 
  194        while (p != mc.end() && q != data.end() && q->first < p->first) { ++q; }
 
  196        if (p == mc.end() || q == data.end()) {
 
  200        if (p->first == q->first) {
 
  201          number_of_hits += get_count(p->second, q->second, Tmax_ns);
 
  205      NOTICE(
"Number of hits " << setw(5) << number_of_hits << 
'/' << setw(5) << tev->
size<
JHit_t>() << endl);
 
  207      ASSERT(number_of_hits != 0);
 
 
Data structure for detector geometry and calibration.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
#define ASSERT(A,...)
Assert macro.
 
Direct access to module in detector data structure.
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
I/O formatting auxiliaries.
 
ROOT TTree parameter settings of various packages.
 
int main(int argc, char **argv)
 
Synchronously read DAQ events and Monte Carlo events (and optionally other events).
 
Router for direct addressing of module data in detector data structure.
 
const JModule & getModule(const JObjectID &id) const
Get module parameters.
 
Data structure for a composite optical module.
 
Data structure for PMT geometry, calibration and status.
 
int getID() const
Get identifier.
 
Utility class to parse command line options.
 
counter_type getCounter() const
Get counter.
 
const_iterator< T > end() const
Get end of data.
 
unsigned int size() const
Get number of hits.
 
const_iterator< T > begin() const
Get begin of data.
 
bool empty() const
Check emptyness of hit container.
 
Auxiliary class to convert DAQ hit time to/from Monte Carlo hit time.
 
double getTime() const
Get DAQ/trigger time minus Monte Carlo time.
 
bool is_noise(const Hit &hit)
Verify hit origin.
 
std::istream & read(std::istream &in, JTestSummary &summary, const char delimiter=' ')
Read test summary.
 
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).
 
const char * getTime()
Get current local time conform ISO-8601 standard.
 
KM3NeT DAQ data structures and auxiliaries.
 
std::map< int, range_type > map_type
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
 
std::vector< Hit > hits
list of hits
 
Auxiliary data structure for floating point format specification.
 
General purpose class for multiple pointers.
 
Auxiliary class to set-up Hit.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.
 
Auxiliary class to synchronously read DAQ events and Monte Carlo events (and optionally other events)...
 
virtual bool hasNext() override
Check availability of next element.
 
virtual const multi_pointer_type & next() override
Get next element.
 
Auxiliary include file for time conversion between DAQ/trigger hit and Monte Carlo hit.