CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/RecoTracker/TkDetLayers/src/CompositeTECWedge.h

Go to the documentation of this file.
00001 #ifndef TkDetLayers_CompositeTECWedge_h
00002 #define TkDetLayers_CompositeTECWedge_h
00003 
00004 
00005 #include "TECWedge.h"
00006 #include "SubLayerCrossings.h"
00007 
00008 
00013 #pragma GCC visibility push(hidden)
00014 class CompositeTECWedge GCC11_FINAL : public TECWedge{
00015  public:
00016   CompositeTECWedge(std::vector<const GeomDet*>& innerDets,
00017                     std::vector<const GeomDet*>& outerDets);
00018 
00019   ~CompositeTECWedge();
00020   
00021   // GeometricSearchDet interface
00022   virtual const std::vector<const GeomDet*>& basicComponents() const {return theDets;}
00023 
00024   virtual const std::vector<const GeometricSearchDet*>& components() const;
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  private:
00037   // private methods for the implementation of groupedCompatibleDets()
00038   SubLayerCrossings computeCrossings( const TrajectoryStateOnSurface& tsos,
00039                                       PropagationDirection propDir) const;
00040 
00041   bool addClosest( const TrajectoryStateOnSurface& tsos,
00042                    const Propagator& prop,
00043                    const MeasurementEstimator& est,
00044                    const SubLayerCrossing& crossing,
00045                    std::vector<DetGroup>& result) const;
00046   
00047   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00048                         const Propagator& prop,
00049                         const MeasurementEstimator& est,
00050                         const SubLayerCrossing& crossing,
00051                         float window, 
00052                         std::vector<DetGroup>& result,
00053                         bool checkClosest) const;
00054   
00055   int findClosestDet( const GlobalPoint& startPos,int sectorId) const;
00056 
00057   const std::vector<const GeomDet*>& subWedge( int ind) const {
00058     return (ind==0 ? theFrontDets : theBackDets);
00059   }
00060 
00061 
00062  private:
00063   std::vector<const GeomDet*> theFrontDets;
00064   std::vector<const GeomDet*> theBackDets;
00065   std::vector<const GeomDet*> theDets;
00066   
00067   ReferenceCountingPointer<BoundDiskSector>  theFrontSector;
00068   ReferenceCountingPointer<BoundDiskSector>  theBackSector;
00069   
00070 };
00071 
00072 
00073 #pragma GCC visibility pop
00074 #endif