119{
  122 
  126 
  128  string                  detectorFile;
  129  JLimit_t&               numberOfEvents = inputFile.getLimit();
 
  135  double                  Q;
  137 
  138  try {
  139 
  140    JParser<> zap(
"Example program to plot hydrophone data.");
 
  141 
  147    zap[
'T'] = 
make_field(tripods,      
"tripod data");
 
  153 
  154    zap(argc, argv);
  155  }
  156  catch(const exception &error) {
  157    FATAL(error.what() << endl);
 
  158  }
  159 
  160 
  162 
  163  try {
  165  }
  168  }
  169 
  171 
  174 
  175  for (hydrophones_container::const_iterator i = hydrophones.begin(); i != hydrophones.end(); ++i) {
  176 
  177    for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  178 
  179      if (i->getLocation() == module->getLocation()) {
  180 
  181        receivers[module->getID()] = 
JReceiver(module->getID(),
 
  182                                               module->getPosition() + i->getPosition(),
  183                                               module->getT0() * 1.0e-9);
  184        break;
  185      }
  186    }
  187  }
  188 
  189  for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
  190    emitters[i->getID()]  = 
JEmitter(i->getID(),
 
  191                                     i->getUTMPosition() - 
detector.getUTMPosition());
 
  192  }
  193 
  194  for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
  195    try {
  196      emitters[i->getID()]  = 
JEmitter(i->getID(),
 
  197                                       i->getPosition() + 
detector.getModule(i->getLocation()).getPosition());
 
  198    }
  199    catch(const exception&) {
  200      continue;                                
  201    }
  202  }
  203 
  204 
  207  
  208  TH1D h0(
MAKE_CSTRING(
"Q0 " << T0), NULL, 100, 0.0, 8.0);
 
  209  TH1D h1(
MAKE_CSTRING(
"Q1 " << T1), NULL, 100, 0.0, 8.0);
 
  210  
  212 
  213 
  215 
  217 
  219 
  220    if (!evt->empty() && emitters.
has(evt->
getID())) {
 
  221 
  223 
  224      for (JEvent::const_iterator hit = evt->begin(); hit != evt->end(); ++hit) {
  225        if (receivers.
has(hit->getID())) {
 
  226          buffer[hit->getID()].push_back(*hit);
  227        }
  228      }
  229 
  231 
  233 
  234        vector<JTransmission>::const_iterator hit = i->second.begin();
  235 
  236        if (hit->getQ() >= Q) {
  237 
  239          const JPosition3D& p2 = receivers[hit->getID()].getPosition();
 
  240          
  243 
  244          const double       t0 = evt->begin()->getToE()  +  D * Vi;
  245          const double       t1 = hit->getToA()  -  t0;
  246 
  247          H1[key_type(hit->getID(), evt->
getID())]->Fill(t1);
 
  248 
  249          const double Q = log10(hit->getQ());
  250 
  251          if (T0(t1)) { h0.Fill(Q); }
  252          if (T1(t1)) { h1.Fill(Q); }
  253        }
  254      }
  255    }
  256  }
  258 
  260 
  261  out << h0 << h1 << H1;
  262 
  263  out.Write();
  264  out.Close();
  265}
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
Data structure for position in three dimensions.
 
double getDistance(const JVector3D &pos) const
Get distance to point.
 
double getZ() const
Get z position.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
General purpose class for object reading from a list of file names.
 
virtual bool hasNext() override
Check availability of next element.
 
counter_type getCounter() const
Get counter.
 
virtual const pointer_type & next() override
Get next element.
 
static JEmitterID getEmitterID
Function object for emitter identification.
 
JContainer< std::vector< JTripod > > tripods_container
 
JContainer< std::vector< JTransmitter > > transmitters_container
 
JContainer< std::vector< JHydrophone > > hydrophones_container
 
static const JSoundVelocity getSoundVelocity(1541.0, -17.0e-3, -2000.0)
Function object for velocity of sound.
 
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.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
int getID() const
Get emitter identifier.
 
Implementation for depth dependend velocity of sound.
 
JSoundVelocity & set(const double z0)
Set depth.
 
virtual double getInverseVelocity(const double D_m, const double z1, const double z2) const override
Get inverse velocity of sound.
 
double getQ() const
Get quality.
 
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.