00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 #ifndef StHbtTrack_hh
00119 #define StHbtTrack_hh
00120
00121 #include "Stiostream.h"
00122
00123 #include "StHbtMaker/Infrastructure/StHbtTypes.hh"
00124 #include "StPhysicalHelixD.hh"
00125
00126 #include "StHbtMaker/Base/StHbtHiddenInfo.hh"
00127
00128
00129 class StEvent;
00130 class StTrack;
00131 class StHbtTTreeTrack;
00132 class StHbtTTreeEvent;
00133 class StMuDst;
00134 class StMuTrack;
00135
00136 class StHbtTrack{
00137 public:
00138 StHbtTrack();
00139 StHbtTrack(const StHbtTrack&);
00140 #ifdef __ROOT__
00141 StHbtTrack(const StTrack*, StHbtThreeVector);
00142 StHbtTrack(const StHbtTTreeEvent* ev, const StHbtTTreeTrack* t);
00143 StHbtTrack(const StMuDst* dst, const StMuTrack* t);
00144 #endif
00145 StHbtTrack(const StEvent*, const StTrack*);
00146 ~StHbtTrack();
00147
00148
00149 short TrackType() const;
00150 short Charge() const;
00151 short NHits() const;
00152 short NHitsPossible() const;
00153 short NHitsDedx() const;
00154 const float* NSigma() const;
00155 float NSigmaElectron() const;
00156 float NSigmaPion() const;
00157 float NSigmaKaon() const;
00158 float NSigmaProton() const;
00159 float PidProbElectron() const;
00160 float PidProbPion() const;
00161 float PidProbKaon() const;
00162 float PidProbProton() const;
00163 float dEdx() const;
00164 float DCAz() const;
00165 float DCAxy() const;
00166 float DCAzGlobal() const;
00167 float DCAxyGlobal() const;
00168 float ChiSquaredXY() const;
00169 float ChiSquaredZ() const;
00170 StHbtThreeVector P() const;
00171 float Pt() const;
00172 StHbtThreeVector PGlobal() const;
00173 float PtGlobal() const;
00174 const StPhysicalHelixD& Helix() const;
00175 const StPhysicalHelixD& HelixGlobal() const;
00176 unsigned int TopologyMap(const unsigned int word) const;
00177 short TrackId() const;
00178
00179 void SetTrackType(const short&);
00180 void SetCharge(const short&);
00181 void SetNHits(const short&);
00182 void SetNHitsPossible(const short&);
00183 void SetNHitsDedx(const short&);
00184 void SetNSigmaElectron(const float&);
00185 void SetNSigmaPion(const float&);
00186 void SetNSigmaKaon(const float&);
00187 void SetNSigmaProton(const float&);
00188 void SetPidProbElectron(const float&);
00189 void SetPidProbPion(const float&);
00190 void SetPidProbKaon(const float&);
00191 void SetPidProbProton(const float&);
00192 void SetdEdx(const float&);
00193 void SetDCAxy(const float&);
00194 void SetDCAz(const float&);
00195 void SetDCAxyGlobal(const float&);
00196 void SetDCAzGlobal(const float&);
00197 void SetChiSquaredXY(const float&);
00198 void SetChiSquaredZ(const float&);
00199 void SetP(const StHbtThreeVector&);
00200 void SetPt(const float&);
00201 void SetPGlobal(const StHbtThreeVector&);
00202 void SetPtGlobal(const float&);
00203 void SetHelix(const StPhysicalHelixD&);
00204 void SetHelixGlobal(const StPhysicalHelixD&);
00205 void SetTopologyMap(const int word, const unsigned int map);
00206 void SetTrackId(const short&);
00207
00208
00209 void SetHiddenInfo(StHbtHiddenInfo* aHiddenInfo);
00210 bool ValidHiddenInfo() const;
00211
00212 StHbtHiddenInfo* getHiddenInfo() const;
00213
00214
00215
00216 friend ostream& operator<<(ostream& out, StHbtTrack& trk);
00217 friend istream& operator>>(istream& in, StHbtTrack& trk);
00218
00219 private:
00220 short mTrackType;
00221 char mCharge;
00222 unsigned short mNHits;
00223 unsigned short mNHitsPoss;
00224 unsigned short mNHitsDedx;
00225 float mNSigmaElectron;
00226 float mNSigmaPion;
00227 float mNSigmaKaon;
00228 float mNSigmaProton;
00229 float mPidProbElectron;
00230 float mPidProbPion;
00231 float mPidProbKaon;
00232 float mPidProbProton;
00233 float mdEdx;
00234 float mDCAxy;
00235 float mDCAz;
00236 float mDCAxyGlobal;
00237 float mDCAzGlobal;
00238 float mChiSqXY;
00239 float mChiSqZ;
00240 unsigned int mMap[2];
00241 unsigned int mTrackId;
00242
00243
00244 StHbtThreeVector mP;
00245 float mPt;
00246 StHbtThreeVector mPGlobal;
00247 float mPtGlobal;
00248 StPhysicalHelixD mHelix;
00249 StPhysicalHelixD mHelixGlobal;
00250
00251
00252
00253
00254 StHbtHiddenInfo* mHiddenInfo;
00255
00256
00257 friend class StHbtIOBinary;
00258 friend class StHbtTTreeEvent;
00259 friend class StHbtTTreeTrack;
00260 };
00261
00262 inline const float* StHbtTrack::NSigma() const
00263 {return &mNSigmaElectron;}
00264 inline float StHbtTrack::PidProbElectron() const {return mPidProbElectron;}
00265 inline float StHbtTrack::PidProbPion() const {return mPidProbPion;}
00266 inline float StHbtTrack::PidProbKaon() const {return mPidProbKaon;}
00267 inline float StHbtTrack::PidProbProton() const {return mPidProbProton;}
00268 inline StHbtThreeVector StHbtTrack::PGlobal() const {return mPGlobal;}
00269 inline float StHbtTrack::PtGlobal() const {return mPtGlobal;}
00270
00271 #endif