CMS 3D CMS Logo

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