Beta Timing Setup and Data Processing at UZH

NOTE: This post was originally published in this link.

Matías Senger
On behalf of the UZH group:
Anna Macchiolo, Riccardo del Burgo, Daniel Hernandez, Yuta Takahashi, Prof. Ben Kilminster

37th RD50 Workshop
November 20, 2020

UZH beta timing setup

The UZH beta timing setup has the following block diagram:

Hardware elements of the setup

  • Bias voltage: CAEN DT1419ET voltage supply.
  • LGADs: Mounted in UCSC single channel board (Santa Cruz board).
  • Amplifiers: UZH house made, 36 dB @ 4 GHz.
  • Oscilloscope: Lecroy WaveRunner 9254M (or 640Zi).
  • Holder: Self made plastic holder to align the two boards and the radioactive source.

The setup assembled:

A typical signal looks like this:

[advanced_iframe src=””]

The measurements shown throughout this presentation belong to the “Speedy Gonzalez measurement series” and all of them were made with the devices

  • AIDA-2020 V1 RUN 11478 W5-DA11
  • AIDA-2020 V1 RUN 11478 W5-DA12

These devices are 35 µm thickness with medium doping.

Data acquisition

  • Oscilloscope trigger configuration:
    • Trigger type: Pattern
    • Operator: And
  • Auto save function produces one file per trigger:
  • Wait some hours to get between 3000 and 6000 shots. Typicaly the rate is about 1 trigger every 7 seconds.

After this I end up with two directories A and B, one for each LGAD, each containing N files with each of the signals. So, for example, files raw/A/00000.txt and raw/B/00000.txt go together because they belong to the same trigger.

+--- A
|    +--- 00000.txt
|    +--- 00001.txt
|    +--- 00002.txt
|    ...
+--- B
     +--- 00000.txt
     +--- 00001.txt
     +--- 00002.txt

The setup is quite sensitive to Wi-Fi and cellphone noise! This spoils many triggers in the oscilloscope that have to be filtered in the offline analysis.

The best solution was to place it far from Wi-Fi antennas and have the cellphone in airplane mode when taking data.

Data processing

I use Python due to versatility, portability and ease of use.

Basics of data processing

In development: lgadtools Python package which provides the LGADSignal class for easy manipulation and processing of the data. (Please feel free to try it, use it and/or contribute!)

from lgadtools.LGADSignal import LGADSignal #
my_signal = LGADSignal( # Create LGADSignal object with the data.
  time = time_values_array,
  samples = samples_array,
my_signal.worth # If this is False, the signal is probably only noise.
my_signal.amplitude # Returns amplitude.
my_signal.noise # Returns noise STD.
my_signal.risetime # Returns 10%→90% rise time.
my_signal.SNR # Returns amplitude/noise.
my_signal.baseline # Returns signal base line.
my_signal.plot_myplotlib(myplotlib_figure) # Produces a plot like those shown in this presentation.

In the plot below I show each of the quantities returned by the LGADSignal class. The plot was actually made by the last line in the previous code example.

[advanced_iframe src=””]

The actual processing of data

Using the LGADSignal class I extract the parameters for each pair of signals and produce histograms for amplitude, SNR and rise time:

[advanced_iframe src=””]

[advanced_iframe src=””]

[advanced_iframe src=””]

I usually do not apply any cuts in the offline analysis.

Extracting time information

For each signal I go over some predefined values of kCFD, the constant fraction discriminator, and for each value of kCFD I store the corresponding time, as shown in the next images:

Using the LGADSignal class from the lgadtools package this is something like:

for kCFD in [10,15,20,...,90]:
    t1 = signal_from_lgad_1.time_at(kCFD)
    t2 = signal_from_lgad_2.time_at(kCFD)
    Delta_t = t1 - t2

So for each pair of signals I obtain:

kCFDt@kCFD LGAD 1 (s)t@kCFD LGAD 2 (s)Δt (s)
10 %-1.39e-9-1.49e-9100e-12
15 %-1.30e-9-1.42e-9120e-12
20 %-1.27e-9-1.35e-980e-12

Now, assuming that the two detectors are identical, the standard deviation of \( \Delta t \) divided by \( \sqrt{2} \) is the time resolution for the respective value of \( k_\text{CFD} \), so

\[ \text{Time resolution} = \sqrt{\frac{\text{var}(\Delta t)}{2}} \]
The distribution of \( \Delta t \) looks typically like this:

[advanced_iframe src=””]

Plotting the standard deviation obtained from the gaußian fits in the previous figures as a function of kCFD produces:

[advanced_iframe src=””]

For this pair of detectors we conclude that the time resolution is 27.2 ps.

All this is done in an automated way by the script in this link.

Measurement of irradiated devices

To measure irradiated devices we use almost an identical setup, but instead of two identical LGADs we place the irradiated device under test (DUT) together with a reference LGAD that we have already characterized:

For irradiated devices the bias current is considerably higher so the measurement has to be done at lower temperature. Ideally this is done with a climate chamber. As of now we don’t have one available so we used a common freezer as a “quick ‘n dirty” solution. Later on the setup will be moved to a climate chamber.

Beta setup at room temperature vs inside freezer

The first step is to check whether the freezer is good enough for this purpose. For this we repeated the same measurement both inside and outside the freezer and we compared them. We only changed bias voltage between these measurements:

  • 130 V outside the freezer.
  • 110 V and 105 V inside the freezer.

The temperature inside the freezer was -19 °C.

The results are shown below. Those outside the freezer are the ones shown before, replicated here for ease of comparison.

Outside freezer

[advanced_iframe src=””]

[advanced_iframe src=””]

[advanced_iframe src=””]

[advanced_iframe src=””]

Inside freezer

[advanced_iframe src=””]

[advanced_iframe src=””]

[advanced_iframe src=””]

[advanced_iframe src=””]o

On these results:

  • The increase of gain in cold was compensated by the lower bias voltage.
  • We considered this results as a validation to measure the irradiated devices inside the freezer.

Irradiated devices in the beta timing setup

We used the setup previously shown with one DUT and one reference LGAD placed inside the freezer. The devices in the setup were:

  • DUT: LGAD HPK 2 L14P10 W31-S2 (8e14 neq/cm²) (45 µm thick)
  • Reference: AIDA-2020 V1 RUN 11478 W5-DA12 (the same shown before at room temperature)

The IV curves measured in the probe station at -20 °C at UZH for the irradiated HPK2 sensors are:

And the timing results for the measured device:

To obtain this time resolution we subtracted the resolution from the reference LGAD:

\[ \sigma_\text{DUT} = \sqrt{\sigma^2_\text{measured} – \sigma^2_\text{reference LGAD}} \]
In this case \( \sigma_\text{measured} = 44 \text{ ps} \) and \( \sigma_\text{reference LGAD} = 27.2 \text{ ps} \) so \( \sigma_\text{DUT} = 35.1 \text{ ps} \).


  • The beta timing setup at UZH is operative.
  • Few house-made hardware pieces were required.
  • Noise: The setup is sensitive to Wi-Fi/cell phones.
    • Easy solution: Move away from noise sources.
  • Software: Portable and reusable software is in development.
    • It is already usable, feel free to try it 🙂
  • The timing setup was assembled inside a freezer with good results.
    • Measured irradiated device.