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
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
00031 virtual SubDetector subDetector() const {return GeomDetEnumerators::PixelEndcap;}
00032
00033
00034 private:
00035
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