00001 #ifndef BasicVertexState_H 00002 #define BasicVertexState_H 00003 00004 #include "TrackingTools/TrajectoryState/interface/ProxyBase.h" 00005 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00006 #include "TrackingTools/TrajectoryState/interface/CopyUsingClone.h" 00007 00008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00009 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalError.h" 00010 #include "DataFormats/GeometryCommonDetAlgo/interface/GlobalWeight.h" 00011 //#include "CommonReco/CommonVertex/interface/RefCountedVertexSeed.h" 00012 00013 #include <vector> 00014 00015 class VertexState; 00016 00020 class BasicVertexState : public ReferenceCounted { 00021 00022 public: 00023 00024 typedef ProxyBase< BasicVertexState, CopyUsingClone<BasicVertexState> > Proxy; 00025 typedef ReferenceCountingPointer<BasicVertexState> RCPtr; 00026 00027 private: 00028 // 00029 // HELP ! new G++ refuses friend class Proxy; 00030 // 00031 friend class ProxyBase< BasicVertexState, CopyUsingClone<BasicVertexState> >; 00032 friend class ReferenceCountingPointer<BasicVertexState> ; 00033 00034 public: 00035 00036 virtual ~BasicVertexState() {} 00037 00038 virtual BasicVertexState* clone() const = 0; 00039 00042 virtual GlobalPoint position() const = 0; 00043 virtual GlobalError error() const = 0; 00044 virtual GlobalWeight weight() const = 0; 00045 virtual AlgebraicVector3 weightTimesPosition() const = 0; 00046 virtual double weightInMixture() const = 0; 00047 virtual std::vector<VertexState> components() const; 00048 virtual bool isValid() const = 0; 00049 00050 00053 // virtual RefCountedVertexSeed seedWithoutTracks() const = 0; 00054 }; 00055 00056 #endif