00001
00125 #ifndef StMcTrack_hh
00126 #define StMcTrack_hh
00127 #include "Stiostream.h"
00128 #include "StLorentzVectorF.hh"
00129 #include "StMcContainers.hh"
00130 #include "StObject.h"
00131 #include "StEnumerations.h"
00132 class StParticleDefinition;
00133 class g2t_track_st;
00134 class particle_st;
00135 class StMcTrack;
00136 ostream& operator<<(ostream& os, const StMcTrack&);
00137
00138 class StMcTrack : public StObject {
00139 public:
00140 StMcTrack();
00141 virtual ~StMcTrack();
00142 StMcTrack(g2t_track_st* trk);
00143 StMcTrack(particle_st* trk);
00144
00145
00146
00147
00148 int operator==(const StMcTrack&) const;
00149 int operator!=(const StMcTrack&) const;
00150
00151 void initToZero();
00152
00153 const StLorentzVectorF& fourMomentum() const { return mFourMomentum; }
00154 const StThreeVectorF& momentum() const { return mFourMomentum.vect(); }
00155 float energy() const { return mFourMomentum.e(); }
00156 float pt() const { return mFourMomentum.perp(); }
00157 float rapidity() const { return mFourMomentum.rapidity(); }
00158 float pseudoRapidity() const { return mFourMomentum.pseudoRapidity(); }
00159 StMcVertex* startVertex() { return mStartVertex; }
00160 const StMcVertex* startVertex() const { return mStartVertex; }
00161 StMcVertex* stopVertex() { return mStopVertex; }
00162 const StMcVertex* stopVertex() const { return mStopVertex; }
00163 StMcTrack* parent() { return mParent; }
00164 const StMcTrack* parent() const { return mParent; }
00165 StPtrVecMcVertex& intermediateVertices() { return mIntermediateVertices; }
00166 const StPtrVecMcVertex& intermediateVertices() const { return mIntermediateVertices; }
00167 StPtrVecMcTpcHit& tpcHits() { return mTpcHits; }
00168 const StPtrVecMcTpcHit& tpcHits() const { return mTpcHits; }
00169 StPtrVecMcSvtHit& svtHits() { return mSvtHits; }
00170 const StPtrVecMcSvtHit& svtHits() const { return mSvtHits; }
00171 StPtrVecMcSsdHit& ssdHits() { return mSsdHits; }
00172 const StPtrVecMcSsdHit& ssdHits() const { return mSsdHits; }
00173 StPtrVecMcFtpcHit& ftpcHits() { return mFtpcHits; }
00174 const StPtrVecMcFtpcHit& ftpcHits() const { return mFtpcHits; }
00175 StPtrVecMcRichHit& richHits() { return mRichHits; }
00176 const StPtrVecMcRichHit& richHits() const { return mRichHits; }
00177 StPtrVecMcCtbHit& ctbHits() { return mCtbHits; }
00178 const StPtrVecMcCtbHit& ctbHits() const { return mCtbHits; }
00179 StPtrVecMcCalorimeterHit& bemcHits() { return mBemcHits; }
00180 const StPtrVecMcCalorimeterHit& bemcHits() const { return mBemcHits; }
00181 StPtrVecMcCalorimeterHit& bprsHits() { return mBprsHits; }
00182 const StPtrVecMcCalorimeterHit& bprsHits() const { return mBprsHits; }
00183 StPtrVecMcCalorimeterHit& bsmdeHits() { return mBsmdeHits; }
00184 const StPtrVecMcCalorimeterHit& bsmdeHits() const { return mBsmdeHits; }
00185 StPtrVecMcCalorimeterHit& bsmdpHits() { return mBsmdpHits; }
00186 const StPtrVecMcCalorimeterHit& bsmdpHits() const { return mBsmdpHits; }
00187 StPtrVecMcTofHit& tofHits() { return mTofHits; }
00188 const StPtrVecMcTofHit& tofHits() const { return mTofHits; }
00189 StPtrVecMcMtdHit& mtdHits() { return mMtdHits; }
00190 const StPtrVecMcMtdHit& mtdHits() const { return mMtdHits; }
00191 StPtrVecMcCalorimeterHit& eemcHits() { return mEemcHits; }
00192 const StPtrVecMcCalorimeterHit& eemcHits() const { return mEemcHits; }
00193 StPtrVecMcCalorimeterHit& eprsHits() { return mEprsHits; }
00194 const StPtrVecMcCalorimeterHit& eprsHits() const { return mEprsHits; }
00195 StPtrVecMcCalorimeterHit& esmduHits() { return mEsmduHits; }
00196 const StPtrVecMcCalorimeterHit& esmduHits() const { return mEsmduHits; }
00197 StPtrVecMcCalorimeterHit& esmdvHits() { return mEsmdvHits; }
00198 const StPtrVecMcCalorimeterHit& esmdvHits() const { return mEsmdvHits; }
00199 StPtrVecMcCalorimeterHit& fpdHits() { return mFpdHits; }
00200 const StPtrVecMcCalorimeterHit& fpdHits() const { return mFpdHits; }
00201 StPtrVecMcCalorimeterHit& fscHits() { return mFscHits; }
00202 const StPtrVecMcCalorimeterHit& fscHits() const { return mFscHits; }
00203 StPtrVecMcPixelHit& pixelHits() { return mPixelHits; }
00204 const StPtrVecMcPixelHit& pixelHits() const { return mPixelHits; }
00205 StPtrVecMcIstHit& istHits() { return mIstHits; }
00206 const StPtrVecMcIstHit& istHits() const { return mIstHits; }
00207 StPtrVecMcFgtHit& fgtHits() { return mFgtHits; }
00208 const StPtrVecMcFgtHit& fgtHits() const { return mFgtHits; }
00209 StPtrVecMcEtrHit& etrHits() { return mEtrHits; }
00210 const StPtrVecMcEtrHit& etrHits() const { return mEtrHits; }
00211 StParticleDefinition* particleDefinition();
00212 const StParticleDefinition* particleDefinition() const { return mParticleDefinition; }
00213 const StPtrVecMcHit *Hits(StDetectorId Id) const;
00214 const StPtrVecMcCalorimeterHit *CalorimeterHits(StDetectorId Id) const;
00215 int isShower() const { return mIsShower; }
00216 long geantId() const { return mGeantId; }
00217 long pdgId() const { return mPdgId; }
00218 long key() const { return mKey; }
00219 long eventGenLabel() const { return mEventGenLabel; }
00220
00221
00222 void setFourMomentum(const StLorentzVectorF&);
00223 void setStartVertex(StMcVertex*);
00224 void setStopVertex(StMcVertex*);
00225 void setIntermediateVertices(StPtrVecMcVertex&);
00226 void setTpcHits(StPtrVecMcTpcHit&);
00227 void setSvtHits(StPtrVecMcSvtHit&);
00228 void setSsdHits(StPtrVecMcSsdHit&);
00229 void setFtpcHits(StPtrVecMcFtpcHit&);
00230 void setRichHits(StPtrVecMcRichHit&);
00231 void setCtbHits(StPtrVecMcCtbHit&);
00232 void setBemcHits(StPtrVecMcCalorimeterHit&);
00233 void setBprsHits(StPtrVecMcCalorimeterHit&);
00234 void setBsmdeHits(StPtrVecMcCalorimeterHit&);
00235 void setBsmdpHits(StPtrVecMcCalorimeterHit&);
00236 void setTofHits(StPtrVecMcTofHit&);
00237 void setMtdHits(StPtrVecMcMtdHit&);
00238 void setEemcHits(StPtrVecMcCalorimeterHit&);
00239 void setEprsHits(StPtrVecMcCalorimeterHit&);
00240 void setEsmduHits(StPtrVecMcCalorimeterHit&);
00241 void setEsmdvHits(StPtrVecMcCalorimeterHit&);
00242 void setFscHits(StPtrVecMcCalorimeterHit&);
00243 void setPixelHits(StPtrVecMcPixelHit&);
00244 void setIstHits(StPtrVecMcIstHit&);
00245 void setFgtHits(StPtrVecMcFgtHit&);
00246 void setEtrHits(StPtrVecMcEtrHit&);
00247
00248 void setShower(char);
00249 void setGeantId(long);
00250 void setPdgId(long);
00251 void setKey(long);
00252 void setEventGenLabel(long);
00253 void setParent(StMcTrack*);
00254 void setPrimary(Bool_t val) {mIsPrimary = val;}
00255
00256 void addTpcHit(StMcTpcHit*);
00257 void addSvtHit(StMcSvtHit*);
00258 void addSsdHit(StMcSsdHit*);
00259 void addFtpcHit(StMcFtpcHit*);
00260 void addRichHit(StMcRichHit*);
00261 void addCtbHit(StMcCtbHit*);
00262 void addBemcHit(StMcCalorimeterHit*);
00263 void addBprsHit(StMcCalorimeterHit*);
00264 void addBsmdeHit(StMcCalorimeterHit*);
00265 void addBsmdpHit(StMcCalorimeterHit*);
00266 void addTofHit(StMcTofHit*);
00267 void addMtdHit(StMcMtdHit*);
00268 void addEemcHit(StMcCalorimeterHit*);
00269 void addEprsHit(StMcCalorimeterHit*);
00270 void addEsmduHit(StMcCalorimeterHit*);
00271 void addEsmdvHit(StMcCalorimeterHit*);
00272 void addFpdHit(StMcCalorimeterHit*);
00273 void addFscHit(StMcCalorimeterHit*);
00274 void addPixelHit(StMcPixelHit*);
00275 void addIstHit(StMcIstHit*);
00276 void addFgtHit(StMcFgtHit*);
00277 void addEtrHit(StMcEtrHit*);
00278 void removeTpcHit(StMcTpcHit*);
00279 void removeSvtHit(StMcSvtHit*);
00280 void removeSsdHit(StMcSsdHit*);
00281 void removeFtpcHit(StMcFtpcHit*);
00282 void removeRichHit(StMcRichHit*);
00283 void removeCtbHit(StMcCtbHit*);
00284 void removeCalorimeterHit(StPtrVecMcCalorimeterHit&, StMcCalorimeterHit*);
00285 void removeBemcHit(StMcCalorimeterHit*);
00286 void removeBprsHit(StMcCalorimeterHit*);
00287 void removeBsmdeHit(StMcCalorimeterHit*);
00288 void removeBsmdpHit(StMcCalorimeterHit*);
00289 void removeTofHit(StMcTofHit*);
00290 void removeMtdHit(StMcMtdHit*);
00291 void removeEemcHit(StMcCalorimeterHit*);
00292 void removeEprsHit(StMcCalorimeterHit*);
00293 void removeEsmduHit(StMcCalorimeterHit*);
00294 void removeEsmdvHit(StMcCalorimeterHit*);
00295 void removeFscHit(StMcCalorimeterHit*);
00296 void removePixelHit(StMcPixelHit*);
00297 void removeIstHit(StMcIstHit*);
00298 void removeFgtHit(StMcFgtHit*);
00299 void removeEtrHit(StMcEtrHit*);
00300 void Print(Option_t *option="") const;
00301 Bool_t IsPrimary() const {return mIsPrimary;}
00302
00303
00304 protected:
00305 StLorentzVectorF mFourMomentum;
00306 StMcVertex* mStartVertex;
00307 StMcVertex* mStopVertex;
00308 StPtrVecMcVertex mIntermediateVertices;
00309 StPtrVecMcTpcHit mTpcHits;
00310 StPtrVecMcSvtHit mSvtHits;
00311 StPtrVecMcSsdHit mSsdHits;
00312 StPtrVecMcFtpcHit mFtpcHits;
00313 StPtrVecMcRichHit mRichHits;
00314 StPtrVecMcCtbHit mCtbHits;
00315 StPtrVecMcCalorimeterHit mBemcHits;
00316 StPtrVecMcCalorimeterHit mBprsHits;
00317 StPtrVecMcCalorimeterHit mBsmdeHits;
00318 StPtrVecMcCalorimeterHit mBsmdpHits;
00319 StPtrVecMcTofHit mTofHits;
00320 StPtrVecMcMtdHit mMtdHits;
00321 StPtrVecMcCalorimeterHit mEemcHits;
00322 StPtrVecMcCalorimeterHit mEprsHits;
00323 StPtrVecMcCalorimeterHit mEsmduHits;
00324 StPtrVecMcCalorimeterHit mEsmdvHits;
00325 StPtrVecMcCalorimeterHit mFpdHits;
00326 StPtrVecMcCalorimeterHit mFscHits;
00327 StPtrVecMcPixelHit mPixelHits;
00328 StPtrVecMcIstHit mIstHits;
00329 StPtrVecMcFgtHit mFgtHits;
00330 StPtrVecMcEtrHit mEtrHits;
00331 StParticleDefinition* mParticleDefinition;
00332 StMcTrack* mParent;
00333 char mIsShower;
00334 long mGeantId;
00335 long mPdgId;
00336 long mKey;
00337 long mEventGenLabel;
00338 Bool_t mIsPrimary;
00339 ClassDef(StMcTrack,2)
00340 };
00341 #endif
00342
00343
00344
00345