3 #include <Math/SMatrix.h> 4 #include <Math/MatrixFunctions.h> 23 typedef ROOT::Math::SMatrix<double, 3, 4> Matrix34;
24 typedef ROOT::Math::SMatrix<double, 4, 5> Matrix45;
25 typedef ROOT::Math::SMatrix<double, 5, 4> Matrix54;
26 typedef ROOT::Math::SMatrix<double, 4, 6> Matrix46;
27 typedef ROOT::Math::SMatrix<double, 6, 4> Matrix64;
28 typedef ROOT::Math::SMatrix<double, 6, 6, ROOT::Math::MatRepSym<double, 6> > Matrix6S;
43 double rho2 = pred[2] * pred[2] + 1.;
47 jacobian(0, 1) = pred[0] * pred[2];
50 jacobian(2, 1) = rho2;
53 return ROOT::Math::Similarity(jacobian,
error.matrix());
64 double tip = priorPosition.y() *
dir.x() - priorPosition.x() *
dir.y();
65 double l = priorPosition.x() *
dir.x() + priorPosition.y() *
dir.y();
73 jacobian(0, 0) = -
dir.x() *
dir.z();
74 jacobian(1, 0) = -
dir.y();
75 jacobian(0, 1) = -
dir.y() *
dir.z();
76 jacobian(1, 1) =
dir.x();
78 jacobian(0, 3) = -
dir.z() * priorPosition.x();
79 jacobian(1, 3) = priorPosition.y();
80 jacobian(3, 3) = -
dir.y();
81 jacobian(0, 4) = -
dir.z() * priorPosition.y();
82 jacobian(1, 4) = -priorPosition.x();
83 jacobian(3, 4) =
dir.x();
88 origCov.Place_at(priorError.
matrix(), 0, 0);
89 origCov.Place_at(directionError.
matrix() /
perp2, 3, 3);
91 covariance_ = ROOT::Math::Similarity(jacobian, origCov);
98 double dTheta = std::cosh((
double)
direction.eta()) * coneRadius;
107 double h2 = dTheta * dTheta;
108 double d2 = coneRadius * coneRadius;
111 r2 *
p *
P * (
T *
T * h2 -
t *
t * d2),
112 r2 * (
T *
T *
p *
p * h2 +
t *
t *
P *
P * d2),
113 -
r2 *
t *
T *
P * h2,
114 -
r2 *
t *
T *
p * h2,
129 covariance_(
convert(prediction_,
track.covariance())) {}
143 return ROOT::Math::Similarity(jacobian,
covariance());
161 return ROOT::Math::Similarity(jacobian,
covariance());
169 double rho2I = 1. /
rho2();
173 jacobian(1, 2) = rho2I;
176 jacobian(4, 0) = rhoI;
177 jacobian(4, 2) = -
z() * rhoI *
cotTheta() * rho2I;
FreeTrajectoryState fts(const MagneticField *fieldProvider) const
Track track(double ndof=0., double chi2=0.) const
ROOT::Math::SMatrix< double, 4, 4, ROOT::Math::MatRepSym< double, 4 > > Error
GlobalPoint position() const
Sin< T >::type sin(const T &t)
GlobalTrajectoryParameters globalTrajectory(const MagneticField *fieldProvider) const
T perp2() const
Squared magnitude of transverse component.
GlobalVector momentum() const
const GlobalVector direction() const
GlobalError positionError(double lambda=0.) const
Cos< T >::type cos(const T &t)
void init(const GlobalPoint &priorPosition, const GlobalError &priorError, const GlobalVector &direction, const GlobalError &directionError)
Tan< T >::type tan(const T &t)
const AlgebraicSymMatrix33 matrix() const
math::XYZPoint Point
point in the space
def convert(infile, ofile)
T perp() const
Magnitude of transverse component.
CartesianError cartesianError(double lambda=0.) const
CurvilinearTrajectoryError curvilinearError() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
const GlobalPoint origin() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
double lambda(const GlobalPoint &point) const
std::pair< OmniClusterRef, TrackingParticleRef > P
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
const Error & covariance() const
ROOT::Math::SVector< double, 4 > Vector
math::XYZVector Vector
spatial vector
*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