Belle II Software development
ARICHGeoMasterVolume Class Reference

Geometry parameters of ARICH Master volume (envelope) More...

#include <ARICHGeoMasterVolume.h>

Inheritance diagram for ARICHGeoMasterVolume:
ARICHGeoBase

Public Member Functions

 ARICHGeoMasterVolume ()
 Default constructor.
 
 ~ARICHGeoMasterVolume ()
 Destructor.
 
bool isConsistent () const override
 Check of geometry parameters consistency.
 
void print (const std::string &title="ARICH Master Volume geometry parameters") const override
 Print the content of the class.
 
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.
 
void setVolume (double innerR, double outerR, double length, const std::string &material)
 Sets parameters of ARICH master volume.
 
ROOT::Math::XYZVector getPosition () const
 Get position of ARICH master volume center point in global Belle II coordinates.
 
ROOT::Math::Rotation3D getRotation () const
 Get rotation matrix of ARICH master volume in global Belle II coordinates.
 
double getRotationX () const
 Get angle of rotation around X axis.
 
double getRotationY () const
 Get angle of rotation around Y axis.
 
double getRotationZ () const
 Get angle of rotation around Z axis.
 
double getInnerRadius () const
 Get ARICH master volume inner radius.
 
double getOuterRadius () const
 Get ARICH master volume outer radius.
 
double getLength () const
 Get ARICH master volume length.
 
const std::string & getMaterial () const
 Get material of ARICH master volume.
 
ROOT::Math::XYZVector pointToGlobal (const ROOT::Math::XYZVector &point) const
 Transform local point into global Belle II coordinate system via rotation and translation.
 
ROOT::Math::XYZVector momentumToGlobal (const ROOT::Math::XYZVector &momentum) const
 Rotate local momentum into global Belle II coordinate system.
 
ROOT::Math::XYZVector pointToLocal (const ROOT::Math::XYZVector &point) const
 Transform global point into ARICH reference system via inverse rotation and translation.
 
ROOT::Math::XYZVector momentumToLocal (const ROOT::Math::XYZVector &momentum) const
 Rotate global point into ARICH reference system via inverse rotation.
 
void setName (const std::string &name)
 Sets object name.
 
const std::string & getName () const
 Returns object name.
 
virtual void printSurface (const GeoOpticalSurface &surface) const
 Print the content of optical surface.
 
virtual void printPlacement (double x, double y, double z, double rx, double ry, double rz) const
 Print volume positioning parameters.
 

Protected Member Functions

 ClassDef (ARICHGeoBase, 2)
 ClassDef.
 

Protected Attributes

std::string m_name
 geometry object name
 

Static Protected Attributes

static double s_unit = Unit::cm
 conversion unit for length
 
static std::string s_unitName
 conversion unit name
 

Private Member Functions

 ClassDefOverride (ARICHGeoMasterVolume, 2)
 ClassDef.
 

Private Attributes

double m_x = 0
 x position
 
double m_y = 0
 y position
 
double m_z = 0
 z position
 
double m_rx = 0
 rotation around x-axis
 
double m_ry = 0
 rotation around y-axis
 
double m_rz = 0
 rotation around z-axis
 
double m_innerR = 0
 tube inner radius
 
double m_outerR = 0
 tube outer radius
 
double m_length = 0
 tube length
 
std::string m_material
 material of ARICH master volume
 
ROOT::Math::Rotation3D * m_rotation = nullptr
 rotation matrix of ARICH master volume
 
ROOT::Math::Rotation3D * m_rotationInverse = nullptr
 inverse rotation matrix of ARICH master volume
 
ROOT::Math::XYZVector * m_translation = nullptr
 position of ARICH master volume center point
 

Detailed Description

Geometry parameters of ARICH Master volume (envelope)

Definition at line 31 of file ARICHGeoMasterVolume.h.

Constructor & Destructor Documentation

◆ ARICHGeoMasterVolume()

Default constructor.

Definition at line 38 of file ARICHGeoMasterVolume.h.

39 {}

◆ ~ARICHGeoMasterVolume()

~ARICHGeoMasterVolume ( )
inline

Destructor.

Definition at line 44 of file ARICHGeoMasterVolume.h.

