CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/RecoTracker/TkDetLayers/src/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 "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   // GeometricSearchDet interface
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   // DetLayer interface
00035   virtual SubDetector subDetector() const {return GeomDetEnumerators::TIB;}
00036 
00037 
00038  private:
00039   // private methods for the implementation of groupedCompatibleDets()
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