Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:58

0001 #ifndef OuterEstimator_H
0002 #define OuterEstimator_H
0003 
0004 /** It is a MeasurementEstimator used by TrackingRegions for
0005     finding (OUTER) compatible hits and det units by testing the
0006     hit compatibility by OuterHitCompatibility and 
0007     det compatibility by OuterDetCompatibility */
0008 
0009 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
0010 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
0011 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0012 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0013 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
0014 
0015 #include "OuterDetCompatibility.h"
0016 #include "OuterHitCompatibility.h"
0017 
0018 #include "FWCore/Utilities/interface/Visibility.h"
0019 
0020 template <typename Algo>
0021 class dso_internal OuterEstimator final : public MeasurementEstimator {
0022 public:
0023   using OuterHitCompat = OuterHitCompatibility<Algo>;
0024 
0025   OuterEstimator(const OuterDetCompatibility& detCompatibility, const OuterHitCompat& hitCompatibility)
0026       : theDetCompatibility(detCompatibility), theHitCompatibility(hitCompatibility) {}
0027 
0028   ~OuterEstimator() override {}
0029 
0030   std::pair<bool, double> estimate(const TrajectoryStateOnSurface& ts, const TrackingRecHit& hit) const override {
0031     return theHitCompatibility(hit) ? std::make_pair(true, 1.) : std::make_pair(false, 0.);
0032   }
0033 
0034   bool estimate(const TrajectoryStateOnSurface& ts, const BoundPlane& plane) const override {
0035     return theDetCompatibility(plane);
0036   }
0037 
0038   GlobalPoint center() { return theDetCompatibility.center(); }
0039 
0040   OuterEstimator* clone() const override { return new OuterEstimator(*this); }
0041 
0042   MeasurementEstimator::Local2DVector maximalLocalDisplacement(const TrajectoryStateOnSurface& ts,
0043                                                                const BoundPlane& plane) const override {
0044     return theDetCompatibility.maximalLocalDisplacement(ts.globalPosition(), plane);
0045   }
0046 
0047   const OuterDetCompatibility& detCompatibility() const { return theDetCompatibility; }
0048   const OuterHitCompat& hitCompatibility() const { return theHitCompatibility; }
0049 
0050 private:
0051   OuterDetCompatibility theDetCompatibility;
0052   OuterHitCompat theHitCompatibility;
0053 };
0054 #endif