CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTracker/TkDetLayers/interface/TIBLayer.h

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   // GeometricSearchDet interface
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   // DetLayer interface
00034   virtual SubDetector subDetector() const {return GeomDetEnumerators::TIB;}
00035 
00036 
00037  private:
00038   // private methods for the implementation of groupedCompatibleDets()
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