LArSoft
v07_13_02
Liquid Argon Software toolkit - http://larsoft.org/
|
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 (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... | |
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) | |
Constructor: uses the specified transformation matrix. More... | |
template<typename DestPoint , typename SrcPoint , typename = std::enable_if_t<!std::is_same<SrcPoint, DestPoint>::value>> | |
DestPoint | LocalToWorld (SrcPoint const &local) const |
Transforms a point from local frame to world frame. More... | |
template<typename Point > | |
Point | LocalToWorld (Point const &local) const |
Transforms a point from local frame to world frame. More... | |
template<typename DestVector , typename SrcVector , typename = std::enable_if_t<!std::is_same<SrcVector, DestVector>::value>> | |
DestVector | LocalToWorldVect (SrcVector const &local) const |
Transforms a vector from local frame to world frame. More... | |
template<typename Vector > | |
Vector | LocalToWorldVect (Vector const &local) const |
Transforms a vector from local frame to world frame. More... | |
template<typename DestPoint , typename SrcPoint , typename = std::enable_if_t<!std::is_same<SrcPoint, DestPoint>::value>> | |
DestPoint | WorldToLocal (SrcPoint const &world) const |
Transforms a point from world frame to local frame. More... | |
template<typename Point > | |
Point | WorldToLocal (Point const &world) const |
Transforms a point from world frame to local frame. More... | |
template<typename DestVector , typename SrcVector , typename = std::enable_if_t<!std::is_same<SrcVector, DestVector>::value>> | |
DestVector | WorldToLocalVect (SrcVector const &world) const |
Transforms a vector from world frame to local frame. More... | |
template<typename Vector > | |
Vector | WorldToLocalVect (Vector const &world) const |
Transforms a vector from world frame to local frame. More... | |
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 Member Functions | |
template<typename DestPoint , typename SrcPoint > | |
DestPoint | LocalToWorldImpl (SrcPoint const &local) const |
template<typename DestVector , typename SrcVector > | |
DestVector | LocalToWorldVectImpl (SrcVector const &local) const |
template<typename DestPoint , typename SrcPoint > | |
DestPoint | WorldToLocalImpl (SrcPoint const &world) const |
template<typename DestVector , typename SrcVector > | |
DestVector | WorldToLocalVectImpl (SrcVector const &world) const |
Protected Attributes | |
TransformationMatrix_t | fGeoMatrix |
local to world transform More... | |
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 45 of file LocalTransformation.h.
using geo::LocalTransformation< StoredMatrix >::TransformationMatrix_t = StoredMatrix |
Type of transformation matrix.
Definition at line 49 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 58 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 |
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 71 of file LocalTransformation.h.
void 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.
Referenced by geo::GeometryCore::DetectorEnclosureBox(), geo::OpDetGeo::Height(), geo::AuxDetGeo::LocalToWorld(), geo::AuxDetSensitiveGeo::LocalToWorld(), geo::CryostatGeo::LocalToWorld(), geo::TPCGeo::LocalToWorld(), and geo::LocalTransformation< TGeoHMatrix >::LocalTransformation().
|
inline |
Transforms a point from local frame to world frame.
SrcPoint | type of the input (local) vector |
DestPoint | type of the output (world) vector (default: as Point ) |
local | local coordinates [cm] |
The full transformation is applied. Fox example:
center
will be a TVector3
containing the world coordinates of the center of the volume, which is usually represented by the origin in the local coordinates (a TVector3 is by default constructed to point to the origin).
Definition at line 119 of file LocalTransformation.h.
|
inline |
Transforms a point from local frame to world frame.
SrcPoint | type of the input (local) vector |
DestPoint | type of the output (world) vector (default: as Point ) |
local | local coordinates [cm] |
The full transformation is applied. Fox example:
center
will be a TVector3
containing the world coordinates of the center of the volume, which is usually represented by the origin in the local coordinates (a TVector3 is by default constructed to point to the origin).
Definition at line 122 of file LocalTransformation.h.
|
protected |
void 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.
Referenced by geo::LocalTransformation< TGeoHMatrix >::LocalToWorld(), geo::OpDetGeo::LocalToWorldVect(), geo::AuxDetGeo::LocalToWorldVect(), geo::AuxDetSensitiveGeo::LocalToWorldVect(), geo::WireGeo::LocalToWorldVect(), geo::CryostatGeo::LocalToWorldVect(), and geo::TPCGeo::LocalToWorldVect().
|
inline |
Transforms a vector from local frame to world frame.
SrcVector | type of the input (local) vector |
DestVector | type of output (world) vector (default: as Vector ) |
local | local coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
Definition at line 154 of file LocalTransformation.h.
|
inline |
Transforms a vector from local frame to world frame.
SrcVector | type of the input (local) vector |
DestVector | type of output (world) vector (default: as Vector ) |
local | local coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
Definition at line 157 of file LocalTransformation.h.
|
protected |
|
inline |
Direct access to the transformation matrix.
Definition at line 247 of file LocalTransformation.h.
Referenced by geo::AuxDetGeo::AuxDetGeo(), and geo::TPCGeo::TPCGeo().
TGeoHMatrix geo::LocalTransformation< TGeoHMatrix >::transformationFromPath | ( | std::vector< TGeoNode const * > const & | path, |
size_t | depth | ||
) |
Definition at line 30 of file LocalTransformation.cxx.
References geo::LocalTransformation< StoredMatrix >::transformationFromPath().
HepGeom::Transform3D geo::LocalTransformation< HepGeom::Transform3D >::transformationFromPath | ( | std::vector< TGeoNode const * > const & | path, |
size_t | depth | ||
) |
Definition at line 45 of file LocalTransformation.cxx.
References mat, and geo::LocalTransformation< StoredMatrix >::transformationFromPath().
|
static |
Builds a matrix to go from local to world coordinates in one step.
Referenced by geo::LocalTransformation< TGeoHMatrix >::Matrix(), and geo::LocalTransformation< StoredMatrix >::transformationFromPath().
void 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.
Referenced by geo::LocalTransformation< TGeoHMatrix >::LocalToWorldVect(), geo::OpDetGeo::WorldToLocal(), geo::AuxDetGeo::WorldToLocal(), geo::AuxDetSensitiveGeo::WorldToLocal(), geo::WireGeo::WorldToLocal(), geo::CryostatGeo::WorldToLocal(), and geo::TPCGeo::WorldToLocal().
|
inline |
Transforms a point from world frame to local frame.
SrcPoint | type of the input (local) vector |
DestPoint | type of the output (world) vector (default: as Point ) |
world | world coordinates [cm] |
The full transformation is applied. Fox example:
local
will be a TVector3
containing the local coordinates of the specified point.
Definition at line 202 of file LocalTransformation.h.
|
inline |
Transforms a point from world frame to local frame.
SrcPoint | type of the input (local) vector |
DestPoint | type of the output (world) vector (default: as Point ) |
world | world coordinates [cm] |
The full transformation is applied. Fox example:
local
will be a TVector3
containing the local coordinates of the specified point.
Definition at line 205 of file LocalTransformation.h.
|
protected |
void 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.
Referenced by geo::LocalTransformation< TGeoHMatrix >::WorldToLocal(), geo::OpDetGeo::WorldToLocalVect(), geo::AuxDetGeo::WorldToLocalVect(), geo::AuxDetSensitiveGeo::WorldToLocalVect(), geo::WireGeo::WorldToLocalVect(), geo::CryostatGeo::WorldToLocalVect(), and geo::TPCGeo::WorldToLocalVect().
|
inline |
Transforms a vector from world frame to local frame.
SrcVector | type of the input (local) vector |
DestVector | type of output (world) vector (default: as Vector ) |
world | coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
Definition at line 238 of file LocalTransformation.h.
|
inline |
Transforms a vector from world frame to local frame.
SrcVector | type of the input (local) vector |
DestVector | type of output (world) vector (default: as Vector ) |
world | coordinates [cm] |
The translation is not applied, since the argument is supposed to be a vector, relative difference between two points.
Definition at line 241 of file LocalTransformation.h.
|
protected |
|
protected |
local to world transform
Definition at line 257 of file LocalTransformation.h.
Referenced by geo::LocalTransformation< TGeoHMatrix >::Matrix().