CORSIKA  @c8_version@
The framework to simulate particle cascades for astroparticle physics
corsika::CoordinateSystem Class Reference

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
 
CoordinateSystemoperator= (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.
 

Detailed Description

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.

Friends And Related Function Documentation

◆ get_root_CoordinateSystem

CoordinateSystemPtr const& get_root_CoordinateSystem ( )
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.


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