CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoTracker/TkDetLayers/interface/TIDRing.h

Go to the documentation of this file.
00001 #ifndef TkDetLayers_TIDRing_h
00002 #define TkDetLayers_TIDRing_h
00003 
00004 
00005 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00006 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00007 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00008 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
00009 
00013 class TIDRing : public GeometricSearchDetWithGroups{
00014  public:
00015   TIDRing(std::vector<const GeomDet*>& innerDets,
00016           std::vector<const GeomDet*>& outerDets);
00017   ~TIDRing();
00018   
00019   // GeometricSearchDet interface
00020   virtual const BoundSurface& surface() const {return *theDisk;}
00021   
00022   virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00023   
00024   virtual const std::vector<const GeometricSearchDet*>& components() const;
00025 
00026   virtual std::pair<bool, TrajectoryStateOnSurface>
00027   compatible( const TrajectoryStateOnSurface&, const Propagator&, 
00028                        const MeasurementEstimator&) const;
00029 
00030   void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00031                                const Propagator& prop,
00032                                const MeasurementEstimator& est,
00033                                std::vector<DetGroup> & result) const;
00034   
00035  
00036   //Extension of interface
00037   virtual const BoundDisk& specificSurface() const {return *theDisk;}
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   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00053                         const Propagator& prop,
00054                         const MeasurementEstimator& est,
00055                         const SubLayerCrossing& crossing,
00056                         float window, 
00057                         std::vector<DetGroup>& result,
00058                         bool checkClosest) const;
00059 
00060   const std::vector<const GeomDet*>& subLayer( int ind) const {
00061     return (ind==0 ? theFrontDets : theBackDets);
00062   }
00063 
00064 
00065  private:
00066   std::vector<const GeomDet*> theDets;
00067   std::vector<const GeomDet*> theFrontDets;
00068   std::vector<const GeomDet*> theBackDets;
00069 
00070   ReferenceCountingPointer<BoundDisk> theDisk;
00071   ReferenceCountingPointer<BoundDisk> theFrontDisk;
00072   ReferenceCountingPointer<BoundDisk> theBackDisk;
00073 
00074   typedef PeriodicBinFinderInPhi<double>   BinFinderType;
00075 
00076   BinFinderType theFrontBinFinder;
00077   BinFinderType theBackBinFinder;
00078 
00079 
00080   
00081   };
00082 
00083 
00084 #endif