Get start values of string parameters.
499 {
500 using namespace std;
502 using namespace JGEOMETRY;
503
505
508 else
510
511 H_t H;
512 I_t i;
513
515
516 V.resize(N);
518
519 V.reset();
521
522 for (T hit = __begin; hit != __end; ++hit) {
523
524 const JString& string = geometry[hit->getString()];
525 const JPosition3D position = string.getPosition(hit->getFloor());
526 const double Vi = velocity.getInverseVelocity(hit->getDistance(position), hit->getZ(), position.getZ());
527
528 const double h1 = string.getHeight(hit->getFloor());
529 const JPosition3D p1 = string.getPosition() - hit->getPosition();
530 const double ds = sqrt(p1.getLengthSquared() + h1*h1 + 2.0*p1.getZ()*h1);
531 const double y = hit->getValue() - Vi*ds;
532 const double W = sqrt(hit->getWeight());
533
534 H.t1 = W * 1.0;
535 H.tx = W * Vi * p1.getX() * h1 / ds;
536 H.ty = W * Vi * p1.getY() * h1 / ds;
537
541
542 V(i.t1, i.t1) += H.t1 * H.t1;
543
544 Y[i.t1] += W * H.t1 * y;
545
546 if (hit->getFloor() != 0) {
547
549
550 V(i.t1, i.tx) += H.t1 * H.tx; V(i.t1, i.ty) += H.t1 * H.ty;
551 V(i.tx, i.t1) += H.tx * H.t1; V(i.ty, i.t1) += H.ty * H.t1;
552
553 V(i.tx, i.tx) += H.tx * H.tx; V(i.tx, i.ty) += H.tx * H.ty;
554 V(i.ty, i.tx) += H.ty * H.tx; V(i.ty, i.ty) += H.ty * H.ty;
555
556 Y[i.tx] += W * H.tx * y;
557 Y[i.ty] += W * H.ty * y;
558 }
559 }
560 }
561
562
563
565
566 for (size_t row = 0; row != N; ++row) {
568 }
569
571 }
@ FIT_EMITTERS_AND_STRINGS_1st_ORDER_t
fit times of emission of emitters and tilt angles of strings
@ FIT_EMITTERS_ONLY_t
fit only times of emission of emitters
Model for fit to acoustics data.
void setOption(const int option)
Set fit option.
size_t getN() const
Get number of fit parameters.
size_t getIndex(int id, double JString::*p) const
Get index of fit parameter for given string.