11#include <arich/dbobjects/ARICHGeoBase.h>
13#include <Math/Vector3D.h>
14#include <Math/Rotation3D.h>
15#include <Math/RotationX.h>
16#include <Math/RotationY.h>
17#include <Math/RotationZ.h>
62 void print(
const std::string& title =
"ARICH Master Volume geometry parameters")
const override;
73 void setPlacement(
double x,
double y,
double z,
double rx,
double ry,
double rz);
96 ROOT::Math::Rotation3D rot;
97 ROOT::Math::RotationX rotX(
m_rx);
98 ROOT::Math::RotationY rotY(
m_ry);
99 ROOT::Math::RotationZ rotZ(
m_rz);
100 rot *= rotZ * rotY * rotX;
151 ROOT::Math::XYZVector
pointToGlobal(
const ROOT::Math::XYZVector& point)
const;
158 ROOT::Math::XYZVector
momentumToGlobal(
const ROOT::Math::XYZVector& momentum)
const;
165 ROOT::Math::XYZVector
pointToLocal(
const ROOT::Math::XYZVector& point)
const;
172 ROOT::Math::XYZVector
momentumToLocal(
const ROOT::Math::XYZVector& momentum)
const;
Base class for geometry parameters.
static double s_unit
conversion unit for length
Geometry parameters of ARICH Master volume (envelope)
bool isConsistent() const override
Check of geometry parameters consistency.
ARICHGeoMasterVolume()
Default constructor.
~ARICHGeoMasterVolume()
Destructor.
double m_innerR
tube inner radius
std::string m_material
material of ARICH master volume
ClassDefOverride(ARICHGeoMasterVolume, 2)
ClassDef.
double m_ry
rotation around y-axis
ROOT::Math::Rotation3D getRotation() const
Get rotation matrix of ARICH master volume in global Belle II coordinates.
ROOT::Math::XYZVector pointToGlobal(const ROOT::Math::XYZVector &point) const
Transform local point into global Belle II coordinate system via rotation and translation.
double getRotationY() const
Get angle of rotation around Y axis.
double getRotationZ() const
Get angle of rotation around Z axis.
double getOuterRadius() const
Get ARICH master volume outer radius.
double getInnerRadius() const
Get ARICH master volume inner radius.
ROOT::Math::XYZVector momentumToLocal(const ROOT::Math::XYZVector &momentum) const
Rotate global point into ARICH reference system via inverse rotation.
ROOT::Math::Rotation3D * m_rotationInverse
inverse rotation matrix of ARICH master volume
void setVolume(double innerR, double outerR, double length, const std::string &material)
Sets parameters of ARICH master volume.
ROOT::Math::XYZVector pointToLocal(const ROOT::Math::XYZVector &point) const
Transform global point into ARICH reference system via inverse rotation and translation.
const std::string & getMaterial() const
Get material of ARICH master volume.
double m_length
tube length
void print(const std::string &title="ARICH Master Volume geometry parameters") const override
Print the content of the class.
double m_outerR
tube outer radius
ROOT::Math::XYZVector momentumToGlobal(const ROOT::Math::XYZVector &momentum) const
Rotate local momentum into global Belle II coordinate system.
ROOT::Math::XYZVector getPosition() const
Get position of ARICH master volume center point in global Belle II coordinates.
void setPlacement(double x, double y, double z, double rx, double ry, double rz)
Sets positioning of ARICH master volume in global Belle II coordinate system.
double m_rz
rotation around z-axis
ROOT::Math::XYZVector * m_translation
position of ARICH master volume center point
ROOT::Math::Rotation3D * m_rotation
rotation matrix of ARICH master volume
double m_rx
rotation around x-axis
double getLength() const
Get ARICH master volume length.
double getRotationX() const
Get angle of rotation around X axis.
Abstract base class for different kinds of events.