77 JLimit_t& numberOfEvents = inputFile.getLimit();
84 JParser<> zap(
"Example program to test conversion between Monte Carlo and DAQ times.");
88 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
94 catch(
const exception &error) {
95 FATAL(error.what() << endl);
124 const Evt*
event = ps;
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);
157 const JModule& module = router.getModule(i->getModuleID());
163 }
else if (test == 2) {
175 const JModule& module = router.getModule(i->dom_id);
176 const JPMT& pmt = module.
getPMT(i->channel_id);
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);
#define DEBUG(A)
Message macros.
#define ASSERT(A,...)
Assert macro.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Router for direct addressing of module data in detector data structure.
Data structure for a composite optical module.
const JPMT & getPMT(const int index) const
Get PMT.
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.
const_iterator< T > begin() const
Get begin of data.
unsigned int size() const
Get number of hits.
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.
double getTime(const Hit &hit)
Get true time of hit.
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).
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.
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.