Belle II Software development
ARICHGeometryPar Class Reference

The Class for ARICH Geometry Parameters. More...

#include <ARICHGeometryPar.h>

Public Member Functions

 ARICHGeometryPar ()
 Constructor.
 
virtual ~ARICHGeometryPar ()
 Destructor.
 
void Initialize (const GearDir &content)
 calculates detector parameters needed for geometry build and reconstruction.
 
void Initialize (const GearDir &content, const GearDir &mirrorinfo)
 calculates detector parameters needed for geometry build and reconstruction - the mirrorinfo can be in separate directory
 
void clear (void)
 Clears.
 
void Print (void) const
 Print some debug information.
 
void read (const GearDir &content)
 gets geometry parameters from gearbox.
 
void readModuleInfo (const GearDir &content)
 read parameters of each module from gearbox.
 
double QE (double e) const
 get photocathode quantum efficiency at energy e.
 
double getColEffi () const
 get HAPD collection efficiency.
 
double getSensitiveSurfaceSize () const
 get size of detector sensitive surface (size of two chips + gap between)
 
int getNMCopies () const
 get the total number of HAPD modules
 
int getCopyNo (const ROOT::Math::XYZVector &hit)
 get the copy number of HAPD module containing point "hit"
 
ROOT::Math::XYZVector getOrigin (int copyno)
 get the position of copyno-th HAPD module origin
 
G4ThreeVector getOriginG4 (int copyNo)
 get the position of copyNo-th HAPD module origin (returns G4ThreeVector)
 
double getModAngle (int copyno)
 get the angle of copyno-th HAPD rotation
 
int getChannelID (ROOT::Math::XYVector hit)
 get ID number of channel containing point "hit" (hit is in detector module local coordinates)
 
ROOT::Math::XYVector getChannelCenterLoc (int chID)
 get center position of chID channel (in detector module local coordinates)
 
double getChannelQE (int moduleID, int channelID)
 get channel quantum efficiency
 
ROOT::Math::XYVector getChipLocPos (int chipID)
 get center position of chipID-th chip of detector module (in detector module local coordinates)
 
int getChipID (ROOT::Math::XYVector locpos)
 get ID number of chip containing point "locpos"
 
ROOT::Math::XYZVector getChannelCenterGlob (int modID, int chanID)
 get center of chanID channel of modID detector module (in global coordinates)
 
ROOT::Math::XYZVector getMirrorNormal (int mirID)
 get normal vector of mirID-th mirror plate
 
ROOT::Math::XYZVector getMirrorPoint (int mirID)
 get one point lying on mirID-th mirror plate
 
double getAerogelTransmissionLength (int ilayer)
 get transmission length of "ilayer" aerogel layer
 
double getAerogelRefIndex (int ilayer)
 get refractive index of "ilayer" aerogel layer
 
double getAerogelThickness (int ilayer)
 get thickness of "ilayer" aerogel layer
 
double getAerogelZPosition (int ilayer)
 get z position of "ilayer" aerogel layer
 
int getNMirrors ()
 get number of mirror plates
 
double getMirrorsStartAngle ()
 get the phi angle of first corner of mirror polygon
 
double getMirrorsZPosition ()
 get the z position of mirror plates (starting z)
 
double getDetectorWindowThickness ()
 get thickness of detector module window
 
double getDetectorWindowRefIndex ()
 get refractive index of detector module window
 
int getNumberOfAerogelRadiators ()
 get number of aerogel layers
 
double getDetectorPadSize ()
 get detectors module pad size
 
double getDetectorZPosition ()
 get z position of detector plane (starting z)
 
int getDetectorXPadNumber ()
 get number of pads of detector module (in one direction)
 
double getQEScaling ()
 get QE scaling factor for photons internally reflected in HAPD window
 
double getWindowAbsorbtion ()
 get absorbtion probability for photons internally reflected in HAPD window
 
double getChipNegativeCrosstalk ()
 get factor to suppress p.e. detection efficiency due to negative polarity crosstalk among chip channels
 
int getNrTiles ()
 get number of aerogel tiles in radial direction (number of rings)
 
int getNphiTiles (int nRing)
 get number of aerogel tiles in each radial ring
 
