 |
Belle II Software
release-05-01-25
|
11 #ifndef ARICHGEOMETRYPAR_H
12 #define ARICHGEOMETRYPAR_H
17 #include <unordered_set>
18 #include <framework/gearbox/GearDir.h>
21 #include <G4ThreeVector.hh>
23 #define MAX_N_ALAYERS 5
60 void Print(
void)
const;
69 double QE(
double e)
const;
161 void setActive(
int module,
int channel,
bool val);
163 bool isActive(
int module,
int channel);
396 if (nRing > 4)
return 0;
std::vector< TVector3 > m_mirrorpoint
vector holding one point of each mirror plate
double m_padSize
Detector pad size.
int getNumberOfAerogelRadiators()
get number of aerogel layers
void chipLocPosition()
calculates the centers of chips in detector module local coordinates
bool isInit()
returns true if parametrisation is initialized, false otherwise
std::vector< double > m_fDR
minimal distance between detector modules in radial direction
double m_LambdaStep
wavelength [nm]: step
int getChipID(TVector2 locpos)
get ID number of chip containing point "locpos"
double getChannelQE(int moduleID, int channelID)
get channel quantum efficiency
int m_nPads
total number of pads in a sensor
void mirrorPositions(const GearDir &content)
calculates parameters of all mirror planes (normal vector and point on plane)
double getAerogelThickness(int ilayer)
get thickness of "ilayer" aerogel layer
int getNphiTiles(int nRing)
get number of aerogel tiles in each radial ring
std::vector< double > m_fFi
angular coordinate of detector modules
virtual ~ARICHGeometryPar()
Destructor.
std::map< int, std::vector< unsigned > > m_merger2feb
mapping of front-end boards to mergers
int getNBoardsOnMerger(int mergerID)
returns number of front-end boards connected to the merger
std::vector< uint8_t > m_ChannelQE
Channel QE at 400nm.
std::unordered_set< unsigned int > m_copperIDs
COPPER ID's.
int m_tileNr
Number of aerogel tiles in radial direction.
int m_nRad
Number of aerogel layers.
double getQEScaling()
get QE scaling factor for photons internally reflected in HAPD window
std::unordered_set< unsigned int > m_boardIDs
FEB ID's.
double getSensitiveSurfaceSize() const
get size of detector sensitive surface (size of two chips + gap between)
double m_chipNegativeCrosstalk
to simulate opposite polarity crosstalk among channels on chip
TVector3 getMirrorNormal(int mirID)
get normal vector of mirID-th mirror plate
double m_LambdaFirst
wavelength [nm]: first QE data point
int getNrTiles()
get number of aerogel tiles in radial direction (number of rings)
double getAerogelZPosition(int ilayer)
get z position of "ilayer" aerogel layer
double m_detOuterRadius
Outer radius of detector tube.
double m_chipGap
Gap between chips in detector module.
std::vector< TVector2 > m_padWorldPositions
map holding channel global positions
void Initialize(const GearDir &content)
calculates detector parameters needed for geometry build and reconstruction.
void setAeroRefIndex(int ilayer, double n)
set refractive index of "ilayer" aerogel layer
double m_detInnerRadius
Inner radius of detector tube.
static ARICHGeometryPar * Instance()
Static method to get a reference to the ARICHGeometryPar instance.
double m_winRefInd
Detector window refractive index.
double getAerogelRefIndex(int ilayer)
get refractive index of "ilayer" aerogel layer
std::vector< TVector2 > m_chipLocPos
vector holding chip positions (in detector module local coordinates)
double getMirrorsStartAngle()
get the phi angle of first corner of mirror polygon
std::vector< uint32_t > m_DetectorMask
Detector Mask of inactive channels.
double m_windowAbsorbtion
absorbtion probability for photons internally reflected in HAPD window
int m_tileNphi[5]
Number of aerogel tiles in phi direction of each "radial" ring.
int m_nrow
number of detector rings
int getNMirrors()
get number of mirror plates
int getMergerFromCooper(int cooperID, int finesse)
returns merger board ID from cooperID and finesse
void padPositions()
calculates the centers of channels in local (detector module) and global coordinates
double QE(double e) const
get photocathode quantum efficiency at energy e.
double m_mirrorStartAng
The angle of first corner of mirror plates polygon.
double getAeroTubeRin()
get the inner size of aerogel tube
double m_aeroRin
Inner radius of aerogel tube.
TVector3 getOrigin(int copyno)
get the position of copyno-th HAPD module origin
int getChannelID(TVector2 hit)
get ID number of channel containing point "hit" (hit is in detector module local coordinates)
double getMirrorsZPosition()
get the z position of mirror plates (starting z)
double m_modZSize
Detector module height.
double getAerogelTransmissionLength(int ilayer)
get transmission length of "ilayer" aerogel layer
double m_mirrorThickness
Thickness of mirror plates.
double m_qeScale
QE scale factor for photons internally reflected in HAPD window.
void setActive(int module, int channel, bool val)
set the channel on/off
double getDetectorWindowRefIndex()
get refractive index of detector module window
double m_aeroTrLength[MAX_N_ALAYERS]
Array of aerogel transmission lenths.
static ARICHGeometryPar * p_B4ARICHGeometryParDB
Pointer that saves the instance of this class.
double getModAngle(int copyno)
get the angle of copyno-th HAPD rotation
double m_aeroRout
Outer radius of aerogel tube.
double getDetectorZPosition()
get z position of detector plane (starting z)
void mirrorPositionSimple(const GearDir &content)
Gets mirrors positions directly from xml file (in case of simple "beamtest" geometry).
Abstract base class for different kinds of events.
double getAeroTubeRout()
get the outer size of aerogel tube
void readModuleInfo(const GearDir &content)
read parameters of each module from gearbox.
double m_tileGap
Gap size between two aerogel tiles.
double getColEffi() const
get HAPD collection efficiency.
bool m_simple
True if parametrization initialized with simple geometry (beamtest)
GearDir is the basic class used for accessing the parameter store.
double m_QE[MAXPTS_QE]
quantum efficiency curve
int getBoardFromMerger(int mergerID, int slot)
returns front-end board ID from merger ID and slot
The Class for ARICH Geometry Parameters.
int getCopyNo(TVector3 hit)
get the copy number of HAPD module containing point "hit"
double m_ColEffi
collection efficiency
bool m_init
True if parametrization is already initialized.
TVector2 getChannelCenterLoc(int chID)
get center position of chID channel (in detector module local coordinates)
double m_modXSize
Detector module length.
std::string m_version
The version of geometry parameters.
const std::unordered_set< unsigned int > & getCopperIDs() const
Returns a set of copper ID's.
std::vector< int > m_ncol
m_ncol[i] gives number of detector modules in i-th detector ring (first one is the outer most)
std::map< std::pair< unsigned, int >, unsigned > m_copper2merger
mapping of merger boards to cooper boards
int getDetectorXPadNumber()
get number of pads of detector module (in one direction)
double m_aeroThickness[MAX_N_ALAYERS]
Array of aerogel thickness.
ARICHGeometryPar()
Constructor.
bool isActive(int module, int channel)
check the activity of the channel
double m_aeroRefIndex[MAX_N_ALAYERS]
Array of aerogel refracive indices.
void modulesPosition(const GearDir &content)
calculates the positions of HAPD modules, with the parameters from xml.
double m_detZpos
Z position of detector plane.
void setAerogelZPosition(int ilayer, double zPos)
set z position of "ilayer" aerogel layer
std::vector< double > m_fDFi
angle covered by one detector module in ring
double m_mirrorOuterRad
Radius of circle outscribed to mirrors polygon.
double getTileGap()
get size of the gap between aerogel tiles
double getDetectorPadSize()
get detectors module pad size
void readMirrorAlignment(const GearDir &content)
Reads mirror plates alignment parameters.
void read(const GearDir &content)
gets geometry parameters from gearbox.
void setWindowRefIndex(double refInd)
set detector module window refractive index
double m_winThick
Thickness of detector module window.
double getWindowAbsorbtion()
get absorbtion probability for photons internally reflected in HAPD window
std::vector< double > m_fR
radial coordinate of detector modules
void setAeroTransLength(int ilayer, double trlen)
set transmission length of "ilayer" aerogel layer
void modulesPositionSimple(const GearDir &content)
gets modules positions directly from xml file (for simple "beamtest" geometry).
std::vector< TVector3 > m_mirrornorm
vector holding normal vectors of mirror plates
void setAerogelThickness(int ilayer, double thick)
set thickness of "ilayer" aerogel layer
std::unordered_set< unsigned int > m_mergerIDs
Merger ID's.
double getChipNegativeCrosstalk()
get factor to suppress p.e. detection efficiency due to negative polarity crosstalk among chip channe...
int m_nPadX
Number of detector module pads in one direction.
int m_nMirrors
Number of mirrors segments.
std::vector< double > m_fFiMod
angle of detector module
std::map< int, TVector2 > m_padLocPositions
map holding channel local positions (in detector module local coordinates)
void initDetectorMask(int nmodules)
initialize detector mask
G4ThreeVector getOriginG4(int copyNo)
get the position of copyNo-th HAPD module origin (returns G4ThreeVector)
TVector3 getChannelCenterGlob(int modID, int chanID)
get center of chanID channel of modID detector module (in global coordinates)
TVector2 getChipLocPos(int chipID)
get center position of chipID-th chip of detector module (in detector module local coordinates)
double m_aeroZPosition[MAX_N_ALAYERS]
Array of aerogel Z positions.
double getDetectorWindowThickness()
get thickness of detector module window
TVector3 getMirrorPoint(int mirID)
get one point lying on mirID-th mirror plate
int getAerogelTileID(TVector2 locpos)
returns ID number of aerogel tile containing locpos (x-y) point.
bool isSimple()
returns true if parametrisation is initialized with simple geometry (beamtest)
int m_NpointsQE
number of QE data points
double m_mirrorZPos
Z position of mirror plates (starting z)
void Print(void) const
Print some debug information.
void frontEndMapping(const GearDir &content)
reads front-end board to merger to cooper mapping from an xml file
int getNMCopies() const
get the total number of HAPD modules