11 #include <framework/logging/Logger.h>
12 #include <arich/dbobjects/ARICHGeoBase.h>
15 #include <TRotation.h>
48 void print(
const std::string& title =
"Detector plane parameters")
const override;
68 void addSupportPlate(
double inR,
double outR,
double thick,
const std::string& material)
106 void setRingPar(
const std::vector<std::pair<double, double>>& ringPar);
198 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;}
205 double getRingDPhi(
unsigned iRing)
const {
if (iRing == 0 || iRing >
m_nRings) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ring number!");
return m_ringPar[iRing - 1].second;}
212 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;};
219 double getSlotPhi(
unsigned modID)
const {
if (modID == 0 || modID >
m_nSlots) B2ERROR(
"ARICHGeoDetectorPlane: invalid module ID number!");
return m_slotPar[modID - 1].second;};
240 unsigned pointSlotID(
double x,
double y)
const;
242 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 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
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.
TRotation getRotation() const
Get rotation matrix.
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.
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.
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...
std::vector< std::pair< double, double > > m_slotPar
parameters of all module slots (radius, phi)
const std::string & getSupportMaterial() const
Get material of support plate.
ClassDefOverride(ARICHGeoDetectorPlane, 1)
ClassDef.
void setSupportZPosition(double zPosition)
Set Z position of the aluminum support plate (start Z)
TVector3 getPosition() const
Get center point.
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...
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
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.