as far as we could check, it seems that a DPL device that sends two or more messages is dropping all of them whenever one is empty. In particular, we have a
raw-to-digits workflow that generates two DPL messages,
orbit-info. Whenever the
digits message is empty the
orbit-info message is dropped.
Is this the expected behavior? If yes, is there an option allowing to send empty messages?
If you are interested, below you can find an explanation of why we need those two messages, and why we need the
orbit-info to be sent regardless of the size of the
Thanks a lot in advance!
In the QC code for MCH we are currently implementing the computation of detector occupancies, which are generally defined as
number-of-digits / size-of-acquisition-window
The detailed math is a bit different in the case of triggered and continuous readout modes. In triggered mode, we open a 1 us time window for each trigger in which the detector signals are collected. Hence we can simply write
occupancy [MHz] = number-of-digits / number-of-triggers
On the other hand, in continuous mode we have to rely on the number of orbits in order to estimate the total length of the acquisition window, hence we have something like
occupancy = number-of-digits / number-of-orbits
Our typical QC chains for occupancy plots will probably look like this:
readout -> o2-mch-raw-to-digits-workflow -> QC readout -> STFbuilder -> STFsender -> TFbuilder -> o2-mch-raw-to-digits-workflow -> QC
The second chain is the one I would expect to use during normal operation, while the fist one is a simplified workflow in which we process individual HB frames instead of full Time Frames.
The first issue we have is that the information about the number of processed orbits gets lost when going from raw data to digits. We currently solve this by introducing an additional DPL message at the output of the raw-to-digits-workflow, which provides the list of processed orbits for each CRU link.
This works fine when at least one digits is present in the output. However, when no digits are found and the corresponding DPL message is empty, we realized that the DPL output is completely dropped and the message with the list of orbits is also discarded.
This means we are not able to compute the occupancy when no digits are actually sent, which is not OK.
For the moment we “solved” this by injecting a dummy digit into the DPL message when it is empty, but we would like to check is there is a cleaner and more standard way of achieving the same…
Thanks a lot in advance!