5 if (exPoint.num_row() == 0)
6 throw VertexException(
"PointingKinematicConstraint::value requested for zero Linearization point");
9 int inSize = exPoint.num_row();
10 if ((inSize % 7) != 0)
11 throw VertexException(
"PointingKinematicConstraint::linearization point has a wrong dimension");
12 int nStates = inSize / 7;
14 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
23 return std::pair<AlgebraicVector, AlgebraicVector>(vl, lPar);
28 if (exPoint.num_row() == 0)
29 throw VertexException(
"PointingKinematicConstraint::value requested for zero Linearization point");
32 int inSize = exPoint.num_row();
33 if ((inSize % 7) != 0)
34 throw VertexException(
"PointingKinematicConstraint::linearization point has a wrong dimension");
35 int nStates = inSize / 7;
37 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
44 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr, lPar);
48 const std::vector<RefCountedKinematicParticle>& par)
const {
49 int nStates = par.size();
51 throw VertexException(
"PointingKinematicConstraint::Empty vector of particles passed");
53 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
56 AlgebraicVector lPoint = asHepVector<7>(par.front()->currentState().kinematicParameters().vector());
61 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr, lPoint);
65 const std::vector<RefCountedKinematicParticle>& par)
const {
66 int nStates = par.size();
68 throw VertexException(
"PointingKinematicConstraint::Empty vector of particles passed");
70 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
72 AlgebraicVector lPoint = asHepVector<7>(par.front()->currentState().kinematicParameters().vector());
75 return std::pair<AlgebraicVector, AlgebraicVector>(vl, lPoint);
104 vl(1) = (1 - cos_x) / sin_x - (1 - cos_p) / sin_p;
105 vl(2) = (1 - cos_xt) / sin_xt - (1 - cos_pt) / sin_pt;
110 return std::pair<AlgebraicVector, AlgebraicVector>(vl,
point);
122 double pz =
point(6);
179 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr,
point);
int numberOfEquations() const override
std::pair< AlgebraicMatrix, AlgebraicVector > makeDerivative(const AlgebraicVector &exPoint) const
CLHEP::HepMatrix AlgebraicMatrix
std::pair< AlgebraicVector, AlgebraicVector > makeValue(const AlgebraicVector &exPoint) const
std::pair< AlgebraicVector, AlgebraicVector > value(const AlgebraicVector &exPoint) const override
CLHEP::HepVector AlgebraicVector
std::pair< AlgebraicMatrix, AlgebraicVector > derivative(const AlgebraicVector &exPoint) const override
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
AlgebraicVector deviations(int nStates) const override