00001 #ifndef BasicMultiVertexState_H 00002 #define BasicMultiVertexState_H 00003 00004 #include "RecoVertex/VertexPrimitives/interface/BasicVertexState.h" 00005 #include "RecoVertex/VertexPrimitives/interface/VertexState.h" 00006 #include "RecoVertex/GaussianSumVertexFit/interface/MultiVertexStateCombiner.h" 00007 00012 class BasicMultiVertexState : public BasicVertexState { 00013 00014 public: 00015 00018 BasicMultiVertexState() : valid(false){} 00019 00020 BasicMultiVertexState(const std::vector<VertexState>& vsComp); 00021 00024 virtual BasicMultiVertexState* clone() const 00025 { 00026 return new BasicMultiVertexState(*this); 00027 } 00028 00032 GlobalPoint position() const; 00033 00038 GlobalError error() const; 00039 00044 GlobalWeight weight() const; 00045 00049 AlgebraicVector3 weightTimesPosition() const; 00050 00055 double weightInMixture() const; 00056 00060 virtual std::vector<VertexState> components() const { 00061 return theComponents; 00062 } 00063 00067 bool isValid() const {return valid;} 00068 00069 private: 00070 00071 void checkCombinedState() const; 00072 00073 bool valid; 00074 mutable std::vector<VertexState> theComponents; 00075 mutable VertexState theCombinedState; 00076 mutable bool theCombinedStateUp2Date; 00077 00078 MultiVertexStateCombiner theCombiner; 00079 00080 }; 00081 00082 #endif