62int main(
int argc,
char **argv)
71 JSingleFileScanner<JSuperEvt> inputFile;
73 JLimit_t& numberOfEvents = inputFile.getLimit();
84 JParser<> zap(
"Application to fit position calibration model to acoustic data.");
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;
100 catch(
const exception &error) {
101 FATAL(error.what() << endl);
104 ROOT::EnableThreadSafety();
109 load(detectorFile, detector);
111 catch(
const JException& error) {
115 JHashMap<int, JEmitter> emitters;
117 for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
119 emitters[i->getID()] =
JEmitter(i->getID(),
120 i->getUTMPosition() - detector.getUTMPosition());
124 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
126 emitters[i->getID()] =
JEmitter(i->getID(),
127 i->getPosition() + detector.getModule(i->getLocation()).getPosition());
129 catch(
const exception&) {}
132 V.
set(detector.getUTMZ());
134 JGeometry geometry(detector, hydrophones);
140 JPlatypus platypus(geometry, emitters, V, parameters, inputFile, threads);
142 catch(
const exception& error) {
143 FATAL(
"main " << error.what());
146 JFileOutputStream(3) << SCIENTIFIC(1,10) << JPlatypus::Q.getMean(numeric_limits<float>::max()) << endl;