Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JPlatypus.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <vector>
5#include <set>
6#include <map>
7#include <deque>
8#include <algorithm>
9#include <limits>
10
11#include <type_traits>
12#include <functional>
13#include <future>
14#include <mutex>
15#include <thread>
16#include <vector>
17#include <queue>
18
19#include "TROOT.h"
20#include "TFile.h"
21
22#include "JLang/JPredicate.hh"
23#include "JLang/JComparator.hh"
24#include "JLang/JComparison.hh"
25#include "JLang/JFileStream.hh"
26
29#include "JDetector/JTripod.hh"
31#include "JDetector/JModule.hh"
33
34#include "JTools/JHashMap.hh"
35#include "JTools/JRange.hh"
36#include "JTools/JQuantile.hh"
37
39
43#include "JAcoustics/JHit.hh"
50
51#include "Jeep/JContainer.hh"
52#include "Jeep/JParser.hh"
53#include "Jeep/JMessage.hh"
54
55
56/**
57 * \file
58 *
59 * Application to make a global fit of the detector geometry to acoustic data.\n
60 * \author mdejong
61 */
62int main(int argc, char **argv)
63{
64 using namespace std;
65 using namespace JPP;
66
70
72 string detectorFile;
73 JLimit_t& numberOfEvents = inputFile.getLimit();
74 JSoundVelocity V = getSoundVelocity; // default sound velocity
75 tripods_container tripods; // tripods
76 transmitters_container transmitters; // transmitters
77 hydrophones_container hydrophones; // hydrophones
78 JFitParameters parameters; // fit parameters
79 size_t threads; // number of parallel threads
80 int debug;
81
82 try {
83
84 JParser<> zap("Application to fit position calibration model to acoustic data.");
85
86 zap['f'] = make_field(inputFile, "output of JAcousticEventBuilder[.sh]");
87 zap['n'] = make_field(numberOfEvents) = JLimit::max();
88 zap['a'] = make_field(detectorFile);
89 zap['@'] = make_field(parameters) = JPARSER::initialised();
90 zap['V'] = make_field(V, "sound velocity") = JPARSER::initialised();
91 zap['T'] = make_field(tripods, "tripod data");
92 zap['Y'] = make_field(transmitters, "transmitter data") = JPARSER::initialised();
93 zap['H'] = make_field(hydrophones, "hydrophone data") = JPARSER::initialised();
94 zap['M'] = make_field(getMechanics, "mechanics data") = JPARSER::initialised();
95 zap['N'] = make_field(threads, "number of threads") = 1;
96 zap['d'] = make_field(debug) = 1;
97
98 zap(argc, argv);
99 }
100 catch(const exception &error) {
101 FATAL(error.what() << endl);
102 }
103
104 ROOT::EnableThreadSafety();
105
107
108 try {
109 load(detectorFile, detector);
110 }
111 catch(const JException& error) {
112 FATAL(error);
113 }
114
116
117 for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
118 {
119 emitters[i->getID()] = JEmitter(i->getID(),
120 i->getUTMPosition() - detector.getUTMPosition());
121 }
122 }
123
124 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
125 try {
126 emitters[i->getID()] = JEmitter(i->getID(),
127 i->getPosition() + detector.getModule(i->getLocation()).getPosition());
128 }
129 catch(const exception&) {} // if no module available, discard transmitter
130 }
131
132 V.set(detector.getUTMZ()); // sound velocity at detector depth
133
134 JGeometry geometry(detector, hydrophones);
135
138
139 try {
140 JPlatypus platypus(geometry, emitters, V, parameters, inputFile, threads);
141 }
142 catch(const exception& error) {
143 FATAL("main " << error.what());
144 }
145
146 JFileOutputStream(3) << SCIENTIFIC(1,10) << JPlatypus::Q.getMean(numeric_limits<float>::max()) << endl;
147}
Acoustics toolkit.
Acoustic hit.
ROOT TTree parameter settings.
Container I/O.
Data structure for detector geometry and calibration.
Acoustic emitter.
Acoustic fit parameters.
General purpose class for hash map of unique elements.
Data structure for hydrophone.
Fit functions of acoustic model.
General purpose messaging.
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Data structure for optical module.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
int main(int argc, char **argv)
Definition JPlatypus.cc:62
Auxiliary class to define a range between two values.
Scanning of objects from a single file according a format that follows from the extension of each fil...
Sound velocity.
Acoustic super event fit toolkit.
Acoustic event fit.
Data structure for transmitter.
Data structure for tripod.
Thread pool for global fits using super events.
static JMATH::JQuantile_t Q
chi2/NDF
Detector data structure.
Definition JDetector.hh:96
General exception.
Definition JException.hh:24
Streaming of output.
Utility class to parse command line options.
Definition JParser.hh:1698
Object reading from a list of files.
JContainer< std::vector< JTripod > > tripods_container
Definition JSydney.cc:79
JContainer< std::vector< JTransmitter > > transmitters_container
Definition JSydney.cc:81
JContainer< std::vector< JHydrophone > > hydrophones_container
Definition JSydney.cc:80
static const JSoundVelocity getSoundVelocity(1541.0, -17.0e-3, -2000.0)
Function object for velocity of sound.
static JDetectorMechanics getMechanics
Function object to get string mechanics.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Detector file.
Definition JHead.hh:227
Acoustic emitter.
Definition JEmitter.hh:30
Template definition of fit function of acoustic model.
Implementation for depth dependend velocity of sound.
JSoundVelocity & set(const double z0)
Set depth.
Auxiliary wrapper for I/O of container with optional comment (see JComment).
Definition JContainer.hh:42
double getMean() const
Get mean value.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary class for defining the range of iterations of objects.
Definition JLimit.hh:45
static counter_type max()
Get maximum counter value.
Definition JLimit.hh:128
General purpose class for hash map of unique keys.
Definition JHashMap.hh:75
Auxiliary data structure for floating point format specification.
Definition JManip.hh:488