110 void operator ()(T __begin,T __end)
115 const int N =
distance(__begin, __end);
117 if (N >= NUMBER_OF_PARAMETERS) {
125 for (T i = __begin; i != __end; ++i) {
137 t0 *= getSpeedOfLight();
146 double xi = j->getX() - getX();
147 double yi = j->getY() - getY();
148 double zi = j->getZ() - getZ();
149 double ti = (j->getT() * getSpeedOfLight() - t0) / getIndexOfRefraction();
151 for (
bool done =
false; !done; ) {
153 if ((done = (++j == __end))) {
157 double xj = j->getX() - getX();
158 double yj = j->getY() - getY();
159 double zj = j->getZ() - getZ();
160 double tj = (j->getT() * getSpeedOfLight() - t0) / getIndexOfRefraction();
167 const double y = ((xj + xi) * dx +
199 t0 *= getInverseSpeedOfLight();
210 __x += V.a00 * y0 + V.a01 * y1 + V.a02 * y2 + V.a03 * y3;
211 __y += V.a10 * y0 + V.a11 * y1 + V.a12 * y2 + V.a13 * y3;
212 __z += V.a20 * y0 + V.a21 * y1 + V.a22 * y2 + V.a23 * y3;
213 __t = V.a30 * y0 + V.a31 * y1 + V.a32 * y2 + V.a33 * y3;
215 __t *= getInverseSpeedOfLight() * getIndexOfRefraction();
219 throw JValueOutOfRange(
"JEstimator<JPoint4D>::operator(): Not enough data points.");