Go to the documentation of this file.00001 #ifndef TkDetLayers_CompositeTECWedge_h
00002 #define TkDetLayers_CompositeTECWedge_h
00003
00004
00005 #include "TECWedge.h"
00006 #include "SubLayerCrossings.h"
00007
00008
00013 #pragma GCC visibility push(hidden)
00014 class CompositeTECWedge GCC11_FINAL : public TECWedge{
00015 public:
00016 CompositeTECWedge(std::vector<const GeomDet*>& innerDets,
00017 std::vector<const GeomDet*>& outerDets);
00018
00019 ~CompositeTECWedge();
00020
00021
00022 virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00023
00024 virtual const std::vector<const GeometricSearchDet*>& components() const;
00025
00026 virtual std::pair<bool, TrajectoryStateOnSurface>
00027 compatible( const TrajectoryStateOnSurface& ts, const Propagator&,
00028 const MeasurementEstimator&) const;
00029
00030 virtual void
00031 groupedCompatibleDetsV( const TrajectoryStateOnSurface& startingState,
00032 const Propagator& prop,
00033 const MeasurementEstimator& est,
00034 std::vector<DetGroup> & result) const;
00035
00036 private:
00037
00038 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00039 PropagationDirection propDir) const;
00040
00041 bool addClosest( const TrajectoryStateOnSurface& tsos,
00042 const Propagator& prop,
00043 const MeasurementEstimator& est,
00044 const SubLayerCrossing& crossing,
00045 std::vector<DetGroup>& result) const;
00046
00047 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00048 const Propagator& prop,
00049 const MeasurementEstimator& est,
00050 const SubLayerCrossing& crossing,
00051 float window,
00052 std::vector<DetGroup>& result,
00053 bool checkClosest) const;
00054
00055 int findClosestDet( const GlobalPoint& startPos,int sectorId) const;
00056
00057 const std::vector<const GeomDet*>& subWedge( int ind) const {
00058 return (ind==0 ? theFrontDets : theBackDets);
00059 }
00060
00061
00062 private:
00063 std::vector<const GeomDet*> theFrontDets;
00064 std::vector<const GeomDet*> theBackDets;
00065 std::vector<const GeomDet*> theDets;
00066
00067 ReferenceCountingPointer<BoundDiskSector> theFrontSector;
00068 ReferenceCountingPointer<BoundDiskSector> theBackSector;
00069
00070 };
00071
00072
00073 #pragma GCC visibility pop
00074 #endif