45 {
46 /*if(m_rotation) delete m_rotation;
47 if(m_rotationInverse) delete m_rotationInverse;
48 if(m_translation) delete m_translation;
49 */
50 }

Member Function Documentation

◆ getInnerRadius()

double getInnerRadius ( ) const
inline

Get ARICH master volume inner radius.

Returns
master volume inner radius

Definition at line 126 of file ARICHGeoMasterVolume.h.

126{return m_innerR / s_unit;};
static double s_unit
conversion unit for length
Definition: ARICHGeoBase.h:83
double m_innerR
tube inner radius

◆ getLength()

double getLength ( ) const
inline

Get ARICH master volume length.

Returns
master volume length

Definition at line 138 of file ARICHGeoMasterVolume.h.

138{return m_length / s_unit;};

◆ getMaterial()

const std::string & getMaterial ( ) const
inline

Get material of ARICH master volume.

Returns
material of master volume

Definition at line 144 of file ARICHGeoMasterVolume.h.

144{return m_material;}
std::string m_material
material of ARICH master volume

◆ getName()

const std::string & getName ( ) const
inlineinherited

Returns object name.

Returns
object name

Definition at line 49 of file ARICHGeoBase.h.

49{return m_name;}
std::string m_name
geometry object name
Definition: ARICHGeoBase.h:82

◆ getOuterRadius()

double getOuterRadius ( ) const
inline

Get ARICH master volume outer radius.

Returns
master volume outer radius

Definition at line 132 of file ARICHGeoMasterVolume.h.

132{return m_outerR / s_unit;};
double m_outerR
tube outer radius

◆ getPosition()

ROOT::Math::XYZVector getPosition ( ) const
inline

Get position of ARICH master volume center point in global Belle II coordinates.

Returns
center point of ARICH volume

Definition at line 88 of file ARICHGeoMasterVolume.h.

88{return ROOT::Math::XYZVector(m_x / s_unit, m_y / s_unit, m_z / s_unit);}

◆ getRotation()

ROOT::Math::Rotation3D getRotation ( ) const
inline

Get rotation matrix of ARICH master volume in global Belle II coordinates.

Returns
rotation matrix of ARICH master volume

Definition at line 94 of file ARICHGeoMasterVolume.h.

95 {
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;
101 return rot;
102 }
double m_ry
rotation around y-axis
double m_rz
rotation around z-axis
double m_rx
rotation around x-axis

◆ getRotationX()

double getRotationX ( ) const
inline

Get angle of rotation around X axis.

Returns
rotation angle arounx X axis

Definition at line 108 of file ARICHGeoMasterVolume.h.

108{return m_rx;}

◆ getRotationY()

double getRotationY ( ) const
inline

Get angle of rotation around Y axis.

Returns
rotation angle arounx Y axis

Definition at line 114 of file ARICHGeoMasterVolume.h.

114{return m_ry;}

◆ getRotationZ()

double getRotationZ ( ) const
inline

Get angle of rotation around Z axis.

Returns
rotation angle arounx Z axis

Definition at line 120 of file ARICHGeoMasterVolume.h.

120{return m_rz;}

◆ isConsistent()

bool isConsistent ( ) const
overridevirtual

Check of geometry parameters consistency.

Returns
true if consistent

Reimplemented from ARICHGeoBase.

Definition at line 57 of file ARICHGeoMasterVolume.cc.

58{
59 if (m_innerR > m_outerR) return false;
60 if (m_length <= 0 || m_innerR < 0) return false;
61 if (m_material.empty()) return false;
62 return true;
63}

◆ momentumToGlobal()

ROOT::Math::XYZVector momentumToGlobal ( const ROOT::Math::XYZVector &  momentum) const

Rotate local momentum into global Belle II coordinate system.

Parameters
momentummomentum vector to be rotated
Returns
rotated momentum vector

Definition at line 22 of file ARICHGeoMasterVolume.cc.

23{
24 return (*m_rotation) * momentum;
25}
ROOT::Math::Rotation3D * m_rotation
rotation matrix of ARICH master volume

◆ momentumToLocal()

ROOT::Math::XYZVector momentumToLocal ( const ROOT::Math::XYZVector &  momentum) const

Rotate global point into ARICH reference system via inverse rotation.

Parameters
momentummomentum vector to be rotated
Returns
rotated momentum vector

Definition at line 32 of file ARICHGeoMasterVolume.cc.

