93 JParser<> zap(
"Example application to test fit of model to simulated acoustic data.");
108 zap[
'B'] =
make_field(background,
"background probability") = 0.0;
114 catch(
const exception &error) {
121 if (numberOfEvents <= 0) {
FATAL(
"Invalid number of events " << numberOfEvents <<
endl); }
134 for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
136 i->getUTMPosition() -
detector.getUTMPosition()));
139 for (transmitters_container::const_iterator i = transmitters.begin(); i != transmitters.end(); ++i) {
142 i->getPosition() +
detector.getModule(i->getLocation()).getPosition()));
144 catch(
const exception&) {
168 TH1D h0(
"cpu",
NULL, 100, 0.0, 1.0e3);
169 TH1D h1(
"chi2/NDF",
NULL, 100, 0.0, 5.0);
185 model.string[
module->getString()] = JMODEL::JString(gRandom->Uniform(-2.0e-2, +2.0e-2),
186 gRandom->Uniform(-2.0e-2, +2.0e-2));
196 module->set(geometry[module->getString()].getPosition(model.string[module->getString()], module->getFloor()));
223 model.emission[emitter->getID()][count] =
toe_s;
237 if (Q >= parameters.
Qmin) {
241 if (
gRandom->Rndm() >= background)
264 const chrono::steady_clock::time_point t0 = chrono::steady_clock::now();
268 const chrono::steady_clock::time_point t1 = chrono::steady_clock::now();
272 cout <<
"result:" <<
' '
281 h0.Fill(chrono::duration_cast<chrono::milliseconds>(t1 - t0).count());
286 const double tx = (i->second.tx -
result.value.string [i->first].tx) * 1.0e3;
287 const double ty = (i->second.ty -
result.value.string [i->first].ty) * 1.0e3;
290 H2[i->first]->Fill(tx, ty);
295 const double t1 = i->second.t1 -
result.value.emission[i->first].t1;
298 H1[i->first.getID()]->Fill(t1);
Data structure for detector geometry and calibration.
Fit function of acoustic model.
Data structure for hydrophone.
Dynamic ROOT object management.
General purpose messaging.
#define DEBUG(A)
Message macros.
Data structure for optical module.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Acoustic transmission identifier.
Data structure for transmitter.
Data structure for tripod.
Template definition of a multi-dimensional oscillation probability interpolation table.
int main(int argc, char **argv)
JContainer< std::vector< JTripod > > tripods_container
JContainer< std::vector< JTransmitter > > transmitters_container
JContainer< std::vector< JHydrophone > > hydrophones_container
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.
double getValue(const JScale_t scale)
Get numerical value corresponding to scale.
void model(JModel_t &value)
Auxiliary function to constrain model during fit.
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
std::vector< event_type > data_type
static const char WILDCARD
Auxiliary data structure for floating point format specification.
double Qmin
minimal quality transmission
double sigma_s
time-of-arrival resolution [s]
bool hasLocation(const JLocation &location) const
Check if this detector has given location.
Global fit of prameterised detector geometry to acoustics data.
Template definition of fit function of acoustic model.
Model for fit to acoustics data.
Implementation for depth dependend velocity of sound.
virtual double getTime(const double D_m, const double z1, const double z2) const override
Get propagation time of sound.
JSoundVelocity & set(const double z0)
Set depth.
Acoustic transmission identifier.
Data structure for measured coincidence rates of all pairs of PMTs in optical module.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...