double getTileGap ()
 get size of the gap between aerogel tiles
 
double getAeroTubeRin ()
 get the inner size of aerogel tube
 
double getAeroTubeRout ()
 get the outer size of aerogel tube
 
void setAeroTransLength (int ilayer, double trlen)
 set transmission length of "ilayer" aerogel layer
 
void setAeroRefIndex (int ilayer, double n)
 set refractive index of "ilayer" aerogel layer
 
void setAerogelThickness (int ilayer, double thick)
 set thickness of "ilayer" aerogel layer
 
void setAerogelZPosition (int ilayer, double zPos)
 set z position of "ilayer" aerogel layer
 
void setWindowRefIndex (double refInd)
 set detector module window refractive index
 
bool isInit ()
 returns true if parametrisation is initialized, false otherwise
 
bool isSimple ()
 returns true if parametrisation is initialized with simple geometry (beamtest)
 
void initDetectorMask (int nmodules)
 initialize detector mask
 
void setActive (int module, int channel, bool val)
 set the channel on/off
 
bool isActive (int module, int channel)
 check the activity of the channel
 
int getMergerFromCooper (int cooperID, int finesse)
 returns merger board ID from cooperID and finesse
 
int getBoardFromMerger (int mergerID, int slot)
 returns front-end board ID from merger ID and slot
 
int getNBoardsOnMerger (int mergerID)
 returns number of front-end boards connected to the merger
 
int getAerogelTileID (ROOT::Math::XYVector locpos)
 returns ID number of aerogel tile containing locpos (x-y) point.
 
const std::unordered_set< unsigned int > & getCopperIDs () const
 Returns a set of copper ID's.
 

Static Public Member Functions

static ARICHGeometryParInstance ()
 Static method to get a reference to the ARICHGeometryPar instance.
 

Private Member Functions

void modulesPosition (const GearDir &content)
 calculates the positions of HAPD modules, with the parameters from xml.
 
void modulesPositionSimple (const GearDir &content)
 gets modules positions directly from xml file (for simple "beamtest" geometry).
 
void chipLocPosition ()
 calculates the centers of chips in detector module local coordinates
 
void padPositions ()
 calculates the centers of channels in local (detector module) and global coordinates
 
void mirrorPositions (const GearDir &content)
 calculates parameters of all mirror planes (normal vector and point on plane)
 
void readMirrorAlignment (const GearDir &content)
 Reads mirror plates alignment parameters.
 
void mirrorPositionSimple (const GearDir &content)
 Gets mirrors positions directly from xml file (in case of simple "beamtest" geometry).
 
void frontEndMapping (const GearDir &content)
 reads front-end board to merger to cooper mapping from an xml file
 

Private Attributes

std::string m_version
 The version of geometry parameters.
 
double m_padSize
 Detector pad size.
 
double m_chipGap
 Gap between chips in detector module.
 
double m_detInnerRadius
 Inner radius of detector tube.
 
double m_detOuterRadius
 Outer radius of detector tube.
 
double m_detZpos
 Z position of detector plane.
 
double m_modXSize
 Detector module length.
 
double m_modZSize
 Detector module height.
 
double m_winThick
 Thickness of detector module window.
 
double m_winRefInd
 Detector window refractive index.
 
double m_mirrorOuterRad
 Radius of circle outscribed to mirrors polygon.
 
double m_mirrorThickness
 Thickness of mirror plates.
 
double m_mirrorStartAng
 The angle of first corner of mirror plates polygon.
 
int m_nMirrors
 Number of mirrors segments.
 
double m_mirrorZPos
 Z position of mirror plates (starting z)
 
int m_nPadX
 Number of detector module pads in one direction.
 
int m_nRad
 Number of aerogel layers.
 
bool m_init
 True if parametrization is already initialized.
 
bool m_simple
 True if parametrization initialized with simple geometry (beamtest)
 
double m_aeroTrLength [MAX_N_ALAYERS]
 Array of aerogel transmission lenths.
 
double m_aeroRefIndex [MAX_N_ALAYERS]
 Array of aerogel refracive indices.
 
double m_aeroZPosition [MAX_N_ALAYERS]
 Array of aerogel Z positions.
 
double m_aeroThickness [MAX_N_ALAYERS]
 Array of aerogel thickness.
 
