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
set_variable E_E log10(E_{fit}/E_{#mu})"
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.
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.