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() {} 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 00057 // /** conversion to VertexSeed 00058 // */ 00059 // RefCountedVertexSeed seedWithoutTracks() const; 00060 00064 virtual std::vector<VertexState> components() const { 00065 return theComponents; 00066 } 00067 00068 private: 00069 00070 void checkCombinedState() const; 00071 00072 mutable std::vector<VertexState> theComponents; 00073 mutable VertexState theCombinedState; 00074 mutable bool theCombinedStateUp2Date; 00075 00076 MultiVertexStateCombiner theCombiner; 00077 00078 }; 00079 00080 #endif