File indexing completed on 2023-03-17 11:22:52
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
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
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