RSS

Allpix Squared 3.2 Released

We are happy to announce a new stable feature release Allpix Squared, version 3.2 with a total of 285 commits added to the repository by 7 new contributors since version 3.1.0. The release tarball can be downloaded from the repository:

https://gitlab.cern.ch/allpix-squared/allpix-squared/tags/v3.2.0

The new version is also available as docker image in the project’s docker registry and is provided via the CVMFS packages.

Staggered Pixel Detector Model

A new detector model has been introduced implementing a staggered pixel detector design in MR!1191. This geometry is an extension of the regular Cartesian grid and, in addition to the pixel pitch described above, it allows to configure a pixel offset for odd rows of the detector matrix using the pixel_offset parameter as indicated in the figure below. The pixel offset needs to be provided in fractions of the pixel pitch and needs to be between $-1.0 < p < 1.0$.

Definition of a staggered pixel matrix. $p_x$ and $p_y$ indicate the pixel pitches along these Cartesian coordinates, $\delta$ denotes the relative offset of the odd rows

Definition of a staggered pixel matrix. $p_x$ and $p_y$ indicate the pixel pitches along these Cartesian coordinates, $\delta$ denotes the relative offset of the odd rows

Hitmap for a rectangular beam inciding on a 3x3 staggered pixel sensor with a pitch of 30 $\mu m$ and a positive offset of 0.5. A low threshold makes the pixel boundaries visible.

Hitmap for a rectangular beam inciding on a 3x3 staggered pixel sensor with a pitch of 30 $\mu m$ and a positive offset of 0.5. A low threshold makes the pixel boundaries visible.

This geometry can be selected using geometry = staggered.

New Module: NetlistWriter

This module is a first step to link physics simulations (Allpix2) and integrated circuits (IC) simulations (Spectre, Spice, etc.). The module uses the current pulse from the PulseTransfer module. It also needs a netlist, a file describing an IC and readable by an IC simulator, i.e. Spectre or SPICE, as input. The module associates the current pulse to a current source, which is connected to an IC (a front-end) and writes a new netlist, directly useable by an IC simulator. One netlist is written per event. In one event, each pixel fired corresponds to a current source, and one individual front-end is connected to each current source.

A possible configuration is using a ISOURCE_PWL and the SPICE syntax, requiring the collecting electrode capacitance:

[NetlistWriter]
target = SPICE
netlist_template = "front_end.asc"
source_type = ISOURCE_PWL
source_name = Instance_source
subckt_name = Instance_front_end
common_nets = Comp_vref, SUB, VDDA, VSSA, Vfbk
waveform_to_save = Pix_in, CSA_out, Comp_vout
simulator_command = "wine 'your\path\LTSpiceXVII\XVIIx64.exe' -run"

A current pulse ISOURCE_PULSE and the SPECTRE syntax is used is this example:

[NetlistWriter]
target = SPECTRE
netlist_template = "front_end.scs"
source_type = ISOURCE_PULSE
t_delay = 200ns
t_rise = 5ns
t_width = 20ns
t_fall = 5ns
source_name = Instance_source
subckt_name = Instance_front_end
common_nets = Comp_vref, SUB, VDDA, VSSA, Vfbk
waveform_to_save = Comp_vout
simulator_command = "spectre +aps -warn -info -log -debug -f nutascii"

Meshed Magnetic Field

The MagneticFieldReader has been updated to be capable of using magnetic field maps read from file in GHPR#46 and MR!1197, whereas up to now only constant magnetic fields had been supported. The magnetic field map can be supplied via the Allpix Squared native APF and INIT file formats, providing the total size of the field, the bin size of the mesh as well as the actual field data. In addition, an offset of this field from the origin of the global coordinate system can be provided via the offset parameter.

The magnetic field is picked up by the DepositionGeant4 module and taken into account for the particle interaction with the magnetic field, as well as for the propagation modules GenericPropagation and TransientPropagation. Note that each detector will apply the magnetic field determined for the center of the sensor volume to its entire volume.

The configuration for a meshed field may look like the following:

[MagneticFieldReader]
model = "mesh"
magnetic_field = 500mT 0T 0T
file_name = "path/to/magnetic_field.apf"
offset = 5cm, 6cm, 4mm

