44 int main(
int argc, 
char **argv)
 
   48   using namespace KM3NETDAQ;
 
   55   int                numberOfTimeslices;
 
   57   double             binWidth_min_timeEvolution;
 
   63     JParser<> zap(
"Example program to search for out of sync shifts around integral timeslices evolving over time.");
 
   68     zap[
'n'] = 
make_field(numberOfEvents)      = JLimit::max();
 
   70     zap[
'N'] = 
make_field(numberOfTimeslices)  = 40;
 
   72     zap[
'M'] = 
make_field(binWidth_min_timeEvolution) = 2;
 
   73     zap[
'C'] = 
make_field(selector)            = 
"", getROOTClassSelection<JDAQTimesliceTypes_t>();
 
   78   catch(
const exception& error) {
 
   79     FATAL(error.what() << endl);
 
   89   const int WR     =  0x80000000;    
 
   91   MASK[808969848]  =  0x00000020;    
 
   92   MASK[809544061]  =  0x00000080;    
 
   93   MASK[808432835]  =  0x00004000;    
 
  108   typedef  double    hit_type;
 
  120   if (selector == 
"") {
 
  128       FATAL(
"No timeslice data." << endl);
 
  131     NOTICE(
"Selected class " << ps->getClassName() << endl);
 
  137     ps->configure(inputFile);
 
  143   const Double_t ymin = -(numberOfTimeslices + 0.5);
 
  144   const Double_t ymax = +(numberOfTimeslices + 0.5);
 
  145   const Int_t    ny   = (Int_t) (ymax - ymin);
 
  147   const Double_t xmin = inputFile.getLimit().min()*
getFrameTime()*1e-9;
 
  148   const Double_t xmax = min(inputFile.getLimit().max(), ps->getEntries())*
getFrameTime()*1e-9; 
 
  149   const Int_t    nx   = (Int_t) ((xmax - xmin) / (60*binWidth_min_timeEvolution)) + 1;
 
  151   JManager_t manager(
new TH2D(
"M2D_%", 
";time [s];shift [timeslices]", nx, xmin, xmax, ny, ymin, ymax));
 
  159     STATUS(
"event: " << setw(10) << 
in.getCounter() << 
'\r'); 
DEBUG(endl);
 
  174     buffer[
event->getFrameIndex()].push_back(t0);
 
  179   while (ps->hasNext()) {
 
  181     STATUS(
"event: " << setw(10) << ps->getCounter() << 
'\r'); 
DEBUG(endl);
 
  185     map_type::const_iterator p = buffer.lower_bound(timeslice->
getFrameIndex() - numberOfTimeslices);
 
  186     map_type::const_iterator q = buffer.upper_bound(timeslice->
getFrameIndex() + numberOfTimeslices);
 
  188     int number_of_events = 0;
 
  190     for (map_type::const_iterator i = p; i != q; ++i) {
 
  191       number_of_events += i->second.size();
 
  194     if (number_of_events == 0) {
 
  198     for (JDAQTimeslice::const_iterator frame = timeslice->begin(); frame != timeslice->end(); ++frame) {
 
  202       if ((frame->getStatus() & ~MASK[frame->getModuleID()] & ~WR) == 0) {
 
  206         buildL1(*frame, router.
getModule(frame->getModuleID()), back_inserter(data));
 
  208         TH2D* h2 = manager[frame->getModuleID()];
 
  212           const double t1 = *hit + frame->getFrameIndex() * 
getFrameTime();
 
  214           for (map_type::const_iterator i = p; i != q; ++i) {
 
  215             for (map_type::mapped_type::const_iterator 
j = i->second.begin(); 
j != i->second.end(); ++
j) {
 
  217               const double t0 = *
j;
 
  221           if ( abs(timeFromInt)*
getFrameTime() < binWidth_ns/2. ){
 
Utility class to parse command line options. 
 
Direct access to PMT data in detector data structure for DAQ hits. 
 
int main(int argc, char *argv[])
 
ROOT TTree parameter settings of various packages. 
 
Auxiliary class to select ROOT class based on class name. 
 
Auxialiary class to assert type conversion. 
 
const JModule & getModule(const JDAQKeyHit &hit) const 
Get module parameters. 
 
Dynamic ROOT object management. 
 
Auxiliary class for a type holder. 
 
double getTime(const Hit &hit)
Get true time of hit. 
 
Template definition for direct access of elements in ROOT TChain. 
 
Data structure for detector geometry and calibration. 
 
Simple wrapper around JModuleRouter class for direct addressing of PMT data in detector data structur...
 
int getFrameIndex() const 
Get frame index. 
 
The template JSinglePointer class can be used to hold a pointer to an object. 
 
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. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
I/O formatting auxiliaries. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
double getFrameTime()
Get frame time duration. 
 
General purpose messaging. 
 
Auxiliary class to select JTreeScanner based on ROOT class name. 
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Utility class to parse command line options. 
 
Auxiliary data structure for L1 build parameters. 
 
const JLimit & getLimit() const 
Get limit. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
const JPMT & getPMT(const JDAQKeyHit &hit) const 
Get PMT parameters. 
 
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 source JAcoustics sh $DETECTOR_ID typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
 
#define DEBUG(A)
Message macros.