The repo houses a c++ implementation of the Hamburg model of radiation damage ("simulation code") and a Python script to fit the depletion voltage data ("depletion voltage fit"). The simulation does not describe well the data (for non totally clear reason) and therefore empirical fits are employed to predict future depletion voltage evolution.
The simulation code calculates the effective doping concentration based on an introduction of stable/decaying acceptors and the removal of donors due to irradiation. Moreover, it handles the annealing processes depending in the temperature. According to the effective doping concentration, the depletion voltage is calculated.
Besides the depletion voltage, the leakage current (inclusive alpha parameter) is calculated based on the Hamburg model. Again, leakage current increase due to irradiation and decrease due to annealing is handled. Two different options for the temperature averaging are available (use_CMS_paper_alpha0
).
To simplify the environment setting, we advise to install the code on lxplus
or anywhere else where you have access to cvmfs
(see Section Setup environment
)
git clone [email protected]:fleble/PixelRadiationDamageSimulation.git
After every new login, do:
source setenv.sh
This will only work if you have access to cvmfs
.
In order to simulate all of these properties, a profile of irradiation dose and temperature is necessary. The profile is produced by the PixelMonitoring repo, see https://github.com/fleble/PixelMonitoring
Annealing constants are saved in the config file config/annealing_constants.py
to avoid duplications.
The leakage current constant are hard-coded in the simulation code. For now they are only used in the simulation code.
The simulation code can be compiled and run with:
./run_radiation_damage_simulation.sh
The sector name and time period must be adjusted to your needs.
Histograms of the various quantities of interest (e.g. leakage current and depletion voltage!) are stored in a single root file.
Some variables might be changed in the first part of the code, apart from that, no adaptions should be necessary - TODO: Understand these variables and differentiate code and configuration.
Attention:
-
duration in the profile file HAS to be dividable by global timestep (parameter in the code, default=1) ->Integer result required for the ratio of duration and global time step
-
profile file may not have additional (even/especially empty) lines after the last line or in the beginning
-
the value for the global_layer_conversion has to be changed in order to fit to another layer (parameter transforms luminosity in neq) eg: B-Layer: 2.5e12, IBL 6e12
-
due to some computational reasons the final luminosity might not be correct. The fluence (in neq/cm2) however, should be exact.
-
to change from one detector type to another (e.g. for a different layer in the detector), change mainly 3 things: thickness (200 for IBL and 250 for PIXEL) and global_layer_conversion (global values) and Ndonor (different for PIXEL and IBL)
The depletion voltage code can be run with:
./run_depletion_voltage_fit.sh
The sector name and time period must be adjusted to your needs.
TODO: The depletion voltage fit code is incomplete and does not perform any fit yet...