File indexing completed on 2023-03-17 11:23:05
0001 #ifndef OuterEstimator_H
0002 #define OuterEstimator_H
0003
0004
0005
0006
0007
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