ToT Generation and Plotting

Hi everyone, I am looking to get the ToT out of my detector. I am using the GenericPropagation, Pulse Transfer, and DefaultDigitizer modules to obtain the signal. I have added a threshold and set the qdc_offset to the negative of the threshold. I got the image below and not sure why it doesn’t look like a typical ToT plot. I used the getSignal() function in PixelHit. Am I plotting the right thing or is there a problem with the offset that is causing the signal to look this way? Thanks!

Uploading: data.root…
source_measurement.conf (1.0 KB)
detector.conf (117 Bytes)
minipix_tpx3_flex.conf (521 Bytes)

Hi @oobie2142 ,

I assume what you’re posting is the spectrum of ToT values? What’s the unit of the y axis?
And may I ask what you are expecting to see as a typical ToT plot?

I re-ran the simulation and spotted potential sources of you not seeing the desired signal:
a) In general, I’d advice to enable the output_plots for all modules to debug the simulation. It will help you spotting issues in the configuration, such as …
b) the GenericPropagation has a default integration time of 25ns, which for your detector is much too short. See the drift_time plot for this module
c) Please have a look at the cluster_size plots in the DetectorHistogrammer. You will see that you have a lot of charge sharing, which seems physical, for one thing looking at the charge collection time in your sensor, for another thing …
d) you defined your beam with a zero beam size, meaning you will be always aiming at the sensor center, which is probably the exact corner between four pixels. You could either aim at a different position or spread the beam by defining a beam_size (see documentation) to average over several incidence positions.

I hope this helps a bit :slight_smile:

Cheers
Paul

@pschutze Hi Paul thanks for these! I am trying to observe charge sharing and see how much energy is lost. I will make sure the beam hits a pixel directly I never thought of that so thanks! I am confused on the conversion between pixel charge [ke] to ToT. I think I asked this before in another thread you answered, but that was with the DepositionCharge module. Is there a way to get the ToT in ns?

The ToT is strongly dependent on the front-end circuits (how quickly does the signal go back to the baseline). Hence, the determination of the ToT reqiures knowledge on the front-end.

The way it works in the DefaultDigitizer is the following: also the “ToT” is initially computed in units of kiloelectrons. The explanation is maybe a bit hidden in the documentation this parameter:

qdc_resolution : Resolution of the QDC in units of bits. Thus, a value of 8 would translate to a QDC range of 0 – 255. A value of 0bit switches off the QDC simulation and returns the actual charge in electrons. Defaults to 0.

Hence, changing this parameter should provide you with a more reasonable ToT value. However, this only uses the pulse you get from the sensor and does not take into account any shaping/amplification in the front-end. You could mimic this by defining a qdc_slope.
If you require a more accurate simulation of the front-end, I suggest using the CSADigitizer, which requires a certain parameterisation of the amplification circuit, but provides you with information that would likely be more suitable for your readout chip.

Paul

@pschutze Thank you Paul I really appreciate the explaination. I will give the documentation a look again, I missed that parameter. That makes way more sense now and I think I can look at the specs on our detector in our lab and compare.

I am assuming using the CSADigitizer module will increase the computational time?

Every operation does :upside_down_face: Depending on your simulation, it might not be significant, though. Best is to try it out and check the time scores displayed at the end of the execution, for example:

(INFO)  Module GeometryBuilderGeant4 took 18.0804ms
(INFO)  Module DepositionGeant4 took 1.78032s
(INFO)  Module ElectricFieldReader:detector1 took 0.137525ms

@pschutze Excellent, I appreciate it Paul