57 key_type(
const int first,
59 std::
pair<int, int>(first, second)
70 friend inline std::istream&
operator>>(std::istream&
in, key_type& key)
86 friend inline std::ostream&
operator<<(std::ostream& out,
const key_type& key)
102 friend inline bool operator<(
const key_type&
first,
const key_type& second)
104 if (first.first == second.first)
105 return first.second < second.second;
107 return first.first < second.first;
119 int main(
int argc,
char **argv)
133 hydrophones_container hydrophones;
139 JParser<> zap(
"Example program to plot hydrophone data.");
142 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
154 catch(
const exception &error) {
155 FATAL(error.what() << endl);
173 for (hydrophones_container::const_iterator i = hydrophones.begin(); i != hydrophones.end(); ++i) {
175 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
177 if (i->getLocation() == module->getLocation()) {
179 receivers[module->getID()] =
JReceiver(module->getID(),
180 module->getPosition() + i->getPosition(),
181 module->getT0() * 1.0e-9);
187 for (tripods_container::const_iterator i =
tripods.begin(); i !=
tripods.end(); ++i) {
188 emitters[i->getID()] =
JEmitter(i->getID(),
189 i->getUTMPosition() -
detector.getUTMPosition());
196 TH1D h0(
MAKE_CSTRING(
"Q0 " << T0), NULL, 100, 0.0, 8.0);
202 while (inputFile.hasNext()) {
204 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
206 const JEvent* evt = inputFile.next();
208 if (!evt->empty() && emitters.has(evt->
getID())) {
212 for (JEvent::const_iterator hit = evt->begin(); hit != evt->end(); ++hit) {
213 if (receivers.has(hit->getID())) {
214 buffer[hit->getID()].push_back(*hit);
224 if (hit->getQ() >=
Q) {
227 const JPosition3D&
p2 = receivers[hit->getID()].getPosition();
230 const double Vi =
V.getInverseVelocity(D, p1.
getZ(), p2.
getZ());
232 const double t0 = evt->begin()->getToE() + D * Vi;
233 const double t1 = hit->getToA() - t0;
235 H1[key_type(hit->getID(), evt->
getID())]->Fill(t1);
237 const double Q = log10(hit->getQ());
239 if (T0(t1)) { h0.Fill(Q); }
240 if (T1(t1)) { h1.Fill(Q); }
249 out << h0 << h1 << H1;
Utility class to parse command line options.
Q(UTCMax_s-UTCMin_s)-livetime_s
int main(int argc, char *argv[])
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
bool operator<(const Head &first, const Head &second)
Less than operator.
General purpose class for hash map of unique elements.
ROOT TTree parameter settings.
#define MAKE_CSTRING(A)
Make C-string.
then for HISTOGRAM in h0 h1
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Dynamic ROOT object management.
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
double getDistance(const JVector3D &pos) const
Get distance to point.
Data structure for detector geometry and calibration.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
Data structure for hydrophone.
Auxiliary class for defining the range of iterations of objects.
static const JSoundVelocity getSoundVelocity(1541.0,-17.0e-3,-2000.0)
Function object for velocity of sound.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
I/O formatting auxiliaries.
Auxiliary wrapper for I/O of container with optional comment (see JComment).
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
void Write(TDirectory &out, const bool wm=false)
Write objects to file.
ROOT TTree parameter settings.
double getQ(const double D_m, const double f_kHz, const double d_m)
Get relative quality for given frequency at given distance.
General purpose messaging.
Implementation for depth dependend velocity of sound.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
Auxiliary class to define a range between two values.
General purpose class for object reading from a list of file names.
Utility class to parse command line options.
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
Data structure for position in three dimensions.
const JLimit & getLimit() const
Get limit.
static JEmitterID getEmitterID
Function object for emitter identification.
do set_variable DETECTOR_TXT $WORKDIR detector
int getID() const
Get identifier.
Data structure for tripod.
then fatal Not enough tripods
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 CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
do echo Generating $dir eval D
double getZ() const
Get z position.