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