14 int num = states.size();
15 if(num!=2)
throw VertexException(
"VertexKinematicConstraintT !=2 states passed");
16 double mfz = fieldValue.
z();
19 for(std::vector<KinematicState>::const_iterator
i = states.begin();
i != states.end();
i++)
21 mom[j] =
i->globalMomentum();
22 dpos[j] = ipoint -
i->globalPosition();
23 a_i[j] = -
i->particleCharge() * mfz;
27 double pvt2 = pvx*pvx+pvy*pvy;
32 delta[j] = std::atan2(
n[j],
m[j]);
43 for(
int j = 0; j!=2; ++j) {
51 double pt2Inverse = 1./
mom[j].
perp2();
59 ROOT::Math::SMatrix<double,2,7> el_part_d;
60 for(
int j = 0; j!=2; ++j) {
69 el_part_d(1,0) = -
k[j]*(
m[j]*
mom[j].
x() -
n[j]*
mom[j].
y());
70 el_part_d(1,1) = -
k[j]*(
m[j]*
mom[j].
y() +
n[j]*
mom[j].
x());
72 el_part_d(0,3) =
dpos[j].
y();
73 el_part_d(0,4) = -
dpos[j].
x();
80 double pt2Inverse = 1./
mom[j].
perp2();
81 el_part_d(0,0) =
mom[j].
y();
82 el_part_d(0,1) = -
mom[j].
x();
83 el_part_d(1,0) =
mom[j].
x() * (
mom[j].
z()*pt2Inverse);
84 el_part_d(1,1) =
mom[j].
y() * (
mom[j].
z()*pt2Inverse);
86 el_part_d(0,3) =
dpos[j].
y();
87 el_part_d(0,4) = -
dpos[j].
x();
98 ROOT::Math::SMatrix<double,2,3> el_part_e;
99 for(
int j = 0; j!=2; ++j) {
108 el_part_e(1,0) =
k[j]*(
m[j]*
mom[j].
x() -
n[j]*
mom[j].
y());
109 el_part_e(1,1) =
k[j]*(
m[j]*
mom[j].
y() +
n[j]*
mom[j].
x());
114 double pt2Inverse = 1./
mom[j].
perp2();
115 el_part_e(0,0) = -
mom[j].
y();
116 el_part_e(0,1) =
mom[j].
x();
117 el_part_e(1,0) = -
mom[j].
x()*
mom[j].
z()*pt2Inverse;
118 el_part_e(1,1) = -
mom[j].
y()*
mom[j].
z()*pt2Inverse;
void fillValue() const override
void init(const std::vector< KinematicState > &states, const GlobalPoint &point, const GlobalVector &mf) override
void fillParametersDerivative() const override
~VertexKinematicConstraintT() override
VertexKinematicConstraintT()
positionDerivativeType & jac_e() const
void fillPositionDerivative() const override
parametersDerivativeType & jac_d() const
int numberOfEquations() const override