Commit 8cba7a1f authored by Håkan Wennlöf's avatar Håkan Wennlöf
Browse files

Merge branch 'implant_class' into 'master'

3D Implants, Many

Closes #65

See merge request allpix-squared/allpix-squared!672
parents 8ebe8a5a 94949cea
Loading
Loading
Loading
Loading
+34 −4
Original line number Diff line number Diff line
@@ -47,10 +47,6 @@ file before the start of any sub-sections.
  The pitch of a single pixel in the pixel matrix. Provided as 2D parameter in the x-y-plane. This parameter is required
  for all models.

- `implant_size`:
  The size of the collection diode implant in each pixel of the matrix. Provided as 2D parameter in the x-y-plane. This
  parameter is optional, the implant size defaults to the pixel pitch if not specified otherwise.

- `sensor_material`:
  Semiconductor material of the sensor. This can be any of the sensor materials supported by Allpix Squared, currently
  `SILICON`, `GALLIUM_ARSENIDE`, `GERMANIUM`, `CADMIUM_TELLURIDE`, `CADMIUM_ZINC_TELLURIDE`, `DIAMOND` and
@@ -138,6 +134,40 @@ following order:
4.  The path of the main configuration file.


## Implants

Multiple implants per pixel cell can be simulated in Allpix Squared. Here, implants are any volume in the sensor in which
charge carriers do not propagated, such as collection diodes, ohmic volumes or columns, as well as trenches filled with
different materials e.g. for alpha conversion.

When charge carriers reach an implant, their propagation is stopped. Depending on the type of implant, they might be either
discarded by the transfer module for back-side implants, or taken into account when forming the front-end electronics input
signal for front-side implants.

Each implant should be defined in its own section headed with the name `[implant]`. By default, no implants are added.
Implants allow for the following parameters:

- `type`:
  Type of the implant. This parameter can be set to either `frontsize` for an implant from the sensor front side, collecting
  charge carriers, or to `backside` for an implant connected to the ohmic contact at the sensor back side.

- `shape`:
  Shape of the implant, supported shapes are `rectangle` and `ellipse`. Defaults to `rectangle`.

- `size`:
  The size of the implant as 3D vector with size in $`x`$ and $`y`$ as well as the implant depth. Depending on the implant shape,
  the $`x`$ and $`y`$ values are either interpreted as the side lengths of the rectangle or the major and minor axes of the
  ellipse.

- `orientation`:
  Rotation of the implant around its $`z`$ axis. Defaults to 0 degrees, i.e. the implant axes are aligned with the local
  coordinate system of the sensor.

- `offset`:
  2D values in the x-y plane, defining the offset of the implant from the center of the pixel cell. This parameter is
  optional and defaults to $`0, 0`$, i.e. a position at the pixel center be default.


## Support Layers

In addition to the active layer, multiple layers of support material can be added to the detector description. It is possible
+0 −8
Original line number Diff line number Diff line
# SPDX-FileCopyrightText: 2017-2023 CERN and the Allpix Squared authors
# SPDX-License-Identifier: MIT

[mydetector]
type = "test"
position = 0 0 0
orientation = 0 0 0
implant_size = 30mm 30mm
+0 −13
Original line number Diff line number Diff line
# SPDX-FileCopyrightText: 2018-2023 CERN and the Allpix Squared authors
# SPDX-License-Identifier: MIT

#DESC checks for correct detection of invalid implant size configurations
[Allpix]
detectors_file = "detector_invalid_implant.conf"
number_of_events = 1
random_seed = 0

[GeometryBuilderGeant4]

#PASS (FATAL) [I:GeometryBuilderGeant4] Error in the configuration:\nValue 30mm 30mm of key 'implant_size' in global section is not valid: implant size cannot be larger than pixel pitch
#LABEL coverage
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ IF(TEST_EXAMPLES)
                    "${CMAKE_INSTALL_PREFIX}/bin/allpix -c ${CMAKE_SOURCE_DIR}/examples/${test}/${test}.conf ${DEFAULT_CLI_TEST_ARGS} ${ADDITIONAL_CLI_ARGS}"
            )
            SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES DEPENDS "${DEPENDENCY}")

            IF(${test} MATCHES "radial_strip" OR ${test} MATCHES "atlas_itk_petal")
                SET_TESTS_PROPERTIES(${TEST_NAME} PROPERTIES FAIL_REGULAR_EXPRESSION "FATAL")
            ENDIF()

            ADD_DEFAULT_FAIL_CONDITIONS(${TEST_NAME})
        ENDIF()
    ENDFOREACH()
+50 −0
Original line number Diff line number Diff line
# SPDX-FileCopyrightText: 2022 CERN and the Allpix Squared authors
# SPDX-License-Identifier: MIT

# Type of the detector model
# A "hybrid" consists of sensor plus bump-bonded readout chip
type = "hybrid"

# Size of the active pixel matrix (columns and rows)
number_of_pixels = 5 5
# Pitch of one individual pixel (column and row pitch)
pixel_size = 220um 440um

# Thickness of the active sensor material
sensor_thickness = 400um
# Excess sensor material outside of the active pixel matrix
# Specifying one value will add the excess to all four sides
sensor_excess = 100um

# Parameters for bump bonds consisting of sphere and cylinder
bump_sphere_radius = 90um
bump_height = 200um
bump_cylinder_radius = 70um

# Thickness of the hybrid's readout chip
chip_thickness = 200um
# Excess of the chip material
# Specifying individual values for top, bottom, left, right
# allows to define asymmetric excess material
chip_excess_top = 150um
chip_excess_bottom = 150um

[implant]
size = 200um 400um 0um
orientation = 0deg
type = "frontside"
shape = "rectangle"

# Support layer of the assembly
# The support material defaults to G10 (PCB)
[support]
# Thickness of the support layer
thickness = 165um
# Dimensions in x an y
size = 4mm 4mm
# Offset of the support with respect to the sensor center
offset = 0.3mm 0
# Size of the optional cut-out in the support
hole_size = 1.5mm 1.5mm
# Position of the cut-out
hole_offset = -0.25mm 0
Loading