Belle II Software  release-05-01-25
ARICHGeoMasterVolume.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2016 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Luka Santelj *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 
13 #include <arich/dbobjects/ARICHGeoBase.h>
14 #include <string>
15 #include <TVector3.h>
16 #include <TRotation.h>
17 
18 namespace Belle2 {
30  class ARICHGeoMasterVolume: public ARICHGeoBase {
31 
32  public:
33 
38  {}
39 
44  {
45  /*if(m_rotation) delete m_rotation;
46  if(m_rotationInverse) delete m_rotationInverse;
47  if(m_translation) delete m_translation;
48  */
49  }
50 
55  bool isConsistent() const override;
56 
61  void print(const std::string& title = "ARICH Master Volume geometry parameters") const override;
62 
72  void setPlacement(double x, double y, double z, double rx, double ry, double rz);
73 
81  void setVolume(double innerR, double outerR, double length, const std::string& material) {m_innerR = innerR; m_outerR = outerR; m_length = length; m_material = material;};
82 
87  TVector3 getPosition() const {return TVector3(m_x / s_unit, m_y / s_unit, m_z / s_unit);}
88 
93  TRotation getRotation() const
94  {
95  TRotation rot;
96  rot.RotateX(m_rx).RotateY(m_ry).RotateZ(m_rz);
97  return rot;
98  }
99 
104  double getRotationX() const {return m_rx;}
105 
110  double getRotationY() const {return m_ry;}
111 
116  double getRotationZ() const {return m_rz;}
117 
122  double getInnerRadius() const {return m_innerR / s_unit;};
123 
128  double getOuterRadius() const {return m_outerR / s_unit;};
129 
134  double getLength() const {return m_length / s_unit;};
135 
140  const std::string& getMaterial() const {return m_material;}
141 
142  TVector3 pointToGlobal(const TVector3& point) const;
143  TVector3 momentumToGlobal(const TVector3& momentum) const;
144  TVector3 pointToLocal(const TVector3& point) const;
145  TVector3 momentumToLocal(const TVector3& momentum) const;
146 
147 
148  private:
149  // position in global BelleII frame
150  double m_x = 0;
151  double m_y = 0;
152  double m_z = 0;
154  // rotations in global BelleII frame
155  double m_rx = 0;
156  double m_ry = 0;
157  double m_rz = 0;
159  double m_innerR = 0;
160  double m_outerR = 0;
161  double m_length = 0;
163  std::string m_material;
164 
165  mutable TRotation* m_rotation = 0 ;
166  mutable TRotation* m_rotationInverse = 0;
167  mutable TVector3* m_translation = 0;
168 
171  };
172 
174 } // end namespace Belle2
Belle2::ARICHGeoMasterVolume::getMaterial
const std::string & getMaterial() const
Get material of ARICH master volume.
Definition: ARICHGeoMasterVolume.h:148
Belle2::ARICHGeoMasterVolume::isConsistent
bool isConsistent() const override
Check of geometry parameters consistency.
Definition: ARICHGeoMasterVolume.cc:58
Belle2::ARICHGeoMasterVolume::getOuterRadius
double getOuterRadius() const
Get ARICH master volume outer radius.
Definition: ARICHGeoMasterVolume.h:136
Belle2::ARICHGeoMasterVolume::getRotationX
double getRotationX() const
Get angle of rotation around X axis.
Definition: ARICHGeoMasterVolume.h:112
Belle2::ARICHGeoMasterVolume::m_rz
double m_rz
rotation around z-axis
Definition: ARICHGeoMasterVolume.h:165
Belle2::ARICHGeoMasterVolume::~ARICHGeoMasterVolume
~ARICHGeoMasterVolume()
Destructor.
Definition: ARICHGeoMasterVolume.h:51
Belle2::ARICHGeoMasterVolume::m_length
double m_length
tube length
Definition: ARICHGeoMasterVolume.h:169
Belle2::ARICHGeoMasterVolume::getRotationY
double getRotationY() const
Get angle of rotation around Y axis.
Definition: ARICHGeoMasterVolume.h:118
Belle2::ARICHGeoMasterVolume::getRotation
TRotation getRotation() const
Get rotation matrix of ARICH master volume in global Belle II coordinates.
Definition: ARICHGeoMasterVolume.h:101
Belle2::ARICHGeoMasterVolume::getRotationZ
double getRotationZ() const
Get angle of rotation around Z axis.
Definition: ARICHGeoMasterVolume.h:124
Belle2::ARICHGeoMasterVolume::m_x
double m_x
x position
Definition: ARICHGeoMasterVolume.h:158
Belle2::ARICHGeoMasterVolume::getPosition
TVector3 getPosition() const
Get position of ARICH master volume center point in global Belle II coordinates.
Definition: ARICHGeoMasterVolume.h:95
Belle2::ARICHGeoMasterVolume::getLength
double getLength() const
Get ARICH master volume length.
Definition: ARICHGeoMasterVolume.h:142
Belle2::ARICHGeoBase::s_unit
static double s_unit
conversion unit for length
Definition: ARICHGeoBase.h:93
Belle2::ARICHGeoMasterVolume::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.
Definition: ARICHGeoMasterVolume.cc:39
Belle2::ARICHGeoMasterVolume::m_y
double m_y
y position
Definition: ARICHGeoMasterVolume.h:159
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ARICHGeoMasterVolume::setVolume
void setVolume(double innerR, double outerR, double length, const std::string &material)
Sets parameters of ARICH master volume.
Definition: ARICHGeoMasterVolume.h:89
Belle2::ARICHGeoMasterVolume::ClassDefOverride
ClassDefOverride(ARICHGeoMasterVolume, 1)
ClassDef.
Belle2::ARICHGeoMasterVolume::getInnerRadius
double getInnerRadius() const
Get ARICH master volume inner radius.
Definition: ARICHGeoMasterVolume.h:130
Belle2::ARICHGeoMasterVolume::m_rx
double m_rx
rotation around x-axis
Definition: ARICHGeoMasterVolume.h:163
Belle2::ARICHGeoMasterVolume::ARICHGeoMasterVolume
ARICHGeoMasterVolume()
Default constructor.
Definition: ARICHGeoMasterVolume.h:45
Belle2::ARICHGeoMasterVolume
Geometry parameters of ARICH Master volume (envelope)
Definition: ARICHGeoMasterVolume.h:38
Belle2::ARICHGeoMasterVolume::m_outerR
double m_outerR
tube outer radius
Definition: ARICHGeoMasterVolume.h:168
Belle2::ARICHGeoMasterVolume::m_z
double m_z
z position
Definition: ARICHGeoMasterVolume.h:160
Belle2::ARICHGeoMasterVolume::print
void print(const std::string &title="ARICH Master Volume geometry parameters") const override
Print the content of the class.
Definition: ARICHGeoMasterVolume.cc:67
Belle2::ARICHGeoMasterVolume::m_innerR
double m_innerR
tube inner radius
Definition: ARICHGeoMasterVolume.h:167
Belle2::ARICHGeoMasterVolume::m_ry
double m_ry
rotation around y-axis
Definition: ARICHGeoMasterVolume.h:164