1 #ifndef __JACOUSTICS__JKATOOMBA__
2 #define __JACOUSTICS__JKATOOMBA__
25 namespace JACOUSTICS {}
26 namespace JPP {
using namespace JACOUSTICS; }
28 namespace JACOUSTICS {
61 template<
class JPDF_t>
85 template<
template<
class T>
class JMinimiser_t>
121 template<
class JPDF_t>
124 const double toa_s = this->getToA(model, hit);
125 const double u = (toa_s - hit.getValue()) / hit.sigma;
127 return estimator->getRho(u);
182 value =
JModel(__begin, __end);
189 struct {
int t1;
int tx;
int ty; } i;
191 JMatrixNS V(value.getN());
195 for (
T hit = __begin; hit != __end; ++hit) {
199 const double Vi = velocity.getInverseVelocity(hit->getDistance(position), hit->getZ(), position.
getZ());
201 const double h1 =
string[hit->getFloor()].getHeight();
202 const JPosition3D p1 =
string.getPosition() - hit->getPosition();
204 const double y = hit->getValue() - Vi*ds;
207 H.tx = Vi * p1.
getX() * h1 / ds;
208 H.ty = Vi * p1.
getY() * h1 / ds;
210 i.t1 = value.getIndex(hit->getEKey(), &H_t::t1);
211 i.tx = value.getIndex(hit->getString(), &H_t::tx);
212 i.ty = value.getIndex(hit->getString(), &H_t::ty);
214 V(i.t1, i.t1) +=
H.t1 *
H.t1;
215 V(i.t1, i.tx) +=
H.t1 *
H.tx;
216 V(i.t1, i.ty) +=
H.t1 *
H.ty;
218 V(i.tx, i.t1) +=
H.tx *
H.t1;
219 V(i.ty, i.t1) +=
H.ty *
H.t1;
221 V(i.tx, i.tx) +=
H.tx *
H.tx;
222 V(i.tx, i.ty) +=
H.tx *
H.ty;
224 V(i.ty, i.tx) +=
H.ty *
H.tx;
226 V(i.ty, i.ty) +=
H.ty *
H.ty;
237 for (
size_t row = 0; row != value.getN(); ++row) {
238 for (
size_t col = 0; col != value.getN(); ++col) {
239 value[row] += V(row,col) * Y[col];
Auxiliary base class for fit function of acoustic model.
JKatoomba(const JDetector &detector, const JSoundVelocity &velocity)
Constructor.
General purpose data regression method.
do echo Generating $dir eval D
int getFloor() const
Get floor number.
Interface for maximum likelihood estimator (M-estimator).
result_type operator()(const JFunction_t &fit, T __begin, T __end)
Get chi2.
*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
JEKey getEKey() const
Get emitter hash key of this hot.
Template definition of linear fit.
double getDistance(const JVector3D &pos) const
Get distance to point.
JACOUSTICS::JModel::emitter_map emitter
Model for fit to acoustics data.
JACOUSTICS::JModel::string_map string
virtual double getInverseVelocity(const double D_m, const double z1, const double z2) const
Get inverse velocity of sound.
The template JSharedPointer class can be used to share a pointer to an object.
Auxiliary data structure to encapsulate different geometries.
JLANG::JSharedPointer< JMEstimator > estimator
M-Estimator function.
JKatoomba_t(const JDetector &detector, const JSoundVelocity &velocity)
Constructor.
do set_variable OUTPUT_DIRECTORY $WORKDIR T
result_type operator()(const JModel &model, const JHit< JPDF_t > &hit) const
Fit function.
double getY() const
Get y position.
const JPosition3D & getPosition() const
Get position.
double getLengthSquared() const
Get length squared.
Implementation for velocity of sound.
int getString() const
Get string number.
const JModel & operator()(T __begin, T __end) const
Get start values of string parameters.
result_type operator()(const JModel &model, T __begin, T __end)
Fit.
double getToA(const JModel &model, const JHit< JPDF_t > &hit) const
Get estimated time-of-arrival for given hit.
double getX() const
Get x position.
Data structure for position in three dimensions.
const JDetector & detector
const JSoundVelocity & velocity
Model for fit to acoutsics data.
double getZ() const
Get z position.
Maximum likelihood estimator (M-estimators).
JKatoomba(const JDetector &detector, const JSoundVelocity &velocity)
Constructor.
Template definition of fit function of acoustic model.