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