File indexing completed on 2023-03-17 11:22:50
0001 #ifndef TkDetLayers_Phase2EndcapSingleRing_h
0002 #define TkDetLayers_Phase2EndcapSingleRing_h
0003
0004 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
0005 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
0006 #include "SubLayerCrossings.h"
0007 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
0008
0009
0010
0011
0012 #pragma GCC visibility push(hidden)
0013 class Phase2EndcapSingleRing final : public GeometricSearchDet {
0014 public:
0015 Phase2EndcapSingleRing(std::vector<const GeomDet*>& allDets);
0016 ~Phase2EndcapSingleRing() override;
0017
0018
0019 const BoundSurface& surface() const override { return *theDisk; }
0020
0021 const std::vector<const GeomDet*>& basicComponents() const override { return theDets; }
0022
0023 const std::vector<const GeometricSearchDet*>& components() const override;
0024
0025 std::pair<bool, TrajectoryStateOnSurface> compatible(const TrajectoryStateOnSurface&,
0026 const Propagator&,
0027 const MeasurementEstimator&) const override;
0028
0029 void groupedCompatibleDetsV(const TrajectoryStateOnSurface& tsos,
0030 const Propagator& prop,
0031 const MeasurementEstimator& est,
0032 std::vector<DetGroup>& result) const override;
0033
0034
0035 virtual const BoundDisk& specificSurface() const { return *theDisk; }
0036
0037 private:
0038
0039
0040 SubLayerCrossing computeCrossing(const TrajectoryStateOnSurface& tsos, PropagationDirection propDir) const;
0041
0042 bool addClosest(const TrajectoryStateOnSurface& tsos,
0043 const Propagator& prop,
0044 const MeasurementEstimator& est,
0045 const SubLayerCrossing& crossing,
0046 std::vector<DetGroup>& result) const;
0047
0048 void searchNeighbors(const TrajectoryStateOnSurface& tsos,
0049 const Propagator& prop,
0050 const MeasurementEstimator& est,
0051 const SubLayerCrossing& crossing,
0052 float window,
0053 std::vector<DetGroup>& result,
0054 bool checkClosest) const;
0055
0056 const std::vector<const GeomDet*>& subLayer(int ind) const { return theDets; }
0057
0058 private:
0059 std::vector<const GeomDet*> theDets;
0060
0061 ReferenceCountingPointer<BoundDisk> theDisk;
0062
0063 typedef PeriodicBinFinderInPhi<float> BinFinderType;
0064
0065 BinFinderType theBinFinder;
0066 };
0067
0068 #pragma GCC visibility pop
0069 #endif