68{
71
76
80 JLimit_t& numberOfEvents = inputFile.getLimit();
87 size_t threads;
90
91 try {
92
93 JParser<> zap(
"Application to fit position calibration model to acoustic data.");
94
95 zap[
'f'] =
make_field(inputFile,
"output of JAcousticEventBuilder[.sh]");
107 zap[
's'] =
make_field(squash,
"squash transmissions in output");
109
111 }
112 catch(const exception &error) {
114 }
115
116 ROOT::EnableThreadSafety();
117
119
120 try {
122 }
125 }
126
129
130 for (JDetector::const_iterator i =
detector.begin(); i !=
detector.end(); ++i) {
131 receivers[i->getID()] = i->getLocation();
132 }
133
134 for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
136 }
137
138 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
139 try {
141 }
142 catch(const exception&) {}
143 }
144
146
149
151
154
155 if (inputFile.size() > 1u) {
156
158
159 for (const string& file_name : inputFile) {
160
162
164
165 const JEvent* evt = in.next();
166
169 }
170
171 if (!evt->empty()) {
172 zmap[evt->begin()->getToE()] = file_name;
173 }
174 }
175 }
177
178 inputFile.clear();
179
181 inputFile.push_back(i->second);
182 }
183 }
184
187
189
191 }
192
193
194
195
196
197 try {
198
200
202
204
206
207
208
209 for (const string file_name = inputFile.getFilename(); inputFile.hasNext() && file_name == inputFile.getFilename(); ) {
210
211 const JEvent* evt = inputFile.next();
212
214 zbuf.push_back(*evt);
215 }
216 }
217
218 sort(zbuf.begin(), zbuf.end());
219
220 for (buffer_type::iterator p = zbuf.begin(), q; p != zbuf.end(); p = q) {
221
222 for (q = p; ++q != zbuf.end() && q->begin()->getToE() <= p->rbegin()->getToE() + parameters.
Tmax_s; ) {}
223
224 if (q == zbuf.end()) {
225
226 if (inputFile.hasNext()) {
227
228 zbuf.erase(zbuf.begin(), p);
229
230 break;
231 }
232 }
233
235
237
239
241
242 for (buffer_type::iterator evt = p; evt != q; ++evt) {
243
245
247
250
251 for (JEvent::const_iterator i = evt->begin(); i != __end; ++i) {
252
255
256 if (receivers.has(i->getID()) && geometry.hasLocation(receivers[i->getID()]) && i->getQ() >= parameters.
Qmin * (parameters.
Qmin <= 1.0 ? i->getW() : 1.0)) {
257
260 receivers[i->getID()],
261 i->getToA(),
263 weight));
264 }
265 }
266 }
267 }
268
271 }
272 }
273 }
274 }
276 }
277 catch(const exception& error) {
278 FATAL(
"main " << error.what());
279 }
280
281
282
283
284
286
288}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Thread pool for global fits.
static output_type * output
optional output
static JMATH::JQuantile_t Q
chi2/NDF
static int detid
detector identifier
static bool squash
squash transmissions in output
Template definition of a multi-dimensional oscillation probability interpolation table.
size_t getMinimumNumberOfEmitters(T __begin, T __end)
Get minimum number of emitters for any string in data.
JContainer< std::vector< JTripod > > tripods_container
JContainer< std::vector< JTransmitter > > transmitters_container
JContainer< std::vector< JHydrophone > > hydrophones_container
size_t getNumberOfEmitters(T __begin, T __end)
Get number of emitters.
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.
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::vector< JHitW0 > buffer_type
hits
JRECONSTRUCTION::JWeight getWeight
int getID() const
Get emitter identifier.
const int getDetectorID() const
Get detector identifier.
double Qmin
minimal quality transmission
double deadTime_s
dead time between events [s]
size_t Nmin
minimum number of emitters
double sigma_s
time-of-arrival resolution [s]
double Tmax_s
time window to combine events [s]
Global fit of prameterised detector geometry to acoustics data.
Template definition of fit function of acoustic model.
Implementation for depth dependend velocity of sound.
JSoundVelocity & set(const double z0)
Set depth.
Acoustic transmission identifier.
int getID() const
Get identifier.
Auxiliary data structure to unify weights of acoustics data according to the number of pings per emit...
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.
Auxiliary data structure for floating point format specification.