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