![]() |
Project
|
So far MCH has only one calibration : the bad channel map.
This bad channel map is computed from pedestal data taken in special calibration runs, where the actual zero suppression is disabled in the electronics, so we readout complete information from the detector and can compute the mean and sigma of the pedestal values for all the channels.
Once the pedestal means and sigmas are known, we declare some channels bad if their pedestal mean and/or sigma are outside of some limits (defined in BadChannelCalibratorParam
, which is a ConfigurableParam
, hence settable from the command-line using the --configKeyValues
option of the workflow).
Two objects are produced by the calibration workflow (see below), distinguishable by the subspec they use :
std::vector
of DsChannelId
that should end up in the regular CCDB. That object is/will be used for filtering digits during the reconstruction/simulation phaseTObjString
wrapping a CSV containing the same information as above, that should end up in the DCS CDB. That object is meant to be used by DCS to configure the electronics.The calibration device executable is named o2-calibration-mch-badchannel-calib-workflow
(spec name is mch-badchannel-calibrator
). It can be configured using the MCHBadChannelCalibratorParam keys.
By default the bad channel calibrator only computes the output object at the end-of-stream (EOS). To alleviate possible issues with EOS not working properly, one can set special key options to also compute after a given fraction of channels have reached enough statistics.
For instance (see also test/example-mch-pedestal-calibration.sh
) :
In that example we instruct the calibrator to compute (and forward to the CCDB populator) the bad channel map when at least 50% of the channels have more than 100 entries. Note that in this case, and depending of the run duration, several objects might be uploaded, while in the "normal" case (onlyAtEndOfStream=true
) there will be only one (or two, if two populators are used) object will be uploaded.