33{
34 return (*m_rotationInverse) * momentum;
35}
ROOT::Math::Rotation3D * m_rotationInverse
inverse rotation matrix of ARICH master volume

◆ pointToGlobal()

ROOT::Math::XYZVector pointToGlobal ( const ROOT::Math::XYZVector &  point) const

Transform local point into global Belle II coordinate system via rotation and translation.

Parameters
pointpoint to be transformed
Returns
transformed point

Definition at line 17 of file ARICHGeoMasterVolume.cc.

18{
19 return (*m_rotation) * point + (*m_translation);
20}

◆ pointToLocal()

ROOT::Math::XYZVector pointToLocal ( const ROOT::Math::XYZVector &  point) const

Transform global point into ARICH reference system via inverse rotation and translation.

Parameters
pointpoint to be transformed
Returns
transformed point

Definition at line 27 of file ARICHGeoMasterVolume.cc.

28{
29 return (*m_rotationInverse) * (point - (*m_translation));
30}

◆ print()

void print ( const std::string &  title = "ARICH Master Volume geometry parameters") const
overridevirtual

Print the content of the class.

Parameters
titletitle to be printed

Reimplemented from ARICHGeoBase.

Definition at line 66 of file ARICHGeoMasterVolume.cc.

67{
69
70 cout << " Tube inner radius: " << getInnerRadius() << " " << s_unitName << endl;
71 cout << " Tube outer radius: " << getOuterRadius() << " " << s_unitName << endl;
72 cout << " Tube length: " << getLength() << " " << s_unitName << endl;
73
74 cout << "Positioning parameters (in Belle II global frame)" << endl;
76
77}
virtual void printPlacement(double x, double y, double z, double rx, double ry, double rz) const
Print volume positioning parameters.
Definition: ARICHGeoBase.cc:25
virtual void print(const std::string &title) const
Print the content of the class.
Definition: ARICHGeoBase.cc:20
static std::string s_unitName
conversion unit name
Definition: ARICHGeoBase.h:84
double getOuterRadius() const
Get ARICH master volume outer radius.
double getInnerRadius() const
Get ARICH master volume inner radius.
double getLength() const
Get ARICH master volume length.

◆ printPlacement()

void printPlacement ( double  x,
double  y,
double  z,
double  rx,
double  ry,
double  rz 
) const
virtualinherited

Print volume positioning parameters.

Parameters
xx position
yy position
zz position
rxrotation around x-axis
ryrotation around y-axis
rzrotation around z-axis

Definition at line 25 of file ARICHGeoBase.cc.

26{
27// cout << "Volume positioning information (inside local ARICH frame)" << endl;
28 cout << " Center position; x: " << x << " " << s_unitName << ", y: " << y << " " << s_unitName << ", z: " << z << " " << s_unitName
29 << endl;
30 cout << " Rotations; x-axis: " << rx << " y-axis: " << ry << " z-axis: " << rz << " (in rad)" << endl;
31}

◆ printSurface()

void printSurface ( const GeoOpticalSurface surface) const
virtualinherited

Print the content of optical surface.

Parameters
surfaceoptical surface parameters

Definition at line 32 of file ARICHGeoBase.cc.

33{
34 cout << " Optical surface: ";
35 if (surface.getName().empty() and !surface.hasProperties()) {
36 cout << "not defined" << endl;
37 return;
38 }
39 cout << surface.getName();
40 cout << ", model: " << surface.getModel();
41 cout << ", finish: " << surface.getFinish();
42 cout << ", type: " << surface.getType();
43 cout << ", value: " << surface.getValue();
44 cout << endl;
45 if (surface.hasProperties()) {
46 for (const auto& property : surface.getProperties()) {
47 cout << " - property: ";
48 cout << property.getName() << " [";
49 for (const auto& value : property.getValues()) cout << value << ", ";
50 cout << "], @[";
51 for (const auto& value : property.getEnergies()) cout << value / Unit::eV << ", ";
52 cout << "] eV" << endl;
53 }
54 } else {
55 cout << " - properties: None" << endl;
56 }
57
58}
const std::string & getName() const
get name of the optical surface
int getFinish() const
get finish of the surface
const std::vector< GeoMaterialProperty > & getProperties() const
get all properties
double getValue() const
get value for the surface condition
int getType() const
get type of the surface
bool hasProperties() const
check if the material has at least one property
int getModel() const
get model for the surface
static const double eV
[electronvolt]
Definition: Unit.h:112

