00001 #ifndef XANATrack_h
00002 #define XANATrack_h
00003
00012 class XANAVertex;
00013 #include <CLHEP/Geometry/Point3D.h>
00014 #include <TObject.h>
00015 #include <TRefArray.h>
00016 #include <TRef.h>
00017 #include <Rtypes.h>
00018 #include <stdio.h>
00019 #include <TClonesArray.h>
00020 #include <vector>
00021 #include <string>
00022
00023 using namespace HepGeom;
00024
00025 class XANATrackHit;
00026 class XANATrack : public TObject {
00027
00028 public:
00029
00030 XANATrack();
00032 XANATrack(Short_t charge, Float_t chi2OverDof, Short_t numberOfHits,
00033 Short_t numberOfLostHits, Float_t impactParameter,
00034 Float_t longImpactParameter, Float_t transImpactParameter, HepVector3D
00035 momentumAtVertex, HepPoint3D positionAtFirstPoint, HepVector3D
00036 momentumAtFirstPoint, HepPoint3D positionAtLastPoint,
00037 HepVector3D momentumAtLastPoint, std::string algoName);
00038
00039 virtual ~XANATrack();
00040
00041
00042 Short_t getCharge() const {return charge_;}
00043 Float_t getChi2OverDof() const {return chi2OverDof_;}
00044 Short_t getNumberOfHits() const {return numberOfHits_;}
00045 Short_t getNumberOfLostHits() const {return numberOfLostHits_;}
00046 Float_t getLongImpactParameter() const {return longImpactParameter_;}
00047 Float_t getTransImpactParameter() const {return transImpactParameter_;}
00048 Float_t getImpactParameter() const {return impactParameter_;}
00049 HepVector3D getMomentumAtVertex() const {return momentumAtVertex_;}
00050 HepVector3D getMomentumAtFirstPoint() const {return momentumAtFirstPoint_;}
00051 HepPoint3D getPositionAtFirstPoint() const {return positionAtFirstPoint_;}
00052 HepVector3D getMomentumAtLastPoint() const {return momentumAtLastPoint_;}
00053 HepPoint3D getPositionAtLastPoint() const {return positionAtLastPoint_;}
00054 std::string getAlgoName() const {return std::string(algoName_);}
00055 char *getCharAlgoName() const {return algoName_;}
00056 TRefArray *getTrackHits() const { return trackHits_; }
00057
00058
00059 void setCharge(Short_t charge) {charge_=charge;}
00060 void setChi2OverDof(Float_t chi2OverDof) {chi2OverDof_=chi2OverDof;}
00061 void setNumberOfHits(Short_t numberOfHits) {numberOfHits_=numberOfHits;}
00062 void setNumberOfLostHits(Short_t numberOfLostHits) {numberOfLostHits_=numberOfLostHits;}
00063 void setLongImpactParameter(Float_t longImpactParameter) {longImpactParameter_=longImpactParameter;}
00064 void setTransImpactParameter(Float_t transImpactParameter) {transImpactParameter_=transImpactParameter;}
00065 void setImpactParameter(Float_t impactParameter) {impactParameter_=impactParameter;}
00066 void setMomentumAtVertex(HepVector3D momentumAtVertex) {momentumAtVertex_=momentumAtVertex;}
00067 void setPositionAtFirstPoint(HepPoint3D positionAtFirstPoint) {positionAtFirstPoint_=positionAtFirstPoint;}
00068 void setMomentumAtFirstPoint(HepVector3D momentumAtFirstPoint) {momentumAtFirstPoint_=momentumAtFirstPoint;}
00069 void setPositionAtLastPoint(HepPoint3D positionAtLastPoint) {positionAtLastPoint_=positionAtLastPoint;}
00070 void setMomentumAtLastPoint(HepVector3D momentumAtLastPoint) {momentumAtLastPoint_=momentumAtLastPoint;}
00071 void setAlgoName(std::string algoName) {sprintf(algoName_,algoName.c_str());}
00072
00073
00074 XANAVertex *getVertex() const {return (XANAVertex *)(vertex_.GetObject());}
00075 void setVertex(XANAVertex *vtx);
00076 void addHit(XANATrackHit *thit);
00077 void clear();
00078
00080 Bool_t IsUsed() const {return locked_;}
00081
00082 Bool_t operator==(const XANATrack&) const;
00083 Bool_t operator<(const XANATrack&) const;
00084
00085
00086 XANATrack(const XANATrack &right);
00087
00088 protected:
00089
00091 Short_t charge_;
00093 Float_t chi2OverDof_;
00098 Short_t numberOfHits_;
00100 Short_t numberOfLostHits_;
00102 Float_t impactParameter_;
00104 Float_t longImpactParameter_;
00106 Float_t transImpactParameter_;
00108 HepVector3D momentumAtVertex_;
00110 HepPoint3D positionAtFirstPoint_;
00112 HepVector3D momentumAtFirstPoint_;
00114 HepPoint3D positionAtLastPoint_;
00116 HepVector3D momentumAtLastPoint_;
00118 TRef vertex_;
00120 Int_t algoLen_;
00121 char *algoName_;
00123
00124
00125 private:
00126
00127 static const Int_t strLen_;
00128 Bool_t locked_;
00129 void lock() {locked_ = true;}
00130 void unlock() { locked_ = false;}
00131
00132 ClassDef(XANATrack,1)
00133
00134 };
00135
00136 #endif
00137
00138
00139
00140
00141
00142
00143