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