Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:27:46

0001 #ifndef TkDetLayers_TBPLayer_h
0002 #define TkDetLayers_TBPLayer_h
0003 
0004 #include "TBLayer.h"
0005 #include "PixelRod.h"
0006 #include "TOBRod.h"
0007 #include "Phase2OTBarrelRod.h"
0008 
0009 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
0010 
0011 /** A concrete implementation for TOB layer or PixelBarrel layer or a Phase 2 OT Barrel layer as long as it is similar to the previous ones
0012  *  
0013  */
0014 #pragma GCC visibility push(hidden)
0015 class TBPLayer : public TBLayer {
0016 public:
0017   typedef PeriodicBinFinderInPhi<float> BinFinderType;
0018 
0019   TBPLayer(std::vector<const PixelRod*>& inner, std::vector<const PixelRod*>& outer) __attribute__((cold))
0020   : TBLayer(inner, outer, GeomDetEnumerators::PixelBarrel) {
0021     construct();
0022   }
0023 
0024   TBPLayer(std::vector<const TOBRod*>& inner, std::vector<const TOBRod*>& outer) __attribute__((cold))
0025   : TBLayer(inner, outer, GeomDetEnumerators::TOB) {
0026     construct();
0027   }
0028 
0029   TBPLayer(std::vector<const Phase2OTBarrelRod*>& inner, std::vector<const Phase2OTBarrelRod*>& outer)
0030       __attribute__((cold))
0031       : TBLayer(inner, outer, GeomDetEnumerators::P2OTB) {
0032     construct();
0033   }
0034 
0035   ~TBPLayer() override __attribute__((cold));
0036 
0037   BoundCylinder* cylinder(const std::vector<const GeometricSearchDet*>& rods) const __attribute__((cold));
0038 
0039 private:
0040   // private methods for the implementation of groupedCompatibleDets()
0041 
0042   void construct() __attribute__((cold));
0043 
0044   std::tuple<bool, int, int> computeIndexes(GlobalPoint gInnerPoint, GlobalPoint gOuterPoint) const override
0045       __attribute__((hot));
0046 
0047   float computeWindowSize(const GeomDet* det,
0048                           const TrajectoryStateOnSurface& tsos,
0049                           const MeasurementEstimator& est) const override __attribute__((hot));
0050 
0051   static float calculatePhiWindow(float Xmax, const GeomDet& det, const TrajectoryStateOnSurface& state)
0052       __attribute__((hot));
0053 
0054   void searchNeighbors(const TrajectoryStateOnSurface& tsos,
0055                        const Propagator& prop,
0056                        const MeasurementEstimator& est,
0057                        const SubLayerCrossing& crossing,
0058                        float window,
0059                        std::vector<DetGroup>& result,
0060                        bool checkClosest) const override __attribute__((hot));
0061 
0062   BinFinderType theInnerBinFinder;
0063   BinFinderType theOuterBinFinder;
0064 };
0065 
0066 #pragma GCC visibility pop
0067 #endif