CMS 3D CMS Logo

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