CMS 3D CMS Logo

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

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