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);
27 if (exPoint.num_row() == 0)
28 throw VertexException(
"PointingKinematicConstraint::value requested for zero Linearization point");
31 int inSize = exPoint.num_row();
32 if ((inSize % 7) != 0)
33 throw VertexException(
"PointingKinematicConstraint::linearization point has a wrong dimension");
34 int nStates = inSize / 7;
36 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
43 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr, lPar);
47 const std::vector<RefCountedKinematicParticle>& par)
const {
48 int nStates = par.size();
50 throw VertexException(
"PointingKinematicConstraint::Empty vector of particles passed");
52 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
55 AlgebraicVector lPoint = asHepVector<7>(par.front()->currentState().kinematicParameters().vector());
62 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr, lPoint);
66 const std::vector<RefCountedKinematicParticle>& par)
const {
67 int nStates = par.size();
69 throw VertexException(
"PointingKinematicConstraint::Empty vector of particles passed");
71 throw VertexException(
"PointingKinematicConstraint::Current version does not support the multistate refit");
73 AlgebraicVector lPoint = asHepVector<7>(par.front()->currentState().kinematicParameters().vector());
79 return std::pair<AlgebraicVector, AlgebraicVector>(vl, lPoint);
106 float feq =
sqrt((1 - cos_phi_p) * (1 + cos_phi_x)) -
sqrt((1 + cos_phi_p) * (1 - cos_phi_x));
107 float seq =
sqrt((1 - cos_theta_p) * (1 + cos_theta_x)) -
sqrt((1 + cos_theta_p) * (1 - cos_theta_x));
119 return std::pair<AlgebraicVector, AlgebraicVector>(vl,
point);
131 double pz =
point(6);
251 return std::pair<AlgebraicMatrix, AlgebraicVector>(
dr,
point);
std::pair< AlgebraicMatrix, AlgebraicVector > makeDerivative(const AlgebraicVector &exPoint) const
AlgebraicVector deviations(int nStates) const override
std::pair< AlgebraicVector, AlgebraicVector > makeValue(const AlgebraicVector &exPoint) const
CLHEP::HepMatrix AlgebraicMatrix
std::pair< AlgebraicMatrix, AlgebraicVector > derivative(const AlgebraicVector &exPoint) const override
int numberOfEquations() const override
CLHEP::HepVector AlgebraicVector
std::pair< AlgebraicVector, AlgebraicVector > value(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