DD4hep
01.18
|
Implementation of conical surface attached to a volume. More...
#include <Surface.h>
Public Member Functions | |
VolConeImpl () | |
default c'tor More... | |
VolConeImpl (Volume vol, SurfaceType type, double thickness_inner, double thickness_outer, Vector3D v, Vector3D origin) | |
The standard constructor. More... | |
virtual Vector3D | u (const Vector3D &point=Vector3D()) const |
First direction of measurement U - rotated to point projected onto the cone. More... | |
virtual Vector3D | v (const Vector3D &point=Vector3D()) const |
Second direction of measurement V - rotated to point projected onto the cone. More... | |
virtual Vector3D | normal (const Vector3D &point=Vector3D()) const |
The normal direction at the given point, projected onto the cone. More... | |
virtual double | distance (const Vector3D &point) const |
Distance to surface. More... | |
virtual Vector2D | globalToLocal (const Vector3D &point) const |
Convert the global position to the local position (u,v) on the surface - v runs along the axis of the cone, u is r*phi. More... | |
virtual Vector3D | localToGlobal (const Vector2D &point) const |
Convert the local position (u,v) on the surface to the global position - v runs along the axis of the cone, u is r*phi. More... | |
virtual std::vector< std::pair < Vector3D, Vector3D > > | getLines (unsigned nMax=100) |
create outer bounding lines for the given symmetry of the polyhedron More... | |
![]() | |
virtual | ~VolSurfaceBase ()=default |
VolSurfaceBase ()=default | |
default c'tor More... | |
VolSurfaceBase (SurfaceType typ, double thickness_inner, double thickness_outer, Vector3D u_val, Vector3D v_val, Vector3D n, Vector3D o, Volume vol, int identifier) | |
VolSurfaceBase (const VolSurfaceBase &c) | |
Copy the from object. More... | |
Volume | volume () const |
the volume to which this surface is attached. More... | |
virtual long64 | id () const |
The id of this surface. More... | |
virtual const SurfaceType & | type () const |
properties of the surface encoded in Type. More... | |
virtual const Vector3D & | origin () const |
Get Origin of local coordinate system on surface. More... | |
virtual const IMaterial & | innerMaterial () const |
Access to the material in opposite direction of the normal. More... | |
virtual const IMaterial & | outerMaterial () const |
Access to the material in direction of the normal. More... | |
virtual double | innerThickness () const |
Thickness of inner material. More... | |
virtual double | outerThickness () const |
Thickness of outer material. More... | |
virtual double | length_along_u () const |
The length of the surface along direction u at the origin. More... | |
virtual double | length_along_v () const |
The length of the surface along direction v at the origin. More... | |
virtual bool | insideBounds (const Vector3D &point, double epsilon=1e-4) const |
Checks if the given point lies within the surface. More... | |
void | setInnerMaterial (const IMaterial &mat) |
set the inner Material More... | |
void | setOuterMaterial (const IMaterial &mat) |
set the outer Materal More... | |
![]() | |
virtual | ~ISurface () |
Destructor. More... | |
Private Attributes | |
double | _ztip |
double | _zt0 |
double | _zt1 |
double | _tanTheta |
Additional Inherited Members | |
![]() | |
virtual void | setU (const Vector3D &u) |
setter for daughter classes More... | |
virtual void | setV (const Vector3D &v) |
setter for daughter classes More... | |
virtual void | setNormal (const Vector3D &n) |
setter for daughter classes More... | |
virtual void | setOrigin (const Vector3D &o) |
setter for daughter classes More... | |
![]() | |
SurfaceType | _type {} |
Vector3D | _u {} |
Vector3D | _v {} |
Vector3D | _n {} |
Vector3D | _o {} |
double | _th_i {0} |
double | _th_o {0} |
MaterialData | _innerMat {} |
MaterialData | _outerMat {} |
Volume | _vol {} |
long64 | _id {0} |
unsigned | _refCount {0} |
Implementation of conical surface attached to a volume.
|
inline |
dd4hep::rec::VolConeImpl::VolConeImpl | ( | Volume | vol, |
SurfaceType | type, | ||
double | thickness_inner, | ||
double | thickness_outer, | ||
Vector3D | v, | ||
Vector3D | origin | ||
) |
The standard constructor.
The origin vector points to the origin of the coordinate system on the cone, its rho defining the mean radius of the cone (z-component of the origin is ignored !). The measurement direction v defines the opening angle of the cone, the normal is chosen to be orthogonal to v. NB: the cone is always parallel to the local z axis.
Definition at line 341 of file Surface.cpp.
References _tanTheta, dd4hep::rec::VolSurfaceBase::_type, _zt0, _zt1, _ztip, dd4hep::rec::Vector3D::array(), dd4hep::rec::SurfaceType::Cone, dd4hep::rec::Vector3D::const_array(), std::cos(), dd4hep::rec::Vector3D::cross(), dd4hep::rec::SurfaceType::Cylinder, std::fabs(), dd4hep::rec::SurfaceType::OrthogonalToZ, dd4hep::rec::SurfaceType::ParallelToZ, dd4hep::rec::Vector3D::phi(), dd4hep::rec::SurfaceType::Plane, dd4hep::rec::Vector3D::rho(), dd4hep::rec::VolSurfaceBase::setNormal(), dd4hep::rec::VolSurfaceBase::setOrigin(), dd4hep::rec::SurfaceType::setProperty(), dd4hep::rec::VolSurfaceBase::setU(), dd4hep::rec::Vector3D::spherical(), std::stringstream::str(), std::tan(), dd4hep::rec::Vector3D::theta(), dd4hep::rec::Vector3D::x(), dd4hep::rec::Vector3D::y(), and dd4hep::rec::Vector3D::z().
|
virtual |
Distance to surface.
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 442 of file Surface.cpp.
References _tanTheta, dd4hep::rec::VolSurfaceBase::_v, _ztip, std::cos(), dd4hep::rec::Vector3D::rho(), dd4hep::rec::Vector3D::theta(), and dd4hep::rec::Vector3D::z().
|
virtual |
create outer bounding lines for the given symmetry of the polyhedron
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 467 of file Surface.cpp.
References std::vector< T >::emplace_back(), dd4hep::rec::VolSurfaceBase::length_along_v(), dd4hep::rec::VolSurfaceBase::origin(), std::vector< T >::reserve(), dd4hep::rec::Vector3D::rho(), dd4hep::rec::Vector3D::theta(), and v().
Convert the global position to the local position (u,v) on the surface - v runs along the axis of the cone, u is r*phi.
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 411 of file Surface.cpp.
References _tanTheta, dd4hep::rec::VolSurfaceBase::_v, _ztip, dd4hep::rec::VolSurfaceBase::origin(), dd4hep::rec::Vector3D::phi(), dd4hep::rec::Vector3D::theta(), and dd4hep::rec::Vector3D::z().
Convert the local position (u,v) on the surface to the global position - v runs along the axis of the cone, u is r*phi.
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 426 of file Surface.cpp.
References _tanTheta, dd4hep::rec::VolSurfaceBase::_v, _ztip, dd4hep::rec::Vector3D::cylindrical(), dd4hep::rec::VolSurfaceBase::origin(), dd4hep::rec::Vector3D::phi(), dd4hep::rec::Vector3D::theta(), dd4hep::rec::Vector2D::u(), dd4hep::rec::Vector2D::v(), and dd4hep::rec::Vector3D::z().
The normal direction at the given point, projected onto the cone.
No check is done whether the point actually is on the cone surface
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 405 of file Surface.cpp.
References dd4hep::rec::VolSurfaceBase::_n, dd4hep::rec::Vector3D::phi(), dd4hep::rec::Vector3D::spherical(), and dd4hep::rec::Vector3D::theta().
Referenced by u().
First direction of measurement U - rotated to point projected onto the cone.
No check is done whether the point actually is on the cone surface
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 398 of file Surface.cpp.
References dd4hep::rec::Vector3D::cross(), normal(), and v().
Second direction of measurement V - rotated to point projected onto the cone.
No check is done whether the point actually is on the cone surface
Reimplemented from dd4hep::rec::VolSurfaceBase.
Definition at line 392 of file Surface.cpp.
References dd4hep::rec::VolSurfaceBase::_v, dd4hep::rec::Vector3D::phi(), dd4hep::rec::Vector3D::spherical(), and dd4hep::rec::Vector3D::theta().
Referenced by getLines(), and u().
|
private |
Definition at line 407 of file Surface.h.
Referenced by distance(), globalToLocal(), localToGlobal(), and VolConeImpl().
|
private |
Definition at line 405 of file Surface.h.
Referenced by VolConeImpl().
|
private |
Definition at line 406 of file Surface.h.
Referenced by VolConeImpl().
|
private |
Definition at line 404 of file Surface.h.
Referenced by distance(), globalToLocal(), localToGlobal(), and VolConeImpl().