CMS 3D CMS Logo

List of all members | Public Member Functions
DDI::EllipticalTube Class Reference

#include <EllipticalTube.h>

Inheritance diagram for DDI::EllipticalTube:
DDI::Solid

Public Member Functions

 EllipticalTube (double xSemiAxis, double ySemiAxis, double zHeight)
 
void stream (std::ostream &os) const override
 
double volume () const override
 Not as flexible and possibly less accurate than G4 volume. More...
 
 ~EllipticalTube () override
 
- Public Member Functions inherited from DDI::Solid
const std::vector< double > & parameters () const
 
void setParameters (std::vector< double > const &p)
 
DDSolidShape shape () const
 
 Solid ()
 
 Solid (DDSolidShape shape)
 
virtual ~Solid ()
 

Additional Inherited Members

- Protected Attributes inherited from DDI::Solid
std::vector< double > p_
 
DDSolidShape shape_
 

Detailed Description

Definition at line 13 of file EllipticalTube.h.

Constructor & Destructor Documentation

DDI::EllipticalTube::EllipticalTube ( double  xSemiAxis,
double  ySemiAxis,
double  zHeight 
)
inline

Definition at line 16 of file EllipticalTube.h.

References ddellipticaltube, and DDI::Solid::p_.

18  {
19  p_.emplace_back(xSemiAxis);
20  p_.emplace_back(ySemiAxis);
21  p_.emplace_back(zHeight);
22  }
Solid()
Definition: Solid.h:14
std::vector< double > p_
Definition: Solid.h:32
DDI::EllipticalTube::~EllipticalTube ( )
inlineoverride

Definition at line 23 of file EllipticalTube.h.

References stream(), and volume().

23 { }

Member Function Documentation

void DDI::EllipticalTube::stream ( std::ostream &  os) const
overridevirtual

Reimplemented from DDI::Solid.

Definition at line 8 of file EllipticalTube.cc.

References geant_units::operators::convertMmToCm().

Referenced by ~EllipticalTube().

9 {
10  os << " xSemiAxis[cm]=" << convertMmToCm( p_[0] )
11  << " ySemiAxis[cm]=" << convertMmToCm( p_[1] )
12  << " zHeight[cm]=" << convertMmToCm( p_[2] );
13 }
std::vector< double > p_
Definition: Solid.h:32
constexpr NumType convertMmToCm(NumType millimeters)
Definition: GeantUnits.h:110
double DDI::EllipticalTube::volume ( void  ) const
overridevirtual

Not as flexible and possibly less accurate than G4 volume.

Reimplemented from DDI::Solid.

Definition at line 15 of file EllipticalTube.cc.

References jets_cff::area.

Referenced by ~EllipticalTube().

15  {
16  double volume(0.);
17  // who cares major or minor axis? pi * a * b == pi * xhalf * yhalf
18  // area of a slice.
19  // we KNOW they are all cm... CMS uses cm
20  double area(1_pi*p_[0]*p_[1]);
21  //volume is z * area. I'm pretty sure :)
22  volume = area * p_[2] * 2;
23  return volume;
24 }
double volume() const override
Not as flexible and possibly less accurate than G4 volume.
std::vector< double > p_
Definition: Solid.h:32