CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoTracker/TkDetLayers/interface/TECLayer.h

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   // GeometricSearchDet interface
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   // DetLayer interface
00033   virtual SubDetector subDetector() const {return GeomDetEnumerators::TEC;}
00034   
00035 
00036   
00037  private:
00038   // private methods for the implementation of groupedCompatibleDets()
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