00001 #ifndef MagBLayer_H 00002 #define MagBLayer_H 00003 00018 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00019 #include <vector> 00020 00021 class MagBSector; 00022 class MagVolume; 00023 template <class T> class PeriodicBinFinderInPhi; 00024 00025 class MagBLayer { 00026 public: 00028 MagBLayer(std::vector<MagBSector*>& sectors, double rMin); 00029 00031 MagBLayer(MagVolume* aVolume, double rMin); 00032 00034 virtual ~MagBLayer(); 00035 00037 MagVolume * findVolume(const GlobalPoint & gp, double tolerance) const; 00038 00040 double minR() const {return theRMin;} 00041 00042 private: 00043 // To support either the case of a simple one-volume layer or a 00044 // composite structure we have both theSectors or theSingleVolume. 00045 // Only one can be active at a time; not very elegant, but acceptable. 00046 std::vector<MagBSector*> theSectors; 00047 MagVolume* theSingleVolume; 00048 double theRMin; 00049 00050 PeriodicBinFinderInPhi<float> * theBinFinder; 00051 00052 }; 00053 #endif 00054