Go to the documentation of this file.00001 #ifndef TkDetLayers_TOBRod_h
00002 #define TkDetLayers_TOBRod_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00006 #include "TrackingTools/DetLayers/interface/DetRod.h"
00007 #include "TrackingTools/DetLayers/interface/PeriodicBinFinderInZ.h"
00008 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00009
00010
00015 class TOBRod : public DetRod, public GeometricSearchDetWithGroups{
00016 public:
00017 typedef PeriodicBinFinderInZ<float> BinFinderType;
00018
00019 TOBRod(std::vector<const GeomDet*>& innerDets,
00020 std::vector<const GeomDet*>& outerDets);
00021 ~TOBRod();
00022
00023
00024
00025 virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00026
00027 virtual const std::vector<const GeometricSearchDet*>& components() const;
00028
00029
00030 virtual std::pair<bool, TrajectoryStateOnSurface>
00031 compatible( const TrajectoryStateOnSurface& ts, const Propagator&,
00032 const MeasurementEstimator&) const;
00033
00034 void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00035 const Propagator& prop,
00036 const MeasurementEstimator& est,
00037 std::vector<DetGroup> & result) const;
00038
00039
00040 private:
00041
00042
00043 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00044 PropagationDirection propDir) const;
00045
00046 bool addClosest( const TrajectoryStateOnSurface& tsos,
00047 const Propagator& prop,
00048 const MeasurementEstimator& est,
00049 const SubLayerCrossing& crossing,
00050 std::vector<DetGroup>& result) const;
00051
00052 float computeWindowSize( const GeomDet* det,
00053 const TrajectoryStateOnSurface& tsos,
00054 const MeasurementEstimator& est) const;
00055
00056
00057 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00058 const Propagator& prop,
00059 const MeasurementEstimator& est,
00060 const SubLayerCrossing& crossing,
00061 float window,
00062 std::vector<DetGroup>& result,
00063 bool checkClosest) const;
00064
00065 bool overlap( const GlobalPoint& gpos, const GeomDet& rod, float phiWin) const;
00066
00067 const std::vector<const GeomDet*>& subRod( int ind) const {
00068 return (ind==0 ? theInnerDets : theOuterDets);
00069 }
00070
00071
00072 private:
00073 std::vector<const GeomDet*> theDets;
00074 std::vector<const GeomDet*> theInnerDets;
00075 std::vector<const GeomDet*> theOuterDets;
00076
00077 ReferenceCountingPointer<BoundPlane> theInnerPlane;
00078 ReferenceCountingPointer<BoundPlane> theOuterPlane;
00079
00080 BinFinderType theInnerBinFinder;
00081 BinFinderType theOuterBinFinder;
00082
00083 };
00084
00085
00086 #endif