File indexing completed on 2024-04-06 12:28:48
0001 #ifndef TkDetLayers_TECLayer_h
0002 #define TkDetLayers_TECLayer_h
0003
0004 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
0005 #include "TECPetal.h"
0006 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
0007 #include "SubLayerCrossings.h"
0008 #include "TrackingTools/DetLayers/interface/MeasurementEstimator.h"
0009
0010
0011
0012
0013
0014 #pragma GCC visibility push(hidden)
0015 class TECLayer : public ForwardDetLayer {
0016 public:
0017 TECLayer(std::vector<const TECPetal*>& innerPetals, std::vector<const TECPetal*>& outerPetals) __attribute__((cold));
0018 ~TECLayer() override __attribute__((cold));
0019
0020
0021
0022 const std::vector<const GeomDet*>& basicComponents() const override { return theBasicComps; }
0023
0024 const std::vector<const GeometricSearchDet*>& components() const override __attribute__((cold)) { return theComps; }
0025
0026 void groupedCompatibleDetsV(const TrajectoryStateOnSurface& tsos,
0027 const Propagator& prop,
0028 const MeasurementEstimator& est,
0029 std::vector<DetGroup>& result) const override __attribute__((hot));
0030
0031
0032 SubDetector subDetector() const override { return GeomDetEnumerators::subDetGeom[GeomDetEnumerators::TEC]; }
0033
0034 private:
0035
0036 SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& startingState, PropagationDirection propDir) const
0037 __attribute__((hot));
0038
0039 bool addClosest(const TrajectoryStateOnSurface& tsos,
0040 const Propagator& prop,
0041 const MeasurementEstimator& est,
0042 const SubLayerCrossing& crossing,
0043 std::vector<DetGroup>& result) const __attribute__((hot));
0044
0045 void searchNeighbors(const TrajectoryStateOnSurface& tsos,
0046 const Propagator& prop,
0047 const MeasurementEstimator& est,
0048 const SubLayerCrossing& crossing,
0049 float window,
0050 std::vector<DetGroup>& result,
0051 bool checkClosest) const __attribute__((hot));
0052
0053 const std::vector<const TECPetal*>& subLayer(int ind) const { return (ind == 0 ? theFrontComps : theBackComps); }
0054
0055 protected:
0056 std::vector<const GeometricSearchDet*> theComps;
0057 std::vector<const GeomDet*> theBasicComps;
0058
0059 std::vector<const TECPetal*> theFrontComps;
0060 std::vector<const TECPetal*> theBackComps;
0061
0062 ReferenceCountingPointer<BoundDisk> theFrontDisk;
0063 ReferenceCountingPointer<BoundDisk> theBackDisk;
0064
0065 typedef PeriodicBinFinderInPhi<float> BinFinderPhi;
0066
0067 BinFinderPhi theFrontBinFinder;
0068 BinFinderPhi theBackBinFinder;
0069 };
0070
0071 #pragma GCC visibility pop
0072 #endif