CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/RecoTracker/TkDetLayers/src/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 "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   // GeometricSearchDet interface
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   // DetLayer interface
00034   virtual SubDetector subDetector() const {return GeomDetEnumerators::TEC;}
00035   
00036 
00037   
00038  private:
00039   // private methods for the implementation of groupedCompatibleDets()
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