00001 #ifndef BasicSingleVertexState_H 00002 #define BasicSingleVertexState_H 00003 00004 #include "RecoVertex/VertexPrimitives/interface/BasicVertexState.h" 00005 00006 //#include "CommonReco/CommonVertex/interface/RefCountedVertexSeed.h" 00007 00008 00013 class BasicSingleVertexState : public BasicVertexState { 00014 00015 public: 00016 00019 BasicSingleVertexState(); 00020 BasicSingleVertexState(const GlobalPoint & pos, const GlobalError & posErr, 00021 const double & weightInMix = 1.0); 00022 BasicSingleVertexState(const GlobalPoint & pos, const GlobalWeight & posWeight, 00023 const double & weightInMix = 1.0); 00024 BasicSingleVertexState(const AlgebraicVector3 & weightTimesPosition, 00025 const GlobalWeight & posWeight, 00026 const double & weightInMix = 1.0); 00027 00030 virtual BasicSingleVertexState* clone() const 00031 { 00032 return new BasicSingleVertexState(*this); 00033 } 00034 00035 GlobalPoint position() const; 00036 GlobalError error() const; 00037 GlobalWeight weight() const; 00038 AlgebraicVector3 weightTimesPosition() const; 00039 double weightInMixture() const; 00040 00043 // RefCountedVertexSeed seedWithoutTracks() const; 00044 00045 private: 00046 00047 void computePosition() const; 00048 void computeError() const; 00049 void computeWeight() const; 00050 void computeWeightTimesPos() const; 00051 00052 mutable GlobalPoint thePos; 00053 mutable bool thePosAvailable; 00054 mutable GlobalError theErr; 00055 mutable bool theErrAvailable; 00056 mutable GlobalWeight theWeight; 00057 mutable bool theWeightAvailable; 00058 mutable AlgebraicVector3 theWeightTimesPos; 00059 mutable bool theWeightTimesPosAvailable; 00060 00061 bool isValid; 00062 double theWeightInMix; 00063 }; 00064 00065 #endif