GeoModel - GeoModelCore
GeoEllipticalTube.h
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef GEOMODELKERNEL_GEOELLIPTICALTUBE_H
6 #define GEOMODELKERNEL_GEOELLIPTICALTUBE_H
7 
15 #include "GeoModelKernel/GeoShape.h"
16 
18 {
19  public:
20  GeoEllipticalTube(double XHalfLength, double YHalfLength, double ZHalfLength);
21 
22  virtual double volume () const;
23 
24  virtual const std::string & type () const;
25  virtual ShapeType typeID () const;
26 
27  virtual void exec (GeoShapeAction *action) const;
28 
29  static const std::string& getClassType ();
30  static ShapeType getClassTypeID ();
31 
32  const double& getXHalfLength() const;
33  const double& getYHalfLength() const;
34  const double& getZHalfLength() const;
35 
36  protected:
37  virtual ~GeoEllipticalTube();
38 
39  private:
40 
42  GeoEllipticalTube & operator=(const GeoEllipticalTube &right);
43 
44  static const std::string s_classType;
45  static const ShapeType s_classTypeID;
46 
47  double m_xHalfLength;
48  double m_yHalfLength;
49  double m_zHalfLength;
50 };
51 
52 
53 inline const std::string& GeoEllipticalTube::getClassType ()
54 {
55  return s_classType;
56 }
57 
58 inline ShapeType GeoEllipticalTube::getClassTypeID ()
59 {
60  return s_classTypeID;
61 }
62 
63 inline const double& GeoEllipticalTube::getXHalfLength() const
64 {
65  return m_xHalfLength;
66 }
67 
68 inline const double& GeoEllipticalTube::getYHalfLength() const
69 {
70  return m_yHalfLength;
71 }
72 
73 inline const double& GeoEllipticalTube::getZHalfLength() const
74 {
75  return m_zHalfLength;
76 }
77 
78 
79 #endif
This is a tube with elliptical cross section The equation of the surface in x/y is 1...
This class is a visitor for shapes. It allows a navigation of the boolean expression tree for shapes...
This class describes a Shape. Shapes will be able to do the following things:
Definition: GeoShape.h:38