11#include <framework/logging/Logger.h>
12#include <arich/dbobjects/ARICHGeoBase.h>
14#include <Math/Vector3D.h>
15#include <Math/Rotation3D.h>
16#include <Math/RotationX.h>
17#include <Math/RotationY.h>
18#include <Math/RotationZ.h>
51 void print(
const std::string& title =
"Detector plane parameters")
const override;
71 void addSupportPlate(
double inR,
double outR,
double thick,
const std::string& material)
113 void setRingPar(
const std::vector<std::pair<double, double>>& ringPar);
127 ROOT::Math::Rotation3D rot;
128 ROOT::Math::RotationX rotX(
m_rx);
129 ROOT::Math::RotationY rotY(
m_ry);
130 ROOT::Math::RotationZ rotZ(
m_rz);
131 rot *= rotZ * rotY * rotX;
208 double getRingR(
unsigned iRing)
const {
if (iRing == 0 || iRing >
m_nRings) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ring number!");
return m_ringPar[iRing - 1].first /
s_unit;}
215 double getRingDPhi(
unsigned iRing)
const {
if (iRing == 0 || iRing >
m_nRings) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ring number!");
return m_ringPar[iRing - 1].second;}
222 double getSlotR(
unsigned modID)
const {
if (modID == 0 || modID >
m_nSlots) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ID number!");
return m_slotPar[modID - 1].first /
s_unit;};
229 double getSlotPhi(
unsigned modID)
const {
if (modID == 0 || modID >
m_nSlots) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ID number!");
return m_slotPar[modID - 1].second;};
265 unsigned getSlotIDFromSRF(
unsigned sector,
unsigned ring,
unsigned azimuth)
const;
Base class for geometry parameters.
static double s_unit
conversion unit for length
Geometry parameters of ARICH photon detector plane.
unsigned getNSlots() const
Get total number of module slots.
void setModuleHoleSize(double hsize)
Set size of module hole in support plate.
unsigned getSlotRing(unsigned slotID) const
Get ring number of slot with slot ID.
bool isConsistent() const override
Check if parameters are consistent.
double m_supportZPosition
Z position of support plate (position of center of support tube, with Z length of: support plate thic...
double getSupportBackWallHeight() const
Get height of the aluminum walls between modules on the electronics side of aluminum support plate.
double getSlotR(unsigned modID) const
Get radial position of module with given module ID number.
double getSupportBackWallThickness() const
Get thickness of aluminum walls between modules on the electronics side of aluminum support plate.
double m_innerR
inner radius of support plate
double getSupportThickness() const
Get support plate thickness.
unsigned getNRings() const
Get number of module slot rings.
double getSupportOuterR() const
Get support plate outer radius.
void setRingPar(const std::vector< std::pair< double, double > > &ringPar)
Set parameters of module slot rings (r of center of slots in ring, phi (angle) distance between modul...
void setSupportBackWallHeight(double h)
Set height of the aluminum walls between modules on the electronics side of aluminum support plate.
double m_moduleHoleSize
size of module hole in support plate
unsigned pointSlotID(double x, double y) const
Get slot ID based on x-y coordinates.
ARICHGeoDetectorPlane()
Default constructor.
double getSupportZPosition() const
Get Z position of support plate (start point in Z).
double m_ry
rotation around y axis
std::string m_supportMaterial
support structure material
void addSupportPlate(double inR, double outR, double thick, const std::string &material)
Set parameters of the support plate.
void print(const std::string &title="Detector plane parameters") const override
Print the content of the class.
double getRingDPhi(unsigned iRing) const
Get phi (angle) distance between module slots in i-th ring.
ROOT::Math::Rotation3D getRotation() const
Get rotation matrix.
double m_x
x position in local ARICH volume
double getRotationY() const
Get angle of rotation around Y axis.
double getRotationZ() const
Get angle of rotation around Z axis.
double getSlotPhi(unsigned modID) const
Get phi (angle) position of module with given module ID number.
double m_thickness
thickness of support plate
double getModuleHoleSize() const
Get size of module hole in support plate.
std::vector< std::pair< double, double > > m_slotPar
parameters of all module slots (radius, phi)
ClassDefOverride(ARICHGeoDetectorPlane, 1)
ClassDef.
void setSupportZPosition(double zPosition)
Set Z position of the aluminum support plate (start Z).
const std::string & getSupportMaterial() const
Get material of support plate.
std::vector< std::pair< double, double > > m_ringPar
parameters of module rings (radius, dPhi)
unsigned m_nSlots
number of HAPD module slots
double m_supportBackWallThickness
< thickness of aluminum walls on the back side (electronics side) of support plate
double m_outerR
outer radius of support plate
void setSupportBackWallThickness(double d)
Set thickness of the aluminum walls between modules on the electronics side of the aluminum support p...
ROOT::Math::XYZVector getPosition() const
Get center point.
double getSupportInnerR() const
Get support plate inner radius.
unsigned m_nRings
number of HAPD module rings
double m_z
z position in local ARICH volume (position of center of detector plane tube, with Z length of: module...
void setPlacement(double x, double y, double z, double rx, double ry, double rz)
Set detector plane positioning within ARICH local volume.
double m_rz
rotation around z axis
double m_y
y position in local ARICH volume
unsigned getSlotIDFromSRF(unsigned sector, unsigned ring, unsigned azimuth) const
Get slot ID based on sector, ring, and azimuth.
double getRingR(unsigned iRing) const
Get radius of i-th module slot ring (radius of center point).
double m_rx
rotation around x axis
double m_supportBackWallHeight
height of aluminum walls on the back side (electronics side) of support plate
double getRotationX() const
Get angle of rotation around X axis.
Abstract base class for different kinds of events.