File indexing completed on 2024-04-06 12:28:49
0001 #ifndef TkDetLayers_TIDRing_h
0002 #define TkDetLayers_TIDRing_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 TIDRing final : public GeometricSearchDet {
0014 public:
0015 TIDRing(std::vector<const GeomDet*>& innerDets, std::vector<const GeomDet*>& outerDets);
0016 ~TIDRing() 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 __attribute__((cold));
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 __attribute__((hot));
0033
0034
0035 virtual const BoundDisk& specificSurface() const { return *theDisk; }
0036
0037 private:
0038
0039
0040 SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& tsos, PropagationDirection propDir) const
0041 __attribute__((hot));
0042
0043 bool addClosest(const TrajectoryStateOnSurface& tsos,
0044 const Propagator& prop,
0045 const MeasurementEstimator& est,
0046 const SubLayerCrossing& crossing,
0047 std::vector<DetGroup>& result) const __attribute__((hot));
0048
0049 void searchNeighbors(const TrajectoryStateOnSurface& tsos,
0050 const Propagator& prop,
0051 const MeasurementEstimator& est,
0052 const SubLayerCrossing& crossing,
0053 float window,
0054 std::vector<DetGroup>& result,
0055 bool checkClosest) const __attribute__((hot));
0056
0057 const std::vector<const GeomDet*>& subLayer(int ind) const { return (ind == 0 ? theFrontDets : theBackDets); }
0058
0059 private:
0060 std::vector<const GeomDet*> theDets;
0061 std::vector<const GeomDet*> theFrontDets;
0062 std::vector<const GeomDet*> theBackDets;
0063
0064 ReferenceCountingPointer<BoundDisk> theDisk;
0065 ReferenceCountingPointer<BoundDisk> theFrontDisk;
0066 ReferenceCountingPointer<BoundDisk> theBackDisk;
0067
0068 typedef PeriodicBinFinderInPhi<float> BinFinderType;
0069
0070 BinFinderType theFrontBinFinder;
0071 BinFinderType theBackBinFinder;
0072 };
0073
0074 #pragma GCC visibility pop
0075 #endif