int m_nPads
 total number of pads in a sensor
 
std::vector< uint32_t > m_DetectorMask
 Detector Mask of inactive channels.
 
std::vector< uint8_t > m_ChannelQE
 Channel QE at 400nm.
 
double m_ColEffi
 collection efficiency
 
double m_LambdaFirst
 wavelength [nm]: first QE data point
 
double m_LambdaStep
 wavelength [nm]: step
 
int m_NpointsQE
 number of QE data points
 
double m_qeScale
 QE scale factor for photons internally reflected in HAPD window.
 
double m_windowAbsorbtion
 absorbtion probability for photons internally reflected in HAPD window
 
double m_chipNegativeCrosstalk
 to simulate opposite polarity crosstalk among channels on chip
 
double m_QE [MAXPTS_QE]
 quantum efficiency curve
 
int m_tileNr
 Number of aerogel tiles in radial direction.
 
int m_tileNphi [5]
 Number of aerogel tiles in phi direction of each "radial" ring.
 
double m_tileGap
 Gap size between two aerogel tiles.
 
double m_aeroRin
 Inner radius of aerogel tube.
 
double m_aeroRout
 Outer radius of aerogel tube.
 
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::vector< double > m_fDFi
 angle covered by one detector module in ring
 
std::vector< double > m_fDR
 minimal distance between detector modules in radial direction
 
int m_nrow
 number of detector rings
 
std::vector< double > m_fR
 radial coordinate of detector modules
 
std::vector< double > m_fFi
 angular coordinate of detector modules
 
std::vector< double > m_fFiMod
 angle of detector module
 
std::vector< ROOT::Math::XYVector > m_chipLocPos
 vector holding chip positions (in detector module local coordinates)
 
std::map< int, ROOT::Math::XYVector > m_padLocPositions
 map holding channel local positions (in detector module local coordinates)
 
std::vector< ROOT::Math::XYVector > m_padWorldPositions
 map holding channel global positions

 
std::vector< ROOT::Math::XYZVector > m_mirrornorm
 vector holding normal vectors of mirror plates
 
std::vector< ROOT::Math::XYZVector > m_mirrorpoint
 vector holding one point of each mirror plate
 
std::map< std::pair< unsigned, int >, unsigned > m_copper2merger
 mapping of merger boards to cooper boards
 
std::map< int, std::vector< unsigned > > m_merger2feb
 mapping of front-end boards to mergers
 
std::unordered_set< unsigned int > m_copperIDs
 COPPER ID's.
 
std::unordered_set< unsigned int > m_mergerIDs
 Merger ID's.
 
std::unordered_set< unsigned int > m_boardIDs
 FEB ID's.
 

Static Private Attributes

static ARICHGeometryParp_B4ARICHGeometryParDB = 0
 Pointer that saves the instance of this class.
 

Detailed Description

The Class for ARICH Geometry Parameters.

This class provides ARICH gemetry paramters for simulation, reconstruction and so on. These parameters are gotten from gearbox.

Definition at line 34 of file ARICHGeometryPar.h.

Member Function Documentation

◆ getCopperIDs()

const std::unordered_set< unsigned int > & getCopperIDs ( ) const
inline

Returns a set of copper ID's.

Definition at line 174 of file ARICHGeometryPar.h.

175 {
176 return m_copperIDs;
177 }
std::unordered_set< unsigned int > m_copperIDs
COPPER ID's.

Member Data Documentation

◆ m_aeroRefIndex

double m_aeroRefIndex[MAX_N_ALAYERS]
private

Array of aerogel refracive indices.

Definition at line 201 of file ARICHGeometryPar.h.

◆ m_aeroRin

double m_aeroRin
private

Inner radius of aerogel tube.

Definition at line 220 of file ARICHGeometryPar.h.

◆ m_aeroRout

double m_aeroRout
private

Outer radius of aerogel tube.

Definition at line 221 of file ARICHGeometryPar.h.

◆ m_aeroThickness

double m_aeroThickness[MAX_N_ALAYERS]
private

Array of aerogel thickness.

Definition at line 203 of file ARICHGeometryPar.h.

◆ m_aeroTrLength

double m_aeroTrLength[MAX_N_ALAYERS]
private

