Go to the documentation of this file.00001 #ifndef TkDetLayers_TIDRing_h
00002 #define TkDetLayers_TIDRing_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00006 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00007 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00008 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
00009
00013 class TIDRing : public GeometricSearchDetWithGroups{
00014 public:
00015 TIDRing(std::vector<const GeomDet*>& innerDets,
00016 std::vector<const GeomDet*>& outerDets);
00017 ~TIDRing();
00018
00019
00020 virtual const BoundSurface& surface() const {return *theDisk;}
00021
00022 virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00023
00024 virtual const std::vector<const GeometricSearchDet*>& components() const;
00025
00026 virtual std::pair<bool, TrajectoryStateOnSurface>
00027 compatible( const TrajectoryStateOnSurface&, const Propagator&,
00028 const MeasurementEstimator&) const;
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 const BoundDisk& specificSurface() const {return *theDisk;}
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 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00053 const Propagator& prop,
00054 const MeasurementEstimator& est,
00055 const SubLayerCrossing& crossing,
00056 float window,
00057 std::vector<DetGroup>& result,
00058 bool checkClosest) const;
00059
00060 const std::vector<const GeomDet*>& subLayer( int ind) const {
00061 return (ind==0 ? theFrontDets : theBackDets);
00062 }
00063
00064
00065 private:
00066 std::vector<const GeomDet*> theDets;
00067 std::vector<const GeomDet*> theFrontDets;
00068 std::vector<const GeomDet*> theBackDets;
00069
00070 ReferenceCountingPointer<BoundDisk> theDisk;
00071 ReferenceCountingPointer<BoundDisk> theFrontDisk;
00072 ReferenceCountingPointer<BoundDisk> theBackDisk;
00073
00074 typedef PeriodicBinFinderInPhi<double> BinFinderType;
00075
00076 BinFinderType theFrontBinFinder;
00077 BinFinderType theBackBinFinder;
00078
00079
00080
00081 };
00082
00083
00084 #endif