Detector construction. More...
#include <Doxymodules_parameterisations.h>
Public Member Functions | |
Par04DetectorConstruction () | |
virtual | ~Par04DetectorConstruction () |
virtual G4VPhysicalVolume * | Construct () final |
virtual void | ConstructSDandField () final |
void | SetInnerRadius (G4double aInnerRadius) |
Set inner radius of the cylindrical detector. | |
G4double | GetInnerRadius () const |
Get inner radius of the cylindrical detector. | |
void | SetLength (G4double aLength) |
Set length radius of the cylindrical detector. | |
G4double | GetLength () const |
Get length of the cylindrical detector (along z-axis) | |
void | SetNbOfLayers (G4int aNumber) |
Set number of layers. | |
G4int | GetNbOfLayers () const |
Get number of layers. | |
void | SetAbsorberMaterial (const std::size_t aLayer, const G4String &aMaterial) |
Set material of the layer (from NIST materials) | |
G4String | GetAbsorberMaterial (const std::size_t aLayer) const |
Get name of the material of the layer. | |
void | SetAbsorberThickness (const std::size_t aLayer, const G4double aThickness) |
Set thickness of the layer. | |
G4double | GetAbsorberThickness (const std::size_t aLayer) const |
Get thickness of the layer. | |
void | SetAbsorberSensitivity (const std::size_t aLayer, const G4bool aSensitivity) |
Set sensitivity of the layer. | |
G4bool | GetAbsorberSensitivity (const std::size_t aLayer) const |
Get sensitivity of the layer. | |
void | SetMeshNbOfCells (G4ThreeVector aNb) |
Set number of Mesh cells in cylindrical coordinates (r, phi, z) | |
void | SetMeshNbOfCells (std::size_t aIndex, G4double aNb) |
Set number of Mesh cells in cylindrical coordinates along one of the axis. | |
G4ThreeVector | GetMeshNbOfCells () const |
Get number of Mesh cells in cylindrical coordinates (r, phi, z) | |
void | SetMeshSizeOfCells (G4ThreeVector aNb) |
Set size of Mesh cells in cylindrical coordinates (r, phi, z) | |
void | SetMeshSizeOfCells (std::size_t aIndex, G4double aNb) |
Set size of Mesh cells in cylindrical coordinates along one of the axis. | |
G4ThreeVector | GetMeshSizeOfCells () const |
Get size of Mesh cells in cylindrical coordinates (r, phi, z) | |
void | Print () const |
Print detector information. | |
Private Attributes | |
Par04DetectorMessenger * | fDetectorMessenger = nullptr |
Messenger that allows to modify geometry. | |
G4double | fDetectorInnerRadius = 80 * cm |
Inner radius of the cylindrical detector. | |
G4double | fDetectorLength = 24 * cm |
Length of the cylindrical detector (along z axis) | |
std::vector< G4LogicalVolume * > | fLayerLogical |
Logical volume(s) of the sensitive absorbers. | |
std::array< G4Material *, 2 > | fAbsorberMaterial = { nullptr, nullptr } |
Material(s) of the layers. | |
std::array< G4double, 2 > | fAbsorberThickness = { 1 * cm, 0 } |
Thickness(es) of the layers. | |
std::array< G4bool, 2 > | fAbsorberSensitivity = { true, 0 } |
Sensitivity of the layers. | |
G4int | fNbOfLayers = 24 |
Number of layers = slices along z axis. | |
G4ThreeVector | fMeshNbOfCells = { 40, 50, 48 } |
Mesh number of cells (Nr, Nphi, Nz) | |
G4ThreeVector | fMeshSizeOfCells = { 5 * mm, 2 * CLHEP::pi / 50 * CLHEP::rad, 5 * mm } |
Mesh size of cells (dr, dphi, dz). | |
Detector construction.
Creates a cylindrical detector, with cylinder axis along Z-axis. It is placed in the centre of the world volume. Dimensions of the detector (inner radius and its length) as well as composition (number of radial layers, number of absorbers, its thicknesses and materials) can be set using the UI commands. There may be up to two absorbers used to build the layers.
TODO Extend to allow use of more than two different absorbers.
Each absorber may have differnt thickness (along radial direction), material, and may be either sensitive to particle passage (will register deposited energy) or not (passive). Readout geometry of the detector is dynamic, and its size can be set by UI commands. Cells are created along z-axis, azimuthal angle, and radius (cylindrical segmentation). The z axis is parallel to the direction of the particle entering the detector volume. The mesh also starts at the entrance to the detector volume. In order to define this enrance position and direction, a fast simulation model is used. For the detector volume, if particle has entered, sets the particle direction and position in the event information. Those vectors define the readout mesh for the event.
TODO In order to speed up the simulation, fast simulation that checks for the entrance properites should be defined in a very thin region instead of a whole region of the detector.
Sensitive detector Par04SensitiveDetector is attached to the detector volume Region for the detector is created as an envelope of the fast simulation.
Definition at line 79 of file Doxymodules_parameterisations.h.
Par04DetectorConstruction::Par04DetectorConstruction | ( | ) |
Definition at line 60 of file Par04DetectorConstruction.cc.
|
virtualdefault |
|
finalvirtual |
useful variable
Definition at line 74 of file Par04DetectorConstruction.cc.
|
finalvirtual |
Definition at line 180 of file Par04DetectorConstruction.cc.
void Par04DetectorConstruction::SetInnerRadius | ( | G4double | aInnerRadius | ) |
Set inner radius of the cylindrical detector.
Definition at line 264 of file Par04DetectorConstruction.cc.
|
inline |
Get inner radius of the cylindrical detector.
Definition at line 84 of file Par04DetectorConstruction.hh.
void Par04DetectorConstruction::SetLength | ( | G4double | aLength | ) |
Set length radius of the cylindrical detector.
Definition at line 268 of file Par04DetectorConstruction.cc.
|
inline |
Get length of the cylindrical detector (along z-axis)
Definition at line 88 of file Par04DetectorConstruction.hh.
|
inline |
Set number of layers.
Definition at line 90 of file Par04DetectorConstruction.hh.
|
inline |
void Par04DetectorConstruction::SetAbsorberMaterial | ( | const std::size_t | aLayer, |
const G4String & | aMaterial | ||
) |
Set material of the layer (from NIST materials)
Definition at line 218 of file Par04DetectorConstruction.cc.
|
inline |
Get name of the material of the layer.
Definition at line 97 of file Par04DetectorConstruction.hh.
void Par04DetectorConstruction::SetAbsorberThickness | ( | const std::size_t | aLayer, |
const G4double | aThickness | ||
) |
Set thickness of the layer.
Definition at line 232 of file Par04DetectorConstruction.cc.
|
inline |
Get thickness of the layer.
Definition at line 104 of file Par04DetectorConstruction.hh.
void Par04DetectorConstruction::SetAbsorberSensitivity | ( | const std::size_t | aLayer, |
const G4bool | aSensitivity | ||
) |
Set sensitivity of the layer.
Definition at line 248 of file Par04DetectorConstruction.cc.
|
inline |
Get sensitivity of the layer.
Definition at line 111 of file Par04DetectorConstruction.hh.
|
inline |
Set number of Mesh cells in cylindrical coordinates (r, phi, z)
Definition at line 117 of file Par04DetectorConstruction.hh.
|
inline |
Set number of Mesh cells in cylindrical coordinates along one of the axis.
[in] | aIndex | index of cylindrical axis (0,1,2) = (r, phi, z) |
Definition at line 120 of file Par04DetectorConstruction.hh.
|
inline |
Get number of Mesh cells in cylindrical coordinates (r, phi, z)
Definition at line 122 of file Par04DetectorConstruction.hh.
|
inline |
Set size of Mesh cells in cylindrical coordinates (r, phi, z)
Definition at line 124 of file Par04DetectorConstruction.hh.
|
inline |
Set size of Mesh cells in cylindrical coordinates along one of the axis.
[in] | aIndex | index of cylindrical axis (0,1,2) = (r, phi, z) |
Definition at line 127 of file Par04DetectorConstruction.hh.
|
inline |
Get size of Mesh cells in cylindrical coordinates (r, phi, z)
Definition at line 130 of file Par04DetectorConstruction.hh.
void Par04DetectorConstruction::Print | ( | ) | const |
Print detector information.
Definition at line 200 of file Par04DetectorConstruction.cc.
|
private |
Messenger that allows to modify geometry.
Definition at line 137 of file Par04DetectorConstruction.hh.
|
private |
Inner radius of the cylindrical detector.
Definition at line 139 of file Par04DetectorConstruction.hh.
|
private |
Length of the cylindrical detector (along z axis)
Definition at line 141 of file Par04DetectorConstruction.hh.
|
private |
Logical volume(s) of the sensitive absorbers.
Definition at line 143 of file Par04DetectorConstruction.hh.
|
private |
Material(s) of the layers.
Definition at line 145 of file Par04DetectorConstruction.hh.
|
private |
Thickness(es) of the layers.
Definition at line 147 of file Par04DetectorConstruction.hh.
|
private |
Sensitivity of the layers.
Definition at line 149 of file Par04DetectorConstruction.hh.
|
private |
Number of layers = slices along z axis.
Definition at line 151 of file Par04DetectorConstruction.hh.
|
private |
Mesh number of cells (Nr, Nphi, Nz)
Definition at line 153 of file Par04DetectorConstruction.hh.
|
private |
Mesh size of cells (dr, dphi, dz).
Definition at line 155 of file Par04DetectorConstruction.hh.