CMS 3D CMS Logo

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

Go to the documentation of this file.
00001 #ifndef TrackReco_TransientTrack_h
00002 #define TrackReco_TransientTrack_h
00003 
00004 
00012 #include "TrackingTools/TransientTrack/interface/BasicTransientTrack.h"
00013 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 
00014 
00015 #include "DataFormats/TrackReco/interface/Track.h"
00016 #include "DataFormats/TrackReco/interface/TrackFwd.h" 
00017 #include "DataFormats/Common/interface/RefToBase.h" 
00018 
00019 namespace reco {
00020 
00021   class TransientTrack : private  BasicTransientTrack::Proxy {
00022 
00023     typedef BasicTransientTrack::Proxy             Base;
00024 
00025   public:
00026 
00027     // constructor from persistent track
00028     TransientTrack(); 
00029     TransientTrack( const Track & tk , const MagneticField* field); 
00030     TransientTrack( const TrackRef & tk , const MagneticField* field); 
00031 
00032     TransientTrack( const TrackRef & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
00033 
00034     TransientTrack( const Track & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
00035 
00036     TransientTrack( BasicTransientTrack * btt ) : Base(btt) {}
00037 
00038     void setES(const edm::EventSetup& es) {sharedData().setES(es);}
00039 
00040     void setTrackingGeometry(const edm::ESHandle<GlobalTrackingGeometry>& tg)
00041         {sharedData().setTrackingGeometry(tg);}
00042 
00043     void setBeamSpot(const reco::BeamSpot& beamSpot) 
00044         {sharedData().setBeamSpot(beamSpot);}
00045 
00046     FreeTrajectoryState initialFreeState() const {return data().initialFreeState();}
00047 
00048     TrajectoryStateOnSurface outermostMeasurementState() const
00049         {return data().outermostMeasurementState();}
00050 
00051     TrajectoryStateOnSurface innermostMeasurementState() const
00052         {return data().innermostMeasurementState();}
00053 
00054     TrajectoryStateClosestToPoint 
00055       trajectoryStateClosestToPoint( const GlobalPoint & point ) const
00056         {return data().trajectoryStateClosestToPoint(point);}
00057 
00058     TrajectoryStateOnSurface stateOnSurface(const GlobalPoint & point) const
00059         {return data().stateOnSurface(point);}
00060 
00061     TrajectoryStateClosestToPoint impactPointTSCP() const
00062         {return data().impactPointTSCP();}
00063 
00064     TrajectoryStateOnSurface impactPointState() const
00065         {return data().impactPointState();}
00066 
00067     bool impactPointStateAvailable() const
00068         {return data().impactPointStateAvailable();}
00069 
00070     TrackCharge charge() const {return data().charge();}
00071 
00072     bool operator== (const TransientTrack & other) const
00073         {return &(data()) == &(other.data());}
00074     // {return (a.persistentTrackRef()==tkr_);}
00075 
00076     bool operator< (const TransientTrack & other) const 
00077         {return &(data()) < &(other.data());}
00078     // {return (initialFTS.momentum().z()<a.initialFreeState().momentum().z());}
00079 
00080     const MagneticField* field() const {return data().field();}
00081 
00082     const BasicTransientTrack* basicTransientTrack() const {return &(data());}
00083 
00084     const Track & track() const {return data().track();}
00085 
00086     TrackBaseRef trackBaseRef() const {return data().trackBaseRef();}
00087 
00088     TrajectoryStateClosestToBeamLine stateAtBeamLine() const
00089         {return data().stateAtBeamLine();}
00090 
00091 // Methods forwarded to original track.
00092 
00094     trackingRecHit_iterator recHitsBegin() const { return track().recHitsBegin(); }
00096     trackingRecHit_iterator recHitsEnd() const { return track().recHitsEnd(); }
00098     TrackingRecHitRef recHit( size_t i ) const { return track().recHit( i ); }
00100     size_t recHitsSize() const { return track().recHitsSize(); }
00101     //  hit pattern
00102     const HitPattern & hitPattern() const { return track().hitPattern(); }
00104     unsigned short numberOfValidHits() const { return track().hitPattern().numberOfValidHits(); }
00106     unsigned short numberOfLostHits() const { return track().hitPattern().numberOfLostHits(); }
00108     double chi2() const { return track().chi2(); }
00110     double ndof() const { return track().ndof(); }
00112     double normalizedChi2() const { return track().chi2() / track().ndof(); }
00113 
00115     bool isValid() const {return Base::isValid() ;}
00116 
00117   };
00118 
00119 }
00120 
00121 #endif