![]() |
![]() |
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 "DataFormats/CLHEP/interface/AlgebraicObjects.h" 00012 //#include "CommonReco/CommonVertex/interface/RefCountedVertexSeed.h" 00013 00014 #include <vector> 00015 00016 class VertexState; 00017 00021 class BasicVertexState : public ReferenceCounted { 00022 00023 public: 00024 00025 typedef ProxyBase< BasicVertexState, CopyUsingClone<BasicVertexState> > Proxy; 00026 typedef ReferenceCountingPointer<BasicVertexState> RCPtr; 00027 00028 private: 00029 // 00030 // HELP ! new G++ refuses friend class Proxy; 00031 // 00032 friend class ProxyBase< BasicVertexState, CopyUsingClone<BasicVertexState> >; 00033 friend class ReferenceCountingPointer<BasicVertexState> ; 00034 00035 public: 00036 00037 virtual ~BasicVertexState() {} 00038 00039 virtual BasicVertexState* clone() const = 0; 00040 00043 virtual GlobalPoint position() const = 0; 00044 virtual GlobalError error() const = 0; 00045 virtual GlobalWeight weight() const = 0; 00046 virtual AlgebraicVector3 weightTimesPosition() const = 0; 00047 virtual double weightInMixture() const = 0; 00048 virtual std::vector<VertexState> components() const; 00049 virtual bool isValid() const = 0; 00050 00051 00054 // virtual RefCountedVertexSeed seedWithoutTracks() const = 0; 00055 }; 00056 00057 #endif