56 int main(
int argc,
char **argv)
60 using namespace KM3NETDAQ;
64 JSingleFileScanner<JDAQEvent> inputFile;
69 bool reuse_parameters;
74 JParser<> zap(
"Auxiliary program to re-trigger event data.");
78 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
86 catch(
const exception &error) {
87 FATAL(error.what() << endl);
96 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
97 DEBUG(
"Trigger" << endl << parameters << endl);
102 load(detectorFile, detector);
104 catch(
const JException& error) {
108 if (reuse_parameters) {
114 NOTICE(
"Set trigger parameters from input." << endl);
116 catch(
const JException& error) {
117 FATAL(
"No trigger parameters from input." << endl);
123 const JModuleRouter moduleRouter(detector);
125 if (parameters.writeSummary()) {
WARNING(
"Disgard writeSummary option during reprocesing of data." << endl); }
126 if (parameters.writeL1()) {
WARNING(
"Disgard writeL1 option during reprocesing of data." << endl); }
127 if (parameters.writeL2()) {
WARNING(
"Disgard writeL2 option during reprocesing of data." << endl); }
128 if (parameters.writeSN()) {
WARNING(
"Disgard writeSN option during reprocesing of data." << endl); }
143 JTimesliceRouter timesliceRouter(parameters.numberOfBins);
145 const JTrigger3DMuon trigger3DMuon (parameters);
146 const JTrigger3DShower trigger3DShower(parameters);
147 const JTriggerMXShower triggerMXShower(parameters, detector);
160 JTreeScanner<JDAQSummaryslice, JDAQEvaluator> scan(inputFile);
162 if (scan.getEntries() == 0) {
163 FATAL(
"No summary data." << endl);
166 while (inputFile.hasNext()) {
168 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
171 Long64_t index = scan.find(*evt);
180 DEBUG(timeslice << endl);
182 timesliceRouter.configure(timeslice);
189 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
191 if (!moduleRouter.hasModule(super_frame->getModuleID())) {
192 ERROR(
"Missing module: " << super_frame->getModuleID() << endl);
198 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
199 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
211 timesliceL1.push_back(
JSuperFrame1D_t(super_frame->getDAQChronometer(),
212 super_frame->getModuleIdentifier(),
213 module.getPosition()));
215 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
219 timesliceL2.push_back(
JSuperFrame1D_t(super_frame->getDAQChronometer(),
220 super_frame->getModuleIdentifier(),
221 module.getPosition()));
223 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
229 JTriggerInput trigger_input(timesliceL2);
230 JTriggerOutput trigger_output;
232 trigger3DMuon (trigger_input, back_inserter(trigger_output));
233 trigger3DShower(trigger_input, back_inserter(trigger_output));
234 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
236 trigger_output.merge(JEventOverlap(parameters.TMaxEvent_ns));
238 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
240 for (JTriggerOutput::const_iterator
event = trigger_output.begin();
event != trigger_output.end(); ++
event) {
242 JTriggeredEvent tev(*
event,
245 parameters.TMaxLocal_ns,
255 JSingleFileScanner<JRemove<typelist, JDAQEvent>::typelist> io(inputFile);
Utility class to parse command line options.
Data structure for all trigger parameters.
JBuildL2< hit_type > JBuildL2_t
Recording of objects on file according a format that follows from the file name extension.
Structure to store the ToT mean and standard deviation of the hits produced by a nanobeacon in a sour...
Empty structure for specification of parser element that is initialised (i.e.
JSuperFrame2D< hit_type > JSuperFrame2D_t
Data structure for detector geometry and calibration.
int getFrameIndex() const
Get frame index.
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e.
Basic data structure for L0 hit.
JLimit JLimit_t
Type definition of limit.
JBuildL1< hit_type > JBuildL1_t
Basic data structure for time and time over threshold information of hit.
void setDAQLongprint(const bool option)
Set DAQ print option.
Scanning of objects from a single file according a format that follows from the extension of each fil...
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
double getFrameTime()
Get frame time duration.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
void applyHighRateVeto(const double rate_Hz)
Apply high-rate veto.
void load(const JString &file_name, JDetector &detector)
Load detector from input file.
JTimeslice< hit_type > JTimeslice_t
General purpose messaging.
Direct access to module in detector data structure.
double getRTS()
Get TDC dynamic range.
Utility class to parse command line options.
ROOT TTree parameter settings.
2-dimensional frame with time calibrated data from one optical module.
const JLimit & getLimit() const
Get limit.
KM3NeT DAQ constants, bit handling, etc.
JTriggerCounter_t getCounter() const
Get trigger counter.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
Basic data structure for L1 hit.
JTriggerCounter_t next()
Increment trigger counter.
Time slice with calibrated data.
#define DEBUG(A)
Message macros.
JSuperFrame1D< hit_type > JSuperFrame1D_t
int main(int argc, char *argv[])