00001
00002 #ifndef __StMuMcTrack_h__
00003 #define __StMuMcTrack_h__
00004 #include "tables/St_g2t_track_Table.h"
00005 #include "StThreeVectorF.hh"
00006 class StMuMcTrack : public TObject {
00007 public:
00008 enum EHIT {ktpc, ksvt, kssd,
00009 kctb, keem, kemc, kesm, kftp, kgem, khpd, kist, kigt, kfst,
00010 kfgt, kfpd, kmwc, kpgc, kpmd, ksmd, kpix, ktof, kvpd, ktot};
00011 StMuMcTrack(const g2t_track_st &t) : TObject(), mGePid(t.ge_pid), mId(t.id), mIsShower(t.is_shower), mItrmdVertex(t.itrmd_vertex_p),
00012 mIdVx(t.start_vertex_p), mIdVxEnd(t.stop_vertex_p), mCharge(t.charge), mE(t.e), mEta(t. eta), mPxyz(t.p), mpT(t.pt), mPtot(t.ptot),
00013 mRapidity(t.rapidity) {
00014 mHits[kctb] = 0xff & t.n_ctb_hit;
00015 mHits[keem] = 0xff & t.n_eem_hit;
00016 mHits[kemc] = 0xff & t.n_emc_hit;
00017 mHits[kesm] = 0xff & t.n_esm_hit;
00018 mHits[kftp] = 0xff & t.n_ftp_hit;
00019 mHits[kgem] = 0xff & t.n_gem_hit;
00020 mHits[khpd] = 0xff & t.n_hpd_hit;
00021 mHits[kist] = 0xff & t.n_ist_hit;
00022 mHits[kigt] = 0xff & t.n_igt_hit;
00023 mHits[kfst] = 0xff & t.n_fst_hit;
00024 mHits[kfgt] = 0xff & t.n_fgt_hit;
00025 mHits[kfpd] = 0xff & t.n_fpd_hit;
00026 mHits[kmwc] = 0xff & t.n_mwc_hit;
00027 mHits[kpgc] = 0xff & t.n_pgc_hit;
00028 mHits[kpmd] = 0xff & t.n_pmd_hit;
00029 mHits[ksmd] = 0xff & t.n_smd_hit;
00030 mHits[kssd] = 0xff & t.n_ssd_hit;
00031 mHits[ksvt] = 0xff & t.n_svt_hit;
00032 mHits[kpix] = 0xff & t.n_pix_hit;
00033 mHits[ktof] = 0xff & t.n_tof_hit;
00034 mHits[ktpc] = 0xff & t.n_tpc_hit;
00035 mHits[kvpd] = 0xff & t.n_vpd_hit;
00036 }
00037 StMuMcTrack() {}
00038 virtual ~StMuMcTrack() {}
00039 Int_t GePid() const {return mGePid;}
00040 Int_t Id() const {return mId;}
00041 Bool_t IsShower() const {return mIsShower;}
00042 Int_t NoHits() const {Int_t n = 0; for (Int_t i = ktpc; i < ktot; i++) n+= NoHits(i); return n;}
00043 UChar_t NoHits(Int_t k)const {return mHits[k];}
00044 UChar_t No_ctb_hit() const {return NoHits(kctb);}
00045 UChar_t No_eem_hit() const {return NoHits(keem);}
00046 UChar_t No_emc_hit() const {return NoHits(kemc);}
00047 UChar_t No_esm_hit() const {return NoHits(kesm);}
00048 UChar_t No_ftp_hit() const {return NoHits(kftp);}
00049 UChar_t No_gem_hit() const {return NoHits(kgem);}
00050 UChar_t No_hpd_hit() const {return NoHits(khpd);}
00051 UChar_t No_ist_hit() const {return NoHits(kist);}
00052 UChar_t No_igt_hit() const {return NoHits(kigt);}
00053 UChar_t No_fst_hit() const {return NoHits(kfst);}
00054 UChar_t No_fgt_hit() const {return NoHits(kfgt);}
00055 UChar_t No_fpd_hit() const {return NoHits(kfpd);}
00056 UChar_t No_mwc_hit() const {return NoHits(kmwc);}
00057 UChar_t No_pgc_hit() const {return NoHits(kpgc);}
00058 UChar_t No_pmd_hit() const {return NoHits(kpmd);}
00059 UChar_t No_smd_hit() const {return NoHits(ksmd);}
00060 UChar_t No_ssd_hit() const {return NoHits(kssd);}
00061 UChar_t No_svt_hit() const {return NoHits(ksvt);}
00062 UChar_t No_pix_hit() const {return NoHits(kpix);}
00063 UChar_t No_tof_hit() const {return NoHits(ktof);}
00064 UChar_t No_tpc_hit() const {return NoHits(ktpc);}
00065 UChar_t No_vpd_hit() const {return NoHits(kvpd);}
00066 Int_t ItrmdVertex() const {return mItrmdVertex;}
00067 Int_t IdVx () const {return mIdVx; }
00068 Int_t IdVxEnd () const {return mIdVxEnd; }
00069 Char_t Charge () const {return mCharge; }
00070 Float_t E () const {return mE; }
00071 Float_t Eta () const {return mEta; }
00072 const StThreeVectorF& Pxyz () const {return *&mPxyz; }
00073 Float_t pT () const {return mpT; }
00074 Float_t Ptot () const {return mPtot; }
00075 Float_t Rapidity () const {return mRapidity; }
00076 virtual void Print(Option_t* option = "") const;
00077 static Int_t CorrectGePid(Int_t gePid);
00078 const Char_t *GeName();
00079 private:
00080 Int_t mGePid;
00081 Int_t mId;
00082 Bool_t mIsShower;
00083 UChar_t mHits[ktot];
00084 Int_t mItrmdVertex;
00085 Int_t mIdVx;
00086 Int_t mIdVxEnd;
00087 Char_t mCharge;
00088 Float_t mE;
00089 Float_t mEta;
00090 StThreeVectorF mPxyz;
00091 Float_t mpT;
00092 Float_t mPtot;
00093 Float_t mRapidity;
00094 ClassDef(StMuMcTrack,1)
00095 };
00096 ostream& operator<<(ostream& os, StMuMcTrack const & v);
00097 #endif
00098
00099
00100
00101
00102
00103
00104