CMS 3D CMS Logo

Phase2EndcapLayerDoubleDisk.h
Go to the documentation of this file.
1 #ifndef TkDetLayers_Phase2EndcapLayerDoubleDisk_h
2 #define TkDetLayers_Phase2EndcapLayerDoubleDisk_h
3 
5 #include "Phase2EndcapSubDisk.h"
6 #include <array>
7 #include <atomic>
8 
13 #pragma GCC visibility push(hidden)
15 public:
16  Phase2EndcapLayerDoubleDisk(std::vector<const Phase2EndcapSubDisk*>& subDisks);
18 
19  // Default implementations would not properly manage memory
22 
23  // GeometricSearchDet interface
24 
25  const std::vector<const GeomDet*>& basicComponents() const override { return theBasicComps; }
26 
27  const std::vector<const GeometricSearchDet*>& components() const override;
28 
30  const Propagator& prop,
31  const MeasurementEstimator& est,
32  std::vector<DetGroup>& result) const override;
33 
34  // DetLayer interface
36 
37 private:
38  // private methods for the implementation of groupedCompatibleDets()
39  BoundDisk* computeDisk(const std::vector<const Phase2EndcapSubDisk*>& subDisks) const;
40 
41  std::array<int, 2> subDiskIndicesByCrossingProximity(const TrajectoryStateOnSurface& startingState,
42  const Propagator& prop) const;
43 
44  std::array<int, 2> findTwoClosest(std::vector<GlobalPoint>) const;
45 
46  void fillSubDiskPars(int i);
47 
48 private:
49  std::vector<GeomDet const*> theBasicComps;
50  mutable std::atomic<std::vector<const GeometricSearchDet*>*> theComponents;
51  std::vector<const Phase2EndcapSubDisk*> theComps;
52  struct SubDiskPar {
53  float theSubDiskZ;
54  };
55  std::vector<SubDiskPar> subDiskPars;
57 };
58 
59 #pragma GCC visibility pop
60 #endif
std::vector< const Phase2EndcapSubDisk * > theComps
BoundDisk * computeDisk(const std::vector< const Phase2EndcapSubDisk *> &subDisks) const
Phase2EndcapLayerDoubleDisk(std::vector< const Phase2EndcapSubDisk *> &subDisks)
std::array< int, 2 > findTwoClosest(std::vector< GlobalPoint >) const
constexpr SubDetector subDetGeom[21]
const std::vector< const GeomDet * > & basicComponents() const override
std::vector< SubDiskPar > subDiskPars
std::vector< GeomDet const * > theBasicComps
std::array< int, 2 > subDiskIndicesByCrossingProximity(const TrajectoryStateOnSurface &startingState, const Propagator &prop) const
std::atomic< std::vector< const GeometricSearchDet * > * > theComponents
SubDetector subDetector() const override
const std::vector< const GeometricSearchDet * > & components() const override
void groupedCompatibleDetsV(const TrajectoryStateOnSurface &tsos, const Propagator &prop, const MeasurementEstimator &est, std::vector< DetGroup > &result) const override
Phase2EndcapLayerDoubleDisk & operator=(const Phase2EndcapLayerDoubleDisk &)=delete