47int main(
int argc, 
char **argv)
 
   54  JLimit_t&          numberOfEvents = inputFile.getLimit();
 
   67    JParser<> zap(
"Monitoring of PMT time-over-threshold distributions.");
 
   69    zap[
'f'] = 
make_field(inputFile,      
"input file.");
 
   72    zap[
'a'] = 
make_field(detectorFile,   
"detector file.");
 
   74    zap[
'c'] = 
make_field(ctMax,          
"maximal cosine space angle between PMT axes.") =   0.0;
 
   76    zap[
'D'] = 
make_field(deadTime_us,    
"L0 dead time (us)")                            = 10;
 
   83  catch(
const exception &error) {
 
   84    FATAL(error.what() << endl);
 
   93    FATAL(
"Invalid time window [ns] " << T_ns << endl);
 
   96  if (selector == JDAQTimeslice  ::Class_Name() ||
 
   97      selector == JDAQTimesliceL1::Class_Name()) {
 
  105      FATAL(
"No trigger parameters from input." << endl);
 
  108    if ((selector == JDAQTimeslice  ::Class_Name() && parameters.writeL1.prescale > 0) ||
 
  109        (selector == JDAQTimesliceL1::Class_Name())) {
 
  112        FATAL(
"Option -T <T_ns> = " << T_ns.
getUpperLimit() << 
" is larger than in the trigger " << parameters.TMaxLocal_ns << endl);
 
  117  if (!multiplicity.
is_valid())          { 
FATAL(
"Invalid multiplicity " << multiplicity << endl); }
 
  118  if ( multiplicity.
getLowerLimit() < 1) { 
FATAL(
"Invalid multiplicity " << multiplicity << endl); }
 
  134    FATAL(
"Empty detector." << endl);
 
  143  const double zmin =   -0.5;   
 
  144  const double zmax =  256.5;   
 
  145  const int    nz   = (int) ((zmax-zmin) / 1.0);
 
  155  const double deadTime_ns  =  deadTime_us * 1e3;
 
  166  for (
counter_type counter = 0; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
 
  168    STATUS(
"event: " << setw(10) << counter << 
'\r'); 
DEBUG(endl);
 
  180    for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
 
  182      if (router.
hasModule(frame->getModuleID())) {
 
  184        TH2D*          h2     = manager[frame->getModuleID()];
 
  187        JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
 
  189        buffer.preprocess(option, match);
 
  191        JSuperFrame1D_t& data   = JSuperFrame1D_t::multiplex(buffer);
 
  193        vector<double> t0(NUMBER_OF_PMTS, numeric_limits<double>::lowest());
 
  195        for (JSuperFrame1D_t::const_iterator p = data.begin(); p != data.end(); ) {
 
  197          JSuperFrame1D_t::const_iterator q = p;
 
  201          double ct_max = -1.0;
 
  202          double dt_min =  numeric_limits<double>::max();
 
  204          while (++q != data.end() && q->getT() - p->getT() < T_ns.
getUpperLimit()) {
 
  207            const double dt = q->getT() - p->getT();
 
  220            for (JSuperFrame1D_t::const_iterator i = p; i != q; ++i) {
 
  222              if (i->getT() > t0[i->getPMT()] + deadTime_ns) {
 
  223                h2->Fill(i->getPMT(), i->getToT());
 
  226              t0[i->getPMT()] = i->getT();
 
 
int main(int argc, char **argv)
 
KM3NeT DAQ constants, bit handling, etc.
 
Data structure for detector geometry and calibration.
 
Basic data structure for L0 hit.
 
Dynamic ROOT object management.
 
Match operator for consecutive hits.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Direct access to module in detector data structure.
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Auxiliaries for pre-processing of hits.
 
I/O formatting auxiliaries.
 
#define MAKE_CSTRING(A)
Make C-string.
 
ROOT TTree parameter settings of various packages.
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Router for direct addressing of module data in detector data structure.
 
bool hasModule(const JObjectID &id) const
Has module.
 
const JModule & getModule(const JObjectID &id) const
Get module parameters.
 
Data structure for a composite optical module.
 
const JPMT & getPMT(const int index) const
Get PMT.
 
Auxiliary class for multiplexing object iterators.
 
virtual bool hasNext() override
Check availability of next element.
 
virtual const pointer_type & next() override
Get next element.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
 
General purpose class for object reading from a list of file names.
 
Reduced data structure for L0 hit.
 
1-dimensional frame with time calibrated data from one optical module.
 
2-dimensional frame with time calibrated data from one optical module.
 
int getDetectorID() const
Get detector identifier.
 
int getRunNumber() const
Get run number.
 
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product.
 
static const char *const _2SToT
Histogram naming.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
 
std::set< JROOTClassSelector > getROOTClassSelection(const bool option=false)
Get ROOT class selection.
 
Long64_t counter_type
Type definition for counter.
 
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
 
KM3NeT DAQ data structures and auxiliaries.
 
Auxiliary class to select ROOT class based on class name.
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.
 
Auxiliary class for specifying the way of pre-processing of hits.
 
static std::vector< JPreprocessor > getOptions()
Get options.