Go to the documentation of this file.00001 #ifndef TkDetLayers_TOBLayer_h
00002 #define TkDetLayers_TOBLayer_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/RodBarrelLayer.h"
00006 #include "TOBRod.h"
00007 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00008 #include "SubLayerCrossings.h"
00009
00014 #pragma GCC visibility push(hidden)
00015 class TOBLayer GCC11_FINAL : public RodBarrelLayer, public GeometricSearchDetWithGroups{
00016 public:
00017 typedef PeriodicBinFinderInPhi<double> BinFinderType;
00018
00019
00020 TOBLayer(std::vector<const TOBRod*>& innerRods,
00021 std::vector<const TOBRod*>& outerRods);
00022 ~TOBLayer();
00023
00024
00025
00026 virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00027
00028 virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00029
00030 void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00031 const Propagator& prop,
00032 const MeasurementEstimator& est,
00033 std::vector<DetGroup> & result) const;
00034
00035
00036
00037 virtual SubDetector subDetector() const {return GeomDetEnumerators::TOB;}
00038
00039
00040 private:
00041
00042
00043 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00044 PropagationDirection propDir) const;
00045
00046 bool addClosest( const TrajectoryStateOnSurface& tsos,
00047 const Propagator& prop,
00048 const MeasurementEstimator& est,
00049 const SubLayerCrossing& crossing,
00050 std::vector<DetGroup>& result) const;
00051
00052 float computeWindowSize( const GeomDet* det,
00053 const TrajectoryStateOnSurface& tsos,
00054 const MeasurementEstimator& est) const;
00055
00056 double calculatePhiWindow( double Xmax, const GeomDet& det,
00057 const TrajectoryStateOnSurface& state) const;
00058
00059 bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float phiWin) const;
00060
00061
00062 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00063 const Propagator& prop,
00064 const MeasurementEstimator& est,
00065 const SubLayerCrossing& crossing,
00066 float window,
00067 std::vector<DetGroup>& result,
00068 bool checkClosest) const;
00069
00070 const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00071 return (ind==0 ? theInnerComps : theOuterComps);}
00072
00073 BoundCylinder* cylinder( const std::vector<const GeometricSearchDet*>& rods) const ;
00074
00075
00076 private:
00077 std::vector<const GeometricSearchDet*> theComps;
00078 std::vector<const GeometricSearchDet*> theInnerComps;
00079 std::vector<const GeometricSearchDet*> theOuterComps;
00080 std::vector<const GeomDet*> theBasicComps;
00081
00082 BinFinderType theInnerBinFinder;
00083 BinFinderType theOuterBinFinder;
00084
00085 ReferenceCountingPointer<BoundCylinder> theInnerCylinder;
00086 ReferenceCountingPointer<BoundCylinder> theOuterCylinder;
00087
00088 };
00089
00090
00091 #pragma GCC visibility pop
00092 #endif