00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00019 #ifndef StEmcPosition_H
00020 #define StEmcPosition_H
00021
00022 #include "TObject.h"
00023
00024 #include "StarClassLibrary/StThreeVectorD.hh"
00025 #include "StarClassLibrary/StThreeVectorF.hh"
00026 #include "StPhysicalHelixD.hh"
00027
00028 class StTrack;
00029 class StMuTrack;
00030 class StMcTrack;
00031 class StEmcGeom;
00032 class StVertex;
00033 class StMcVertex;
00034
00035 class StEmcPosition : public TObject
00036 {
00037 public:
00038
00039 StEmcPosition();
00040 virtual ~StEmcPosition();
00041
00042 Bool_t projTrack(StThreeVectorD* atFinal,StThreeVectorD* momentumAtFinal,const StTrack* const track,Double_t magField,Double_t radius=225.405,Int_t option=1) const;
00043 Bool_t projTrack(StThreeVectorD* atFinal,StThreeVectorD* momentumAtFinal,const StMuTrack* const track,Double_t magField,Double_t radius=225.405,Int_t option=1) const;
00044 Bool_t projTrack(StThreeVectorD* atFinal,StThreeVectorD* momentumAtFinal,const StMcTrack* const mcTrack,Double_t magField,Double_t radius=225.405,Int_t option=1) const;
00045 Bool_t projTrack(StThreeVectorD* atFinal,StThreeVectorD* momentumAtFinal,const StPhysicalHelixD* const helix,Double_t magField,Double_t radius=225.405,Int_t option=1) const;
00046
00047 Bool_t trackOnEmc(StThreeVectorD* position,StThreeVectorD* momentum,const StTrack* const track,Double_t magField,Double_t emcRadius=225.405) const;
00048 Bool_t trackOnEmc(StThreeVectorD* position,StThreeVectorD* momentum,const StMuTrack* const track,double magField,double emcRadius=225.405) const;
00049 Bool_t trackOnEmc(StThreeVectorD* position,StThreeVectorD* momentum,const StMcTrack* const mcTrack,Double_t magField,Double_t emcRadius=225.405) const;
00050
00051 Int_t getTowerEtaPhi(Double_t eta, Double_t phi, Float_t* towerEta, Float_t* towerPhi) const;
00052
00053 Int_t getNextTowerId(Float_t eta, Float_t phi, Int_t nTowersdEta, Int_t nTowersdPhi) const;
00054 Int_t getNextTowerId(Int_t softId, Int_t nTowersdEta, Int_t nTowersdPhi) const;
00055 Int_t getNextTowerId(Int_t m, Int_t e, Int_t s, Int_t nTowersdEta, Int_t nTowersdPhi) const;
00056 Int_t getNextId(Int_t det, Int_t m, Int_t e, Int_t s, Int_t nEta, Int_t nPhi) const;
00057 Int_t getNextId(Int_t det, Int_t softId, Int_t nEta, Int_t nPhi)const;
00058
00059 Float_t getDistTowerToTrack(Double_t trackEta, Double_t trackPhi, Int_t nTowersdEta, Int_t nTowersdPhi) const;
00060
00061 StThreeVectorF getPosFromVertex(const StVertex* const vertex, Int_t TowerId) const;
00062 StThreeVectorF getPosFromVertex(const StThreeVectorF& position, Int_t TowerId) const;
00063 StThreeVectorF getPosFromVertex(const StMcVertex* const vertex, Int_t TowerId) const;
00064 Float_t getThetaFromVertex(const StVertex* const vertex, Int_t TowerId) const;
00065 Float_t getThetaFromVertex(const StThreeVectorF& vertex, Int_t TowerId) const;
00066 Float_t getThetaFromVertex(const StMcVertex* const vertex, Int_t TowerId) const;
00067 Float_t getEtaFromVertex(const StVertex* const vertex, Int_t TowerId) const;
00068 Float_t getEtaFromVertex(const StThreeVectorF& vertex, Int_t TowerId) const;
00069 Float_t getEtaFromVertex(const StMcVertex* const vertex, Int_t TowerId) const;
00070 Float_t getPhiFromVertex(const StVertex* const vertex, Int_t TowerId) const;
00071 Float_t getPhiFromVertex(const StThreeVectorF& vertex, Int_t TowerId) const;
00072 Float_t getPhiFromVertex(const StMcVertex* const vertex, Int_t TowerId) const;
00073
00074 protected:
00075
00076 StEmcGeom* mGeom[4];
00077
00078 ClassDef(StEmcPosition,2)
00079
00080 };
00081 #endif