00001 #ifndef ForwardMeasurementEstimator_H
00002 #define ForwardMeasurementEstimator_H
00003
00004
00005
00006
00007
00008
00016
00017
00018
00019
00020
00021
00022 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h"
00023 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00024 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
00025 #include <utility>
00026
00027 class ForwardMeasurementEstimator : public MeasurementEstimator {
00028 public:
00029 ForwardMeasurementEstimator() {};
00030 ForwardMeasurementEstimator(float phiMin, float phiMax, float rMin, float rMax ) :
00031 thePhiMin(phiMin), thePhiMax( phiMax), theRMin(rMin), theRMax(rMax) {}
00032
00033 void setPhiRange(float dummyphiMin , float dummyphiMax)
00034 {
00035 thePhiMin = dummyphiMin ;
00036 thePhiMax = dummyphiMax ;
00037 }
00038 void setRRange(float rmin , float rmax)
00039 {
00040 theRMin = rmin;
00041 theRMax = rmax;
00042 }
00043 void setRRangeI(float rmin , float rmax)
00044 {
00045 theRMinI = rmin;
00046 theRMaxI = rmax;
00047 }
00048
00049
00050 virtual std::pair<bool,double> estimate( const TrajectoryStateOnSurface& ts,
00051 const TransientTrackingRecHit& hit) const;
00052
00053 virtual std::pair<bool,double> estimate( const TrajectoryStateOnSurface& ts,
00054 GlobalPoint &gp) const;
00055
00056 virtual bool estimate( const TrajectoryStateOnSurface& ts,
00057 const BoundPlane& plane) const;
00058
00059 virtual ForwardMeasurementEstimator* clone() const
00060 {
00061 return new ForwardMeasurementEstimator(*this);
00062 }
00063
00064 MeasurementEstimator::Local2DVector
00065 maximalLocalDisplacement( const TrajectoryStateOnSurface& ts,
00066 const BoundPlane& plane) const;
00067
00068 private:
00069
00070 float thePhiMin;
00071 float thePhiMax;
00072 float theRMin;
00073 float theRMax;
00074 float theRMinI, theRMaxI;
00075
00076 };
00077
00078 #endif // ForwardMeasurementEstimator_H