00001
00002
00003
00004 #ifndef GEOMETRY_SlicedCone_H
00005 #define GEOMETRY_SlicedCone_H
00006
00008
00009 #include "geometry/Cone.h"
00010
00011
00012 class SlicedCone : public LayeredMedium {
00013 public:
00014 SlicedCone(Medium* mother, const Cone& theCone);
00015
00016
00017
00018 Medium& addLayer(double thickness, const char* material="vacuum",
00019 Detector* det=0);
00020
00021
00022
00023
00024 double length()const{return m_length;}
00025 const Point& center()const;
00026 const Vector& axis()const;
00027
00028
00029 void createDetectorView(gui::DisplayRep& view);
00030
00031 const char* nameOf()const{return "SlicedCone";}
00032
00033 private:
00034
00035 double m_length;
00036
00037 double m_outer_radius, m_inner_radius, m_outer_slope, m_inner_slope;
00038
00039
00040 };
00041
00042 inline const Point& SlicedCone::center()const
00043 {
00044 return m_vol->center();
00045 }
00046 inline const Vector& SlicedCone::axis() const
00047 {
00048 return m_vol->surface(1).direction();
00049 }
00050 #endif
00051