|
| 1 | +<!-- doxy |
| 2 | +\page refDetectorsMUONMCHCalibration Calibration |
| 3 | +/doxy --> |
| 4 | + |
| 5 | +# MCH Calibration |
| 6 | + |
| 7 | +## Calibration type(s) |
| 8 | + |
| 9 | +So far MCH has only one calibration : the bad channel map. |
| 10 | + |
| 11 | +This bad channel map is computed from pedestal data taken in special |
| 12 | +calibration runs, where the actual zero suppression is disabled in the |
| 13 | +electronics, so we readout complete information from the detector and can |
| 14 | +compute the mean and sigma of the pedestal values for all the channels. |
| 15 | + |
| 16 | +Once the pedestal means and sigmas are known, we declare some channels bad if |
| 17 | +their pedestal mean and/or sigma are outside of some limits (defined in |
| 18 | +`BadChannelCalibratorParam`, which is a `ConfigurableParam`, hence settable |
| 19 | +from the command-line using the `--configKeyValues` option of the workflow). |
| 20 | + |
| 21 | +## Calibration object(s) |
| 22 | + |
| 23 | +Two objects are produced by the calibration workflow (see below), |
| 24 | +distinguishable by the subspec they use : |
| 25 | + |
| 26 | +- subspec 0 : a `std::vector` of `DsChannelId` that should end up in the |
| 27 | + regular CCDB. That object is/will be used for filtering digits during the |
| 28 | + reconstruction/simulation phase |
| 29 | +- subspec 1 : a `TObjString` wrapping a CSV containing the same information as |
| 30 | + above, that should end up in the DCS CDB. That object is meant to be used by |
| 31 | + DCS to configure the electronics. |
| 32 | + |
| 33 | +## Calibration workflow |
| 34 | + |
| 35 | +The calibration device executable is named |
| 36 | +`o2-calibration-mch-badchannel-calib-workflow` (spec name is |
| 37 | +`mch-badchannel-calibrator`). It can be configured using the |
| 38 | +[MCHBadChannelCalibratorParam](include/MCHCalibration/BadChannelCalibratorParam.h) |
| 39 | +keys. |
| 40 | + |
| 41 | +By default the bad channel calibrator only computes the output object at the |
| 42 | +end-of-stream (EOS). To alleviate possible issues with EOS not working |
| 43 | +properly, one can set special key options to also compute after a given |
| 44 | +fraction of channels have reached enough statistics. |
| 45 | + |
| 46 | +For instance (see also `test/example-mch-pedestal-calibration.sh`) : |
| 47 | + |
| 48 | +```shell |
| 49 | +o2-raw-tf-reader-workflow --max-tf 10 --input-data \ |
| 50 | + $HOME/alice/data/ped/StfBuilder-CH9R-pedestals-ul-with_gnd-without_HV-20210617 | \ |
| 51 | +o2-mch-pedestal-decoding-workflow | \ |
| 52 | +o2-calibration-mch-badchannel-calib-workflow \ |
| 53 | + --configKeyValues="MCHBadChannelCalibratorParam.minRequiredNofEntriesPerChannel=100;MCHBadChannelCalibratorParam.minRequiredCalibratedFraction=0.5;MCHBadChannelCalibratorParam.onlyAtEndOfStream=false" | \ |
| 54 | +o2-calibration-ccdb-populator-workflow \ |
| 55 | + --ccdb-path http://localhost:6464 \ |
| 56 | + --sspec-min 0 --sspec-max 0 | \ |
| 57 | +o2-calibration-ccdb-populator-workflow \ |
| 58 | + --ccdb-path localhost:8484 --sspec-max 1 --sspec-min 1 --name-extention dcs | \ |
| 59 | +o2-qc \ |
| 60 | + --config json://$HOME/cernbox/o2muon/qc/qc_configs/qc-pedestal.json | \ |
| 61 | +o2-dpl-run \ |
| 62 | + --run -b \ |
| 63 | +> ped-calib.log |
| 64 | +``` |
| 65 | + |
| 66 | +In that example we instruct the calibrator to compute (and forward to the CCDB |
| 67 | +populator) the bad channel map when at least 50% of the channels have more than |
| 68 | +100 entries. Note that in this case, and depending of the run duration, several |
| 69 | +objects might be uploaded, while in the "normal" case |
| 70 | +(`onlyAtEndOfStream=true`) there will be only one (or two, if two populators |
| 71 | +are used) object will be uploaded. |
| 72 | + |
0 commit comments