CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_2_9_HLT1_bphpatch4/src/TrackingTools/TransientTrack/interface/TransientTrackFromFTS.h

Go to the documentation of this file.
00001 #ifndef TrackReco_TransientTrackFromFTS_h
00002 #define TrackReco_TransientTrackFromFTS_h
00003 
00009 #include "TrackingTools/TransientTrack/interface/BasicTransientTrack.h"
00010 #include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" 
00011 #include "DataFormats/TrackReco/interface/Track.h"
00012 #include "TrackingTools/PatternTools/interface/TSCPBuilderNoMaterial.h"
00013 
00014 namespace reco {
00015 
00016   class TransientTrackFromFTS : public BasicTransientTrack {
00017   public:
00018 
00019     TransientTrackFromFTS(); 
00020 
00021     TransientTrackFromFTS(const FreeTrajectoryState & fts);
00022     TransientTrackFromFTS(const FreeTrajectoryState & fts,
00023         const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
00024 
00025     TransientTrackFromFTS( const TransientTrackFromFTS & tt );
00026     
00027     TransientTrackFromFTS& operator=(const TransientTrackFromFTS & tt);
00028 
00029     void setES(const edm::EventSetup& );
00030 
00031     void setTrackingGeometry(const edm::ESHandle<GlobalTrackingGeometry>& );
00032 
00033     void setBeamSpot(const reco::BeamSpot& beamSpot);
00034 
00035     FreeTrajectoryState initialFreeState() const {return initialFTS;}
00036 
00037     TrajectoryStateOnSurface outermostMeasurementState() const;
00038 
00039     TrajectoryStateOnSurface innermostMeasurementState() const;
00040 
00041     TrajectoryStateClosestToPoint 
00042       trajectoryStateClosestToPoint( const GlobalPoint & point ) const
00043       {return builder(initialFTS, point);}
00044 
00048     TrajectoryStateOnSurface stateOnSurface(const GlobalPoint & point) const;
00049 
00050     TrajectoryStateClosestToPoint impactPointTSCP() const;
00051 
00052     TrajectoryStateOnSurface impactPointState() const;
00053 
00054     bool impactPointStateAvailable() const {return  initialTSOSAvailable;}
00055 
00056     TrackCharge charge() const {return initialFTS.charge();}
00057 
00058     const MagneticField* field() const {return theField;}
00059 
00060     const Track & track() const;
00061 
00062     TrackBaseRef trackBaseRef() const;
00063 
00064     TrajectoryStateClosestToBeamLine stateAtBeamLine() const;
00065 
00066   private:
00067 
00068     void calculateTSOSAtVertex() const;
00069 
00070     FreeTrajectoryState initialFTS;
00071     const MagneticField* theField;
00072     mutable bool initialTSOSAvailable, initialTSCPAvailable, trackAvailable, blStateAvailable;
00073     mutable TrajectoryStateOnSurface initialTSOS;
00074     mutable TrajectoryStateClosestToPoint initialTSCP;
00075     mutable Track theTrack;
00076     TSCPBuilderNoMaterial builder;
00077     edm::ESHandle<GlobalTrackingGeometry> theTrackingGeometry;
00078     reco::BeamSpot theBeamSpot;
00079     mutable TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine;
00080 
00081   };
00082 
00083 }
00084 
00085 #endif