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
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
00039 virtual SubDetector subDetector() const { return GeomDetEnumerators::PixelBarrel;}
00040
00041
00042 private:
00043
00044
00045
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