44 int main(
int argc, 
char **argv)
 
   48   using namespace KM3NETDAQ;
 
   64     JParser<> zap(
"Monitoring of PMT time-over-threshold distributions.");
 
   66     zap[
'f'] = 
make_field(inputFile,      
"input file.");
 
   68     zap[
'n'] = 
make_field(numberOfEvents)                                                 = JLimit::max();
 
   69     zap[
'a'] = 
make_field(detectorFile,   
"detector file.");
 
   71     zap[
'c'] = 
make_field(ctMax,          
"maximal cosine space angle between PMT axes.") =   0.0;
 
   73     zap[
'D'] = 
make_field(deadTime_us,    
"L0 dead time (us)")                            = 10;
 
   74     zap[
'C'] = 
make_field(selector,       
"timeslice selector, e.g. JDAQTimesliceL1.")    = getROOTClassSelection<JDAQTimesliceTypes_t>();
 
   75     zap[
'O'] = 
make_field(option,         
"hit pre-processing option.")                   = JPreprocessor::getOptions();
 
   80   catch(
const exception &error) {
 
   81     FATAL(error.what() << endl);
 
   90   if (!T_ns.is_valid()) {
 
   91     FATAL(
"Invalid time window [ns] " << T_ns << endl);
 
   94   if (selector == JDAQTimeslice  ::Class_Name() ||
 
   95       selector == JDAQTimesliceL1::Class_Name()) {
 
  103       FATAL(
"No trigger parameters from input." << endl);
 
  106     if ((selector == JDAQTimeslice  ::Class_Name() && parameters.writeL1.prescale > 0) ||
 
  107         (selector == JDAQTimesliceL1::Class_Name())) {
 
  109       if (parameters.TMaxLocal_ns < T_ns.getUpperLimit()) {
 
  110         FATAL(
"Option -T <T_ns> = " << T_ns.getUpperLimit() << 
" is larger than in the trigger " << parameters.TMaxLocal_ns << endl);
 
  115   if (!multiplicity.is_valid())          { 
FATAL(
"Invalid multiplicity " << multiplicity << endl); }
 
  116   if ( multiplicity.getLowerLimit() < 1) { 
FATAL(
"Invalid multiplicity " << multiplicity << endl); }
 
  132     FATAL(
"Empty detector." << endl);
 
  141   const double zmin =   -0.5;   
 
  142   const double zmax =  256.5;   
 
  143   const int    nz   = (int) ((zmax-zmin) / 1.0);
 
  153   const double deadTime_ns  =  deadTime_us * 1e3;
 
  159   for ( ; in.
hasNext() && counter != inputFile.getLimit(); ++counter) {
 
  161     STATUS(
"event: " << setw(10) << counter << 
'\r'); 
DEBUG(endl);
 
  165     for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
 
  167       if (router.
hasModule(frame->getModuleID())) {
 
  169         TH2D*          h2     = manager[frame->getModuleID()];
 
  172         JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*frame, module);
 
  174         buffer.preprocess(option, match);
 
  176         JSuperFrame1D_t& data = JSuperFrame1D_t::multiplex(buffer);
 
  180         for (JSuperFrame1D_t::const_iterator p = data.begin(), __end = data.end() - 1; p != __end; ) {
 
  182           JSuperFrame1D_t::const_iterator q = p;
 
  184           double ct_max = -1.0;
 
  185           double dt_min =  numeric_limits<double>::max();
 
  187           while (++q != __end && q->getT() - p->getT() < T_ns.getUpperLimit()) {
 
  190             const double dt = q->getT() - p->getT();
 
  201           if (multiplicity(
distance(p,q)) && ct_max < ctMax && dt_min > T_ns.getLowerLimit()) {
 
  203             for (JSuperFrame1D_t::const_iterator __p = p; __p != q; ++__p) {
 
  205               if (__p->getT() > t0[__p->getPMT()] + deadTime_ns) {
 
  206                 h2->Fill(__p->getPMT(), __p->getToT());
 
  209               t0[__p->getPMT()] = __p->getT();
 
Utility class to parse command line options. 
 
Auxiliaries for pre-processing of hits. 
 
ROOT TTree parameter settings. 
 
Basic data structure for L0 hit. 
 
const JModule & getModule(const JObjectID &id) const 
Get module parameters. 
 
Data structure for a composite optical module. 
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance. 
 
double getDot(const JNeutrinoDirection &first, const JNeutrinoDirection &second)
Dot product. 
 
Auxiliary class to select ROOT class based on class name. 
 
Router for direct addressing of module data in detector data structure. 
 
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
 
*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
 
#define MAKE_CSTRING(A)
Make C-string. 
 
Long64_t counter_type
Type definition for counter. 
 
Dynamic ROOT object management. 
 
Auxiliary class for multiplexing object iterators. 
 
Data structure for detector geometry and calibration. 
 
1-dimensional frame with time calibrated data from one optical module. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. 
 
Auxiliary class for defining the range of iterations of objects. 
 
I/O formatting auxiliaries. 
 
Reduced data structure for L0 hit. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file. 
 
virtual const pointer_type & next()
Get next element. 
 
void load(const JString &file_name, JDetector &detector)
Load detector from input file. 
 
Match operator for consecutive hits. 
 
const JPMT & getPMT(const int index) const 
Get PMT. 
 
General purpose messaging. 
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
Direct access to module in detector data structure. 
 
General purpose class for object reading from a list of file names. 
 
Utility class to parse command line options. 
 
bool hasModule(const JObjectID &id) const 
Has module. 
 
static const char *const _2SToT
Histogram naming. 
 
virtual bool hasNext()
Check availability of next element. 
 
2-dimensional frame with time calibrated data from one optical module. 
 
const JLimit & getLimit() const 
Get limit. 
 
KM3NeT DAQ constants, bit handling, etc. 
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module. 
 
Auxiliary class for specifying the way of pre-processing of hits. 
 
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters. 
 
#define DEBUG(A)
Message macros. 
 
bool putObject(TDirectory *dir, const T &object)
Write object to ROOT directory. 
 
int main(int argc, char *argv[])