4 #include "../util/inc/vector3.h"
5 #include "../util/inc/matrix.h"
6 #include "../util/inc/helixrep.h"
7 #include "../inc/track.h"
50 void swimDistance(
const double s);
53 void swimToStateNearest(
const Vector3 & Point);
56 void swimToStateNearest(
TrackState*
const TrackToSwimTo);
59 void swimToStateNearestXY(
const Vector3 & Point);
65 {
return (this->parentTrack() == Track->parentTrack());}
69 {
return (this->parentTrack() == Track);}
73 {
return this->position().distanceTo(Point);}
77 {
return this->position().distanceTo2(Point);}
81 {
return this->position().subtract(Point).mag(RPhi);}
84 double chi2(
const Vector3 &Point);
87 double chi2_nomove(
const Vector3 &Point);
92 const Vector3 & position()
const;
95 inline double phi()
const
96 {
return std::fmod(_Init.phi()+(_DistanceSwum*(_Init.invR())), 2.0*3.141592654);}
104 {
return (fabs(_Charge)<0.000001);}
108 {
return !this->isNeutral();}
123 const SymMatrix3x3& inversePositionCovarMatrixXYZ()
const;
127 {
return _ParentTrack;}
142 SymMatrix5x5 _InitCovarMatrix;
144 mutable Vector3 _Position;
145 mutable bool _PosValid;
147 mutable Vector3 _Momentum;
148 mutable bool _MomValid;
150 mutable SymMatrix2x2 _PositionCovarMatrix;
151 mutable bool _PositionCovarValid;
153 mutable SymMatrix2x2 _InversePositionCovarMatrix;
154 mutable bool _InversePositionCovarValid;
156 mutable SymMatrix3x3 _PositionCovarMatrixXYZ;
157 mutable bool _PositionCovarValidXYZ;
159 mutable SymMatrix3x3 _InversePositionCovarMatrixXYZ;
160 mutable bool _InversePositionCovarValidXYZ;
162 double _DistanceSwum;
168 static const double _swimprecision;
171 template <
class charT,
class traits>
inline
172 std::basic_ostream<charT,traits>& operator<<(std::basic_ostream<charT,traits>&os,
const TrackState& ts)
174 os <<
"TrackState: " << ts.
parentTrack()->
trackingNum() <<
" @ " << ts.position() <<
" C" << ts.isCharged() <<
" H:" << ts.parentTrack()->helixRep() <<
" err" << ts.parentTrack()->covarianceMatrix()<< std::endl;
178 #endif //TRACKSTATE_H
double charge() const
Charge.
Track * parentTrack() const
The Track that this TrackState belongs to, (if any)
bool sameTrack(TrackState *const Track) const
Is this the same track as another TrackState?
double distanceTo(const Vector3 &Point) const
Distance from the TrackStates current position to Point.
void * trackingNum() const
Tracking Number.
double xyDistanceTo(const Vector3 &Point) const
Distance in the XY plane from the TrackStates current position to Point.
Spatial point on a Track.
double distanceTo2(const Vector3 &Point) const
Distance squared from the TrackStates current position to Point.
bool isNeutral() const
Is this track neutral.
bool sameTrack(Track *const Track) const
Is this the same track as Track?
Unique Track representation.
bool isCharged() const
Is this track charged.
double phi() const
Current phi of the trackstate.