Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef TkDetLayers_CompositeTECWedge_h
0002 #define TkDetLayers_CompositeTECWedge_h
0003 
0004 #include "TECWedge.h"
0005 #include "SubLayerCrossings.h"
0006 
0007 /** A concrete implementation for TEC layer 
0008  *  built out of TECPetals
0009  */
0010 
0011 #pragma GCC visibility push(hidden)
0012 class CompositeTECWedge final : public TECWedge {
0013 public:
0014   CompositeTECWedge(std::vector<const GeomDet*>& innerDets, std::vector<const GeomDet*>& outerDets)
0015       __attribute__((cold));
0016 
0017   ~CompositeTECWedge() override __attribute__((cold));
0018 
0019   // GeometricSearchDet interface
0020   const std::vector<const GeomDet*>& basicComponents() const override { return theDets; }
0021 
0022   const std::vector<const GeometricSearchDet*>& components() const override __attribute__((cold));
0023 
0024   std::pair<bool, TrajectoryStateOnSurface> compatible(const TrajectoryStateOnSurface& ts,
0025                                                        const Propagator&,
0026                                                        const MeasurementEstimator&) const override
0027       __attribute__((cold));
0028 
0029   void groupedCompatibleDetsV(const TrajectoryStateOnSurface& startingState,
0030                               const Propagator& prop,
0031                               const MeasurementEstimator& est,
0032                               std::vector<DetGroup>& result) const override __attribute__((hot));
0033 
0034 private:
0035   // private methods for the implementation of groupedCompatibleDets()
0036   SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& tsos, 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   int findClosestDet(const GlobalPoint& startPos, int sectorId) const;
0054 
0055   const std::vector<const GeomDet*>& subWedge(int ind) const { return (ind == 0 ? theFrontDets : theBackDets); }
0056 
0057 private:
0058   std::vector<const GeomDet*> theFrontDets;
0059   std::vector<const GeomDet*> theBackDets;
0060   std::vector<const GeomDet*> theDets;
0061 
0062   ReferenceCountingPointer<BoundDiskSector> theFrontSector;
0063   ReferenceCountingPointer<BoundDiskSector> theBackSector;
0064 };
0065 
0066 #pragma GCC visibility pop
0067 #endif