CMS 3D CMS Logo

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