Belle II Software  release-05-01-25
ARICHGeoHAPD.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 <geometry/dbobjects/GeoOpticalSurface.h>
15 #include <string>
16 
17 namespace Belle2 {
26  class ARICHGeoHAPD: public ARICHGeoBase {
27 
28  public:
29 
33  ARICHGeoHAPD()
34  {}
35 
40  void setWallThickness(double thickness) {m_wallThickness = thickness;}
41 
46  void setWinThickness(double thickness) {m_winThickness = thickness;}
47 
52  void setPadSize(double padSize) {m_padSize = padSize;}
53 
58  void setChipGap(double chipGap) {m_chipGap = chipGap;}
59 
65  void setNPads(int nx, int ny) {m_nPadX = nx; m_nPadY = ny; }
66 
71  void setWinRefIndex(double refInd) {m_winRefIndex = refInd;}
72 
77  void setModuleSizeZ(double modZ) {m_moduleSizeZ = modZ;}
78 
83  void setWallMaterial(const std::string& material) {m_wallMaterial = material;}
84 
89  void setWinMaterial(const std::string& material) {m_winMaterial = material;}
90 
95  void setAPDMaterial(const std::string& material) {m_apdMaterial = material;}
96 
101  void setFEBMaterial(const std::string& material) {m_febMaterial = material;}
102 
107  void setFillMaterial(const std::string& material) {m_fillMaterial = material;}
108 
116  void setFEBVolume(double sizeX, double sizeY, double sizeZ,
117  const std::string& material)
118  {
119  m_FEBSizeX = sizeX;
120  m_FEBSizeY = sizeY;
121  m_FEBSizeZ = sizeZ;
122  m_febMaterial = material;
123  }
124 
133  void setAPDVolume(double sizeX, double sizeY, double sizeZ,
134  const std::string& material, const GeoOpticalSurface& surf)
135  {
136  m_APDSizeX = sizeX;
137  m_APDSizeY = sizeY;
138  m_APDSizeZ = sizeZ;
139  m_apdMaterial = material;
140  m_apdSurface = surf;
141  }
142 
150  void setHAPDVolume(double sizeX, double sizeY, double sizeZ,
151  const std::string& material)
152  {
153  m_HAPDSizeX = sizeX;
154  m_HAPDSizeY = sizeY;
155  m_HAPDSizeZ = sizeZ;
156  m_fillMaterial = material;
157  }
158 
159 
164  double getSizeX() const {return m_HAPDSizeX / s_unit;}
165 
170  double getSizeY() const {return m_HAPDSizeY / s_unit;}
171 
176  double getSizeZ() const {return m_HAPDSizeZ / s_unit;}
177 
182  double getWallThickness() const {return m_wallThickness / s_unit;}
183 
188  double getWinThickness() const {return m_winThickness / s_unit;}
189 
194  double getAPDSizeX() const {return m_APDSizeX / s_unit;}
195 
200  double getAPDSizeY() const {return m_APDSizeY / s_unit;}
201 
206  double getAPDSizeZ() const {return m_APDSizeZ / s_unit;}
207 
212  double getFEBSizeX() const {return m_FEBSizeX / s_unit;}
213 
218  double getFEBSizeY() const {return m_FEBSizeY / s_unit;}
219 
224  double getFEBSizeZ() const {return m_FEBSizeZ / s_unit;}
225 
230  double getModuleSizeZ() const {return m_moduleSizeZ / s_unit;}
231 
236  double getWinRefIndex() const {return m_winRefIndex;}
237 
242  double getPadSize() const {return m_padSize / s_unit;}
243 
248  double getChipGap() const {return m_chipGap / s_unit;}
249 
254  unsigned getNumPadsX() const {return m_nPadX;}
255 
260  unsigned getNumPadsY() const {return m_nPadY;}
261 
262 
267  const std::string& getWallMaterial() const {return m_wallMaterial;}
268 
273  const std::string& getFillMaterial() const {return m_fillMaterial;}
274 
279  const std::string& getWinMaterial() const {return m_winMaterial;}
280 
285  const std::string& getAPDMaterial() const {return m_apdMaterial;}
286 
291  const std::string& getFEBMaterial() const {return m_febMaterial;}
292 
297  const GeoOpticalSurface& getAPDSurface() const {return m_apdSurface;}
298 
306  void getXYChannel(double x, double y, int& chX, int& chY) const;
307 
314  unsigned getChipID(double x, double y) const;
315 
323  void getXYChannelPos(int chX, int chY, double& x, double& y) const;
324 
325 
330  double getPhotocathodeApdDistance() const
331  {
333  }
334 
335 
340  bool isConsistent() const override;
341 
346  void print(const std::string& title = "HAPD module geometry parameters") const override;
347 
348  private:
349 
350  std::string m_wallMaterial;
351  std::string m_winMaterial;
352  std::string m_apdMaterial;
353  std::string m_febMaterial;
354  std::string m_fillMaterial;
355  double m_HAPDSizeX = 0;
356  double m_HAPDSizeY = 0;
357  double m_HAPDSizeZ = 0;
358  double m_wallThickness = 0;
359  double m_winThickness = 0;
360  double m_padSize = 0;
361  double m_chipGap = 0;
362  unsigned m_nPadX = 0;
363  unsigned m_nPadY = 0;
364  double m_winRefIndex = 0;
365  double m_APDSizeX = 0;
366  double m_APDSizeY = 0;
367  double m_APDSizeZ = 0;
368  double m_FEBSizeX = 0;
369  double m_FEBSizeY = 0;
370  double m_FEBSizeZ = 0;
371  double m_moduleSizeZ = 0;
376  };
377 
379 } // end namespace Belle2
Belle2::ARICHGeoHAPD::getChipGap
double getChipGap() const
Returns gap between APD chips.
Definition: ARICHGeoHAPD.h:256
Belle2::ARICHGeoHAPD::getFillMaterial
const std::string & getFillMaterial() const
Returns fill (inside) material name.
Definition: ARICHGeoHAPD.h:281
Belle2::ARICHGeoHAPD::getAPDSurface
const GeoOpticalSurface & getAPDSurface() const
Returns APD reflective optical surface.
Definition: ARICHGeoHAPD.h:305
Belle2::ARICHGeoHAPD::m_moduleSizeZ
double m_moduleSizeZ
HAPD module Z size (HAPD + FEB height)
Definition: ARICHGeoHAPD.h:379
Belle2::ARICHGeoHAPD::m_HAPDSizeY
double m_HAPDSizeY
HAPD Y size.
Definition: ARICHGeoHAPD.h:364
Belle2::ARICHGeoHAPD::m_febMaterial
std::string m_febMaterial
material of FEB
Definition: ARICHGeoHAPD.h:361
Belle2::ARICHGeoHAPD::getChipID
unsigned getChipID(double x, double y) const
Returns APD chip ID from from local x,y position.
Definition: ARICHGeoHAPD.cc:47
Belle2::ARICHGeoHAPD::m_HAPDSizeZ
double m_HAPDSizeZ
HAPD Z size.
Definition: ARICHGeoHAPD.h:365
Belle2::ARICHGeoHAPD::m_apdMaterial
std::string m_apdMaterial
material of APD chips
Definition: ARICHGeoHAPD.h:360
Belle2::ARICHGeoHAPD::m_apdSurface
GeoOpticalSurface m_apdSurface
optical surface of APD (for reflectivity)
Definition: ARICHGeoHAPD.h:380
Belle2::ARICHGeoHAPD::ARICHGeoHAPD
ARICHGeoHAPD()
Default constructor.
Definition: ARICHGeoHAPD.h:41
Belle2::ARICHGeoHAPD::setFEBMaterial
void setFEBMaterial(const std::string &material)
Sets FEB material.
Definition: ARICHGeoHAPD.h:109
Belle2::ARICHGeoHAPD::getXYChannel
void getXYChannel(double x, double y, int &chX, int &chY) const
Returns X and Y channel number from local x,y position.
Definition: ARICHGeoHAPD.cc:29
Belle2::ARICHGeoHAPD::m_FEBSizeY
double m_FEBSizeY
FEB Y size.
Definition: ARICHGeoHAPD.h:377
Belle2::ARICHGeoHAPD::m_winThickness
double m_winThickness
HAPD window thickness.
Definition: ARICHGeoHAPD.h:367
Belle2::ARICHGeoHAPD::getWallThickness
double getWallThickness() const
Returns wall thickness.
Definition: ARICHGeoHAPD.h:190
Belle2::ARICHGeoHAPD::getSizeZ
double getSizeZ() const
Returns HAPD size in z.
Definition: ARICHGeoHAPD.h:184
Belle2::ARICHGeoHAPD::getWinMaterial
const std::string & getWinMaterial() const
Returns window material name.
Definition: ARICHGeoHAPD.h:287
Belle2::ARICHGeoHAPD::m_APDSizeY
double m_APDSizeY
APD Y size.
Definition: ARICHGeoHAPD.h:374
Belle2::ARICHGeoHAPD::m_chipGap
double m_chipGap
gap between APD chips
Definition: ARICHGeoHAPD.h:369
Belle2::ARICHGeoHAPD::m_wallThickness
double m_wallThickness
HAPD side wall thickness.
Definition: ARICHGeoHAPD.h:366
Belle2::ARICHGeoHAPD::m_wallMaterial
std::string m_wallMaterial
material of HAPD side walls
Definition: ARICHGeoHAPD.h:358
Belle2::ARICHGeoHAPD::setFEBVolume
void setFEBVolume(double sizeX, double sizeY, double sizeZ, const std::string &material)
Sets FEB volume.
Definition: ARICHGeoHAPD.h:124
Belle2::ARICHGeoHAPD::setWinRefIndex
void setWinRefIndex(double refInd)
Set refractive index of HAPD window.
Definition: ARICHGeoHAPD.h:79
Belle2::ARICHGeoHAPD::print
void print(const std::string &title="HAPD module geometry parameters") const override
Print the content of the class.
Definition: ARICHGeoHAPD.cc:87
Belle2::ARICHGeoHAPD::setModuleSizeZ
void setModuleSizeZ(double modZ)
Set module size in Z (height of HAPD + FEB)
Definition: ARICHGeoHAPD.h:85
Belle2::ARICHGeoHAPD::m_nPadX
unsigned m_nPadX
number of pads in X
Definition: ARICHGeoHAPD.h:370
Belle2::ARICHGeoHAPD::m_APDSizeX
double m_APDSizeX
APD X size.
Definition: ARICHGeoHAPD.h:373
Belle2::ARICHGeoHAPD::getXYChannelPos
void getXYChannelPos(int chX, int chY, double &x, double &y) const
Returns local x,y position from channel X,Y numbers.
Definition: ARICHGeoHAPD.cc:17
Belle2::ARICHGeoHAPD::getFEBSizeY
double getFEBSizeY() const
Returns FEB size in y.
Definition: ARICHGeoHAPD.h:226
Belle2::ARICHGeoHAPD::getNumPadsX
unsigned getNumPadsX() const
Returns number of X pads.
Definition: ARICHGeoHAPD.h:262
Belle2::ARICHGeoHAPD::setHAPDVolume
void setHAPDVolume(double sizeX, double sizeY, double sizeZ, const std::string &material)
Sets HAPD volume.
Definition: ARICHGeoHAPD.h:158
Belle2::ARICHGeoHAPD::getSizeX
double getSizeX() const
Returns HAPD size in x.
Definition: ARICHGeoHAPD.h:172
Belle2::ARICHGeoHAPD::setWinThickness
void setWinThickness(double thickness)
Set window thickness.
Definition: ARICHGeoHAPD.h:54
Belle2::ARICHGeoHAPD::getAPDSizeX
double getAPDSizeX() const
Returns APD size in x.
Definition: ARICHGeoHAPD.h:202
Belle2::GeoOpticalSurface
Represent an optical finish of a surface.
Definition: GeoOpticalSurface.h:31
Belle2::ARICHGeoHAPD::m_fillMaterial
std::string m_fillMaterial
material that fills the HAPD
Definition: ARICHGeoHAPD.h:362
Belle2::ARICHGeoBase::s_unit
static double s_unit
conversion unit for length
Definition: ARICHGeoBase.h:93
Belle2::ARICHGeoHAPD::getWallMaterial
const std::string & getWallMaterial() const
Returns wall (casing) material name.
Definition: ARICHGeoHAPD.h:275
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::ARICHGeoHAPD::setWallMaterial
void setWallMaterial(const std::string &material)
Sets casing material.
Definition: ARICHGeoHAPD.h:91
Belle2::ARICHGeoHAPD::getAPDSizeZ
double getAPDSizeZ() const
Returns APD size in z.
Definition: ARICHGeoHAPD.h:214
Belle2::ARICHGeoHAPD::getSizeY
double getSizeY() const
Returns HAPD size in y.
Definition: ARICHGeoHAPD.h:178
Belle2::ARICHGeoHAPD::setWinMaterial
void setWinMaterial(const std::string &material)
Set window material.
Definition: ARICHGeoHAPD.h:97
Belle2::ARICHGeoHAPD::setFillMaterial
void setFillMaterial(const std::string &material)
Sets material inside of HAPD (vacuum with set ref.
Definition: ARICHGeoHAPD.h:115
Belle2::ARICHGeoHAPD::ClassDefOverride
ClassDefOverride(ARICHGeoHAPD, 1)
ClassDef.
Belle2::ARICHGeoHAPD::getFEBSizeZ
double getFEBSizeZ() const
Returns FEB size in z.
Definition: ARICHGeoHAPD.h:232
Belle2::ARICHGeoHAPD::getModuleSizeZ
double getModuleSizeZ() const
Returns module size in z (HAPD + FEB height)
Definition: ARICHGeoHAPD.h:238
Belle2::ARICHGeoHAPD::getPhotocathodeApdDistance
double getPhotocathodeApdDistance() const
Returns distance between photocathode and APD.
Definition: ARICHGeoHAPD.h:338
Belle2::ARICHGeoHAPD::m_padSize
double m_padSize
pad size
Definition: ARICHGeoHAPD.h:368
Belle2::ARICHGeoHAPD::setChipGap
void setChipGap(double chipGap)
Set gap between APD chips.
Definition: ARICHGeoHAPD.h:66
Belle2::ARICHGeoHAPD::getWinThickness
double getWinThickness() const
Returns window thickness.
Definition: ARICHGeoHAPD.h:196
Belle2::ARICHGeoHAPD::setAPDMaterial
void setAPDMaterial(const std::string &material)
Sets APD material.
Definition: ARICHGeoHAPD.h:103
Belle2::ARICHGeoHAPD::getAPDMaterial
const std::string & getAPDMaterial() const
Returns APD material name.
Definition: ARICHGeoHAPD.h:293
Belle2::ARICHGeoHAPD::m_APDSizeZ
double m_APDSizeZ
APD Z size.
Definition: ARICHGeoHAPD.h:375
Belle2::ARICHGeoHAPD::getWinRefIndex
double getWinRefIndex() const
Returns window refractive index.
Definition: ARICHGeoHAPD.h:244
Belle2::ARICHGeoHAPD::m_winRefIndex
double m_winRefIndex
window refractive index
Definition: ARICHGeoHAPD.h:372
Belle2::ARICHGeoHAPD::setPadSize
void setPadSize(double padSize)
Set pad size.
Definition: ARICHGeoHAPD.h:60
Belle2::ARICHGeoHAPD::getAPDSizeY
double getAPDSizeY() const
Returns APD size in y.
Definition: ARICHGeoHAPD.h:208
Belle2::ARICHGeoHAPD::m_FEBSizeZ
double m_FEBSizeZ
FEB Z size.
Definition: ARICHGeoHAPD.h:378
Belle2::ARICHGeoHAPD::m_HAPDSizeX
double m_HAPDSizeX
HAPD X size.
Definition: ARICHGeoHAPD.h:363
Belle2::ARICHGeoHAPD::setAPDVolume
void setAPDVolume(double sizeX, double sizeY, double sizeZ, const std::string &material, const GeoOpticalSurface &surf)
Sets APD volume (single volume for all 4 chips)
Definition: ARICHGeoHAPD.h:141
Belle2::ARICHGeoHAPD::getPadSize
double getPadSize() const
Returns APD pad size.
Definition: ARICHGeoHAPD.h:250
Belle2::ARICHGeoHAPD::m_FEBSizeX
double m_FEBSizeX
FEB X size.
Definition: ARICHGeoHAPD.h:376
Belle2::ARICHGeoHAPD::getFEBSizeX
double getFEBSizeX() const
Returns FEB size in x.
Definition: ARICHGeoHAPD.h:220
Belle2::ARICHGeoHAPD::m_winMaterial
std::string m_winMaterial
material of HAPD window
Definition: ARICHGeoHAPD.h:359
Belle2::ARICHGeoHAPD
Geometry parameters of HAPD.
Definition: ARICHGeoHAPD.h:34
Belle2::ARICHGeoHAPD::m_nPadY
unsigned m_nPadY
number of pads in Y
Definition: ARICHGeoHAPD.h:371
Belle2::ARICHGeoHAPD::isConsistent
bool isConsistent() const override
Check consistency of geometry parameters.
Definition: ARICHGeoHAPD.cc:58
Belle2::ARICHGeoHAPD::setWallThickness
void setWallThickness(double thickness)
Set wall thickness.
Definition: ARICHGeoHAPD.h:48
Belle2::ARICHGeoHAPD::getFEBMaterial
const std::string & getFEBMaterial() const
Returns FEB material name.
Definition: ARICHGeoHAPD.h:299
Belle2::ARICHGeoHAPD::setNPads
void setNPads(int nx, int ny)
Set number of pads in x and y direction.
Definition: ARICHGeoHAPD.h:73
Belle2::ARICHGeoHAPD::getNumPadsY
unsigned getNumPadsY() const
Returns number of Y pads.
Definition: ARICHGeoHAPD.h:268