Connecting QC to DPL in the middle of workflow

Hi Barth @bvonhall , Piotr @pkonopka ,

let’s imagine a following workflow:

o2-raw-file-reader-workflow -b --input-conf raw/CPV/CPVraw.cfg --detect-tf0 --nocheck-tf-start-mismatch --configKeyValues "HBFUtils.nHBFPerTF=128" \
| o2-cpv-reco-workflow -b --input-type raw --output-type digits --disable-root-input --disable-mc --ccdb-url localtest \
| o2-calibration-cpv-calib-workflow --pedestals \
| o2-calibration-ccdb-populator-workflow

Explanation for it is following:
reader sends raw to cpv-reco, then cpv-reco takes raw and produces digits, then calibration-cpv takes digits and produces calibration objects, then ccdb-populator takes calibration objects and produces nothing. So there is no outputs of the whole workflow. I want to connect o2-qc in the middle of this workflow, namely I want to QC digits. How to do so? Do I need special configuration or just attach | o2-qc --config json://config.json to the end of the workflow with

        "dataSource": {
          "type": "direct",
          "query": "digits:CPV/DIGITS/0;dtrigrec:CPV/DIGITTRIGREC/0"
        },

in config.json?

Thanks, cheers,
Sergey

Hi,
Yes, I expect it should be fine if you put QC at the end.

As far as I know, the requirement is that all requested outputs should be available in the workflows before the one you are attaching. Thus only circular dependencies cannot work at the moment.

Cheers!

Hi Piotr,
yes, it works well. I see that calibration objects are produces and monitoring objects are updated as well.
Interesting that debug gui thinks that digits are coming to qc task from calibration task, not from Raw2Digit converter. I assume the framework is organized in such maner.

Cheers,
Sergey

This because DPL arranges Data Processors in a daisy chain if they request the same data, so this is perfectly normal.

Also, notice that starting from O2 20210927, the fact that they are daisy chained does not mean that the actual processing will be serialised.

Hi @eulisse ,

do you mean that at diagram I showed stream of digits will be taken by QCPedestalTask directly from Raw2DigitConverter? If not then can you please explain what ‘serialized’ means in this particular context?

Thanks!