74 using namespace KM3NETDAQ;
76 JTriggeredFileScanner<> inputFile;
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);
99 using namespace KM3NETDAQ;
107 load(detectorFile, detector);
109 catch(
const JException& error) {
113 const JModuleRouter router(detector);
119 while (inputFile.hasNext()) {
121 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
123 JTriggeredFileScanner<>::multi_pointer_type ps = inputFile.next();
126 const Evt*
event = ps;
130 const JTimeConverter converter(*
event, *tev);
141 DEBUG(
"Hit (MC): " << setw(5) << i->pmt_id <<
' ' <<
FIXED(6,1) <<
getTime(*i) << endl);
143 mc[i->pmt_id].insert(
getTime(*i));
149 const JModule& module = router.getModule(i->getModuleID());
150 const JPMT& pmt = module.getPMT(i->getPMT());
152 DEBUG(
"Hit (DAQ): " << setw(5) << pmt.getID() <<
' ' <<
FIXED(6,1) << converter.getTime(*i, pmt) << endl);
154 data[pmt.getID()].insert(converter.getTime(*i, pmt));
157 int number_of_hits = 0;
159 for (map_type::const_iterator p = mc.begin(), q = data.begin(); ; ++p, ++q) {
161 while (p != mc.end() && q != data.end() && p->first < q->first) { ++p; }
162 while (p != mc.end() && q != data.end() && q->first < p->first) { ++q; }
164 if (p == mc.end() || q == data.end()) {
168 if (p->first == q->first) {
169 number_of_hits += get_count(p->second, q->second, Tmax_ns);
173 NOTICE(
"Number of hits " << setw(5) << number_of_hits <<
'/' << setw(5) << tev->
size<JHit_t>() << endl);
175 ASSERT(number_of_hits != 0);
178 ASSERT(inputFile.getCounter() != 0);
Utility class to parse command line options.
bool empty() const
Check emptyness of hit container.
Structure to store the ToT mean and standard deviation of the hits produced by a nanobeacon in a sour...
Auxiliary data structure for floating point format specification.
double getTime(const Hit &hit)
Get true time of hit.
unsigned int size() const
Get number of hits.
bool is_noise(const Hit &hit)
Verify hit origin.
JLimit JLimit_t
Type definition of limit.
const_iterator< T > end() const
Get end of data.
#define ASSERT(A)
Assert macro.
const_iterator< T > begin() const
Get begin of data.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
void load(const JString &file_name, JDetector &detector)
Load detector from input file.
const JLimit & getLimit() const
Get limit.
#define DEBUG(A)
Message macros.