Class to transform between world and local coordinates. More...
#include <LocalTransformation.h>
Public Types | |
using | TransformationMatrix_t = StoredMatrix |
Type of transformation matrix. More... | |
Public Member Functions | |
LocalTransformation () | |
Constructor. More... | |
LocalTransformation (std::vector< TGeoNode const * > const &path, size_t depth) | |
Constructor: uses the specified transformation matrix. More... | |
void | LocalToWorld (double const *local, double *world) const |
Transforms a point from local frame to world frame. More... | |
void | LocalToWorldVect (double const *local, double *world) const |
Transforms a vector from local frame to world frame. More... | |
void | WorldToLocal (double const *world, double *local) const |
Transforms a point from world frame to local frame. More... | |
void | WorldToLocalVect (const double *world, double *local) const |
Transforms a vector from world frame to local frame. More... | |
TransformationMatrix_t const & | Matrix () const |
Direct access to the transformation matrix. More... | |
void | SetPath (std::vector< TGeoNode const * > const &path, size_t depth) |
void | SetMatrix (TransformationMatrix_t matrix) |
std::vector< TGeoNode const * > | GetNodes () const |
TransformationMatrix_t | GetMatrix () const |
template<> | |
TGeoHMatrix | transformationFromPath (std::vector< TGeoNode const * > const &path, size_t depth) |
template<> | |
HepGeom::Transform3D | transformationFromPath (std::vector< TGeoNode const * > const &path, size_t depth) |
LocalTransformation (TransformationMatrix_t const &matrix) | |
Constructor: uses the specified transformation matrix. More... | |
LocalTransformation (TransformationMatrix_t &&matrix) | |
Static Public Member Functions | |
static TransformationMatrix_t | transformationFromPath (std::vector< TGeoNode const * > const &path, size_t depth) |
Builds a matrix to go from local to world coordinates in one step. More... | |
Protected Attributes | |
TransformationMatrix_t | fGeoMatrix |
local to world transform More... | |
std::vector< TGeoNode const * > | fNodeVec |
Class to transform between world and local coordinates.
StoredMatrix | type of transformation matrix internally stored |
This class provides two directions of transformations (world to local and the other way around), for points and for vectors. The vector version of the transformation does not apply translation.
Definition at line 41 of file LocalTransformation.h.
using gar::geo::LocalTransformation< StoredMatrix >::TransformationMatrix_t = StoredMatrix |
Type of transformation matrix.
Definition at line 45 of file LocalTransformation.h.
|
inline |
Constructor.
Definition at line 50 of file LocalTransformation.h.
|
inline |
Constructor: uses the specified transformation matrix.
matrix | the transformation matrix to be used |
The specified matrix is copied into a local copy.
Definition at line 60 of file LocalTransformation.h.
|
inline |
Definition at line 62 of file LocalTransformation.h.
|
inline |
Constructor: uses the specified transformation matrix.
path | the path of ROOT geometry nodes |
depth | the index in the path of the last node to be considered |
The specified matrix is copied into a local copy.
Definition at line 73 of file LocalTransformation.h.
|
inline |
Definition at line 162 of file LocalTransformation.h.
|
inline |
Definition at line 160 of file LocalTransformation.h.
void gar::geo::LocalTransformation< StoredMatrix >::LocalToWorld | ( | double const * | local, |
double * | world | ||
) | const |
Transforms a point from local frame to world frame.
local | local coordinates: [0] x, [1] y, [2] z [cm] |
world | (output) corresponding world coordinates [cm] |
The full transformation is applied. Fox example:
center
will contain the world coordinates of the center of the volume, which is usually represented by the origin in the local coordinates.
In-place replacement is not supported: world
and local
buffers are assumed not to, and must not, overlap.
void gar::geo::LocalTransformation< StoredMatrix >::LocalToWorldVect | ( | double const * | local, |
double * | world | ||
) | const |
Transforms a vector from local frame to world frame.
local | local coordinates: [0] x, [1] y, [2] z [cm] |
world | (output) corresponding world coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
In-place replacement is not supported: world
and local
buffers are assumed not to, and must not, overlap.
|
inline |
Direct access to the transformation matrix.
Definition at line 143 of file LocalTransformation.h.
|
inline |
Definition at line 156 of file LocalTransformation.h.
|
inline |
Definition at line 150 of file LocalTransformation.h.
TGeoHMatrix gar::geo::LocalTransformation< TGeoHMatrix >::transformationFromPath | ( | std::vector< TGeoNode const * > const & | path, |
size_t | depth | ||
) |
Definition at line 30 of file LocalTransformation.cxx.
HepGeom::Transform3D gar::geo::LocalTransformation< HepGeom::Transform3D >::transformationFromPath | ( | std::vector< TGeoNode const * > const & | path, |
size_t | depth | ||
) |
Definition at line 44 of file LocalTransformation.cxx.
|
static |
Builds a matrix to go from local to world coordinates in one step.
void gar::geo::LocalTransformation< StoredMatrix >::WorldToLocal | ( | double const * | world, |
double * | local | ||
) | const |
Transforms a point from world frame to local frame.
world | world coordinates: [0] x, [1] y, [2] z [cm] |
local | (output) corresponding local coordinates [cm] |
The full transformation is applied. Fox example:
local
will contain the local coordinates of the specified point.
In-place replacement is not supported: world
and local
buffers are assumed not to, and must not, overlap.
void gar::geo::LocalTransformation< StoredMatrix >::WorldToLocalVect | ( | const double * | world, |
double * | local | ||
) | const |
Transforms a vector from world frame to local frame.
world | world coordinates: [0] x, [1] y, [2] z [cm] |
local | (output) corresponding local coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
In-place replacement is not supported: world
and local
buffers are assumed not to, and must not, overlap.
|
protected |
local to world transform
Definition at line 166 of file LocalTransformation.h.
|
protected |
Definition at line 167 of file LocalTransformation.h.