File indexing completed on 2024-09-07 04:38:13
0001 #ifndef TrackingTools_DetLayers_RBorderFinder_H
0002 #define TrackingTools_DetLayers_RBorderFinder_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <DataFormats/GeometrySurface/interface/BoundingBox.h>
0012 #include <DataFormats/GeometrySurface/interface/GeometricSorting.h>
0013
0014 #include <Utilities/General/interface/precomputed_value_sort.h>
0015 #include <Geometry/CommonDetUnit/interface/GeomDet.h>
0016 #include <TrackingTools/DetLayers/interface/ForwardDetRing.h>
0017 #include <TrackingTools/DetLayers/interface/simple_stat.h>
0018 #include <FWCore/Utilities/interface/Exception.h>
0019
0020 #include <vector>
0021
0022 class RBorderFinder {
0023 public:
0024 typedef ForwardDetRing Det;
0025 typedef geomsort::ExtractR<Det, float> DetR;
0026
0027 RBorderFinder(const std::vector<const Det*>& utheDets);
0028
0029 virtual ~RBorderFinder() {}
0030
0031
0032 inline bool isRPeriodic() const { return isRPeriodic_; }
0033
0034
0035 inline bool isROverlapping() const { return isROverlapping_; }
0036
0037
0038
0039 inline std::vector<double> RBorders() const { return theRBorders; }
0040
0041
0042 inline std::vector<double> RBins() const { return theRBins; }
0043
0044
0045
0046
0047 private:
0048 int theNbins;
0049 bool isRPeriodic_;
0050 bool isROverlapping_;
0051 std::vector<double> theRBorders;
0052 std::vector<double> theRBins;
0053
0054 inline int binIndex(int i) const { return std::min(std::max(i, 0), theNbins - 1); }
0055 };
0056 #endif