00001 #ifndef Event_EvtRecPrimaryVertex_H 00002 #define Event_EvtRecPrimaryVertex_H 00003 00004 #include "GaudiKernel/DataObject.h" 00005 #include "GaudiKernel/ObjectVector.h" 00006 #include "GaudiKernel/ContainedObject.h" 00007 #include "GaudiKernel/SmartRef.h" 00008 #include "EventModel/EventModel.h" 00009 #include "CLHEP/Matrix/Vector.h" 00010 #include "CLHEP/Matrix/SymMatrix.h" 00011 00012 using CLHEP::HepVector; 00013 using CLHEP::HepSymMatrix; 00014 using namespace EventModel; 00015 extern const CLID & CLID_EvtRecPrimaryVertex; 00016 00017 // 00018 // For Primary Vertex information 00019 // only 1 primary vertex for every event 00020 // Author : Kanglin He, Min Xu Date : 2008.11.13 00021 // 00022 class EvtRecPrimaryVertex : public DataObject { 00023 public: 00024 virtual const CLID& clID() const {return EvtRecPrimaryVertex::classID();} 00025 static const CLID& classID() {return CLID_EvtRecPrimaryVertex;} 00026 00027 EvtRecPrimaryVertex(); 00028 ~EvtRecPrimaryVertex() {;} 00029 00030 EvtRecPrimaryVertex(const EvtRecPrimaryVertex&); 00031 EvtRecPrimaryVertex & operator = (const EvtRecPrimaryVertex &); 00032 00033 bool isValid() const {return m_isValid;} 00034 int nTracks() const {return m_nTracks;} 00035 const std::vector<int>& trackIdList() const {return m_trackIdList;} 00036 double chi2() const {return m_chi2;} 00037 int ndof() const {return m_ndof;} 00038 int fitMethod() const {return m_fitMethod;} 00039 const HepVector& vertex() const {return m_vtx;} 00040 const HepSymMatrix& errorVertex() const {return m_Evtx;} 00041 00042 void setIsValid(bool isValid) {m_isValid = isValid;} 00043 void setNTracks(int nTracks) {m_nTracks = nTracks;} 00044 void setTrackIdList(const std::vector<int>& trackIdList) {m_trackIdList = trackIdList;} 00045 void setChi2(double chi2) {m_chi2 = chi2;} 00046 void setNdof(int ndof) {m_ndof = ndof;} 00047 void setFitMethod(int fitMethod) {m_fitMethod = fitMethod;} 00048 void setVertex(const HepVector& vtx) {m_vtx = vtx;} 00049 void setErrorVertex(const HepSymMatrix& Evtx) {m_Evtx = Evtx;} 00050 00051 private: 00052 bool m_isValid; 00053 int m_nTracks; //number of tracks contributing to vertex fitting 00054 std::vector<int> m_trackIdList; // id list of tracks contributing to vertex fitting 00055 double m_chi2; // chi square of vertex fitting 00056 int m_ndof; // degree of freedom 00057 // for a fixed position => 2n; for unknown position => 2n-3; 00058 int m_fitMethod; // vertex fitting algorithm 00059 // 0 => global method; 1 => kalman filter method; 00060 HepVector m_vtx; // primary vertex position : (Vx, Vy, Vz) 00061 HepSymMatrix m_Evtx; // error matrix of primary vertex 00062 }; 00063 00064 //typedef ObjectVector<EvtRecPrimaryVertex> EvtRecPrimaryVertexCol; 00065 #endif 00066