performable_scans
This document contains all possible and running scans, performable with a RD53B.
Functions
|
AuroraServiceTest counts the number of service bits received in a given time. |
|
BERTest uses a PRBS7 pattern to generate a signal, which will be received and compared. |
|
Scan Types: 0 = SLDO 1 = VDDA, VDDD sweep (voltage trimming) 2 = deltaVCal sweep 3 = IREF check |
|
Gain is used to measure the relation between the injected charge and the time over threshold. |
|
Injection delay scan is used to optimise the injection to readout latency of a chip. |
|
|
|
A function to read the results from the scans using the root files that are saved. |
|
Noise is used to check, if all pixels on the readout-chip are still working. |
|
PixelAlive is used to check, if all pixels on the readout-chip are still working. |
|
ResetforCalibration is used, to set the RD53B-Module up for testing. |
|
SCurve can be used to determine the threshold of individual pixels. |
|
A generic scan, that can accept any parameter to set in the .xml file and that can execute any ph2_acf scan. |
|
ThersholdAdjust is used to move the threshold next to a given value. |
|
ThersholdEquilization is used to align the thresholds of each pixel around the given threshold |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AuroraServiceTest
- module_testing.config.performable_scans.AuroraServiceTest(logger, context, chain2Test=3, nSteps=100, nReps=100, maxTAP0=0, runtime=5000, active=15, serviceBlockafterN=60, count=None)
AuroraServiceTest counts the number of service bits received in a given time. It will adapt the TAP0 value and allows to find the minimum setting required for the module to communicate correctly
- :param chain2Test = 3 - testing for different TAP0 settings with given nReps
4 - varying the number of ServiceBlocks up to the given value nReps 5 - varying the time up to runtime in nReps steps
:param nSteps = 100 - number of different TAP0 between 0 and the maxTAP0 :param nReps = 100 - nUmber of repetitions or test settings depending on chain2test :param maxTAP0 = 0 - maxTAP0 value. If 0, default is used (1000 for primary, 400 for secondary) :param runtime = 50000 - runtime of a single setting or longest runtime used for time varying test :param active = 15 - binary to select chips for testing ~ 0b1111 where 1 is ROC0 and 8 is ROC3 :param serviceBlockafterN = 60 - number of data blocks between two service blocks
return csv files containing each measurement
BERTest
- module_testing.config.performable_scans.BERTest(logger, context, DAC_CML_BIAS_0=500, chain2Test=0, byTime=1, framesORtime=240, TargetBER=1e-05, count=None)
BERTest uses a PRBS7 pattern to generate a signal, which will be received and compared. The BitError should be low if the TAP0 setting is high enough.
:param DAC_CML_BIAS_0 = 500 - TAP0 Setting. BERTest will find errors for low values. :param chain2Test = 0 - Configuration of Test: 0 is FE-BE :param byTime = 1 - Choose frames (0) or time (1) :param framesORtime = 240 - Set frames or time :param TargetBER = 1e-5 - Set threshold, where BERTest is succesful
return root-files containing the results of the scan
GADCSweep
- module_testing.config.performable_scans.GADCSweep(logger, context, scan_type, monitors, sweep, delay=1, constant=0)
Scan Types: 0 = SLDO 1 = VDDA, VDDD sweep (voltage trimming) 2 = deltaVCal sweep 3 = IREF check
Gain
- module_testing.config.performable_scans.Gain(logger, context, nEvents=100, nEvtsBurst=100, nTRIGxEvent=10, INJtype=1, nClkDelays=1300, VCalHstop=4000, VCalHnsteps=50, UpdateChipCfg=1, count=None)
Gain is used to measure the relation between the injected charge and the time over threshold.
:param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections, usually 100 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 1 - all active :param nClkDelays - time between tests, usually 1300 :param UpdateChipCfg - allow the chip to update configurations, usually 1
return root-file containing the results of the scan overactive pixels have been masked
InjectionDelay
- module_testing.config.performable_scans.InjectionDelay(logger, context, DoOnlyNGroups=1, nEvents=100, nEvtsBurst=100, lat_start=110, lat_stop=150, nClkDelays=1300, count=None)
Injection delay scan is used to optimise the injection to readout latency of a chip. It has been shown, that there is a threshold fluctuation inside one bunch crossing, which makes it vital to optimise this value in order to get the best result. This scan has to be performed with one bunch crossing read-out and is constisting of two parts:
First, a latency scan is performed that intends to optimise the ‘TriggerConfig’ value. Second, with this value, the injection delay scan finds the optimal ‘CAL_EDGE_FINE_DELAY’ value.
Currently, Ph2_ACF does not support ‘TriggerConfig’ to be updated (it has to be written in the .txt file for dirigent to be able to update the .xml)
:param DoNSteps - sets the maximal number of changes in the LDAC. If 0, binary search is used for best fit. :param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections per event, usually 100 :param lat_start - lower bound for the scan over the latency, default 110 :param lat_stop - upper bound for the scan over the latency, default 150 :param nClkDelays - time between tests, usually 1300
LastChipMonitorResult
- module_testing.config.performable_scans.LastChipMonitorResult(logger, context, monitor)
LastResults
- module_testing.config.performable_scans.LastResults(logger, context, label, skip_felis, scan_min, scan_max)
A function to read the results from the scans using the root files that are saved. It searches for the latest saved root file and depending on the name, searches for specific plots where data is saved. This is an easy way to get the results from a successful scan. Will fail, if the scan does not successfully finish
Noise
- module_testing.config.performable_scans.Noise(logger, context, nEvents=1000000.0, nEvtsBurst=10000.0, nTRIGxEvent=10, INJtype=0, nClkDelays=1300, OccPerPixel=1e-06, UpdateChipCfg=1, count=None)
Noise is used to check, if all pixels on the readout-chip are still working. No charge is injected and the charge is measured. If the pixel counts enough events, it can be marked as not working.
:param nEvents - number of Events, usually 1e7 :param nEvtsBurst - number of injections, usually 1e4 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 0 - no injections :param nClkDelays - time between tests, usually 280 :param OccPerPixel - rate of events accounted for, to mark a pixel as not working, usually 1e-6 :param UpdateChipCfg - allow the chip to update configurations, usually 1
return root-file containing the results of the scan overactive pixels have been masked
PixelAlive
- module_testing.config.performable_scans.PixelAlive(logger, context, nEvents=100, nEvtsBurst=100, nTRIGxEvent=10, INJtype=1, nClkDelays=1300, OccPerPixel=1e-06, UpdateChipCfg=1, count=None)
PixelAlive is used to check, if all pixels on the readout-chip are still working. A charge is injected into the pixels multiple times. If the pixel does not count enough events, it can be markes as not working.
:param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections, usually 100 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 1 - all active :param nClkDelays - time between tests, usually 1300 :param OccPerPixel - rate of events not accounted for, to mark a pixel as not working, usually 1e-6 :param UpdateChipCfg - allow the chip to update configurations, usually 1
return root-file containing the results of the scan inactive pixels have been masked
ResetSettings
- module_testing.config.performable_scans.ResetSettings(logger, context, fe_dict=None, global_dict=None, scan_settings=None, count=None)
ResetforCalibration is used, to set the RD53B-Module up for testing. This contains several steps. - Unnecessary devices are disconnected, in this case the relay board - The detector is reset - The initial threshold is loaded on the detector
:param logger - the logger which will receive the output and information :param context - given by calibration, contains the settings from the .xml file :param DAC_GDAC_LIN - Used, to set the following parameters alltogether, if an individual value is not defined. Standard value is given with 450 :param DAC_GDAC_L_LIN - Set starting threshold for left zone :param DAC_GDAC_M_LIN - Set starting threshold for middle zone :param DAC_GDAC_R_LIN - Set starting threshold for right zone :param count - optional string outputted together with the log.
no return
SCurve
- module_testing.config.performable_scans.SCurve(logger, context, nEvents=100, nEvtsBurst=100, nTRIGxEvent=10, INJtype=1, nClkDelays=1300, VCalHnsteps=50, VCalHstop=None, count=None)
SCurve can be used to determine the threshold of individual pixels. A series of increasing charges is injected and measured, giving a threshold at which the pixel can record events.
:param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections, usually 100 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 1 - all active :param nClkDelays - time between tests, usually 1300
return root-file containing the results of the scan
Scan
- module_testing.config.performable_scans.Scan(logger, context, scan, write_xml, fe_dict=None, fe_laneconfig_dict=None, global_dict=None, scan_settings=None, scan_label=None, count=None, skip_felis=False, *flags)
A generic scan, that can accept any parameter to set in the .xml file and that can execute any ph2_acf scan. It also updates the .xml file with the values required to update after certain scans (especially the injection delay scan and the threshold adjust scan.
:param logger : logging instance used :param context : instruments and ph2_acf object instances :param scan : name of the scan as called by ph2_acf :param write_xml : defines if after the scan the values from the txt file are transfered to the xml file. :param fe_dict : front-end settings to update for this scan :param global_dict : global settings to update for this scan :param scan_settings: dictionary of name and value to set for the scan parameters. After performing the scan, the original values are reset again. :param count : optional ouput saying at which number in the scan sequence it is.
ThresholdAdjust
- module_testing.config.performable_scans.ThresholdAdjust(logger, context, TargetThr=2000, nEvents=100, nEvtsBurst=100, nTRIGxEvent=10, INJtype=1, nClkDelays=1300, count=None)
ThersholdAdjust is used to move the threshold next to a given value. This value will be applied as DAC_GDAC
:param TargetThr - target, which is supposed to be the threshold, usually 2000 :param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections, usually 100 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 1 - all active :param nClkDelays - time between tests, usually 1300
return root-file containing the results of the scan DAC_GDAC_L_LIN, DAC_GDAC_R_LIN, DAC_GDAC_M_LIN are changed to the optimal threshold
ThresholdEqualization
- module_testing.config.performable_scans.ThresholdEqualization(logger, context, DoNSteps=0, nEvents=100, nEvtsBurst=100, nTRIGxEvent=10, INJtype=1, nClkDelays=1300, UpdateChipCfg=1, count=None)
ThersholdEquilization is used to align the thresholds of each pixel around the given threshold
:param DoNSteps - sets the maximal number of changes in the LDAC. If 0, binary search is used for best fit. :param nEvents - number of Events, usually 100 :param nEvtsBurst - number of injections, usually 100 :param nTRIGxEvent- number of trigger per event, usually 10 :param INJtype - how is the charge injected, usually type 1 - all active :param nClkDelays - time between tests, usually 1300
return root-file containing the results of the scan Equilibrated LDAC-Values for all pixel
edit_value_in_XML
- module_testing.config.performable_scans.edit_value_in_XML(logger, xmlFile, hybrid_ids, chip_ids, values, key='eFuseCode', croc_ver='RD53Bv2')
find_runnumber
- module_testing.config.performable_scans.find_runnumber()
get_prefix
- module_testing.config.performable_scans.get_prefix(hybrid)
get_rootpath
- module_testing.config.performable_scans.get_rootpath(hybrid, chip)
getval_gain
- module_testing.config.performable_scans.getval_gain(logger, context, froot)
getval_injdelay
- module_testing.config.performable_scans.getval_injdelay(logger, context, flatency, finjdelay)
getval_noise
- module_testing.config.performable_scans.getval_noise(logger, context, froot)
getval_pixelalive
- module_testing.config.performable_scans.getval_pixelalive(logger, context, froot)
getval_scurve
- module_testing.config.performable_scans.getval_scurve(logger, context, froot)
getval_thradj
- module_testing.config.performable_scans.getval_thradj(logger, context, froot, scan_min, scan_max)
getval_threqu
- module_testing.config.performable_scans.getval_threqu(logger, context, froot)
run_monitoring
- module_testing.config.performable_scans.run_monitoring(logger, context, monitors, felis_label, count, **kwargs)
- Parameters:
**kwargs –
Additional keyword arguments. Can include: -
runtime(int): Running time of thephysicsscan in seconds. Default 10 s.