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 "SubLayerCrossings.h"
00008 #include "DataFormats/GeometrySurface/interface/BoundDisk.h"
00009
00013 #pragma GCC visibility push(hidden)
00014 class TIDRing GCC11_FINAL : public GeometricSearchDetWithGroups{
00015 public:
00016 TIDRing(std::vector<const GeomDet*>& innerDets,
00017 std::vector<const GeomDet*>& outerDets);
00018 ~TIDRing();
00019
00020
00021 virtual const BoundSurface& surface() const {return *theDisk;}
00022
00023 virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00024
00025 virtual const std::vector<const GeometricSearchDet*>& components() const;
00026
00027 virtual std::pair<bool, TrajectoryStateOnSurface>
00028 compatible( const TrajectoryStateOnSurface&, const Propagator&,
00029 const MeasurementEstimator&) const;
00030
00031 void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00032 const Propagator& prop,
00033 const MeasurementEstimator& est,
00034 std::vector<DetGroup> & result) const;
00035
00036
00037
00038 virtual const BoundDisk& specificSurface() const {return *theDisk;}
00039
00040
00041 private:
00042
00043
00044 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00045 PropagationDirection propDir) const;
00046
00047 bool addClosest( const TrajectoryStateOnSurface& tsos,
00048 const Propagator& prop,
00049 const MeasurementEstimator& est,
00050 const SubLayerCrossing& crossing,
00051 std::vector<DetGroup>& result) const;
00052
00053 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00054 const Propagator& prop,
00055 const MeasurementEstimator& est,
00056 const SubLayerCrossing& crossing,
00057 float window,
00058 std::vector<DetGroup>& result,
00059 bool checkClosest) const;
00060
00061 const std::vector<const GeomDet*>& subLayer( int ind) const {
00062 return (ind==0 ? theFrontDets : theBackDets);
00063 }
00064
00065
00066 private:
00067 std::vector<const GeomDet*> theDets;
00068 std::vector<const GeomDet*> theFrontDets;
00069 std::vector<const GeomDet*> theBackDets;
00070
00071 ReferenceCountingPointer<BoundDisk> theDisk;
00072 ReferenceCountingPointer<BoundDisk> theFrontDisk;
00073 ReferenceCountingPointer<BoundDisk> theBackDisk;
00074
00075 typedef PeriodicBinFinderInPhi<double> BinFinderType;
00076
00077 BinFinderType theFrontBinFinder;
00078 BinFinderType theBackBinFinder;
00079
00080
00081
00082 };
00083
00084
00085 #pragma GCC visibility pop
00086 #endif