◆ setName()

void setName ( const std::string &  name)
inlineinherited

Sets object name.

Parameters
nameobject name

Definition at line 43 of file ARICHGeoBase.h.

43{m_name = name;}

◆ setPlacement()

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.

Parameters
xx position
yy position
zz position
rxrotation around x-axis
ryrotation around y-axis
rzrotation around z-axis

Definition at line 37 of file ARICHGeoMasterVolume.cc.

38{
39
40 m_x = x; m_y = y; m_z = z; m_rx = rx; m_ry = ry; m_rz = rz;
41
42 ROOT::Math::XYZVector translation(x, y, z);
43
44 m_rotation = new ROOT::Math::Rotation3D();
45 ROOT::Math::RotationX rotX(m_rx);
46 ROOT::Math::RotationY rotY(m_ry);
47 ROOT::Math::RotationZ rotZ(m_rz);
48 (*m_rotation) *= rotZ * rotY * rotX;
49
50 m_rotationInverse = new ROOT::Math::Rotation3D(m_rotation->Inverse());
51 m_translation = new ROOT::Math::XYZVector(x, y, z);
52
53}
ROOT::Math::XYZVector * m_translation
position of ARICH master volume center point

◆ setVolume()

void setVolume ( double  innerR,
double  outerR,
double  length,
const std::string &  material 
)
inline

Sets parameters of ARICH master volume.

Parameters
innerRinner radius of ARICH tube
outerRouter radius of ARICH tube
lengthlength radius of ARICH tube
materialmaterial

Definition at line 82 of file ARICHGeoMasterVolume.h.

82{m_innerR = innerR; m_outerR = outerR; m_length = length; m_material = material;};

Member Data Documentation

◆ m_innerR

double m_innerR = 0
private

tube inner radius

Definition at line 186 of file ARICHGeoMasterVolume.h.

◆ m_length

double m_length = 0
private

tube length

Definition at line 188 of file ARICHGeoMasterVolume.h.

◆ m_material

std::string m_material
private

material of ARICH master volume

Definition at line 190 of file ARICHGeoMasterVolume.h.

◆ m_name

std::string m_name
protectedinherited

geometry object name

Definition at line 82 of file ARICHGeoBase.h.

◆ m_outerR

double m_outerR = 0
private

tube outer radius

Definition at line 187 of file ARICHGeoMasterVolume.h.

◆ m_rotation

ROOT::Math::Rotation3D* m_rotation = nullptr
mutableprivate

rotation matrix of ARICH master volume

Definition at line 192 of file ARICHGeoMasterVolume.h.

◆ m_rotationInverse

ROOT::Math::Rotation3D* m_rotationInverse = nullptr
mutableprivate

inverse rotation matrix of ARICH master volume

Definition at line 193 of file ARICHGeoMasterVolume.h.

◆ m_rx

double m_rx = 0
private

rotation around x-axis

Definition at line 182 of file ARICHGeoMasterVolume.h.

◆ m_ry

double m_ry = 0
private

rotation around y-axis

Definition at line 183 of file ARICHGeoMasterVolume.h.

◆ m_rz

double m_rz = 0
private

rotation around z-axis

Definition at line 184 of file ARICHGeoMasterVolume.h.

◆ m_translation

ROOT::Math::XYZVector* m_translation = nullptr
mutableprivate

position of ARICH master volume center point

Definition at line 194 of file ARICHGeoMasterVolume.h.

◆ m_x

double m_x = 0
private

x position

Definition at line 177 of file ARICHGeoMasterVolume.h.

◆ m_y

double m_y = 0
private

y position

Definition at line 178 of file ARICHGeoMasterVolume.h.

◆ m_z

double m_z = 0
private

z position

Definition at line 179 of file ARICHGeoMasterVolume.h.

◆ s_unit

double s_unit = Unit::cm
staticprotectedinherited

conversion unit for length

Definition at line 83 of file ARICHGeoBase.h.

◆ s_unitName

std::string s_unitName
staticprotectedinherited

conversion unit name

Definition at line 84 of file ARICHGeoBase.h.


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