Commit 7e5269ef authored by Simon Spannagel's avatar Simon Spannagel
Browse files

Merge branch 'p-more-readme-improvements' into 'master'

DepositionLaser: small README improvements

See merge request allpix-squared/allpix-squared!938
parents f3891fd6 9e90a112
Loading
Loading
Loading
Loading
+25 −15
Original line number Diff line number Diff line
@@ -10,13 +10,15 @@ module_output: "DepositedCharge, MCParticle"

## Description

This deposition generator is mostly intended for simulations of laser-TCT experiments.
This deposition generator is intended for simulations of laser-TCT experiments.
It generates charge, deposited by absorption of a laser pulse in silicon bulk.
This module is not dependent on Geant4. Instead, it implements tracking algorithms and simulations of corresponding physical phenomena by its own, using internal Allpix geometry.
This module is not dependent on Geant4. Instead, it implements tracking algorithms and simulations of corresponding physical
phenomena by its own, using internal Allpix geometry.

Current implementation assumes that the laser pulse is a bunch of point-like photons, each traveling in a straight line. A lookup table \[[@optical_properties]\] is used to determine absorption and refraction coefficients for a given wavelength.
Current implementation assumes that the laser pulse is a bunch of point-like photons, each traveling in a straight line. A
lookup table \[[@optical_properties]\] is used to determine absorption and refraction coefficients for a given wavelength.

Multiple photons are produced in a *one* event, thus a *single* event models a *single* laser pulse.
Multiple photons are produced in *one* event, thus a *single* event models a *single* laser pulse.


Tracking features:
@@ -34,40 +36,48 @@ spatial and temporal distributions of delivered intensity of a real laser pulse.
Two options for beam geometry are currently available: `cylindrical` and `converging`.
For both options, transversal beam profiles will have a gaussian shape.
For a `cylindrical` beam, all tracks are parallel to the set beam direction.
For a `converging` beam, track directions would have isotropic distribution (but with a limit on a max angle between the track and the set beam direction).
For a `converging` beam, track directions would have isotropic distribution (but with a limit on a max angle between the
track and the set beam direction).

**NB**: convention on global time zero for this module contradicts the general convention of the Allpix Squared.
For this module, global t=0 is chosen in such a way that the mean value of temporal distribution is *always* positioned at *4 standard deviations*  w.r.t. the global t=0.
For this module, global t=0 is chosen in such a way that the mean value of temporal distribution is *always* positioned at
*4 standard deviations*  w.r.t. the global t=0.
Thus, there is not necessarily a particle that is created exactly when the global time starts.
Although, the following Allpix Squared conventions still apply:

* No particles have a negative timestamp.
* Local time zero for each detector is a moment when the first particle that creates a hit in this detectors enters its bulk.

As a result, this module yields `DepositedCharge` instances for each detector, with them having physically correct spatial and temporal distribution.

As a result, this module yields `DepositedCharge` instances for each detector, with them having physically correct spatial
and temporal distribution.


## Parameters

* `number_of_photons`: number of incident photons, generated in *one* event. Defaults to 10000. The total deposited charge will also depend on wavelength and geometry.
* `number_of_photons`: number of incident photons, generated in *one* event. Defaults to 10000. The total deposited charge
  will also depend on wavelength and geometry.
* `wavelength` of the laser. Supported values are 250 -- 1450 nm.
* `pulse_duration`: gaussian width of pulse temporal profile. Defaults to 0.5 ns.
* `source_position`: a 3D position vector.
* `beam_direction`: a 3D direction vector.
* `beam_geometry`: either `cylindrical` or `converging`
* `beam_waist`: standard deviation of transversal beam intensity distribution at focus. Defaults to 20 um.
* `focal_distance`: needs to be specified for `converging` beam. This distance is *as it would be in air*. In silicon, beam shape will effectively stretch along its direction due to refraction and the actual focus will be further away from the source.
* `focal_distance`: needs to be specified for `converging` beam. This distance is *as it would be in air*. In silicon, beam
  shape will effectively stretch along its direction due to refraction and the actual focus will be further away from the
  source.
* `beam_convergence_angle`: max angle between tracks and `beam_direction`. Needs to be specified for a `converging` beam.
* `output_plots`: if set `true`, this module will produce histograms to monitor beam shape and also 3D distributions of charges, deposited in each detector. Histograms would look sensible even for one-event runs. Defaults to `false`.
* `output_plots`: if set `true`, this module will produce histograms to monitor beam shape and also 3D distributions of
  charges, deposited in each detector. Histograms would look sensible even for one-event runs. Defaults to `false`.

## Usage
A simulation pipeline to build an analog detector response would include `DepositionLaser`, `TransientPropagation` and `PulseTransfer`.
A simulation pipeline to build an analog detector response would include `DepositionLaser`, `TransientPropagation` and
`PulseTransfer`.
Usually it is enough to run just a single event (or a few).
Multithreading is supported by this module.
One should note that for the pipeline above each event is very computation-heavy, and runs with just one event do not gain any additional performance from multi-threaded execution.
While multithreading is supported by this module, one should note that the pipeline for each event is very computationally
intensive and runs with only one event do not gain any additional performance from multi-threaded execution.

Such pipeline is expected to produce pulse shapes, comparable with experimentally obtained ones. An example of `DepositionLaser` configuration is shown below.
Such pipeline is expected to produce pulse shapes, comparable with experimentally obtained ones. An example of
`DepositionLaser` configuration is shown below.

```ini
[Allpix]