00001 #ifndef TrackReco_BasicTransientTrack_h 00002 #define TrackReco_BasicTransientTrack_h 00003 00008 #include "TrackingTools/TrajectoryState/interface/ProxyBase.h" 00009 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00010 #include "TrackingTools/TrajectoryState/interface/CopyUsingClone.h" 00011 00012 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00013 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" 00014 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateClosestToPoint.h" 00015 #include "FWCore/Framework/interface/EventSetup.h" 00016 #include "FWCore/Framework/interface/ESHandle.h" 00017 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h" 00018 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00019 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateClosestToBeamLine.h" 00020 00021 namespace reco { 00022 00023 class BasicTransientTrack : public ReferenceCountedInEvent { 00024 public: 00025 00026 typedef BasicTransientTrack BTT; 00027 typedef ProxyBase< BTT, CopyUsingClone<BTT> > Proxy; 00028 typedef ReferenceCountingPointer<BasicTransientTrack> RCPtr; 00029 00030 private: 00031 friend class ProxyBase< BTT, CopyUsingClone<BTT> >; 00032 friend class ReferenceCountingPointer<BasicTransientTrack>; 00033 00034 public: 00035 00036 virtual ~BasicTransientTrack() {} 00037 00038 virtual void setES(const edm::EventSetup& es) = 0; 00039 00040 virtual void setTrackingGeometry(const edm::ESHandle<GlobalTrackingGeometry>& tg) = 0; 00041 00042 virtual void setBeamSpot(const reco::BeamSpot& beamSpot) = 0; 00043 00044 virtual FreeTrajectoryState initialFreeState() const = 0; 00045 00046 virtual TrajectoryStateOnSurface outermostMeasurementState() const = 0; 00047 00048 virtual TrajectoryStateOnSurface innermostMeasurementState() const = 0; 00049 00050 virtual TrajectoryStateClosestToPoint 00051 trajectoryStateClosestToPoint( const GlobalPoint & point ) const = 0; 00052 00053 virtual TrajectoryStateOnSurface stateOnSurface(const GlobalPoint & point) const = 0; 00054 00055 virtual TrajectoryStateClosestToPoint impactPointTSCP() const = 0; 00056 00057 virtual TrajectoryStateOnSurface impactPointState() const = 0; 00058 virtual bool impactPointStateAvailable() const = 0; 00059 00060 virtual TrackBaseRef trackBaseRef() const = 0; 00061 00062 virtual TrackCharge charge() const = 0; 00063 00064 // virtual bool operator== (const TransientTrack & a) const = 0; 00065 // virtual bool operator< (const TransientTrack & a) const = 0; 00066 00067 virtual const MagneticField* field() const = 0; 00068 00069 virtual const Track & track() const = 0; 00070 00071 virtual TrajectoryStateClosestToBeamLine stateAtBeamLine() const = 0; 00072 00073 }; 00074 00075 } 00076 00077 #endif