|
CORSIKA
@c8_version@
The framework to simulate particle cascades for astroparticle physics
|
A class to store the reference coordinate system for a geometric object. More...
#include <CoordinateSystem.hpp>
Public Member Functions | |
| CoordinateSystem (CoordinateSystem const &)=delete | |
| CoordinateSystem (CoordinateSystem &&)=delete | |
| CoordinateSystem & | operator= (CoordinateSystem const &pCS)=delete |
| bool | isRoot () const |
| Checks, if this is the unique ROOT CS. | |
| CoordinateSystemPtr | getReferenceCS () const |
| EigenTransform const & | getTransform () const |
| bool | operator== (CoordinateSystem const &) const |
| bool | operator!= (CoordinateSystem const &) const |
Friends | |
Friends | |
Manipulation and creation functions. | |
| CoordinateSystemPtr const & | get_root_CoordinateSystem () |
| this is the only way to create ONE unique root CS More... | |
| CoordinateSystemPtr | make_translation (CoordinateSystemPtr const &cs, QuantityVector< length_d > const &vector) |
| Creates new CoordinateSystemPtr by translation along vector. | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_rotationToZ (CoordinateSystemPtr const &cs, Vector< TDim > const &vVec) |
| creates a new CoordinateSystem in which vVec points in direction of the new z-axis, vVec | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_rotation (CoordinateSystemPtr const &cs, QuantityVector< TDim > const &axis, double const angle) |
| creates a new CoordinateSystem, rotated around axis by angle. | |
| template<typename TDim > | |
| CoordinateSystemPtr | make_translationAndRotation (CoordinateSystemPtr const &cs, QuantityVector< length_d > const &translation, QuantityVector< TDim > const &axis, double const angle) |
| creates a new CoordinateSystem, translated by translation and rotated around axis by angle. | |
A class to store the reference coordinate system for a geometric object.
A CoordinateSystem can only be created in reference and relative to other CoordinateSystems. Thus, the geometric transformation between all CoordinateSystems is always known and stored.
The static (singleton) function make_root_CoordinateSystem is the only way to create and access the global top-level CoordinateSystem obect. CoordinateSystem objects should be abosulte only handled in their form of CoordinateSystemPtr, which are shared_ptr that handle the lifetime of the entire CoordinateSystem hirarchy.
Thus, new CoordinateSystem are only be created (via CoordinateSystemPtr) by transforing existing CoordinateSystem using: make_rotationToZ, make_rotation, or make_translationAndRotation, see below.
Warning: As a consequence, never try to access, modify, copy, the raw CoordinateSystem objects directly, this will almost certainly result in undefined behaviour. Only access, copy, handle them via CoordinateSystemPtr.
Definition at line 94 of file CoordinateSystem.hpp.
|
friend |
this is the only way to create ONE unique root CS
Singleton factory function to produce the root CoordinateSystem
This is the only way to get a root-coordinate system, and it is a singleton. All other CoordinateSystems must be relative to the RootCoordinateSystem
Definition at line 30 of file RootCoordinateSystem.hpp.