80   typedef JRange<int> JRange_t; 
 
   95     JParser<> zap(
"Example program to analyse acoustic data from data base.");
 
  110   catch(
const exception &error) {
 
  111     FATAL(error.what() << endl);
 
  115   const double SOUND_VELOCITY  =  1481.0;   
 
  121     load(detectorFile, detector);
 
  123   catch(
const JException& error) {
 
  127   const JModuleRouter router(detector);
 
  129   const int MODULE[] = {
 
  130     detector.getModule(JModuleLocation(1,  1)).getID(),
 
  131     detector.getModule(JModuleLocation(1, 17)).getID()
 
  142   tripod[12] = (JUTMPosition(587888, 4017079, detector.getUTMZ()) - detector.getUTMPosition()).
getPosition();
 
  143   tripod[14] = (JUTMPosition(587436, 4016992, detector.getUTMZ()) - detector.getUTMPosition()).
getPosition();
 
  144   tripod[16] = (JUTMPosition(587843, 4016727, detector.getUTMZ()) - detector.getUTMPosition()).
getPosition();
 
  146   DEBUG(
"Tripods" << endl);
 
  150     const JPosition3D pos = i->second  -  JPosition3D(detector.getModule(JModuleLocation(1, 1)).getX(),
 
  151                                                       detector.getModule(JModuleLocation(1, 1)).getY(),
 
  154     DEBUG(setw(2)    << i->first   << 
' '  
  155           << 
FIXED(7,2) << pos.getX() << 
' '  
  156           << 
FIXED(7,2) << pos.getY() << 
' '  
  157           << 
FIXED(7,2) << pos.getZ() << 
' '  
  158           << 
FIXED(7,2) << sqrt(pos.getX()*pos.getX() + pos.getY()*pos.getY())
 
  179     JSelector selector = getSelector<JToAshort>(detid,
 
  180                                                 runs.getLowerLimit(),
 
  181                                                 runs.getUpperLimit());
 
  183     ResultSet& rs  = 
getResultSet(getTable<JToAshort>(), selector);
 
  185     int number_of_rows = 0;
 
  187     for (JToAshort parameters; rs >> parameters; ++number_of_rows) {
 
  189       STATUS(setw(8) << number_of_rows << 
'\r' << flush); 
DEBUG(endl);
 
  195       const double d1 = (router.getModule(parameters.DOMID).getPosition() - tripod[parameters.EMITTERID]).getLength();
 
  196       const double t1 =  parameters.UNIXTIMEBASE  +  parameters.TOA_S  -  d1 / SOUND_VELOCITY;
 
  197       const double q1 =  parameters.QUALITYFACTOR;
 
  199       f1[parameters.EMITTERID][parameters.DOMID].push_back(JElement_t(t1,q1));
 
  203   catch(
const exception& error) {
 
  204     FATAL(error.what() << endl);
 
  210     TH1D* h1 = H1[emitter->first];
 
  214     for (
int i = 0; i != 
sizeof(MODULE)/
sizeof(MODULE[0]); ++i) {
 
  216       buffer_type& buffer = emitter->second[MODULE[i]];
 
  218       JQuantile Q1(
"quality", buffer.begin(), buffer.end(), &JElement_t::q1);
 
  220       const double Qmin = Q1.getQuantile(Q);
 
  222       buffer_type::iterator __end = partition(buffer.begin(), buffer.end(), 
make_predicate(&JElement_t::q1, Qmin, JComparison::gt()));
 
  224       buffer.erase(__end, buffer.end());
 
  226       sort(buffer.begin(), buffer.end());
 
  231     buffer_type::const_iterator p0   = emitter->second[MODULE[0]].begin();
 
  232     buffer_type::const_iterator 
p1   = emitter->second[MODULE[1]].begin();
 
  234     buffer_type::const_iterator end0 = emitter->second[MODULE[0]].end();
 
  235     buffer_type::const_iterator end1 = emitter->second[MODULE[1]].end();
 
  237     if (p0 != end0 && 
p1 != end1) {
 
  239       for ( ; ; ++p0, ++
p1) {
 
  241         while (p0 != end0  &&  p0->t1 < 
p1->t1 - TMax_s) { ++p0; }
 
  242         while (
p1 != end1  &&  
p1->t1 < p0->t1 - TMax_s) { ++
p1; }
 
  244         if (p0 != end0 && 
p1 != end1)
 
  245           h1->Fill(
p1->t1 - p0->t1);