100 int main(
int argc, 
char **argv)
 
  104   using namespace KM3NETDAQ;
 
  111   string                 detectorFileA;
 
  112   string                 detectorFileB;
 
  115   bool                   triggeredEventsOnly;
 
  125     JParser<> zap(
"Auxiliary program to trigger Monte Carlo events.");
 
  127     zap[
'f'] = 
make_field(inputFile,           
"input file (output of detector simulation)");
 
  129     zap[
'n'] = 
make_field(numberOfEvents)                     = JLimit::max();
 
  130     zap[
'a'] = 
make_field(detectorFileA,       
"detector used for conversion from Monte Carlo truth to raw data.");
 
  131     zap[
'b'] = 
make_field(detectorFileB,       
"detector used for conversion of raw data to calibrated data.")     = 
"";
 
  132     zap[
'R'] = 
make_field(run,                 
"run number")  = -1;
 
  135     zap[
'O'] = 
make_field(triggeredEventsOnly, 
"optionally write only triggered events.");
 
  144   catch(
const exception &error) {
 
  145     FATAL(error.what() << endl);
 
  148   gRandom->SetSeed(seed);
 
  150   JK40DefaultSimulatorInterface::setSigma(sigma_ns);
 
  154   if (detectorFileB == 
"") {
 
  155     detectorFileB = detectorFileA;
 
  163     load(detectorFileA, detectorA);
 
  164     load(detectorFileB, detectorB);
 
  170   JPMTParametersMap::Throw(
true);
 
  172   if (!pmtParameters.is_valid()) {
 
  173     FATAL(
"Invalid PMT parameters " << pmtParameters << endl);
 
  176   if (pmtParameters.getQE() != 1.0) {
 
  178     WARNING(
"Correct background rates with global efficiency " << pmtParameters.getQE() << endl);
 
  180     rates_Hz.correct(pmtParameters.getQE());
 
  196   if (runbyrun.is_valid()) {
 
  198     NOTICE(
"Using run-by-run:" << endl << runbyrun << endl);
 
  200     if (!runbyrun.hasNext()) {
 
  201       FATAL(
"Run-by-run simulation yields no input." << endl);
 
  204     if (rates_Hz.getSinglesRate() != 0.0) {
 
  205       WARNING(
"Run-by-run simulation discards singles rate [Hz] " << rates_Hz.getSinglesRate() << endl);
 
  221       NOTICE(
"Set trigger parameters from run-by-run input." << endl);
 
  224       WARNING(
"No trigger parameters from run-by-run input;\nrun with default/user input." << endl);
 
  229     JHead buffer(header);
 
  234     copy(buffer, header);
 
  238     NOTICE(
"Using fixed rates [Hz]: " << rates_Hz << endl);
 
  254     NOTICE(
"Disabling high-rate veto of all PMTs." << endl);
 
  262   DEBUG(
"PMT parameters:" << endl << pmtParameters << endl); 
 
  288   const JPosition3D center = get<JPosition3D>(header);
 
  290   NOTICE(
"Apply detector offset from Monte Carlo run header (" << center << 
")" << endl);
 
  311   int          trigger_counter  = 0;
 
  329     limit.setLowerLimit(limit.getLowerLimit() - in.
skip(limit.getLowerLimit()));
 
  331     for ( ; in.
hasNext() && number_of_events != limit; ++number_of_events) {
 
  333       STATUS(
"event: " << setw(10) << number_of_events << 
'\r'); 
DEBUG(endl);
 
  337       event->mc_run_id = mc_run_id;
 
  339       DEBUG(*event << endl);
 
  341       bool trigger = 
false;
 
  343       if (!event->mc_hits.empty()) {
 
  347         if (runbyrun.is_valid() && runbyrun.hasNext()) {
 
  349           summaryRouter.update(runbyrun.next());
 
  351           summaryRouter.correct(dynamic_cast<const JPMTDefaultSimulatorInterface&>(simbad.
getPMTSimulator()));
 
  353           frame_index = summaryRouter.getFrameIndex();
 
  354           run         = summaryRouter.getRunNumber();
 
  370         timeRange.
add(event->mc_t);
 
  371         timeRange.
add(period);
 
  375         if (event->mc_event_time != TTimeStamp(0)) {
 
  379         const JDAQChronometer chronometer(detectorB.getID(), (run != -1 ? run : mc_run_id), frame_index, utc);
 
  383         DEBUG(timeslice << endl);
 
  393         for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
 
  395           if (moduleRouter.
hasModule(super_frame->getModuleID())) {
 
  400             const JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*super_frame, module);
 
  404             timesliceL0.push_back(JSuperFrame1D_t(buffer));
 
  408             timesliceL1.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  409                                                   super_frame->getModuleIdentifier(),
 
  412             buildL1(*timesliceL0.rbegin(), back_inserter(*timesliceL1.rbegin()));
 
  416             timesliceL2.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  417                                                   super_frame->getModuleIdentifier(),
 
  420             buildL2(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceL2.rbegin()));
 
  424             timesliceSN.push_back(JSuperFrame1D_t(super_frame->getDAQChronometer(),
 
  425                                                   super_frame->getModuleIdentifier(),
 
  428             buildSN(buffer, *timesliceL1.rbegin(), back_inserter(*timesliceSN.rbegin()));
 
  430             DEBUG(
"L0 " << setw(8) << timesliceL0.rbegin()->getModuleID() << 
' ' << setw(8) << timesliceL0.rbegin()->size() << endl);
 
  431             DEBUG(
"L1 " << setw(8) << timesliceL1.rbegin()->getModuleID() << 
' ' << setw(8) << timesliceL1.rbegin()->size() << endl);
 
  432             DEBUG(
"L2 " << setw(8) << timesliceL2.rbegin()->getModuleID() << 
' ' << setw(8) << timesliceL2.rbegin()->size() << endl);
 
  433             DEBUG(
"SN " << setw(8) << timesliceSN.rbegin()->getModuleID() << 
' ' << setw(8) << timesliceSN.rbegin()->size() << endl);
 
  443         trigger3DMuon  (trigger_input, back_inserter(trigger_output));
 
  444         trigger3DShower(trigger_input, back_inserter(trigger_output));
 
  445         triggerMXShower(trigger_input, timesliceL0, back_inserter(trigger_output));
 
  449         for (JTriggerOutput::const_iterator to = trigger_output.begin(); to != trigger_output.end(); ++to) {
 
  451           for (
int i = 0; 
i != h1.GetNbinsX(); ++
i) {
 
  452             if (to->hasTriggerBit(
i)) {
 
  460                 << to->getFrameIndex() << 
' '  
  462                 << timeRange           << endl);
 
  464           if (timeRange.
overlap(eventTime)) {
 
  483         if (!triggeredEventsOnly || trigger) {
 
  507       if (!triggeredEventsOnly || trigger) {
 
Auxiliary class to select summary data (KM3NETDAQ::JDAQSummaryslice) from the specified raw data file...
 
Utility class to parse command line options. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits. 
 
Default implementation of the simulation of K40 background. 
 
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...
 
then usage $script[< detector identifier >< run range >]< QA/QCfile > nExample script to produce data quality plots nWhen a detector identifier and run range are data are downloaded from the database nand subsequently stored in the given QA QC file
 
double getSigma(vector< double > &v)
get standard deviation of vector content 
 
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. 
 
JAANET::start_run start_run
 
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)...
 
Long64_t counter_type
Type definition for counter. 
 
double livetime_s
Live time [s]. 
 
const JPMTSimulator & getPMTSimulator() const 
Get PMT simulator. 
 
double getTimeOfRTS(const JDAQChronometer &chronometer)
Get time of last RTS in ns since start of run for a given chronometer. 
 
Basic data structure for time and time over threshold information of hit. 
 
Data structure for UTC time. 
 
Data structure for detector geometry and calibration. 
 
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given 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. 
 
K40 simulation based on run-by-run information. 
 
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header. 
 
Basic data structure for L0 hit. 
 
void setDAQLongprint(const bool option)
Set DAQ print option. 
 
Auxiliary class for defining the range of iterations of objects. 
 
I/O formatting auxiliaries. 
 
Auxiliaries for creation of summary data. 
 
virtual bool hasNext() override
Check availability of next element. 
 
void merge(const JMatch_t &match)
Merge events. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
CLB simulation based on run-by-run information. 
 
double getFrameTime()
Get frame time duration. 
 
Auxiliary class to create summary data. 
 
const JDAQChronometer & getDAQChronometer() const 
Get DAQ chronometer. 
 
Auxiliary class to build JDAQEvent for a triggered event. 
 
Auxiliary class for map of PMT parameters. 
 
Direct access to PMT in detector data structure. 
 
const JPosition3D & getPosition() const 
Get position. 
 
double getMaximalTime(const double R_Hz)
Get maximal time for given rate. 
 
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
 
General purpose messaging. 
 
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
 
void push(T JHead::*pd)
Push given data member to Head. 
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
void reset(JK40Simulator *k40Simulator)
Reset K40 simulator. 
 
PMT simulation based on run-by-run information. 
 
void setCounter(const JTriggerCounter_t counter)
Set trigger counter. 
 
virtual const char * what() const override
Get error message. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Auxiliary class to build JDAQTimeslice for L1 timeslice. 
 
double getLivetime(const std::string &file_name)
Get data taking live time. 
 
Utility class to parse command line options. 
 
Map of associated modules in detector. 
 
virtual const pointer_type & next() override
Get next element. 
 
bool hasModule(const JObjectID &id) const 
Has module. 
 
void copy(const Head &from, JHead &to)
Copy header from from to to. 
 
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. 
 
counter_type getCounter() const 
Get counter. 
 
Data structure for position in three dimensions. 
 
const JLimit & getLimit() const 
Get limit. 
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
 
JDAQUTCExtended getDAQUTCExtended(const TTimeStamp &t0, const double t1=0.0)
Get DAQ UTC time. 
 
Match of two events considering overlap in time. 
 
Timeslice with Monte Carlo event. 
 
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters. 
 
Basic data structure for L1 hit. 
 
Auxiliary class for K40 rates. 
 
The Evt class respresent a Monte Carlo (MC) event as well as an offline event. 
 
virtual skip_type skip(const skip_type ns) override
Skip items. 
 
Time slice with calibrated data. 
 
#define DEBUG(A)
Message macros.