Go to the documentation of this file.00001 #ifndef TkDetLayers_TECLayer_h
00002 #define TkDetLayers_TECLayer_h
00003
00004
00005 #include "TrackingTools/DetLayers/interface/ForwardDetLayer.h"
00006 #include "TECPetal.h"
00007 #include "Utilities/BinningTools/interface/PeriodicBinFinderInPhi.h"
00008 #include "SubLayerCrossings.h"
00009 #include "TrackingTools/PatternTools/interface/MeasurementEstimator.h"
00010
00015 #pragma GCC visibility push(hidden)
00016 class TECLayer : public ForwardDetLayer , public GeometricSearchDetWithGroups {
00017 public:
00018 TECLayer(std::vector<const TECPetal*>& innerPetals,
00019 std::vector<const TECPetal*>& outerPetals);
00020 ~TECLayer();
00021
00022
00023
00024 virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00025
00026 virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00027
00028 void groupedCompatibleDetsV( const TrajectoryStateOnSurface& tsos,
00029 const Propagator& prop,
00030 const MeasurementEstimator& est,
00031 std::vector<DetGroup> & result) const;
00032
00033
00034 virtual SubDetector subDetector() const {return GeomDetEnumerators::TEC;}
00035
00036
00037
00038 private:
00039
00040 SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& startingState,
00041 PropagationDirection propDir) const;
00042
00043 bool addClosest( const TrajectoryStateOnSurface& tsos,
00044 const Propagator& prop,
00045 const MeasurementEstimator& est,
00046 const SubLayerCrossing& crossing,
00047 std::vector<DetGroup>& result) const;
00048
00049 void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00050 const Propagator& prop,
00051 const MeasurementEstimator& est,
00052 const SubLayerCrossing& crossing,
00053 float window,
00054 std::vector<DetGroup>& result,
00055 bool checkClosest) const;
00056
00057
00058 bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& petal, float window) const;
00059
00060 const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00061 return (ind==0 ? theFrontComps : theBackComps);
00062 }
00063
00064
00065 protected:
00066 virtual BoundDisk* computeDisk( std::vector<const GeometricSearchDet*>& petals) const;
00067
00068 std::vector<const GeometricSearchDet*> theComps;
00069 std::vector<const GeometricSearchDet*> theFrontComps;
00070 std::vector<const GeometricSearchDet*> theBackComps;
00071 std::vector<const GeomDet*> theBasicComps;
00072
00073
00074 ReferenceCountingPointer<BoundDisk> theFrontDisk;
00075 ReferenceCountingPointer<BoundDisk> theBackDisk;
00076
00077 typedef PeriodicBinFinderInPhi<double> BinFinderPhi;
00078
00079 BinFinderPhi theFrontBinFinder;
00080 BinFinderPhi theBackBinFinder;
00081
00082
00083 };
00084
00085
00086 #pragma GCC visibility pop
00087 #endif