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