16 return propagateToTheTransversePCANeutral(state, referencePoint);
18 return propagateToTheTransversePCACharged(state, referencePoint);
24 pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer>
36 GlobalVectorDouble xOrig2Centre(fac * inMom.
y(), -fac * inMom.
x(), 0.);
37 GlobalVectorDouble xOrigProj(inPos.
x(), inPos.
y(), 0.);
38 GlobalVectorDouble xRefProj(point.
x(), point.
y(), 0.);
39 GlobalVectorDouble deltax = xRefProj-xOrigProj-xOrig2Centre;
40 GlobalVectorDouble ndeltax = deltax.unit();
54 return std::pair<HelixBarrelPlaneCrossingByCircle,Plane::PlanePointer>(planeCrossing,plane);
63 std::pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer> cros = planeCrossing(fState,point);
66 BoundPlane::BoundPlanePointer plane = cros.second;
67 std::pair<bool,double> propResult = planeCrossing.
pathLength(*plane);
68 return propResult.first;
85 std::pair<HelixBarrelPlaneCrossingByCircle, BoundPlane::BoundPlanePointer> cros = planeCrossing(fState,iP);
88 BoundPlane::BoundPlanePointer plane = cros.second;
89 std::pair<bool,double> propResult = planeCrossing.
pathLength(*plane);
90 if ( !propResult.first ) {
91 LogDebug(
"RecoVertex/TrackKinematicStatePropagator")
92 <<
"Propagation failed! State is invalid\n";
95 double s = propResult.second;
105 pGen *= inMom.
mag()/pGen.mag();
109 par(0) = nPosition.
x();
110 par(1) = nPosition.y();
111 par(2) = nPosition.z();
112 par(3) = nMomentum.x();
113 par(4) = nMomentum.y();
114 par(5) = nMomentum.z();
125 bool thereIsNoCorr=
true;
150 ca2cu.Place_at(cart2curv.
jacobian(),0,0);
151 cu2ca.Place_at(curv2cart.
jacobian(),0,0);
170 pr.Place_at(prop.jacobian(),0,0);
176 cov = ROOT::Math::Similarity(cu2ca, cov2);
215 double xOrig = xvecOrig.
x();
216 double yOrig = xvecOrig.
y();
217 double zOrig = xvecOrig.
z();
218 double xR = referencePoint.
x();
219 double yR = referencePoint.
y();
221 double s2D = (xR - xOrig) *
cos(phi) + (yR - yOrig) *
sin(phi);
222 double s = s2D /
sin(theta);
223 double xGen = xOrig + s2D*
cos(phi);
224 double yGen = yOrig + s2D*
sin(phi);
225 double zGen = zOrig + s2D/
tan(theta);
230 par(0) = xPerigee.
x();
231 par(1) = xPerigee.
y();
232 par(2) = xPerigee.
z();
233 par(3) = pPerigee.
x();
234 par(4) = pPerigee.
y();
235 par(5) = pPerigee.
z();
237 par(6) = state.
mass();
251 ca2cu.Place_at(cart2curv.jacobian(),0,0);
252 cu2ca.Place_at(curv2cart.
jacobian(),0,0);
265 pr.Place_at(prop.jacobian(),0,0);
271 cov = ROOT::Math::Similarity(cu2ca, cov2);
virtual KinematicState propagateToTheTransversePCANeutral(const KinematicState &state, const GlobalPoint &referencePoint) const
virtual PositionType position(double s) const
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
const GlobalTrajectoryParameters & parameters() const
const AlgebraicMatrix55 & jacobian() const
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepStd< double, 6, 6 > > AlgebraicMatrix66
ROOT::Math::SMatrix< double, 7, 6, ROOT::Math::MatRepStd< double, 7, 6 > > AlgebraicMatrix76
Sin< T >::type sin(const T &t)
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
Geom::Phi< T > phi() const
Global3DPoint GlobalPoint
Geom::Theta< T > theta() const
const AlgebraicMatrix56 & jacobian() const
virtual bool willPropagateToTheTransversePCA(const KinematicState &state, const GlobalPoint &point) const
GlobalVector globalMomentum() const
AlgebraicSymMatrix77 const & matrix() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
TrackCharge charge() const
GlobalVector magneticFieldInInverseGeV(const GlobalPoint &x) const
const CurvilinearTrajectoryError & curvilinearError() const
ParticleMass mass() const
Geom::Theta< T > theta() const
ROOT::Math::SMatrix< double, 7, 7, ROOT::Math::MatRepSym< double, 7 > > AlgebraicSymMatrix77
ROOT::Math::SVector< double, 7 > AlgebraicVector7
T z() const
Cartesian z coordinate.
Cos< T >::type cos(const T &t)
KinematicParametersError const & kinematicParametersError() const
Tan< T >::type tan(const T &t)
GlobalVector momentum() const
virtual std::pair< bool, double > pathLength(const Plane &)
GlobalPoint position() const
const AlgebraicMatrix65 & jacobian() const
const MagneticField * magneticField() const
ROOT::Math::SMatrix< double, 6, 7, ROOT::Math::MatRepStd< double, 6, 7 > > AlgebraicMatrix67
double transverseCurvature() const
TrackCharge particleCharge() const
virtual KinematicState propagateToTheTransversePCA(const KinematicState &state, const GlobalPoint &referencePoint) const
const AlgebraicSymMatrix55 & matrix() const
FreeTrajectoryState freeTrajectoryState() const
static const G4double kappa
virtual KinematicState propagateToTheTransversePCACharged(const KinematicState &state, const GlobalPoint &referencePoint) const
GlobalTrajectoryParameters const & trajectoryParameters() const
virtual DirectionType direction(double s) const
*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