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 #ifndef StMcHit_hh
00059 #define StMcHit_hh
00060
00061 #include "StObject.h"
00062 #include "Stiostream.h"
00063 #include "StThreeVectorF.hh"
00064 #include "tables/St_g2t_hits_Table.h"
00065 #include "StMcTrack.hh"
00066
00067 class StMcHit : public StObject {
00068 public:
00069 enum EMcHitBits {
00070 kMatched = BIT(23)
00071 };
00072 StMcHit() : mPosition(0,0,0), mLocalMomentum(0,0,0), mdE(0),mdS(0),mTof(0),mVolumeId(0),mParentTrack(0) {}
00073 StMcHit(const StThreeVectorF& x,const StThreeVectorF& p,
00074 Float_t de, Float_t ds, Float_t tof, Long_t k, Long_t volId, StMcTrack* parent=0)
00075 : mPosition(x), mLocalMomentum(p), mdE(de), mdS(ds), mTof(tof), mKey(k), mVolumeId(volId), mParentTrack(parent) {}
00076 StMcHit(g2t_hits_st* pt) : mPosition(pt->x[0],pt->x[1],pt->x[2]), mLocalMomentum(pt->p[0],pt->p[1],pt->p[2]),
00077 mdE(pt->de), mdS(pt->ds), mTof(pt->tof), mKey(pt->id), mVolumeId(0),
00078 mParentTrack(0) {}
00079
00080
00081 virtual ~StMcHit() {}
00082
00083 Int_t operator==(const StMcHit& h) const;
00084 Int_t operator!=(const StMcHit& h) const {return !(*this == h); }
00085
00086
00087
00088 virtual const StThreeVectorF& position() const { return mPosition;}
00089 virtual const StThreeVectorF& localMomentum() const { return mLocalMomentum;}
00090 virtual Float_t dE() const { return mdE; }
00091 virtual Float_t dS() const { return mdS; }
00092 virtual Float_t tof() const { return mTof; }
00093 virtual Long_t key() const { return mKey; }
00094 virtual Long_t volumeId() const { return mVolumeId; }
00095 virtual StMcTrack* parentTrack() const { return mParentTrack; }
00096
00097
00098 virtual void setPosition(const StThreeVectorF& val) { mPosition = val; }
00099 virtual void setLocalMomentum(const StThreeVectorF& val) { mLocalMomentum = val; }
00100 virtual void setdE(Float_t val) { mdE = val;}
00101 virtual void setdS(Float_t val) { mdS = val;}
00102 virtual void setTof(Float_t tof) { mTof = tof;}
00103 virtual void setKey(Long_t val) { mKey = val;}
00104 virtual void setVolumeId(Long_t val) { mVolumeId = val; }
00105 virtual void setParentTrack(StMcTrack* val) { mParentTrack = val; }
00106 virtual void Print(Option_t *option="") const;
00107
00108 protected:
00109 StThreeVectorF mPosition;
00110 StThreeVectorF mLocalMomentum;
00111 Float_t mdE;
00112 Float_t mdS;
00113 Float_t mTof;
00114 Long_t mKey;
00115 Long_t mVolumeId;
00116 StMcTrack* mParentTrack;
00117 ClassDef(StMcHit,2)
00118 };
00119 ostream& operator<<(ostream& os, const StMcHit&);
00120 #endif
00121