00001 #ifndef MultiTrajectoryStateTransform_H 00002 #define MultiTrajectoryStateTransform_H 00003 00007 #include "DataFormats/GsfTrackReco/interface/GsfTrack.h" 00008 #include "DataFormats/GsfTrackReco/interface/GsfTrackExtra.h" 00009 00010 class TrajectoryStateOnSurface; 00011 class TrackingGeometry; 00012 class Surface; 00013 class MagneticField; 00014 00015 class MultiTrajectoryStateTransform { 00016 private: 00017 typedef reco::GsfTrackExtra::LocalParameterVector ParameterVector; 00018 typedef reco::GsfTrackExtra::LocalCovarianceMatrix CovarianceMatrix; 00019 enum { dimension = reco::GsfTrackExtra::dimension }; 00020 00021 public: 00022 00025 TrajectoryStateOnSurface innerStateOnSurface( const reco::GsfTrack& tk, 00026 const TrackingGeometry& geom, 00027 const MagneticField* field) const; 00028 TrajectoryStateOnSurface outerStateOnSurface( const reco::GsfTrack& tk, 00029 const TrackingGeometry& geom, 00030 const MagneticField* field) const; 00031 00032 private: 00033 TrajectoryStateOnSurface stateOnSurface (const std::vector<double>& weights, 00034 const std::vector<ParameterVector>& parameters, 00035 const std::vector<CovarianceMatrix>& covariances, 00036 const double& pzSign, 00037 const Surface& surface, 00038 const MagneticField* field) const; 00039 }; 00040 00041 #endif