CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/TrackingTools/TransientTrack/interface/GsfTransientTrack.h

Go to the documentation of this file.
00001 #ifndef TrackReco_GsfTransientTrack_h
00002 #define TrackReco_GsfTransientTrack_h
00003 
00009 #include "TrackingTools/TransientTrack/interface/BasicTransientTrack.h"
00010 #include "DataFormats/TrackReco/interface/Track.h" 
00011 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 
00012 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
00013 #include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h"
00014 #include "TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h"
00015 #include "TrackingTools/PatternTools/interface/TransverseImpactPointExtrapolator.h"
00016 
00017 namespace reco {
00018 
00019   class GsfTransientTrack : public GsfTrack, public BasicTransientTrack {
00020   public:
00021 
00022     // constructor from persistent track
00023     GsfTransientTrack(); 
00024     GsfTransientTrack( const GsfTrack & tk , const MagneticField* field); 
00025     GsfTransientTrack( const GsfTrackRef & tk , const MagneticField* field); 
00026 
00027     GsfTransientTrack( const GsfTrackRef & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
00028 
00029     GsfTransientTrack( const GsfTrack & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
00030 
00031     GsfTransientTrack( const GsfTransientTrack & tt );
00032     
00033     GsfTransientTrack& operator=(const GsfTransientTrack & tt);
00034 
00035     void setES(const edm::EventSetup& );
00036 
00037     void setTrackingGeometry(const edm::ESHandle<GlobalTrackingGeometry>& );
00038 
00039     void setBeamSpot(const reco::BeamSpot& beamSpot);
00040 
00041     FreeTrajectoryState initialFreeState() const {return initialFTS;}
00042 
00043     TrajectoryStateOnSurface outermostMeasurementState() const;
00044 
00045     TrajectoryStateOnSurface innermostMeasurementState() const;
00046 
00052     TrajectoryStateClosestToPoint 
00053       trajectoryStateClosestToPoint( const GlobalPoint & point ) const;
00054 
00059     TrajectoryStateOnSurface stateOnSurface(const GlobalPoint & point) const;
00060 
00065     TrajectoryStateClosestToPoint impactPointTSCP() const;
00066 
00071     TrajectoryStateOnSurface impactPointState() const;
00072 
00073     bool impactPointStateAvailable() const {return  initialTSOSAvailable;}
00074 
00078     GsfTrackRef persistentTrackRef() const { return tkr_; }
00079 
00080     TrackBaseRef trackBaseRef() const {return TrackBaseRef(tkr_);}
00081 
00082     TrackCharge charge() const {return GsfTrack::charge();}
00083 
00084     const MagneticField* field() const {return theField;}
00085 
00086     const Track & track() const {return *this;}
00087 
00088     TrajectoryStateClosestToBeamLine stateAtBeamLine() const;
00089 
00090   private:
00091 
00092     void init();
00093     void calculateTSOSAtVertex() const;
00094 
00095     GsfTrackRef tkr_;
00096     const MagneticField* theField;
00097 
00098     FreeTrajectoryState initialFTS;
00099     mutable bool initialTSOSAvailable, initialTSCPAvailable, blStateAvailable;
00100     mutable TrajectoryStateOnSurface initialTSOS;
00101     mutable TrajectoryStateClosestToPoint initialTSCP;
00102     TSCPBuilderNoMaterial builder;
00103     edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry;
00104     reco::BeamSpot theBeamSpot;
00105     mutable TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine;
00106 
00107     TransverseImpactPointExtrapolator theTIPExtrapolator;
00108   
00109 
00110   };
00111 
00112 }
00113 
00114 #endif