00001 #ifndef MagCylinder_H 00002 #define MagCylinder_H 00003 00004 #include "MagneticField/VolumeGeometry/interface/MagVolume.h" 00005 #include "MagneticField/VolumeGeometry/interface/VolumeSide.h" 00006 00007 #include <vector> 00008 00009 //-- FIXME 00010 #include <string> 00011 //-- 00012 00013 template <class T> 00014 class MagneticFieldProvider; 00015 00016 class MagCylinder : public MagVolume { 00017 public: 00018 00019 MagCylinder( const PositionType& pos, const RotationType& rot, 00020 DDSolidShape shape, const std::vector<VolumeSide>& faces, 00021 const MagneticFieldProvider<float> * mfp); 00022 00023 virtual bool inside( const GlobalPoint& gp, double tolerance=0.) const; 00024 virtual bool inside( const LocalPoint& lp, double tolerance=0.) const; 00025 00027 virtual const std::vector<VolumeSide>& faces() const {return theFaces;} 00028 00029 //-- FIXME 00030 std::string name; 00031 //-- 00032 00033 private: 00034 00035 std::vector<VolumeSide> theFaces; 00036 Scalar theZmin; 00037 Scalar theZmax; 00038 Scalar theInnerR; 00039 Scalar theOuterR; 00040 00041 }; 00042 00043 #endif