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