00001 #ifndef OuterDetCompatibility_H 00002 #define OuterDetCompatibility_H 00003 00007 #include "RecoTracker/TkTrackingRegions/interface/OuterHitPhiPrediction.h" 00008 #include "RecoTracker/TkTrackingRegions/interface/HitRZConstraint.h" 00009 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h" 00010 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h" 00011 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h" 00012 00013 class OuterDetCompatibility { 00014 public: 00015 00016 OuterDetCompatibility(const BarrelDetLayer* layer, 00017 const OuterHitPhiPrediction::Range & phiRange, 00018 const HitRZConstraint::Range & rRange, 00019 const HitRZConstraint::Range & zRange) 00020 : theLayer(layer), barrel(true), 00021 hitDetPhiRange(phiRange), hitDetRRange(rRange), hitDetZRange(zRange) { } 00022 00023 OuterDetCompatibility(const ForwardDetLayer* layer, 00024 const OuterHitPhiPrediction::Range & phiRange, 00025 const HitRZConstraint::Range & rRange, 00026 const HitRZConstraint::Range & zRange) 00027 : theLayer(layer), barrel(false), 00028 hitDetPhiRange(phiRange), hitDetRRange(rRange), hitDetZRange(zRange) { } 00029 00030 bool operator() (const BoundPlane& plane) const; 00031 00032 MeasurementEstimator::Local2DVector maximalLocalDisplacement( 00033 const TrajectoryStateOnSurface& ts, const BoundPlane& plane) const; 00034 MeasurementEstimator::Local2DVector maximalLocalDisplacement( 00035 const GlobalPoint & ts, const BoundPlane& plane) const; 00036 00037 GlobalPoint center() const; 00038 00039 const OuterHitPhiPrediction::Range & phiRange()const {return hitDetPhiRange;} 00040 const HitRZConstraint::Range &rRange() const { return hitDetRRange; } 00041 const HitRZConstraint::Range &zRange() const { return hitDetZRange; } 00042 00043 private: 00044 bool checkPhi(const OuterHitPhiPrediction::Range & detPhiRange) const; 00045 bool checkR(const HitRZConstraint::Range & detRRange) const; 00046 bool checkZ(const HitRZConstraint::Range & detZRange) const; 00047 00048 double loc_dist( 00049 double radius, double ts_phi, double range_phi, double cosGamma) const; 00050 00051 private: 00052 const DetLayer* theLayer; 00053 bool barrel; 00054 OuterHitPhiPrediction::Range hitDetPhiRange; 00055 HitRZConstraint::Range hitDetRRange, hitDetZRange; 00056 }; 00057 00058 #endif