CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/TrackingTools/TransientTrack/interface/BasicTransientTrack.h

Go to the documentation of this file.
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