CMS 3D CMS Logo

Phase2EndcapLayer.h
Go to the documentation of this file.
1 #ifndef TkDetLayers_Phase2EndcapLayer_h
2 #define TkDetLayers_Phase2EndcapLayer_h
3 
5 #include "Phase2EndcapRing.h"
6 #include "TkDetUtil.h"
7 #include <array>
8 #include <atomic>
9 
15 #pragma GCC visibility push(hidden)
16 class Phase2EndcapLayer final : public RingedForwardLayer {
17 public:
18  Phase2EndcapLayer(std::vector<const Phase2EndcapRing*>& rings, const bool isOT) __attribute__((cold));
19  ~Phase2EndcapLayer() override __attribute__((cold));
20 
21  // Default implementations would not properly manage memory
22  Phase2EndcapLayer(const Phase2EndcapLayer&) = delete;
24 
25  // GeometricSearchDet interface
26 
27  const std::vector<const GeomDet*>& basicComponents() const override { return theBasicComps; }
28 
29  const std::vector<const GeometricSearchDet*>& components() const override __attribute__((cold));
30 
32  const Propagator& prop,
34  std::vector<DetGroup>& result) const override __attribute__((hot));
35 
36  // DetLayer interface
37  SubDetector subDetector() const override {
38  if (isOuterTracker)
40  else
42  }
43 
44 private:
45  // private methods for the implementation of groupedCompatibleDets()
46  BoundDisk* computeDisk(const std::vector<const Phase2EndcapRing*>& rings) const __attribute__((cold));
47 
48  bool overlapInR(const TrajectoryStateOnSurface& tsos,
49  int i,
50  double ymax,
51  std::vector<tkDetUtil::RingPar> ringParams) const __attribute__((hot));
52 
53  float computeWindowSize(const GeomDet* det,
54  const TrajectoryStateOnSurface& tsos,
55  const MeasurementEstimator& est) const __attribute__((hot));
56 
57  void fillRingPars(int i) __attribute__((cold));
58 
59 private:
60  std::vector<GeomDet const*> theBasicComps;
61  const bool isOuterTracker;
62  mutable std::atomic<std::vector<const GeometricSearchDet*>*> theComponents;
63  std::vector<const Phase2EndcapRing*> theComps;
64  std::vector<tkDetUtil::RingPar> ringPars;
66 };
67 
68 #pragma GCC visibility pop
69 #endif
std::vector< const Phase2EndcapRing * > theComps
void fillRingPars(int i) __attribute__((cold))
Phase2EndcapLayer(std::vector< const Phase2EndcapRing *> &rings, const bool isOT) __attribute__((cold))
bool overlapInR(const TrajectoryStateOnSurface &tsos, int i, double ymax, std::vector< tkDetUtil::RingPar > ringParams) const __attribute__((hot))
constexpr SubDetector subDetGeom[21]
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override __attribute__((hot))
float computeWindowSize(const GeomDet *det, const TrajectoryStateOnSurface &tsos, const MeasurementEstimator &est) const __attribute__((hot))
std::atomic< std::vector< const GeometricSearchDet * > * > theComponents
~Phase2EndcapLayer() override __attribute__((cold))
Phase2EndcapLayer & operator=(const Phase2EndcapLayer &)=delete
SubDetector subDetector() const override
const bool isOuterTracker
float __attribute__((vector_size(8))) cms_float32x2_t
Definition: ExtVec.h:8
std::vector< GeomDet const * > theBasicComps
BoundDisk * computeDisk(const std::vector< const Phase2EndcapRing *> &rings) const __attribute__((cold))
const std::vector< const GeomDet * > & basicComponents() const override
const std::vector< const GeometricSearchDet * > & components() const override __attribute__((cold))
std::vector< tkDetUtil::RingPar > ringPars