Celeritas 0.7.0-dev.127+develop.e63889793
Loading...
Searching...
No Matches
Public Member Functions | List of all members
celeritas::orangeinp::EllipticalCone Class Referencefinal

A finite z-aligned cone with an elliptical cross section. More...

#include <IntersectRegion.hh>

Inheritance diagram for celeritas::orangeinp::EllipticalCone:
Inheritance graph
[legend]

Public Member Functions

 EllipticalCone (Real2 const &lower_radii, Real2 const &upper_radii, real_type halfheight)
 Construct with lower/upper x- and y-radii and half-height in z.
 
void build (IntersectSurfaceBuilder &) const final
 Build surfaces.
 
void output (JsonPimpl *) const final
 Write output to the given JSON object.
 
bool encloses (EllipticalCone const &other) const
 Whether this encloses another elliptical cone.
 
Real2 constlower_radii () const
 Radii along the x- and y-axes at z=-hh.
 
Real2 constupper_radii () const
 Radii along the x- and y-axes at z=-hh.
 
real_type halfheight () const
 Half-height along Z.
 
real_type radius (Bound b, Axis ax) const
 Get the radius along a single axis.
 

Additional Inherited Members

- Protected Member Functions inherited from celeritas::orangeinp::IntersectRegionInterface
 CELER_DEFAULT_COPY_MOVE (IntersectRegionInterface)
 

Detailed Description

A finite z-aligned cone with an elliptical cross section.

The elliptical cone is defined in an analogous fashion to the regular (i.e., circular) cone. A half-height (hh) defines the z extents, such that the centroid of the outer bounding box is the origin. The lower radii are the x and y radii at the plane \( z = -\mathrm{hh} \). The upper radii are the x and y radii at the plane \( z = \mathrm{hh} \). There are several restrictions on these radii:

The elliptical surface can be expressed as

\[ (x/r_x)^2 + (y/r_y)^2 = (v-z)^2, \]

where v is the location of the vertex.

The \( r_x \), \(r_y \), and \(v\) can be calculated from the lower and upper radii as given by G4EllipticalCone:

r_x = (lower_radii[X] - upper_radii[X])/(2 hh),
r_y = (lower_radii[Y] - upper_radii[Y])/(2 hh),
  v = hh (lower_radii[X] + upper_radii[X])
      / (lower_radii[X] - upper_radii[X]).

Member Function Documentation

◆ build()

void celeritas::orangeinp::EllipticalCone::build ( IntersectSurfaceBuilder insert_surface) const
finalvirtual

◆ output()

void celeritas::orangeinp::EllipticalCone::output ( JsonPimpl j) const
finalvirtual

Write output to the given JSON object.

Implements celeritas::orangeinp::IntersectRegionInterface.


The documentation for this class was generated from the following files: