Hi everyone,
We are working on simulating 4H-SiC detectors (currently simple diodes, with LGADs planned in the future) in Allpix². In order to simulate the output of our laboratory test devices, we are interested in the CSA signal from MIPs/alphas hitting a detector. Because of the statistical nature of our experimental data, we need to generate a large number of events (~20k) to feed into our pulse analysis.
I am currently using a TransientPropagation
together with the PulseTransfer
and CSADigitizer
modules. However, I am uncertain on how to best obtain a time-dependent CSA signal from the CSADigitizer
. In my understanding, the module outputs just the ToA/ToT time and not the signal itself.
My current approach is to use the output_pulsegraphs = true
flag and read the x/y data from the ROOT TGraph objects in the modules.root
output. Of course, this does not work with multiprocessing, but by splitting the simulation into two parts (everything up to TransientPropagation
and PulseTransfer
+ CSADigitizer
themselves), I was able to run the compute expensive propagation multi-threaded and generate the CSA plots single-threaded. However, this is still not optimal, as the data written by the TransientPropagation
module is not of insignificant size.
Is there another way to obtain the CSA signal as a function of the time from the CSADigitizer
module?
If this needs to be implemented in the CSADigitizer
module itself (for example, by writing the CSA signal into a new branch), what do I need to consider regarding concurrency and multi-threading?
PS: If required, I can also append my simulation configuration, but this question should not depend on the specific implementation.
Thanks for your reply,
Andreas