CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/TrackingTools/GsfTools/interface/MultiTrajectoryStateTransform.h

Go to the documentation of this file.
00001 #ifndef MultiTrajectoryStateTransform_H
00002 #define MultiTrajectoryStateTransform_H
00003 
00007 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h"
00008 #include "DataFormats/GsfTrackReco/interface/GsfTrackExtra.h"
00009 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00010 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00011 
00012 class TrajectoryStateOnSurface;
00013 class TrackingGeometry;
00014 class Surface;
00015 class MagneticField;
00016 class TransverseImpactPointExtrapolator;
00017 
00018 class MultiTrajectoryStateTransform {
00019 private:
00020   typedef reco::GsfTrackExtra::LocalParameterVector ParameterVector;
00021   typedef reco::GsfTrackExtra::LocalCovarianceMatrix CovarianceMatrix;
00022   enum { dimension = reco::GsfTrackExtra::dimension };
00023 
00024 public:
00025 
00027   MultiTrajectoryStateTransform () :
00028   geometry_(0), field_(0), extrapolator_(0) {}
00030   MultiTrajectoryStateTransform (const TrackingGeometry* geom, const MagneticField* field) :
00031   geometry_(geom), field_(field), extrapolator_(0) {}
00033   ~MultiTrajectoryStateTransform ();
00034 
00036   TrajectoryStateOnSurface innerStateOnSurface( const reco::GsfTrack& tk) const;
00038   TrajectoryStateOnSurface outerStateOnSurface( const reco::GsfTrack& tk) const;
00039 
00042   bool innerMomentumFromMode (const reco::GsfTrack& tk, GlobalVector& momentum) const;
00044   bool outerMomentumFromMode (const reco::GsfTrack& tk,GlobalVector& momentum) const;
00045 
00047   TrajectoryStateOnSurface extrapolatedState (const TrajectoryStateOnSurface tsos,
00048                                               const GlobalPoint& point) const;
00049 
00052   TrajectoryStateOnSurface innerStateOnSurface( const reco::GsfTrack& tk, 
00053                                                 const TrackingGeometry& geom,
00054                                                 const MagneticField* field) const;
00057   TrajectoryStateOnSurface outerStateOnSurface( const reco::GsfTrack& tk, 
00058                                                 const TrackingGeometry& geom,
00059                                                 const MagneticField* field) const;
00060 
00061 private:
00063   TrajectoryStateOnSurface stateOnSurface (const std::vector<double>& weights,
00064                                            const std::vector<ParameterVector>& parameters,
00065                                            const std::vector<CovarianceMatrix>& covariances,
00066                                            const double& pzSign,
00067                                            const Surface& surface,
00068                                            const MagneticField* field) const;
00070   bool checkExtrapolator () const;
00072   bool checkGeometry () const;
00073 
00074 private:
00075   const TrackingGeometry* geometry_;
00076   const MagneticField* field_;
00077   mutable TransverseImpactPointExtrapolator* extrapolator_;
00078 };
00079 
00080 #endif