DefaultDigitizer: Noise on all channels

The DefaultDigitizer is now capable of simulating noise on all pixel channels, instead of only to channels with a present PixelCharge object.

By default, the DefaultDigitizer module operates only on channels which have received a pixel charge. This means, noise and threshold are only applied where there was a signal, but not in channels where no signal was present, and also not in events where no interaction with the sensor material has occurred. In many situations, this is the desired behavior since the threshold is configured such that it is unlikely to be crossed just from a pure noise contribution. Front-ends are often configured with a threshold equal or higher than five sigma of the noise. There are situations, however, where a sampling of all channels is desired, and where also the noise contribution is relevant. In this case, the parameter sample_all_channels can be set to true. The module then calculates the noise contribution for all channels of the detector, applies the threshold and passes on all hits crossing the threshold. This is also performed in events without any particle interaction in order to obtain a reasonable signal-to-noise ratio.

It should be noted that this procedure can significantly slow down the simulation for detectors with high granularity or millions of channels.

Sampling noise on all channels leads to a more realistic distribution of pixel charge.

Sampling noise on all channels leads to a more realistic distribution of pixel charge.

Other Notable Features and Improvements

  • Core / CI:
    • Rework of the DetectorField class, MR!1189
    • Backside implants are now allowed to overlap. Overlap checks are now exclusively performed for frontside implants MR!1170
    • Prevent from rounding errors when reading integers with units from the configuration, MR!1129
    • Support building from a git repository, where the source is in a submodule MR!1126
    • Throwing an error in the build configuration when requiring, but not finding Geant4, MR!1119
    • Move from own git hooks to pre-commit for a platform independent formatting process (MR!1118) and include JSON formatting rules (MR!1188)
    • Update magic enum to version 0.9.6, (MR!1115)
  • Objects:
    • Add property to MCParticle storing the total energy deposited in the sensitive volume, (MR!1144)
  • Physics Models:
    • Update Mandic mobility model based on an erratum to the original publication (MR!1125)
  • Documentation:
    • Add description for parameter random_seed_core (MR!1177)
    • Clarifying polarity of doping definitions for silicon (MR!1179)
  • Geant4:
    • Fix broken compilation with Geant4 versions v11.3.0 and higher, MR!1151
  • CapacitiveTransferModule:
    • Add possibility to mirror coupling matrix of every second column or row, MR!1148
  • PulseTransfer:
    • Pulses can now be produced for one charge carrier type only by means of the added parameter skip_charge_carriers (MR!1168) including tests (MR!1192)
  • DefaultDigitizer:
    • Reduce default QDC smearing to a more reasonable default of 0e (was: 300e) in MR!1195
  • CSADigitizer:
    • Allow synchronising the clock of the CSADigitizer with the global event time via the added parameter sync_event_time. This aligns the clock cycle to start counting with the global event time as opposed to starting at the beginning of the detected pulse time, while the new parameter tdc_offset allows for an offset to the beginning of the event. MR!1122
    • Add model graph, consuming a CSV file holding the graph as input. The sensor pulse is convolved with this graph for obtaining the pixel pulse. MR!1158
    • Add parameter graph_amplitude_unit to configure the unit of the y-axis of the response graph, MR!1171
  • GeometryBuilderG4:
    • Add Cesium Lead Bromide (CsPbBr3, Perovskites) to the material list and as additional sensor material in MR!1196
  • DepositionGeant4:
    • Particles can be emitted from the source within a time window specified via source_time and source_time_window, MR!1121
  • DepositionPointCharge:
    • Multiple events per scan cell can be run for obtaining larger statistics using the added events_per_cell parameter, MR!1153
  • DetectorHistogrammer:
    • Add hitmap of MCParticle traversal positions also in global coordinates, MR!1192
  • ROOTObjectWriter:
    • Add possibility to waive sequence requirement through require_sequence parameter, MR!1154
  • MeshConverter:
    • Add observables eMobility and hMobility for converting electron and hole mobility maps, respectively, MR!1176
  • ElectricFieldReader:
    • Add parameter file_units to define the units of the field data read from file, MR!1146