 |
Belle II Software
release-05-01-25
|
12 #include <framework/logging/Logger.h>
14 #include <arich/dbobjects/ARICHGeoBase.h>
17 #include <TRotation.h>
29 class ARICHGeoAerogelPlane:
public ARICHGeoBase {
74 void print(
const std::string& title =
"Aerogel plane parameters:")
const override;
94 void addSupportPlate(
double inR,
double outR,
double thick,
const std::string& material)
130 void addTileParameters(
int ring,
int column,
int layerN,
double n,
double transmL,
double thick,
const std::string& material)
132 m_tiles.push_back({ ring, column, layerN, n, transmL, thick, material });
232 void setAerogelLayer(
unsigned ilayer,
double thick,
double rIndex,
double trLen, std::string& material)
235 m_layers.push_back({thick, rIndex, trLen, material});
238 m_layers[ilayer - 1] = {thick, rIndex, trLen, material};
239 }
else B2ERROR(
"ARICHGeoAerogelPlane::setAerogelLayer: please set aerogel layers in consecutive order!");
265 double getRingRadius(
unsigned iRing)
const {
if (iRing >
m_rSize || iRing == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid ring number!");
return m_r[iRing - 1] /
s_unit;}
272 double getRingDPhi(
unsigned iRing)
const {
if (iRing >
m_rSize || iRing == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid ring number!");
return m_dPhi[iRing - 1];}
279 double getLayerThickness(
unsigned iLayer)
const {
if (iLayer >
m_nLayers || iLayer == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid aerogel layer number!");
return m_layers[iLayer - 1].thickness /
s_unit;}
286 double getLayerRefIndex(
unsigned iLayer)
const {
if (iLayer >
m_nLayers || iLayer == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid aerogel layer number!");
return m_layers[iLayer - 1].refIndex;}
293 double getLayerTrLength(
unsigned iLayer)
const {
if (iLayer >
m_nLayers || iLayer == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid aerogel layer number!");
return m_layers[iLayer - 1].trLength /
s_unit;}
300 const std::string&
getLayerMaterial(
unsigned iLayer)
const {
if (iLayer >
m_nLayers || iLayer == 0) B2ERROR(
"ARICHGeoAerogelPlane: invalid aerogel layer number!");
return m_layers[iLayer - 1].material;}
315 void setSimple(std::vector<double>& params)
317 if (params.size() != 5) B2ERROR(
"ARICHGeoAerogelPlane:setSimple: 5 parameters are needed for simple configuration!");
319 m_simpleParams = params;
337 return m_simpleParams;
391 unsigned getTileParameters(
int ring,
int column,
int layerN,
double& n,
double& transmL,
double& thick,
392 std::string& material)
const;
516 std::vector<double> m_simpleParams;
double m_rz
rotation around z-axis
bool isSimple() const
Use simple aerogel configuration.
double getRotationY() const
Get angle of rotation around Y axis.
double getRotationZ() const
Get angle of rotation around Z axis.
double m_rx
rotation around x-axis
std::vector< double > m_r
"r" aluminum wall radiuses
double m_outerR
outer radius of support plate
void setWallThickness(double thick)
Set thickness of aluminum walls between aerogel tiles.
std::vector< layer > m_layers
parameters averaged properties of the aerogel tiles/layers (up and down)
double getWallThickness() const
Get thickness of aluminum walls between aerogel tiles.
double m_wallHeight
height (z) of aluminum walls between aerogel tiles
double m_innerR
inner radius of support plate
double m_wallThickness
thickness of aluminum walls between aerogel tiles
void setPlacement(double x, double y, double z, double rx, double ry, double rz)
Set aerogel plane positioning within ARICH local volume.
double m_thickness
thickness of support plate
int m_fullAerogelMaterialDescriptionKey
Full aerogel material description key : 1 - use material explicitly for each aerogel tile,...
double getLayerTrLength(unsigned iLayer) const
Get transmission length of tiles i-th aerogel layer.
std::vector< int > m_nAeroSlotsIndividualRing
Number of aerogel slots in individual ring.
unsigned m_dPhiSize
size of m_dPhi vector
TVector3 getPosition() const
get position vector of aerogel plane in ARICH local frame
double getRingRadius(unsigned iRing) const
Get radius of i-th aluminum ring between aerogel tiles (inner radius of ring)
double m_imgTubeThickness
imaginary tube thikness just after aerogel layers used as volume to which tracks are extrapolated
double getTileThickness(int ring, int column, int layerN) const
Get thickness of individual tile.
unsigned getNLayers() const
Get number of aerogel layers.
void setTileGap(double gap)
Set gap between aerogel tile and aluminum wall.
void printTileParameters(const std::string &title="Aerogel tiles parameters:") const
Print the content of the m_tiles vector of tilestr structure it contains position of the tile its ref...
double getAerogelZPosition() const
Get starting Z position of first aerogel layer.
void print(const std::string &title="Aerogel plane parameters:") const override
Print the content of the class.
void addTileParameters(int ring, int column, int layerN, double n, double transmL, double thick, const std::string &material)
Add parameters of individual tile.
double getRotationX() const
Get angle of rotation around X axis.
int getFullAerogelMaterialDescriptionKey() const
Get full aerogel material description key.
void setCompensationARICHairVolumeThick_min(double compensationARICHairVolumeThick_min)
Set minimum thickness of the compensation volume with ARICH air.
std::string m_supportMaterial
material of support plate
double getSupportInnerR() const
Get support plate inner radius.
bool isConsistent() const override
Consistency check of geometry parameters.
std::vector< tilestr > m_tiles
parameters of the individual aerogel tiles
void setAerogelLayer(unsigned ilayer, double thick, double rIndex, double trLen, std::string &material)
Set parameters of i-th aerogel layer.
double getImgTubeThickness() const
Get imaginary tube thikness just after aerogel layers used as volume to which tracks are extrapolated...
double getTileGap() const
Get gap between aerogel tile and aluminum wall.
double m_compensationARICHairVolumeThick_min
Minimum thickness of the compensation volume with ARICH air.
double getMaximumTotalTileThickness() const
Get maximum total thickness of the aerogel tiles tile_up + tile_down for all the slots.
unsigned m_nLayers
number of aerogel tile layers
double getSupportOuterR() const
Get support plate outer radius.
static double s_unit
conversion unit for length
unsigned getAerogelTileID(double x, double y) const
Get ID of aerogel tile containing point (x,y) (actually this is tile slot ID, as it is the same for a...
void addSupportPlate(double inR, double outR, double thick, const std::string &material)
Set parameters of aerogel support plate.
Abstract base class for different kinds of events.
unsigned m_rSize
size of m_r vector
void printSingleTileParameters(unsigned i) const
Print the content of the single tilestr structure it contains position of the tile its refractive ind...
ARICHGeoAerogelPlane()
Default constructor.
TRotation getRotation() const
get rotation matrix of aerogel plane in ARICH local frame
double getTotalTileThickness(int ring, int column) const
Get total thickness of the aerogel tiles tile_up + tile_down for a given slot.
double getSupportThickness() const
Get support plate thickness.
unsigned getTileParameters(int ring, int column, int layerN, double &n, double &transmL, double &thick, std::string &material) const
Get parameters of individual tile.
unsigned getNRings() const
Get number of aluminum wall rings (should be number of tile rings + 1)
double getLayerRefIndex(unsigned iLayer) const
Get refractive index of tiles i-th aerogel layer.
void setImgTubeThickness(double imgTubeThickness)
Set imaginary tube thikness just after aerogel layers used as volume to which tracks are extrapolated...
double m_tileGap
gap between aerogel tiles and aluminum walls
void setWallHeight(double height)
Set height of aluminum walls between aerogel tiles.
const std::vector< int > & getNAeroSlotsIndividualRing() const
Get vector of numbers of aerogel slots in individual ring.
void setFullAerogelMaterialDescriptionKey(int fullAerogelMaterialDescriptionKey)
Set full aerogel material description key.
void setSimple(std::vector< double > ¶ms)
Set to use simple aerogel plane (single square aerogel tile (2 layers), for cosmic test for example) ...
void testGetTileParametersFunction() const
This function tests the getTileParameters function.
Geometry parameters of HAPD.
const std::string & getLayerMaterial(unsigned iLayer) const
Get material name of tiles i-th aerogel layer.
double getLayerThickness(unsigned iLayer) const
Get thickness of tiles i-th aerogel layer.
double getWallHeight() const
Get height of aluminum walls between aerogel tiles.
ClassDefOverride(ARICHGeoAerogelPlane, 3)
ClassDef.
double getRingDPhi(unsigned iRing) const
Get phi (angle) distance between "phi" aluminum wall between aerogel tiles in i-th tile ring.
std::string getTileMaterialName(int ring, int column, int layerN) const
Get material name of individual tile.
double m_ry
rotation around y-axis
void setWallRadius(std::vector< double > &rs)
Set radiuses at which "r" aluminum walls between tiles are placed (+inner+outter aluminum ring)
Struct to hold aerogel layer parameters Only for averaged properties of the aerogel tiles/layers.
std::vector< double > m_dPhi
"phi" aluminum wall distances in tile ring
void setWallDPhi(std::vector< double > &dphi)
Set phi (angle) distance between "phi" aluminum walls between aerogel tiles for all aerogel tile ring...
const std::string & getSupportMaterial() const
Get material of support plate.
double getCompensationARICHairVolumeThick_min() const
Get minimum thickness of the compensation volume with ARICH air.
void setNAeroSlotsIndividualRing(const std::vector< int > &nAeroSlotsIndividualRing)
Set vector of numbers of aerogel slots in individual ring.
const std::vector< double > & getSimpleParams() const
Get parameters of simple aerogel configuration.