Belle II Software development
ARICHGeoHAPD.h
1/**************************************************************************
2 * basf2 (Belle II Analysis Software Framework) *
3 * Author: The Belle II Collaboration *
4 * *
5 * See git log for contributors and copyright holders. *
6 * This file is licensed under LGPL-3.0, see LICENSE.md. *
7 **************************************************************************/
8
9#pragma once
10
11#include <arich/dbobjects/ARICHGeoBase.h>
12#include <geometry/dbobjects/GeoOpticalSurface.h>
13#include <string>
14
15namespace Belle2 {
24 class ARICHGeoHAPD: public ARICHGeoBase {
25
26 public:
27
32 {}
33
38 void setWallThickness(double thickness) {m_wallThickness = thickness;}
39
44 void setWinThickness(double thickness) {m_winThickness = thickness;}
45
50 void setPadSize(double padSize) {m_padSize = padSize;}
51
56 void setChipGap(double chipGap) {m_chipGap = chipGap;}
57
63 void setNPads(int nx, int ny) {m_nPadX = nx; m_nPadY = ny; }
64
69 void setWinRefIndex(double refInd) {m_winRefIndex = refInd;}
70
75 void setModuleSizeZ(double modZ) {m_moduleSizeZ = modZ;}
76
81 void setWallMaterial(const std::string& material) {m_wallMaterial = material;}
82
87 void setWinMaterial(const std::string& material) {m_winMaterial = material;}
88
93 void setAPDMaterial(const std::string& material) {m_apdMaterial = material;}
94
99 void setFEBMaterial(const std::string& material) {m_febMaterial = material;}
100
105 void setFillMaterial(const std::string& material) {m_fillMaterial = material;}
106
114 void setFEBVolume(double sizeX, double sizeY, double sizeZ,
115 const std::string& material)
116 {
117 m_FEBSizeX = sizeX;
118 m_FEBSizeY = sizeY;
119 m_FEBSizeZ = sizeZ;
120 m_febMaterial = material;
121 }
122
131 void setAPDVolume(double sizeX, double sizeY, double sizeZ,
132 const std::string& material, const GeoOpticalSurface& surf)
133 {
134 m_APDSizeX = sizeX;
135 m_APDSizeY = sizeY;
136 m_APDSizeZ = sizeZ;
137 m_apdMaterial = material;
138 m_apdSurface = surf;
139 }
140
148 void setHAPDVolume(double sizeX, double sizeY, double sizeZ,
149 const std::string& material)
150 {
151 m_HAPDSizeX = sizeX;
152 m_HAPDSizeY = sizeY;
153 m_HAPDSizeZ = sizeZ;
154 m_fillMaterial = material;
155 }
156
157
162 double getSizeX() const {return m_HAPDSizeX / s_unit;}
163
168 double getSizeY() const {return m_HAPDSizeY / s_unit;}
169
174 double getSizeZ() const {return m_HAPDSizeZ / s_unit;}
175
180 double getWallThickness() const {return m_wallThickness / s_unit;}
181
186 double getWinThickness() const {return m_winThickness / s_unit;}
187
192 double getAPDSizeX() const {return m_APDSizeX / s_unit;}
193
198 double getAPDSizeY() const {return m_APDSizeY / s_unit;}
199
204 double getAPDSizeZ() const {return m_APDSizeZ / s_unit;}
205
210 double getFEBSizeX() const {return m_FEBSizeX / s_unit;}
211
216 double getFEBSizeY() const {return m_FEBSizeY / s_unit;}
217
222 double getFEBSizeZ() const {return m_FEBSizeZ / s_unit;}
223
228 double getModuleSizeZ() const {return m_moduleSizeZ / s_unit;}
229
234 double getWinRefIndex() const {return m_winRefIndex;}
235
240 double getPadSize() const {return m_padSize / s_unit;}
241
246 double getChipGap() const {return m_chipGap / s_unit;}
247
252 unsigned getNumPadsX() const {return m_nPadX;}
253
258 unsigned getNumPadsY() const {return m_nPadY;}
259
260
265 const std::string& getWallMaterial() const {return m_wallMaterial;}
266
271 const std::string& getFillMaterial() const {return m_fillMaterial;}
272
277 const std::string& getWinMaterial() const {return m_winMaterial;}
278
283 const std::string& getAPDMaterial() const {return m_apdMaterial;}
284
289 const std::string& getFEBMaterial() const {return m_febMaterial;}
290
296
304 void getXYChannel(double x, double y, int& chX, int& chY) const;
305
312 unsigned getChipID(double x, double y) const;
313
321 void getXYChannelPos(int chX, int chY, double& x, double& y) const;
322
323
329 {
331 }
332
333
338 bool isConsistent() const override;
339
344 void print(const std::string& title = "HAPD module geometry parameters") const override;
345
346 private:
347
348 std::string m_wallMaterial;
349 std::string m_winMaterial;
350 std::string m_apdMaterial;
351 std::string m_febMaterial;
352 std::string m_fillMaterial;
353 double m_HAPDSizeX = 0;
354 double m_HAPDSizeY = 0;
355 double m_HAPDSizeZ = 0;
356 double m_wallThickness = 0;
357 double m_winThickness = 0;
358 double m_padSize = 0;
359 double m_chipGap = 0;
360 unsigned m_nPadX = 0;
361 unsigned m_nPadY = 0;
362 double m_winRefIndex = 0;
363 double m_APDSizeX = 0;
364 double m_APDSizeY = 0;
365 double m_APDSizeZ = 0;
366 double m_FEBSizeX = 0;
367 double m_FEBSizeY = 0;
368 double m_FEBSizeZ = 0;
369 double m_moduleSizeZ = 0;
374 };
375
377} // end namespace Belle2
Base class for geometry parameters.
Definition: ARICHGeoBase.h:24
static double s_unit
conversion unit for length
Definition: ARICHGeoBase.h:83
Geometry parameters of HAPD.
Definition: ARICHGeoHAPD.h:24
double m_moduleSizeZ
HAPD module Z size (HAPD + FEB height)
Definition: ARICHGeoHAPD.h:369
double getSizeZ() const
Returns HAPD size in z.
Definition: ARICHGeoHAPD.h:174
const std::string & getFEBMaterial() const
Returns FEB material name.
Definition: ARICHGeoHAPD.h:289
double m_APDSizeY
APD Y size.
Definition: ARICHGeoHAPD.h:364
double getChipGap() const
Returns gap between APD chips.
Definition: ARICHGeoHAPD.h:246
bool isConsistent() const override
Check consistency of geometry parameters.
Definition: ARICHGeoHAPD.cc:56
void setChipGap(double chipGap)
Set gap between APD chips.
Definition: ARICHGeoHAPD.h:56
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:131
std::string m_febMaterial
material of FEB
Definition: ARICHGeoHAPD.h:351
double m_padSize
pad size
Definition: ARICHGeoHAPD.h:358
void print(const std::string &title="HAPD module geometry parameters") const override
Print the content of the class.
Definition: ARICHGeoHAPD.cc:85
double getPadSize() const
Returns APD pad size.
Definition: ARICHGeoHAPD.h:240
double m_chipGap
gap between APD chips
Definition: ARICHGeoHAPD.h:359
std::string m_wallMaterial
material of HAPD side walls
Definition: ARICHGeoHAPD.h:348
ClassDefOverride(ARICHGeoHAPD, 1)
ClassDef.
double m_HAPDSizeZ
HAPD Z size.
Definition: ARICHGeoHAPD.h:355
std::string m_fillMaterial
material that fills the HAPD
Definition: ARICHGeoHAPD.h:352
unsigned getNumPadsY() const
Returns number of Y pads.
Definition: ARICHGeoHAPD.h:258
double m_FEBSizeZ
FEB Z size.
Definition: ARICHGeoHAPD.h:368
unsigned m_nPadX
number of pads in X
Definition: ARICHGeoHAPD.h:360
unsigned getChipID(double x, double y) const
Returns APD chip ID from from local x,y position.
Definition: ARICHGeoHAPD.cc:45
double getAPDSizeZ() const
Returns APD size in z.
Definition: ARICHGeoHAPD.h:204
std::string m_winMaterial
material of HAPD window
Definition: ARICHGeoHAPD.h:349
double getWinRefIndex() const
Returns window refractive index.
Definition: ARICHGeoHAPD.h:234
double getWinThickness() const
Returns window thickness.
Definition: ARICHGeoHAPD.h:186
const std::string & getAPDMaterial() const
Returns APD material name.
Definition: ARICHGeoHAPD.h:283
double m_winRefIndex
window refractive index
Definition: ARICHGeoHAPD.h:362
void setFEBVolume(double sizeX, double sizeY, double sizeZ, const std::string &material)
Sets FEB volume.
Definition: ARICHGeoHAPD.h:114
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:27
double m_APDSizeX
APD X size.
Definition: ARICHGeoHAPD.h:363
const GeoOpticalSurface & getAPDSurface() const
Returns APD reflective optical surface.
Definition: ARICHGeoHAPD.h:295
double m_FEBSizeX
FEB X size.
Definition: ARICHGeoHAPD.h:366
void setWinThickness(double thickness)
Set window thickness.
Definition: ARICHGeoHAPD.h:44
const std::string & getWallMaterial() const
Returns wall (casing) material name.
Definition: ARICHGeoHAPD.h:265
void setModuleSizeZ(double modZ)
Set module size in Z (height of HAPD + FEB)
Definition: ARICHGeoHAPD.h:75
const std::string & getFillMaterial() const
Returns fill (inside) material name.
Definition: ARICHGeoHAPD.h:271
void setWinRefIndex(double refInd)
Set refractive index of HAPD window.
Definition: ARICHGeoHAPD.h:69
unsigned getNumPadsX() const
Returns number of X pads.
Definition: ARICHGeoHAPD.h:252
void setWallThickness(double thickness)
Set wall thickness.
Definition: ARICHGeoHAPD.h:38
double getSizeX() const
Returns HAPD size in x.
Definition: ARICHGeoHAPD.h:162
void setAPDMaterial(const std::string &material)
Sets APD material.
Definition: ARICHGeoHAPD.h:93
double getPhotocathodeApdDistance() const
Returns distance between photocathode and APD.
Definition: ARICHGeoHAPD.h:328
void setWallMaterial(const std::string &material)
Sets casing material.
Definition: ARICHGeoHAPD.h:81
double getSizeY() const
Returns HAPD size in y.
Definition: ARICHGeoHAPD.h:168
double getFEBSizeY() const
Returns FEB size in y.
Definition: ARICHGeoHAPD.h:216
void setFillMaterial(const std::string &material)
Sets material inside of HAPD (vacuum with set ref.
Definition: ARICHGeoHAPD.h:105
ARICHGeoHAPD()
Default constructor.
Definition: ARICHGeoHAPD.h:31
double getWallThickness() const
Returns wall thickness.
Definition: ARICHGeoHAPD.h:180
void setWinMaterial(const std::string &material)
Set window material.
Definition: ARICHGeoHAPD.h:87
void setHAPDVolume(double sizeX, double sizeY, double sizeZ, const std::string &material)
Sets HAPD volume.
Definition: ARICHGeoHAPD.h:148
void setPadSize(double padSize)
Set pad size.
Definition: ARICHGeoHAPD.h:50
void setNPads(int nx, int ny)
Set number of pads in x and y direction.
Definition: ARICHGeoHAPD.h:63
void setFEBMaterial(const std::string &material)
Sets FEB material.
Definition: ARICHGeoHAPD.h:99
double getFEBSizeZ() const
Returns FEB size in z.
Definition: ARICHGeoHAPD.h:222
double m_wallThickness
HAPD side wall thickness.
Definition: ARICHGeoHAPD.h:356
GeoOpticalSurface m_apdSurface
optical surface of APD (for reflectivity)
Definition: ARICHGeoHAPD.h:370
double m_HAPDSizeX
HAPD X size.
Definition: ARICHGeoHAPD.h:353
const std::string & getWinMaterial() const
Returns window material name.
Definition: ARICHGeoHAPD.h:277
std::string m_apdMaterial
material of APD chips
Definition: ARICHGeoHAPD.h:350
double getModuleSizeZ() const
Returns module size in z (HAPD + FEB height)
Definition: ARICHGeoHAPD.h:228
double m_FEBSizeY
FEB Y size.
Definition: ARICHGeoHAPD.h:367
double getAPDSizeY() const
Returns APD size in y.
Definition: ARICHGeoHAPD.h:198
double getFEBSizeX() const
Returns FEB size in x.
Definition: ARICHGeoHAPD.h:210
void getXYChannelPos(int chX, int chY, double &x, double &y) const
Returns local x,y position from channel X,Y numbers.
Definition: ARICHGeoHAPD.cc:15
double getAPDSizeX() const
Returns APD size in x.
Definition: ARICHGeoHAPD.h:192
double m_HAPDSizeY
HAPD Y size.
Definition: ARICHGeoHAPD.h:354
double m_APDSizeZ
APD Z size.
Definition: ARICHGeoHAPD.h:365
unsigned m_nPadY
number of pads in Y
Definition: ARICHGeoHAPD.h:361
double m_winThickness
HAPD window thickness.
Definition: ARICHGeoHAPD.h:357
Represent an optical finish of a surface.
Abstract base class for different kinds of events.