ATLAS Offline Software
Namespaces | Typedefs | Functions
GeoPrimitivesHelpers.h File Reference
#include "GeoPrimitives/GeoPrimitives.h"
#include "GeoPrimitives/GeoPrimitivesCompare.h"
#include "CxxUtils/sincos.h"
#include "cmath"
#include <vector>
#include <optional>
#include <set>
#include <iostream>
Include dependency graph for GeoPrimitivesHelpers.h:

Go to the source code of this file.

Namespaces

 Amg
 Definition of ATLAS Math & Geometry primitives (Amg)
 

Typedefs

using Amg::SetVector3D = std::set< Amg::Vector3D, Vector3DComparer >
 
using Amg::SetVectorVector3D = std::set< std::vector< Amg::Vector3D >, VectorVector3DComparer >
 

Functions

double Amg::angle (const Amg::Vector3D &v1, const Amg::Vector3D &v2)
 calculates the opening angle between two vectors More...
 
float Amg::distance2 (const Amg::Vector3D &p1, const Amg::Vector3D &p2)
 calculates the squared distance between two point in 3D space More...
 
float Amg::distance (const Amg::Vector3D &p1, const Amg::Vector3D &p2)
 calculates the distance between two point in 3D space More...
 
void Amg::setPhi (Amg::Vector3D &v, double phi)
 sets the phi angle of a vector without changing theta nor the magnitude More...
 
void Amg::setThetaPhi (Amg::Vector3D &v, double theta, double phi)
 sets the theta and phi angle of a vector without changing the magnitude More...
 
void Amg::setRThetaPhi (Amg::Vector3D &v, double r, double theta, double phi)
 sets radius, the theta and phi angle of a vector. More...
 
void Amg::setTheta (Amg::Vector3D &v, double theta)
 sets the theta of a vector without changing phi nor the magnitude More...
 
void Amg::setPerp (Amg::Vector3D &v, double perp)
 scales the vector in the xy plane without changing the z coordinate nor the angles More...
 
void Amg::setMag (Amg::Vector3D &v, double mag)
 scales the vector length without changing the angles More...
 
double Amg::deltaPhi (const Amg::Vector3D &v1, const Amg::Vector3D &v2)
 
double Amg::deltaR (const Amg::Vector3D &v1, const Amg::Vector3D &v2)
 
void Amg::setVector3DCartesian (Amg::Vector3D &v1, double x1, double y1, double z1)
 Sets components in cartesian coordinate system. More...
 
double Amg::mag2Vector3D (const Amg::Vector3D &v1)
 Gets magnitude squared of the vector. More...
 
double Amg::magVector3D (const Amg::Vector3D &v1)
 Gets magnitude of the vector. More...
 
double Amg::rVector3D (const Amg::Vector3D &v1)
 Gets r-component in spherical coordinate system. More...
 
Amg::Vector3D Amg::transform (Amg::Vector3D &v, Amg::Transform3D &tr)
 Transform a point from a Trasformation3D. More...
 
Amg::Transform3D Amg::getTransformFromRotTransl (Amg::RotationMatrix3D rot, Amg::Vector3D transl_vec)
 
void Amg::getAngleAxisFromRotation (Amg::RotationMatrix3D &rotation, double &rotationAngle, Amg::Vector3D &rotationAxis)
 
Amg::Vector3D Amg::getTranslationVectorFromTransform (const Amg::Transform3D &tr)
 Get the Translation vector out of a Transformation. More...
 
Amg::Rotation3D Amg::getRotation3DfromAngleAxis (double angle, Amg::Vector3D &axis)
 get a AngleAxis from an angle and an axis. More...
 
Amg::Transform3D Amg::getRotateX3D (double angle)
 get a rotation transformation around X-axis More...
 
Amg::Transform3D Amg::getRotateY3D (double angle)
 get a rotation transformation around Y-axis More...
 
Amg::Transform3D Amg::getRotateZ3D (double angle)
 get a rotation transformation around Z-axis More...
 
Amg::Transform3D Amg::getTranslateX3D (const double X)
 : Returns a shift transformation along the x-axis More...
 
Amg::Transform3D Amg::getTranslateY3D (const double Y)
 : Returns a shift transformation along the y-axis More...
 
Amg::Transform3D Amg::getTranslateZ3D (const double Z)
 : Returns a shift transformation along the z-axis More...
 
Amg::Transform3D Amg::getTranslate3D (const double X, const double Y, const double Z)
 : Returns a shift transformation along an arbitrary axis More...
 
Amg::Transform3D Amg::getTranslate3D (const Amg::Vector3D &v)
 : Returns a shift transformation along an arbitrary axis More...
 
template<int N>
double Amg::lineDistance (const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
 Calculates the shortest distance between two lines posA: offset point of line A dirA: orientation of line A (unit length) posB: offset point of line B dirB: orientation of line B (unit length) More...
 
template<int N>
std::optional< double > Amg::intersect (const AmgVector(N)&posA, const AmgVector(N)&dirA, const AmgVector(N)&posB, const AmgVector(N)&dirB)
 Calculates the point of closest approach of two lines. More...
 
template<int N>
std::optional< double > Amg::intersect (const AmgVector(N)&pos, const AmgVector(N)&dir, const AmgVector(N)&planeNorm, const double offset)
 Intersects a line parametrized as A + lambda * B with the (N-1) dimensional hyperplane that's given in the Hesse normal form <P, N> - C = 0
More...
 
bool Amg::doesNotDeform (const Amg::Transform3D &trans)
 Checks whether the linear part of the transformation rotates or stetches any of the basis vectors. More...
 
bool Amg::isIdentity (const Amg::Transform3D &trans)
 Checks whether the transformation is the Identity transformation. More...