Correction order | Principle | How it is now implemented | How it should be implemented (offline) |
---|---|---|---|
1 | Flip ADC values: get positive signal instead of negative | adc[ch] = 1023 - adc[ch] | same |
2 | Substract pedestal to signal: a signal 0 (so no signal) does not correspond to adc=0. We need to "calibrate the 0-signal for all channels. | We take a measurement of the pedestal with SiPMs off (or at least in the dark with no signal). This is stored to a data file which is reloaded when the analysis on a signal file is performed. The software loops over the events of the pedestal data and gets the mean value for all channels, stores it into a vector. | The signal file, when analysed, should not need to load the pedestal file. It should load the pedestals already calculated from a file that we can refresh at any time. |
3 | Correct for header influence: the two last headers of each analog-link influence the two first channls of this link. | The influence of headers is measured in the same pedestal file as in 2. It looks at the two header bits in their possible configurations (00, 01, 10, 11) and averages in each of these cases the pedestal at channel 0 and 1 of the a-link. The correction to apply is the difference between the average pedestal and the specific average pedestal which is stored to a vector and applied event by event on the two first channels of each a-link for a signal file. | The best way is to measure the header influence with a pedestal file, as it is done so far. But the algorithm should store the header corrections to a file which can be refreshed with new pedestal measurement. |
4 | Correct for common mode (CM): at each event, the pedestal may shift slightly compared to the average pedestal measured in 2. |
CM is measured on the signal file. At each event and for each a-link, the average pedestal is measured by selecting channels which have 0-signal, namely signal close to the expected pedestal value. So we get a correction per a-link which is different at all events. | same |
5 | Correlation between channels: due to the design of the FE PCB, channels influence each other (within one analog-link). Correlations are two-fold: right- and left-correlations. |
Correlations are measured with an injector circuit on FE Beetle boards. So they cannot be measured with signal taken at the BGV. The influence between channels (agressor and victim channels are always in the same a-link) is stored in a root file and loaded to a complicated matrix. Correction has two steps: 1) left-correlation, 2) right-correlation. | Same but maybe we need to think of a way to measure the correlations on BGV data, to monitor them over time. |
6 | Correct for the different gain of each attenuator. | Difference in gain was also measured with an injector circuit and cannot be measured with BGV data. Storage in root file and loaded in a matrix as in 5. The adc value of signal file are modified taking this difference in gain into account. | The adc value should not be multiplied by a correction factor. The difference in gain should be implemented as a different threshold set in the clustering. |
7 | Correct for the difference in breakdown voltage of each SiPM channel. | Breakdown voltage (Vbd) depends on temperature T as: Vbd(T) = Vbd(25°C) + 0.0537*(T-25°C) The gain depends on the over-voltage (dV) as: G(dV) = 3.5*10⁶ * (dV/3.5) So the adc gain is adjusted for each channel with the measurement of Vbd(25°C) (reference measurement), T (measured with NTC soldered on the flex cable, same T for one SiPM) and Vbias (common to four SiPMs). Changing the adc gain is equivalent to changing the thresholds in the clustering algorithm. |
same |
I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|
![]() |
plotter_README.txt | r1 | manage | 2.6 K | 2015-11-27 - 10:01 | UnknownUser | |
![]() |
testbeam_nov2015.C | r1 | manage | 88.9 K | 2015-11-27 - 10:01 | UnknownUser |