80{
   83 
   86 
   88  JLimit_t&               numberOfEvents = inputFile.getLimit();
 
   90  string                  detectorFile;
   93  double                  Q;
   95 
   96  try {
   97 
   98    JParser<> zap(
"Example program to monitor acoustic events.");
 
   99 
  100    zap[
'f'] = 
make_field(inputFile,       
"output of JAcousticEventBuilder[.sh]");
 
  108 
  109    zap(argc, argv);
  110  }
  111  catch(const exception &error) {
  112    FATAL(error.what() << endl);
 
  113  }
  114 
  116 
  117  try {
  119  }
  122  }
  123 
  125 
  128  
  129  for (JDetector::const_iterator i = 
detector.begin(); i != 
detector.end(); ++i) {
 
  130    receivers[i->getID()] = JModule_t(i->getLocation(), i->getPosition());
  131  }
  132 
  133  for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
  134    emitters[i->getID()]  = (i->getUTMPosition() - 
detector.getUTMPosition());
 
  135  }
  136 
  137  for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
  138    try {
  139      emitters[i->getID()]  = (i->getPosition() + 
detector.getModule(i->getLocation()).getPosition());
 
  140    }
  141    catch(const exception&) {
  142      continue;                                                       
  143    }
  144  }
  145 
  148 
  158                                  string.size(),              -0.5, string.size()         - 0.5, 
  159                                  floor.getUpperLimit() + 1, - 0.5, floor.getUpperLimit() + 0.5));
  161                                              string.size(),              -0.5, string.size()         - 0.5, 
  162                                              floor.getUpperLimit() + 1, - 0.5, floor.getUpperLimit() + 0.5));
  163 
  164  for (Int_t i = 1; i <= H2->GetXaxis()->GetNbins(); ++i) {
  165    H2->GetXaxis()->SetBinLabel(i, 
MAKE_CSTRING(
string.at(i-1)));
 
  166  }
  167 
  168  for (Int_t i = 1; i <= H2->GetYaxis()->GetNbins(); ++i) {
  170  }
  171 
  172  for (Int_t i = 1; i <= H4->GetXaxis()->GetNbins(); ++i) {
  173    H4->GetXaxis()->SetBinLabel(i, 
MAKE_CSTRING(
string.at(i-1)));
 
  174  }
  175 
  176  for (Int_t i = 1; i <= H4->GetYaxis()->GetNbins(); ++i) {
  178  }
  179 
  181 
  183    H2[i->first];
  184    H3[i->first];
  185  }
  186 
  188 
  190  
  192 
  194 
  196 
  197    for (JTreeScanner_t::iterator event = in.begin(); event != in.end() && counter != inputFile.getLimit(); ++event, ++counter) {
  198 
  199      if (counter%1000 == 0) {
  200        STATUS(
"event " << setw(8) << counter << 
'\r'); 
DEBUG(endl);
 
  201      }
  202 
  203      const JEvent evt = *event;
 
  204 
  206 
  207      for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
  208        Q1.put(i->getToE());
  209      }
  210 
  211      HA[evt.
getID()]->Fill((
double) evt.size());
 
  213 
  215        HC[evt.
getID()]->Fill(log10(evt.begin()->getToE() - toe[evt.
getID()]));
 
  216      }
  217 
  218      HD[evt.
getID()]->Fill(Q1.getSTDev());
 
  220    
  221      toe[evt.
getID()] = evt.begin()->getToE();
 
  222 
  223      TH1D* hq = HQ[evt.
getID()];
 
  224      TH2D* hr = HR[evt.
getID()];
 
  225      TH1D* h1 = H1[evt.
getID()];
 
  226      TH2D* h2 = H2[evt.
getID()];
 
  227      TH2D* h3 = H3[evt.
getID()];
 
  228      TProfile2D* h4 = H4[evt.
getID()];
 
  229 
  230      for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
  231        hq->Fill(log10(i->getQ()));
  232      }
  233 
  235 
  237      
  238        for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
  239          if (receivers.
has(i->getID())) {
 
  240            HR->Fill(log10(p0.
getDistance(receivers[i->getID()])), log10(i->getQ()));
 
  241            hr->Fill(log10(p0.
getDistance(receivers[i->getID()])), log10(i->getQ()));
 
  242          }
  243        }
  244      }
  245      
  247 
  248      for (JEvent::const_iterator i = evt.begin(); i != evt.end(); ++i) {
  249        buffer[i->getID()].insert(i->getQ());
  250      }
  251 
  252      for (
map<
int, 
set<double> >::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
 
  253 
  254        h1->Fill((double) i->second.size());
  255 
  256        if (receivers.
has(i->first)) {
 
  257 
  258          const JLocation& location = receivers[i->first];
 
  259 
  260          const double x = 
string.getIndex(location.
getString());
 
  262 
  263          h2->Fill(x, y, 1.0);
  264 
  265          if (i->second.size() >= 2u) {
  266            h3->Fill(x, y, 1.0);
  267          }
  268 
  269          h4->Fill(x, y, log10(*(i->second.rbegin())));
  270        }
  271      }
  272    }
  273  }
  275 
  276 
  278 
  279  out << HA << HB << HC << HD << HE << HQ << HR << *HR << H1 << H2 << H3 << H4;
  280 
  281  out.Write();
  282  out.Close();
  283}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
Logical location of module.
 
const JLocation & getLocation() const
Get location.
 
int getFloor() const
Get floor number.
 
int getString() const
Get string number.
 
Data structure for position in three dimensions.
 
double getDistance(const JVector3D &pos) const
Get distance to point.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
Base class for JTreeScanner.
 
Template definition for direct access of elements in ROOT TChain.
 
JContainer< std::vector< JTripod > > tripods_container
 
JContainer< std::vector< JTransmitter > > transmitters_container
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
 
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Long64_t counter_type
Type definition for counter.
 
int getID() const
Get emitter identifier.
 
int getOverlays() const
Get number of overlayed events.
 
Auxiliary wrapper for I/O of container with optional comment (see JComment).
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary class for defining the range of iterations of objects.
 
static counter_type max()
Get maximum counter value.