00001 #ifndef XANAVertex_h 00002 #define XANAVertex_h 00003 00010 class XANATrack; 00011 class XANATrackAtVertex; 00012 00013 #include <CLHEP/Geometry/Point3D.h> 00014 #include <TObject.h> 00015 #include <TRefArray.h> 00016 #include <Rtypes.h> 00017 00018 class XANAVertex : public TObject { 00019 00020 public: 00021 00022 XANAVertex(); 00024 XANAVertex(HepPoint3D position, Float_t chi2, Float_t ndof, std::string algoName); 00025 00026 virtual ~XANAVertex(); 00027 00028 // data access methods 00029 HepPoint3D getPosition() const {return position_;} 00030 Float_t getChi2() const {return chi2_;} 00031 Float_t getNormalizedChi2() const {return chi2_/ndof_;} 00032 Float_t getNdof() const {return ndof_;} 00033 HepVector3D getVectorialSum() const {return vectorialSum_;} 00034 std::string getAlgoName() const {return std::string(algoName_);} 00035 char *getCharAlgoName() const {return algoName_;} 00036 00037 // set methods 00038 void setPosition(HepPoint3D position) {position_=position;} 00039 void setChi2(Float_t chi2) {chi2_=chi2;} 00040 void setNdof(Float_t ndof) {ndof_=ndof;} 00041 void setAlgoName(std::string algoName) {sprintf(algoName_,algoName.c_str());} 00042 00043 // relationships 00044 TRefArray * getTracks() const {return tracks_;} 00045 00046 TRefArray * getTracksAtVertex() const {return tracksAtVertex_;} 00047 00048 void addTrack(XANATrack *track); 00049 00050 void addTrackAtVertex(XANATrackAtVertex *track); 00051 00052 void clear(); 00053 00055 Bool_t IsUsed() const {return locked_;} 00056 00057 Bool_t operator==(const XANAVertex&) const; 00058 00059 // copy constructor 00060 XANAVertex(const XANAVertex &right); 00061 // operator= 00062 const XANAVertex &operator=(const XANAVertex &right); 00063 00064 protected: 00065 00067 HepPoint3D position_; 00069 HepVector3D vectorialSum_; 00071 Float_t chi2_; 00073 Float_t ndof_; 00074 // relation to tracks 00075 Short_t numberOfTracks_; 00076 00077 TRefArray *tracks_;// 00078 00079 Short_t numberOfTracksAtVertex_; 00080 00081 TRefArray *tracksAtVertex_;// 00083 00084 Int_t algoLen_; 00085 char *algoName_; //[algoLen_] 00086 00087 private: 00088 00089 static const Int_t strLen_; 00090 Bool_t locked_; 00091 void lock() {locked_ = true;} 00092 void unlock() { locked_ = false;} 00093 00094 ClassDef(XANAVertex,1) 00095 00096 }; 00097 00098 #endif 00099 00100 00101 00102 00103 00104 00105