File DigitizationModule.hpp¶
-
namespace Acts
Set the Geometry Context PLUGIN.
Set the Calibration Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.
Set the Mangetic Field Context PLUGIN.
Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.
Currently implemented for the two most common formats: rz and xyz.
Typedefs
-
typedef std::vector<SurfacePtr> SurfacePtrVector¶
-
class DigitizationModule
- #include <Acts/Plugins/Digitization/DigitizationModule.hpp>
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
Conventions:
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
Public Functions
Constructor from a Segmentation descriptor.
- Parameters
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
Virtual Destructor.
-
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 inlcuding top and bottom.
-
const DigitizationCell cell(const Vector2 &position) const
Get the digitization cell from a position.
- Parameters
position – The position to query
- Returns
-
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.
- Parameters
start – is the start position of the step
end – is the end position of the step
- Returns
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.
-
inline const Segmentation &segmentation() const
return the segmenation
-
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.
- Parameters
entryCids – are the entry digitisation cell ids
exitCids – are the exit digitisation cell ids
- Returns
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.
-
SurfacePtrVector stepSurfaces(const Vector3 &start, const Vector3 &end) const
Return the test surfaces between these points.
- Parameters
start – is the start position of the step
end – is the end position of the step
- Returns
stepSurfaces are the surfaces to test
Private Members
-
bool m_analogue¶
flag indicating if module is read out analogue
-
SurfacePtrVector m_boundarySurfaces¶
boundary surfaces z, x, y
-
double m_energyThreshold¶
energy threshold per cell
-
double m_halfThickness¶
half thickness of the module
-
double m_lorentzAngle¶
the lorentz angle
-
int m_readoutDirection¶
readout is along (+1) / (-1) wrt local z axis
-
std::shared_ptr<const Segmentation> m_segmentation¶
segmentation descriptor
-
SurfacePtrVector m_segmentationSurfacesX¶
segmentation surfaces in X - without boundaries
-
SurfacePtrVector m_segmentationSurfacesY¶
segmentation surfaces in Y - without boundaries
-
double m_tanLorentzAngle¶
and the tangent of it
-
typedef std::vector<SurfacePtr> SurfacePtrVector¶