CMS 3D CMS Logo

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

Go to the documentation of this file.
00001 #ifndef TkDetLayers_PixelBarrelLayer_h
00002 #define TkDetLayers_PixelBarrelLayer_h
00003 
00004 
00005 #include "TrackingTools/DetLayers/interface/RodBarrelLayer.h"
00006 #include "RecoTracker/TkDetLayers/interface/PixelRod.h"
00007 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00008 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00009 
00010 
00011 
00016 class PixelBarrelLayer : public RodBarrelLayer, public GeometricSearchDetWithGroups {
00017  public:
00018   typedef PeriodicBinFinderInPhi<double>   BinFinderType;
00019 
00020 
00021   PixelBarrelLayer(std::vector<const PixelRod*>& innerRods,
00022                    std::vector<const PixelRod*>& outerRods);
00023   
00024   ~PixelBarrelLayer();
00025   
00026   // GeometricSearchDet interface
00027   
00028   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00029   
00030   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00031 
00032   void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00033                                const Propagator& prop,
00034                                const MeasurementEstimator& est,
00035                                std::vector<DetGroup> & result) const;
00036     
00037 
00038   // DetLayer interface
00039   virtual SubDetector subDetector() const { return GeomDetEnumerators::PixelBarrel;}
00040 
00041 
00042  private:
00043   // private methods for the implementation of groupedCompatibleDets()
00044   // the implementation of the methods is the same of the TOBLayer one.
00045   // In the future, to move common code in a common place!
00046 
00047   SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00048                                       PropagationDirection propDir) const;
00049   
00050   bool addClosest( const TrajectoryStateOnSurface& tsos,
00051                    const Propagator& prop,
00052                    const MeasurementEstimator& est,
00053                    const SubLayerCrossing& crossing,
00054                    std::vector<DetGroup>& result) const;
00055 
00056   float computeWindowSize( const GeomDet* det, 
00057                            const TrajectoryStateOnSurface& tsos, 
00058                            const MeasurementEstimator& est) const;
00059   
00060   double calculatePhiWindow( double Xmax, const GeomDet& det,
00061                              const TrajectoryStateOnSurface& state) const;
00062 
00063   bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float phiWin) const;
00064 
00065 
00066   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00067                         const Propagator& prop,
00068                         const MeasurementEstimator& est,
00069                         const SubLayerCrossing& crossing,
00070                         float window, 
00071                         std::vector<DetGroup>& result,
00072                         bool checkClosest) const;
00073 
00074   const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00075     return (ind==0 ? theInnerComps : theOuterComps);}
00076   
00077   BoundCylinder* cylinder( const std::vector<const GeometricSearchDet*>& rods) const ;
00078 
00079 
00080  private:
00081   std::vector<const GeometricSearchDet*> theComps;
00082   std::vector<const GeometricSearchDet*> theInnerComps;
00083   std::vector<const GeometricSearchDet*> theOuterComps;
00084   std::vector<const GeomDet*> theBasicComps;
00085 
00086   BinFinderType    theInnerBinFinder;
00087   BinFinderType    theOuterBinFinder;
00088 
00089   ReferenceCountingPointer<BoundCylinder>  theInnerCylinder;
00090   ReferenceCountingPointer<BoundCylinder>  theOuterCylinder;
00091 
00092   
00093 };
00094 
00095 
00096 #endif