Go to the documentation of this file.00001 #ifndef TkDetLayers_TIBLayer_h
00002 #define TkDetLayers_TIBLayer_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/BarrelDetLayer.h"
00006 #include "RecoTracker/TkDetLayers/interface/TIBRing.h"
00007 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00008 #include "TrackingTools/DetLayers/interface/GeneralBinFinderInZforGeometricSearchDet.h"
00009
00014 class TIBLayer : public BarrelDetLayer, public GeometricSearchDetWithGroups {
00015 public:
00016
00017 TIBLayer(std::vector<const TIBRing*>& innerRings,
00018 std::vector<const TIBRing*>& outerRings);
00019
00020 ~TIBLayer();
00021
00022
00023
00024 virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00025
00026 virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00027
00028 void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00029 const Propagator& prop,
00030 const MeasurementEstimator& est,
00031 std::vector<DetGroup> & result) const;
00032
00033
00034 virtual SubDetector subDetector() const {return GeomDetEnumerators::TIB;}
00035
00036
00037 private:
00038
00039
00040 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& startingState,
00041 PropagationDirection propDir) const;
00042
00043 bool addClosest( const TrajectoryStateOnSurface& tsos,
00044 const Propagator& prop,
00045 const MeasurementEstimator& est,
00046 const SubLayerCrossing& crossing,
00047 std::vector<DetGroup>& result) const;
00048
00049 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00050 const Propagator& prop,
00051 const MeasurementEstimator& est,
00052 const SubLayerCrossing& crossing,
00053 float window,
00054 std::vector<DetGroup>& result,
00055 bool checkClosest) const;
00056
00057 float computeWindowSize( const GeomDet* det,
00058 const TrajectoryStateOnSurface& tsos,
00059 const MeasurementEstimator& est) const;
00060
00061 bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& ring, float window) const;
00062
00063 const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00064 return (ind==0 ? theInnerComps : theOuterComps);
00065 }
00066
00067
00068 private:
00069 std::vector<const GeometricSearchDet*> theComps;
00070 std::vector<const GeometricSearchDet*> theInnerComps;
00071 std::vector<const GeometricSearchDet*> theOuterComps;
00072 std::vector<const GeomDet*> theBasicComps;
00073
00074 ReferenceCountingPointer<BoundCylinder> theInnerCylinder;
00075 ReferenceCountingPointer<BoundCylinder> theOuterCylinder;
00076
00077 GeneralBinFinderInZforGeometricSearchDet<float> theInnerBinFinder;
00078 GeneralBinFinderInZforGeometricSearchDet<float> theOuterBinFinder;
00079
00080 BoundCylinder* cylinder( const std::vector<const GeometricSearchDet*>& rings);
00081
00082
00083 };
00084
00085
00086 #endif