00001 #ifndef TMB_TREE_TMBVERTEX_HPP__
00002 #define TMB_TREE_TMBVERTEX_HPP__
00003
00005
00006
00007
00009
00010 #include "tmb_tree/TMBTrack.hpp"
00011 #include "TRef.h"
00012 #include "TRefArray.h"
00013
00014 class TMBTrack;
00015
00020 class TMBVertex : public TMBLorentzVector {
00021
00022 private:
00023
00024 Int_t _ntrack;
00025 Float_t _VertexX;
00026 Float_t _VertexY;
00027 Float_t _VertexZ;
00028 Float_t _CovXX;
00029 Float_t _CovYY;
00030 Float_t _CovZZ;
00031 Float_t _CovXY;
00032 Float_t _CovXZ;
00033 Float_t _CovYZ;
00034 Int_t _charge;
00035 Float_t _chisq;
00036 TRefArray _tracks;
00037
00038 public:
00039 TMBVertex();
00040 TMBVertex(Float_t vertexx, Float_t vertexy, Float_t vertexz,
00041 Float_t covxx, Float_t covyy, Float_t covzz,
00042 Float_t covxy, Float_t covxz, Float_t covyz,
00043 Float_t chisq, const TRefArray* tracks);
00044 virtual ~TMBVertex() {}
00045
00046 Float_t vx() const {return _VertexX;}
00047 Float_t vy() const {return _VertexY;}
00048 Float_t vz() const {return _VertexZ;}
00049 Float_t sigxx() const {return _CovXX;}
00050 Float_t sigyy() const {return _CovYY;}
00051 Float_t sigzz() const {return _CovZZ;}
00052 Float_t sigxy() const {return _CovXY;}
00053 Float_t sigxz() const {return _CovXZ;}
00054 Float_t sigyz() const {return _CovYZ;}
00055 Float_t sigx() const {return _CovXX >0. ? sqrt(_CovXX) : 0.;}
00056 Float_t sigy() const {return _CovYY >0. ? sqrt(_CovYY) : 0.;}
00057 Float_t sigz() const {return _CovZZ >0. ? sqrt(_CovZZ) : 0.;}
00058 Float_t chisq() const {return _chisq;}
00059 Int_t charge() const {return _charge;}
00060 Int_t ntrack() const {return _ntrack;}
00061 const TRefArray& GetTracks() const {return _tracks;}
00062 const TMBTrack& GetTrack(Int_t itrack) const {
00063 return *(const TMBTrack*)_tracks.At(itrack);}
00064
00065 ClassDef(TMBVertex, 1);
00066 };
00067
00068 #endif // TMB_TREE_TMBVERTEX_HPP__