CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTracker/TkDetLayers/interface/PixelForwardLayer.h

Go to the documentation of this file.
00001 #ifndef TkDetLayers_PixelForwardLayer_h
00002 #define TkDetLayers_PixelForwardLayer_h
00003 
00004 
00005 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
00006 #include "RecoTracker/TkDetLayers/interface/PixelBlade.h"
00007 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00008 
00009 
00014 class PixelForwardLayer : public ForwardDetLayer, public GeometricSearchDetWithGroups {
00015  public:
00016   PixelForwardLayer(std::vector<const PixelBlade*>& blades);
00017   ~PixelForwardLayer();
00018   
00019   // GeometricSearchDet interface
00020   
00021   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00022 
00023   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00024   
00025   void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00026                                const Propagator& prop,
00027                                const MeasurementEstimator& est,
00028                                std::vector<DetGroup> & result) const;
00029 
00030   // DetLayer interface
00031   virtual SubDetector subDetector() const {return GeomDetEnumerators::PixelEndcap;}
00032   
00033 
00034  private:  
00035   // methods for groupedCompatibleDets implementation
00036   int computeHelicity(const GeometricSearchDet* firstBlade,const GeometricSearchDet* secondBlade) const;
00037 
00038   struct SubTurbineCrossings {
00039     SubTurbineCrossings(): isValid(false){};
00040     SubTurbineCrossings( int ci, int ni, float nd) : 
00041       isValid(true),closestIndex(ci), nextIndex(ni), nextDistance(nd) {}
00042     
00043     bool  isValid;
00044     int   closestIndex;
00045     int   nextIndex;
00046     float nextDistance;
00047   };
00048   
00049   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00050                         const Propagator& prop,
00051                         const MeasurementEstimator& est,
00052                         const SubTurbineCrossings& crossings,
00053                         float window, 
00054                         std::vector<DetGroup>& result) const;
00055   
00056   SubTurbineCrossings 
00057     computeCrossings( const TrajectoryStateOnSurface& startingState,
00058                       PropagationDirection propDir) const;
00059 
00060   float computeWindowSize( const GeomDet* det, 
00061                            const TrajectoryStateOnSurface& tsos, 
00062                            const MeasurementEstimator& est) const;
00063   
00064  private:
00065   typedef PeriodicBinFinderInPhi<double>   BinFinderType;
00066   BinFinderType    theBinFinder;
00067 
00068   std::vector<const GeometricSearchDet*> theComps;
00069   std::vector<const GeomDet*> theBasicComps;
00070 };
00071 
00072 
00073 #endif