Array of aerogel transmission lenths.

Definition at line 200 of file ARICHGeometryPar.h.

◆ m_aeroZPosition

double m_aeroZPosition[MAX_N_ALAYERS]
private

Array of aerogel Z positions.

Definition at line 202 of file ARICHGeometryPar.h.

◆ m_boardIDs

std::unordered_set<unsigned int> m_boardIDs
private

FEB ID's.

Definition at line 271 of file ARICHGeometryPar.h.

◆ m_ChannelQE

std::vector<uint8_t> m_ChannelQE
private

Channel QE at 400nm.

Definition at line 206 of file ARICHGeometryPar.h.

◆ m_chipGap

double m_chipGap
private

Gap between chips in detector module.

Definition at line 183 of file ARICHGeometryPar.h.

◆ m_chipLocPos

std::vector<ROOT::Math::XYVector> m_chipLocPos
private

vector holding chip positions (in detector module local coordinates)

Definition at line 260 of file ARICHGeometryPar.h.

◆ m_chipNegativeCrosstalk

double m_chipNegativeCrosstalk
private

to simulate opposite polarity crosstalk among channels on chip

Definition at line 214 of file ARICHGeometryPar.h.

◆ m_ColEffi

double m_ColEffi
private

collection efficiency

Definition at line 208 of file ARICHGeometryPar.h.

◆ m_copper2merger

std::map<std::pair<unsigned, int>, unsigned> m_copper2merger
private

mapping of merger boards to cooper boards

Definition at line 267 of file ARICHGeometryPar.h.

◆ m_copperIDs

std::unordered_set<unsigned int> m_copperIDs
private

COPPER ID's.

Definition at line 269 of file ARICHGeometryPar.h.

◆ m_DetectorMask

std::vector<uint32_t> m_DetectorMask
private

Detector Mask of inactive channels.

Definition at line 205 of file ARICHGeometryPar.h.

◆ m_detInnerRadius

double m_detInnerRadius
private

Inner radius of detector tube.

Definition at line 184 of file ARICHGeometryPar.h.

◆ m_detOuterRadius

double m_detOuterRadius
private

Outer radius of detector tube.

Definition at line 185 of file ARICHGeometryPar.h.

◆ m_detZpos

double m_detZpos
private

Z position of detector plane.

Definition at line 186 of file ARICHGeometryPar.h.

◆ m_fDFi

std::vector<double> m_fDFi
private

angle covered by one detector module in ring

Definition at line 254 of file ARICHGeometryPar.h.

◆ m_fDR

std::vector<double> m_fDR
private

minimal distance between detector modules in radial direction

Definition at line 255 of file ARICHGeometryPar.h.

◆ m_fFi

std::vector<double> m_fFi
private

angular coordinate of detector modules

Definition at line 258 of file ARICHGeometryPar.h.

◆ m_fFiMod

std::vector<double> m_fFiMod
private

angle of detector module

Definition at line 259 of file ARICHGeometryPar.h.

◆ m_fR

std::vector<double> m_fR
private

radial coordinate of detector modules

Definition at line 257 of file ARICHGeometryPar.h.

◆ m_init

bool m_init
private

True if parametrization is already initialized.

Definition at line 198 of file ARICHGeometryPar.h.

◆ m_LambdaFirst

double m_LambdaFirst
private

wavelength [nm]: first QE data point

Definition at line 209 of file ARICHGeometryPar.h.

◆ m_LambdaStep

double m_LambdaStep
private

wavelength [nm]: step

Definition at line 210 of file ARICHGeometryPar.h.

◆ m_merger2feb

std::map<int, std::vector<unsigned> > m_merger2feb
private

mapping of front-end boards to mergers

Definition at line 268 of file ARICHGeometryPar.h.

◆ m_mergerIDs

std::unordered_set<unsigned int> m_mergerIDs
private

Merger ID's.

Definition at line 270 of file ARICHGeometryPar.h.

◆ m_mirrornorm

std::vector<ROOT::Math::XYZVector> m_mirrornorm
private

vector holding normal vectors of mirror plates

Definition at line 264 of file ARICHGeometryPar.h.

◆ m_mirrorOuterRad

double m_mirrorOuterRad
private

