File indexing completed on 2023-03-17 11:22:50
0001 #ifndef TkDetLayers_Phase2EndcapSubDisk_h
0002 #define TkDetLayers_Phase2EndcapSubDisk_h
0003
0004 #include "TrackingTools/DetLayers/interface/RingedForwardLayer.h"
0005 #include "Phase2EndcapSingleRing.h"
0006 #include "TkDetUtil.h"
0007 #include <array>
0008 #include <atomic>
0009
0010
0011
0012
0013
0014
0015 #pragma GCC visibility push(hidden)
0016 class Phase2EndcapSubDisk final : public RingedForwardLayer {
0017 public:
0018 Phase2EndcapSubDisk(std::vector<const Phase2EndcapSingleRing*>& rings);
0019 ~Phase2EndcapSubDisk() override;
0020
0021
0022 Phase2EndcapSubDisk(const Phase2EndcapSubDisk&) = delete;
0023 Phase2EndcapSubDisk& operator=(const Phase2EndcapSubDisk&) = delete;
0024
0025
0026
0027 const std::vector<const GeomDet*>& basicComponents() const override { return theBasicComps; }
0028
0029 const std::vector<const GeometricSearchDet*>& components() const override;
0030
0031 void groupedCompatibleDetsV(const TrajectoryStateOnSurface& tsos,
0032 const Propagator& prop,
0033 const MeasurementEstimator& est,
0034 std::vector<DetGroup>& result) const override;
0035
0036
0037 SubDetector subDetector() const override { return GeomDetEnumerators::subDetGeom[GeomDetEnumerators::P2PXEC]; }
0038
0039 private:
0040
0041 BoundDisk* computeDisk(const std::vector<const Phase2EndcapSingleRing*>& rings) const;
0042
0043 bool overlapInR(const TrajectoryStateOnSurface& tsos,
0044 int i,
0045 double ymax,
0046 std::vector<tkDetUtil::RingPar> ringParams) const;
0047
0048 float computeWindowSize(const GeomDet* det,
0049 const TrajectoryStateOnSurface& tsos,
0050 const MeasurementEstimator& est) const;
0051
0052 void fillRingPars(int i);
0053
0054 std::vector<GeomDet const*> theBasicComps;
0055 mutable std::atomic<std::vector<const GeometricSearchDet*>*> theComponents;
0056 std::vector<const Phase2EndcapSingleRing*> theComps;
0057 std::vector<tkDetUtil::RingPar> ringPars;
0058 int theRingSize;
0059 };
0060
0061 #pragma GCC visibility pop
0062 #endif