62 int main(
int argc,
char **argv)
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);
112 if (reuse_parameters) {
118 NOTICE(
"Set trigger parameters from input." << endl);
121 FATAL(
"No trigger parameters from input." << endl);
129 NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
139 DEBUG(
"Reset time [ms] " <<
getRTS() * 1e-6 << endl);
144 if (
parameters.writeSummary()) {
WARNING(
"Discard writeSummary option during reprocesing of data." << endl); }
145 if (
parameters.writeL1()) {
WARNING(
"Discard writeL1 option during reprocesing of data." << endl); }
146 if (
parameters.writeL2()) {
WARNING(
"Discard writeL2 option during reprocesing of data." << endl); }
147 if (
parameters.writeSN()) {
WARNING(
"Discard writeSN option during reprocesing of data." << endl); }
186 if (scan.getEntries() == 0) {
187 FATAL(
"No summary data." << endl);
190 while (inputFile.hasNext()) {
192 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
195 Long64_t index = scan.find(*evt);
204 DEBUG(timeslice << endl);
215 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
217 if (moduleRouter.
hasModule(super_frame->getModuleID())) {
222 JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
226 buffer.applyHighRateVeto(
parameters.highRateVeto_Hz);
230 timesliceL0.push_back(JSuperFrame1D_t(buffer));
236 JSuperFrame2D_t::iterator __end = partition(buffer.begin(), buffer.end(),
parameters.triggerNB.pmts);
238 if (buffer.begin() != __end) {
240 timesliceNB.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
241 super_frame->getModuleIdentifier(),
245 JSuperFrame1D_t zbuf;
247 buildL1(buffer.begin(), __end , back_inserter(zbuf));
250 buildNB(buffer.begin() , __end, zbuf, back_inserter(*timesliceNB.rbegin()));
256 timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
257 super_frame->getModuleIdentifier(),
260 buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
264 timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
265 super_frame->getModuleIdentifier(),
268 buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
272 timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
273 super_frame->getModuleIdentifier(),
276 buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
287 for (JTriggerInput::const_iterator hit = trigger_input.begin(); hit != trigger_input.end(); ++hit) {
308 trigger3DMuon (trigger_input, back_inserter(trigger_output));
309 trigger3DShower(trigger_input, back_inserter(trigger_output));
310 triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
314 DEBUG(
"Number of triggers: " << trigger_output.size() << endl);
316 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.
int main(int argc, char *argv[])
ROOT TTree parameter settings of various packages.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
Data structure for a composite optical module.
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
Match of two events considering overlap in time.
void configure(const JDAQTimeslice ×lice)
Configure.
Recording of objects on file according a format that follows from the file name extension.
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)...
Basic data structure for time and time over threshold information of hit.
Template definition for direct access of elements in ROOT TChain.
Data structure for detector geometry and calibration.
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.
Basic data structure for L0 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...
Auxiliary class for defining the range of iterations of objects.
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.
Implementation of pipe operation for object iterators.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Auxiliary class to build JDAQEvent for a triggered event.
const JPosition3D & getPosition() const
Get position.
General purpose messaging.
Direct access to module in detector data structure.
void setCounter(const JTriggerCounter_t counter)
Set trigger counter.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
double getRTS()
Get TDC dynamic range.
Utility class to parse command line options.
JTriggerbit_t getTriggerBit() const
Get the trigger bit.
bool hasModule(const JObjectID &id) const
Has module.
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
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
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.