56     key_type(
const int first,
 
   58       std::
pair<int, int>(first, second)
 
   69     friend inline std::istream& 
operator>>(std::istream& in, key_type& key)
 
   85     friend inline std::ostream& 
operator<<(std::ostream& out, 
const key_type& key)
 
  101     friend inline bool operator<(
const key_type& first, 
const key_type& second)
 
  103       if (first.first == second.first)
 
  104         return first.second < second.second;
 
  106         return first.first  < second.first;
 
  118 int main(
int argc, 
char **argv)
 
  129   JLimit_t&               numberOfEvents = inputFile.getLimit();
 
  140     JParser<> zap(
"Example program to plot hydrophone data.");
 
  143     zap[
'n'] = 
make_field(numberOfEvents)   = JLimit::max();
 
  147     zap[
'T'] = 
make_field(tripods,      
"tripod data");
 
  156   catch(
const exception &error) {
 
  157     FATAL(error.what() << endl);
 
  175   for (hydrophones_container::const_iterator i = hydrophones.begin(); i != hydrophones.end(); ++i) {
 
  177     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  179       if (i->getLocation() == module->getLocation()) {
 
  181         receivers[module->getID()] = 
JReceiver(module->getID(),
 
  182                                                module->getPosition() + i->getPosition(),
 
  183                                                module->getT0() * 1.0e-9);
 
  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());
 
  194   for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
 
  196       emitters[i->getID()]  = 
JEmitter(i->getID(),
 
  197                                        i->getPosition() + 
detector.getModule(i->getLocation()).getPosition());
 
  199     catch(
const exception&) {
 
  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);
 
  220     if (!evt->empty() && emitters.
has(evt->
getID())) {
 
  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);
 
  236         if (hit->getQ() >= Q) {
 
  239           const JPosition3D& p2 = receivers[hit->getID()].getPosition();
 
  244           const double       t0 = evt->begin()->getToE()  +  D * Vi;
 
  245           const double       t1 = hit->getToA()  -  t0;
 
  247           H1[key_type(hit->getID(), evt->
getID())]->Fill(t1);
 
  249           const double Q = log10(hit->getQ());
 
  251           if (T0(t1)) { h0.Fill(Q); }
 
  252           if (T1(t1)) { h1.Fill(Q); }
 
  261   out << h0 << h1 << H1;
 
ROOT TTree parameter settings.
 
Data structure for detector geometry and calibration.
 
General purpose class for hash map of unique elements.
 
int main(int argc, char **argv)
 
Data structure for hydrophone.
 
Dynamic ROOT object management.
 
General purpose messaging.
 
#define DEBUG(A)
Message macros.
 
Scanning of objects from multiple files according a format that follows from the extension of each fi...
 
Utility class to parse command line options.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
I/O formatting auxiliaries.
 
#define MAKE_CSTRING(A)
Make C-string.
 
Auxiliary class to define a range between two values.
 
Data structure for transmitter.
 
Data structure for tripod.
 
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.
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
 
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.
 
bool operator<(const Head &first, const Head &second)
Less than operator.
 
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
 
double getQ(const double D_m, const double f_kHz, const double d_m)
Get relative quality for given frequency at given distance.
 
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).
 
std::istream & operator>>(std::istream &in, std::vector< int > &object)
Read std::vector<int> from input.
 
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.
 
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.