CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_3/src/RecoTracker/TkDetLayers/src/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 "TECPetal.h"
00007 #include "TECWedge.h"
00008 #include "SubLayerCrossings.h"
00009 
00010 #include "FWCore/Utilities/interface/Visibility.h"
00011 
00012 
00016 #pragma GCC visibility push(hidden)
00017 class CompositeTECPetal GCC11_FINAL : public TECPetal{
00018  public:
00019   CompositeTECPetal(std::vector<const TECWedge*>& innerWedges,
00020                     std::vector<const TECWedge*>& outerWedges);
00021 
00022   ~CompositeTECPetal();
00023   
00024   // GeometricSearchDet interface  
00025   virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;}
00026 
00027   virtual const std::vector<const GeometricSearchDet*>& components() const {return theComps;}
00028   
00029   virtual std::pair<bool, TrajectoryStateOnSurface>
00030   compatible( const TrajectoryStateOnSurface& ts, const Propagator&, 
00031               const MeasurementEstimator&) const;
00032 
00033   virtual void
00034   groupedCompatibleDetsV( const TrajectoryStateOnSurface& startingState,
00035                          const Propagator& prop,
00036                          const MeasurementEstimator& est,
00037                          std::vector<DetGroup> & result) const;
00038 
00039 
00040  private:
00041   // private methods for the implementation of groupedCompatibleDets()
00042   SubLayerCrossings computeCrossings(const TrajectoryStateOnSurface& tsos,
00043                                      PropagationDirection propDir) const dso_internal;
00044 
00045 
00046   
00047   bool addClosest( const TrajectoryStateOnSurface& tsos,
00048                    const Propagator& prop,
00049                    const MeasurementEstimator& est,
00050                    const SubLayerCrossing& crossing,
00051                    std::vector<DetGroup>& result) const dso_internal;
00052 
00053   void searchNeighbors( const TrajectoryStateOnSurface& tsos,
00054                         const Propagator& prop,
00055                         const MeasurementEstimator& est,
00056                         const SubLayerCrossing& crossing,
00057                         float window, 
00058                         std::vector<DetGroup>& result,
00059                         bool checkClosest) const dso_internal;
00060 
00061   static
00062   bool overlap( const GlobalPoint& gpos, const GeometricSearchDet& rod, float window) dso_internal;
00063 
00064   static
00065   float computeWindowSize( const GeomDet* det, 
00066                            const TrajectoryStateOnSurface& tsos, 
00067                            const MeasurementEstimator& est) dso_internal;
00068 
00069   int findBin( float R,int layer) const dso_internal;
00070   
00071   GlobalPoint findPosition(int index,int diskSectorIndex) const  dso_internal;
00072 
00073   const std::vector<const GeometricSearchDet*>& subLayer( int ind) const  dso_internal {
00074     return (ind==0 ? theFrontComps : theBackComps);
00075   }
00076 
00077 
00078  private:
00079   std::vector<const GeometricSearchDet*> theComps;
00080   std::vector<const GeometricSearchDet*> theFrontComps;
00081   std::vector<const GeometricSearchDet*> theBackComps;
00082   std::vector<const GeomDet*> theBasicComps;
00083 
00084   std::vector<float> theFrontBoundaries;
00085   std::vector<float> theBackBoundaries;
00086 
00087   ReferenceCountingPointer<BoundDiskSector> theFrontSector;
00088   ReferenceCountingPointer<BoundDiskSector> theBackSector;  
00089   
00090 };
00091 
00092 
00093 #pragma GCC visibility pop
00094 #endif