CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/RecoTracker/TkDetLayers/src/TOBLayer.h

Go to the documentation of this file.
00001 #ifndef TkDetLayers_TOBLayer_h
00002 #define TkDetLayers_TOBLayer_h
00003 
00004 
00005 #include "TrackingTools/DetLayers/interface/RodBarrelLayer.h"
00006 #include "TOBRod.h"
00007 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00008 #include "SubLayerCrossings.h"
00009 
00014 #pragma GCC visibility push(hidden)
00015 class TOBLayer GCC11_FINAL : public RodBarrelLayer, public GeometricSearchDetWithGroups{
00016  public:
00017   typedef PeriodicBinFinderInPhi<double>   BinFinderType;
00018 
00019 
00020   TOBLayer(std::vector<const TOBRod*>& innerRods,
00021            std::vector<const TOBRod*>& outerRods);
00022   ~TOBLayer();
00023   
00024   // GeometricSearchDet interface
00025   
00026   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00027 
00028   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00029 
00030   void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00031                                const Propagator& prop,
00032                                const MeasurementEstimator& est,
00033                                std::vector<DetGroup> & result) const;
00034 
00035 
00036   // DetLayer interface
00037   virtual SubDetector subDetector() const {return GeomDetEnumerators::TOB;}
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   double calculatePhiWindow( double Xmax, const GeomDet& det,
00057                              const TrajectoryStateOnSurface& state) const;
00058 
00059   bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float phiWin) const;
00060 
00061 
00062   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00063                         const Propagator& prop,
00064                         const MeasurementEstimator& est,
00065                         const SubLayerCrossing& crossing,
00066                         float window, 
00067                         std::vector<DetGroup>& result,
00068                         bool checkClosest) const;
00069 
00070   const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00071     return (ind==0 ? theInnerComps : theOuterComps);}
00072   
00073   BoundCylinder* cylinder( const std::vector<const GeometricSearchDet*>& rods) const ;
00074 
00075 
00076  private:
00077   std::vector<const GeometricSearchDet*> theComps;
00078   std::vector<const GeometricSearchDet*> theInnerComps;
00079   std::vector<const GeometricSearchDet*> theOuterComps;
00080   std::vector<const GeomDet*> theBasicComps;
00081   
00082   BinFinderType    theInnerBinFinder;
00083   BinFinderType    theOuterBinFinder;
00084 
00085   ReferenceCountingPointer<BoundCylinder>  theInnerCylinder;
00086   ReferenceCountingPointer<BoundCylinder>  theOuterCylinder;
00087     
00088 };
00089 
00090 
00091 #pragma GCC visibility pop
00092 #endif