66 using namespace KM3NETDAQ;
75 bool reuse_parameters;
82 JParser<> zap(
"Auxiliary program to re-trigger event data.");
84 zap[
'f'] =
make_field(inputFile,
"input file.");
86 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
87 zap[
'a'] =
make_field(detectorFile,
"detector file.");
89 zap[
'U'] =
make_field(reuse_parameters,
"reuse trigger parameters from input file.");
90 zap[
'S'] =
make_field(snapshot,
"use snapshot hits instead of triggered hits.");
96 catch(
const exception &error) {
97 FATAL(error.what() << endl);
114 if (reuse_parameters) {
120 NOTICE(
"Set trigger parameters from input." << endl);
123 FATAL(
"No trigger parameters from input." << endl);
131 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
141 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
146 if (
parameters.writeSummary()) {
WARNING(
"Discard writeSummary option during reprocesing of data." << endl); }
147 if (
parameters.writeL1()) {
WARNING(
"Discard writeL1 option during reprocesing of data." << endl); }
148 if (
parameters.writeL2()) {
WARNING(
"Discard writeL2 option during reprocesing of data." << endl); }
149 if (
parameters.writeSN()) {
WARNING(
"Discard writeSN option during reprocesing of data." << endl); }
188 if (scan.getEntries() == 0) {
189 FATAL(
"No summary data." << endl);
192 while (inputFile.hasNext()) {
194 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
197 Long64_t index = scan.find(*evt);
206 DEBUG(timeslice << endl);
208 timesliceRouter.configure(timeslice);
211 JTimeslice_t timesliceL0(timeslice.getDAQChronometer());
212 JTimeslice_t timesliceL1(timeslice.getDAQChronometer());
213 JTimeslice_t timesliceL2(timeslice.getDAQChronometer());
214 JTimeslice_t timesliceSN(timeslice.getDAQChronometer());
215 JTimeslice_t timesliceNB(timeslice.getDAQChronometer());
217 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
219 if (moduleRouter.hasModule(super_frame->getModuleID())) {
223 const JModule& module = moduleRouter.getModule(super_frame->getModuleID());
224 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
228 buffer.applyHighRateVeto(
parameters.highRateVeto_Hz);
232 timesliceL0.push_back(JSuperFrame1D_t(buffer));
238 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(),
parameters.triggerNB.pmts);
240 if (buffer.begin() != __end) {
242 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
243 super_frame->getModuleIdentifier(),
247 JSuperFrame1D_t zbuf;
249 buildL1(buffer.begin(), __end , back_inserter(zbuf));
252 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
258 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
259 super_frame->getModuleIdentifier(),
262 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
266 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
267 super_frame->getModuleIdentifier(),
270 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
274 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
275 super_frame->getModuleIdentifier(),
278 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
289 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
310 trigger3DMuon (trigger_input, back_inserter(trigger_output));
311 trigger3DShower(trigger_input, back_inserter(trigger_output));
312 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
316 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
318 for (JTriggerOutput::const_iterator event = trigger_output.begin();
event != trigger_output.end(); ++event) {
Utility class to parse command line options.
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask.
Data structure for a composite optical module.
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
Router for direct addressing of module data in detector data structure.
Auxiliary class for ROOT class selection.
static const int HIGH_RATE_VETO_DISABLE
Enable (disable) use of high-rate veto test if this status bit is 0 (1);.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Template definition for direct access of elements in ROOT TChain.
Auxiliary class for selection of data type.
int getFrameIndex() const
Get frame index.
1-dimensional frame with time calibrated data from one optical module.
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event.
void setDAQLongprint(const bool option)
Set DAQ print option.
Auxiliary class for defining the range of iterations of objects.
double getMaximalDistance(const JDetector &detector)
Get maximal distance between modules in detector.
void merge(const JMatch_t &match)
Merge events.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
double getFrameTime()
Get frame time duration.
Auxiliary class to build JDAQEvent for a triggered event.
const JPosition3D & getPosition() const
Get position.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
double getRTS()
Get TDC dynamic range.
2-dimensional frame with time calibrated data from one optical module.
Object reading from a list of files.
const JLimit & getLimit() const
Get limit.
do set_variable DETECTOR_TXT $WORKDIR detector
Match of two events considering overlap in time.
JTriggerCounter_t getCounter() const
Get trigger counter.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
JTriggerCounter_t next()
Increment trigger counter.
Time slice with calibrated data.
#define DEBUG(A)
Message macros.