Currently, there is the possibility to define 2D implants at the sensor surface, and the transfer modules allow to collect charge carriers either from the full pixel area or only from these defined areas. The depth is governed by the
max_depth_distance parameter of the transfer modules. Propagation only ends at sensor surface.
This MR implements three-dimensional implants, which can for example be used to simulate 3D sensors. With the current implementation, both the definition of 2D implants (essentially regions on the sensor surface) and 3D implants (as volumes in the sensor material) is possible. Features:
- New method
DetectorModel::isWithinImplant()allows to check for charge carrier positions within implants to stop propagation
depthparameter of the method is used in case only 2D implants are defined - not sure if this is the most beautiful implementation, but it reduces code complexity especially in the transfer modules where we need to distinguis
- 3D implant collection
- 2D implant collection with
- Collection from full sensor surface with
- New methods
DetectorModel::getImplantIntercept()allow to find the intercept point with the respective surface given one point inside and one outside the volume. This implements a Liang-Barsky line clipping method for the efficient interception of a box with a line segment. Here, the order of the points is important since only intersections in the positive direction are considered. This replaces the hard-coded interpolations performed up to now in the propagation modules.
- 3D implants are implemented also in the G4 geometry construction and can be filled with any material available.
Should we shift the interpolated surface points by a
nmin order for them to stay within the respective volumes? This would make later selection based on their position a bit more robust I guess?
Testing - possibly also with an actual 3D sensor electric field. It would be great to see some line graphs for this type of sensor
Follow-up: backside implants - required for ohmic columns
Check implementation for radial-strip detector (cc @rprivara )
Fixes #65 (closed)