Radius of circle outscribed to mirrors polygon.

Definition at line 191 of file ARICHGeometryPar.h.

◆ m_mirrorpoint

std::vector<ROOT::Math::XYZVector> m_mirrorpoint
private

vector holding one point of each mirror plate

Definition at line 265 of file ARICHGeometryPar.h.

◆ m_mirrorStartAng

double m_mirrorStartAng
private

The angle of first corner of mirror plates polygon.

Definition at line 193 of file ARICHGeometryPar.h.

◆ m_mirrorThickness

double m_mirrorThickness
private

Thickness of mirror plates.

Definition at line 192 of file ARICHGeometryPar.h.

◆ m_mirrorZPos

double m_mirrorZPos
private

Z position of mirror plates (starting z)

Definition at line 195 of file ARICHGeometryPar.h.

◆ m_modXSize

double m_modXSize
private

Detector module length.

Definition at line 187 of file ARICHGeometryPar.h.

◆ m_modZSize

double m_modZSize
private

Detector module height.

Definition at line 188 of file ARICHGeometryPar.h.

◆ m_ncol

std::vector<int> m_ncol
private

m_ncol[i] gives number of detector modules in i-th detector ring (first one is the outer most)

Definition at line 253 of file ARICHGeometryPar.h.

◆ m_nMirrors

int m_nMirrors
private

Number of mirrors segments.

Definition at line 194 of file ARICHGeometryPar.h.

◆ m_nPads

int m_nPads
private

total number of pads in a sensor

Definition at line 204 of file ARICHGeometryPar.h.

◆ m_nPadX

int m_nPadX
private

Number of detector module pads in one direction.

Definition at line 196 of file ARICHGeometryPar.h.

◆ m_NpointsQE

int m_NpointsQE
private

number of QE data points

Definition at line 211 of file ARICHGeometryPar.h.

◆ m_nRad

int m_nRad
private

Number of aerogel layers.

Definition at line 197 of file ARICHGeometryPar.h.

◆ m_nrow

int m_nrow
private

number of detector rings

Definition at line 256 of file ARICHGeometryPar.h.

◆ m_padLocPositions

std::map<int, ROOT::Math::XYVector> m_padLocPositions
private

map holding channel local positions (in detector module local coordinates)

Definition at line 262 of file ARICHGeometryPar.h.

◆ m_padSize

double m_padSize
private

Detector pad size.

Definition at line 182 of file ARICHGeometryPar.h.

◆ m_padWorldPositions

std::vector<ROOT::Math::XYVector> m_padWorldPositions
private

map holding channel global positions

Definition at line 263 of file ARICHGeometryPar.h.

◆ m_QE

double m_QE[MAXPTS_QE]
private

quantum efficiency curve

Definition at line 215 of file ARICHGeometryPar.h.

◆ m_qeScale

double m_qeScale
private

QE scale factor for photons internally reflected in HAPD window.

Definition at line 212 of file ARICHGeometryPar.h.

◆ m_simple

bool m_simple
private

True if parametrization initialized with simple geometry (beamtest)

Definition at line 199 of file ARICHGeometryPar.h.

◆ m_tileGap

double m_tileGap
private

Gap size between two aerogel tiles.

Definition at line 219 of file ARICHGeometryPar.h.

◆ m_tileNphi

int m_tileNphi[5]
private

Number of aerogel tiles in phi direction of each "radial" ring.

Definition at line 218 of file ARICHGeometryPar.h.

◆ m_tileNr

int m_tileNr
private

Number of aerogel tiles in radial direction.

Definition at line 217 of file ARICHGeometryPar.h.

◆ m_version

std::string m_version
private

The version of geometry parameters.

Definition at line 181 of file ARICHGeometryPar.h.

◆ m_windowAbsorbtion

double m_windowAbsorbtion
private

absorbtion probability for photons internally reflected in HAPD window

Definition at line 213 of file ARICHGeometryPar.h.

◆ m_winRefInd

double m_winRefInd
private

Detector window refractive index.

Definition at line 190 of file ARICHGeometryPar.h.

◆ m_winThick

double m_winThick
private

Thickness of detector module window.

Definition at line 189 of file ARICHGeometryPar.h.


The documentation for this class was generated from the following files: