CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/RecoTracker/TkDetLayers/interface/CompositeTECPetal.h

Go to the documentation of this file.
00001 #ifndef TkDetLayers_CompositeTECPetal_h
00002 #define TkDetLayers_CompositeTECPetal_h
00003 
00004 
00005 #include "TrackingTools/DetLayers/interface/GeometricSearchDet.h"
00006 #include "RecoTracker/TkDetLayers/interface/TECPetal.h"
00007 #include "RecoTracker/TkDetLayers/interface/TECWedge.h"
00008 #include "RecoTracker/TkDetLayers/interface/SubLayerCrossings.h"
00009 
00010 
00014 class CompositeTECPetal : public TECPetal{
00015  public:
00016   CompositeTECPetal(std::vector<const TECWedge*>& innerWedges,
00017                     std::vector<const TECWedge*>& outerWedges);
00018 
00019   ~CompositeTECPetal();
00020   
00021   // GeometricSearchDet interface  
00022   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00023 
00024   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00025   
00026   virtual std::pair<bool, TrajectoryStateOnSurface>
00027   compatible( const TrajectoryStateOnSurface& ts, const Propagator&, 
00028               const MeasurementEstimator&) const;
00029 
00030   virtual void
00031   groupedCompatibleDetsV( const TrajectoryStateOnSurface& startingState,
00032                          const Propagator& prop,
00033                          const MeasurementEstimator& est,
00034                          std::vector<DetGroup> & result) const;
00035 
00036 
00037  private:
00038   // private methods for the implementation of groupedCompatibleDets()
00039   SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& tsos,
00040                                      PropagationDirection propDir) const;
00041 
00042 
00043   
00044   bool addClosest( const TrajectoryStateOnSurface& tsos,
00045                    const Propagator& prop,
00046                    const MeasurementEstimator& est,
00047                    const SubLayerCrossing& crossing,
00048                    std::vector<DetGroup>& result) const;
00049 
00050   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00051                         const Propagator& prop,
00052                         const MeasurementEstimator& est,
00053                         const SubLayerCrossing& crossing,
00054                         float window, 
00055                         std::vector<DetGroup>& result,
00056                         bool checkClosest) const;
00057 
00058   static
00059   bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float window);
00060 
00061   static
00062   float computeWindowSize( const GeomDet* det, 
00063                            const TrajectoryStateOnSurface& tsos, 
00064                            const MeasurementEstimator& est);
00065 
00066   int findBin( float R,int layer) const;
00067   
00068   GlobalPoint findPosition(int index,int diskSectorIndex) const ;
00069 
00070   const std::vector<const GeometricSearchDet*>& subLayer( int ind) const {
00071     return (ind==0 ? theFrontComps : theBackComps);
00072   }
00073 
00074 
00075  private:
00076   std::vector<const GeometricSearchDet*> theComps;
00077   std::vector<const GeometricSearchDet*> theFrontComps;
00078   std::vector<const GeometricSearchDet*> theBackComps;
00079   std::vector<const GeomDet*> theBasicComps;
00080 
00081   std::vector<float> theFrontBoundaries;
00082   std::vector<float> theBackBoundaries;
00083 
00084   ReferenceCountingPointer<BoundDiskSector> theFrontSector;
00085   ReferenceCountingPointer<BoundDiskSector> theBackSector;  
00086   
00087 };
00088 
00089 
00090 #endif