44 int main(
int argc, 
char **argv)
 
   57   tripods_container       tripods;                              
 
   58   hydrophones_container   hydrophones;                          
 
   66   numberOfPings[-1] = 11; 
 
   70     JParser<> zap(
"Example application to test fit of model to simukated acoustic data.");
 
   81     zap[
'u'] = 
make_field(unique,          
"one ping per cycle");
 
   87   catch(
const exception &error) {
 
   88     FATAL(error.what() << endl);
 
   94   gRandom->SetSeed(seed);
 
   96   if (numberOfEvents <= 0) { 
FATAL(
"Invalid number of events " << numberOfEvents << endl); }
 
  109   for (tripods_container::const_iterator i = tripods.begin(); i != tripods.end(); ++i) {
 
  110     emitters.push_back(
JEmitter(i->getID(), i->getUTMPosition() - 
detector.getUTMPosition()));
 
  113   if (
detector.empty()) { 
FATAL(
"No modules in detector." << endl); }
 
  114   if (emitters.empty()) { 
FATAL(
"No emitters in system." << endl); }
 
  139   TH1D h0(
"cpu",      NULL, 100, 1.0, 7.0);
 
  140   TH1D 
h1(
"chi2/NDF", NULL, 100, 0.0, 5.0);
 
  148   for (
int number_of_events = 0, 
count = 0; number_of_events != numberOfEvents; ++number_of_events) {
 
  150     STATUS(
"event: " << setw(10) << number_of_events << 
'\r'); 
DEBUG(endl);
 
  154     for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  159                                                             gRandom->Uniform(-2.0e-2, +2.0e-2));
 
  167     for (JDetector::iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  180       int number_of_pings = numberOfPings[-1];
 
  182       if (numberOfPings.find(emitter->getID()) != numberOfPings.end()) {
 
  183         number_of_pings = numberOfPings[emitter->getID()];
 
  186       int weight = numeric_limits<int>::max();
 
  189         if (i->second < weight) {
 
  194       const double signal = (unique ? (double) weight / (
double) number_of_pings : 1.0);
 
  196       for (
int ping_counter = 0; ping_counter != number_of_pings; ++ping_counter) {
 
  200         const double toe_s = ping_counter * 10.0  +  gRandom->Uniform(-1.0, +1.0);
 
  204         for (JDetector::const_iterator module = 
detector.begin(); module != 
detector.end(); ++module) {
 
  208             const double toa_s = toe_s + V.getTime(
getDistance(module->getPosition(), emitter->getPosition()), emitter->getZ(), module->getZ());
 
  213               t1_s = gRandom->Gaus(toa_s, 
parameters.sigma_s);
 
  220                                     module->getLocation(),
 
  227     DEBUG(
"Model" << endl << model << endl);
 
  230       DEBUG(
"hit: " << *hit << endl);
 
  238     double chi2   = numeric_limits<double>::max();
 
  244       chi2   = evaluator(result, data.begin(), data.end());
 
  251       chi2   = simplex(data.begin(), data.end()) / simplex.
estimator->getRho(1.0);
 
  252       result = simplex.
value;
 
  259       chi2   = gandalf(data.begin(), data.end()) / gandalf.
estimator->getRho(1.0);
 
  260       result = gandalf.
value;
 
  272       W += hit->getWeight();
 
  275     const int ndf = data.size() - model.
getN();
 
  277     DEBUG(
"Final values"                      << endl
 
  278           << 
FIXED(9,3) << chi2 << 
'/' << ndf << endl
 
  282     h0.Fill(log10((
double) timer.usec_wall));
 
  283     h1.Fill(chi2 / (
double) (W - model.
getN()));
 
  286       H2[i->first]->Fill((i->second.tx - result.
string [i->first].tx) * 1.0e3,   
 
  287                          (i->second.ty - result.
string [i->first].ty) * 1.0e3);  
 
  291       H1[i->first.getID()]->Fill(i->second.t1 - result.
emitter[i->first].t1);
 
static int debug
debug level (default is off). 
 
Utility class to parse command line options. 
 
size_t getN() const 
Get number of fit parameters. 
 
int main(int argc, char *argv[])
 
Template specialisation of fit function of acoustic model based on linear approximation. 
 
Template specialisation of fit function of acoustic model based on JSimplex minimiser. 
 
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
 
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. 
 
Auxiliary data structure for floating point format specification. 
 
Data structure for detector geometry and calibration. 
 
double getDistance(const JFirst_t &first, const JSecond_t &second)
Get distance between objects. 
 
Data structure for hydrophone. 
 
Model for fit to acoustics data. 
 
static const JSoundVelocity getSoundVelocity(1541.0,-17.0e-3,-2000.0)
Function object for velocity of sound. 
 
Template specialisation of fit function of acoustic model based on JGandalf minimiser. 
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys...
 
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function. 
 
Auxiliary wrapper for I/O of container with optional comment (see JComment). 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
static int debug
debug level 
 
Auxiliary class for CPU timing and usage. 
 
void Write(TDirectory &out, const bool wm=false)
Write objects to file. 
 
General purpose messaging. 
 
Implementation for velocity of sound. 
 
JACOUSTICS::JModel::string_type string
 
JACOUSTICS::JModel::emitter_type emitter
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file. 
 
Simple fit method based on Powell's algorithm, see reference: Numerical Recipes in C++...
 
Utility class to parse command line options. 
 
Template specialisation of fit function of acoustic model based on JAbstractMinimiser minimiser...
 
then usage $script< input_file >< detector_file > fi set_variable OUTPUT_DIR set_variable SELECTOR JDAQTimesliceL1 set_variable DEBUG case set_variable DEBUG
 
JPosition3D getPosition() const 
Get position. 
 
bool hasLocation(const JLocation &location) const 
Check if this detector has given location. 
 
Custom probability density function of time-of-arrival. 
 
const JDetector & detector
 
Fit functions of acoustic model. 
 
JMEstimator * getMEstimator(const int type)
Get M-Estimator. 
 
do set_variable DETECTOR_TXT $WORKDIR detector
 
Data structure for tripod. 
 
std::vector< double > weight
 
Data structure for a composite optical module.