Class that holds the surfaces for a planar digitization detector module.
It needs a descriptor to design different pixel/strixels/strip setups (with a segmentation class) in order to define the readout segmentation
The digitizaiton is done in the local frame of the surface.
The lorentz angle is assumed to be only in x-direction and constant for the module, it is measured from the local z-direction towards the local x-direction.
The readout direction defines the charge drift either: a) towards the surface at -halfThickness if readout is defined at -1 b) towards the surface at +halfThickness if readout is defined at +1
3D positions are within the 3D frame of the module
2D positions are corrected to parameter surface at the center of the module (and not the readout surface)
The lorenzShift is the correction from the readout surface to the parameter surface
Constructor from a Segmentation descriptor.
moduleSegmentation – is the segmentation descriptions
halfThickness – is the half thickness of the module
readoutDirection – is the readout drift direction
lorentzAngle – is the lorentz drift angle
energyThreshold – Optional energy threshold for digitization
analogue – Run analogue digitization (defaults to false)
virtual ~DigitizationModule() = default¶
inline bool analogue() const¶
Indicates if the readout of the module is analogue, default is digital.
inline const SurfacePtrVector &boundarySurfaces() const¶
Return the bounding surfaces including top and bottom.
const DigitizationCell cell(const Vector2 &position) const¶
Get the digitization cell from a position.
position – The position to query
inline DigitizationStep digitizationStep(const Vector3 &start, const Vector3 &end) const¶
Fill the associated digitization cell from this start and end position, correct for lorentz effect if needed.
start – is the start position of the step
end – is the end position of the step
the digitization step
inline double energyThreshold() const¶
Return the energy threshold per cell of the module.
inline double halfThickness() const¶
Return the module thickness.
inline double lorentzAngle() const¶
Return the lorentz Angle.
inline int readoutDirection() const¶
Return the readout direction.
const SurfacePtrVector segmentationSurfaces(const DigitizationCell &entryCids, const DigitizationCell &exitCids) const¶
Return the internal test segmentation surfaces to test between entry and exit given by their cell id’s - the boundaries are not given.
entryCids – are the entry digitisation cell ids
exitCids – are the exit digitisation cell ids
object is a vector of shared surfaces
inline const SurfacePtrVector &segmentationSurfacesX() const¶
Return all surfaces in X - excluding the boundaries.
inline const SurfacePtrVector &segmentationSurfacesY() const¶
Return all surfaces in Y - excluding the boundaries.