Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:47

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 /** A concrete implementation for Phase 2 Endcap/Forward layer 
0011  *  built out of Phase2EndcapSingleRings
0012  *  this class is used for the inner tracker
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   // Default implementations would not properly manage memory
0022   Phase2EndcapSubDisk(const Phase2EndcapSubDisk&) = delete;
0023   Phase2EndcapSubDisk& operator=(const Phase2EndcapSubDisk&) = delete;
0024 
0025   // GeometricSearchDet interface
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   // DetLayer interface
0037   SubDetector subDetector() const override { return GeomDetEnumerators::subDetGeom[GeomDetEnumerators::P2PXEC]; }
0038 
0039 private:
0040   // private methods for the implementation of groupedCompatibleDets()
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