33 #include "StContainers.h"
34 #include "StThreeVectorF.hh"
45 enum StRpsTrackType { rpsLocal, rpsGlobal, rpsUndefined };
46 enum StRpsAngles { rpsAngleThetaX, rpsAngleThetaY, rpsAngleTheta, mNumberOfAngleTypes };
51 StRpsTrackType type()
const;
52 unsigned int planesUsed()
const;
54 double theta(
unsigned int = rpsAngleTheta)
const;
55 double thetaRp(
unsigned int = rpsAngleTheta)
const;
58 double t(
double)
const;
59 double xi(
double)
const;
68 void setType(StRpsTrackType);
70 enum {mNumberOfStationsInBranch = 2};
73 StPtrVecRpsTrackPoint mTrackPoints;
81 inline StRpsTrackPoint* StRpsTrack::trackPoint(
unsigned int station)
const
83 return station < mNumberOfStationsInBranch ? mTrackPoints[station] :
nullptr;
86 inline int StRpsTrack::branch()
const {
return mBranch; }
87 inline StRpsTrack::StRpsTrackType StRpsTrack::type()
const {
return mType; }
88 inline double StRpsTrack::phi()
const {
return mP.phi(); }
89 inline double StRpsTrack::t(
double beamMomentum)
const
91 return -2*beamMomentum*beamMomentum*(1-xi(beamMomentum))*(1-cos(theta(rpsAngleTheta)));
93 inline double StRpsTrack::xi(
double beamMomentum)
const
95 return (beamMomentum - mP.mag())/beamMomentum;
97 inline double StRpsTrack::p()
const {
return mP.mag(); }
98 inline double StRpsTrack::pt()
const {
return mP.perp(); }
99 inline double StRpsTrack::eta()
const {
return mP.pseudoRapidity(); }
101 inline void StRpsTrack::setTrackPoint(
StRpsTrackPoint* trackPoint,
unsigned int station)
103 if (station<mNumberOfStationsInBranch)
104 mTrackPoints[station] = trackPoint;
107 inline void StRpsTrack::setBranch(
int branch) { mBranch = branch; }
108 inline void StRpsTrack::setType(StRpsTrack::StRpsTrackType type) { mType = type; }