In order to port our reconstruction workflow for data compression for EMCAL to the FLP we need to set a FLP-specific subspecification to the DPL channels as we have two FLPs and both FLPs would write into the same channel in case the subspecification is the same. The reconstruction workflow can take any subspecification as parameter. A possible candidate would be the ID of the FLP. Is there any way to handle this with the control workflows so that a dedicated subspecification value can be passed to the DPL workflow during configuration, which is different on the two FLPs.
Hi, we discussed with @teo about this a bit.
I assume you need it to have unique IDs for processed data. If this is something you need to run QC, then perhaps we have to understand better what you want to do, because you shouldn’t need it.
Not sure my point was clear, let me try to explain again:
Our problem is that we 2 FLPs (one for EMCAL and one for DCAL), and if we run the reconstruction workflow on both simultaneously they will both write EMC/CELLS/0 and EMC/CELLSTRGR/0. According to discussions with @shahoian this will create problems in timeframe building on the EPN as we have 2 processors sending channels with exactly the same channel configuration, and we must define the subspecification differently for the 2 FLPs. In [EMCAL-703] Add optional settable subspecification for raw to digits output by mfasDa · Pull Request #6725 · AliceO2Group/AliceO2 · GitHub I added the option to make the subspecification settable. What we need now is a way via the control workflows to be able to configure different subspecifications for the 2 FLPs. This is a feature only needed on the FLP - when we run offline or on the EPN there is no issue in timeframe building and the subspecification can be always 0.
Then you could use what i proposed above with {{ it }} and a function proposed by @teo which would strip the FLP name to the FLP ID only (alio2-cr1-flp146 → 146).
Just for the record, privately i proposed you also an alternative, where you use outputs for any subspec (EMC/CELLS/*) on both FLPs and you determine the output subspec based on link id.
@mfasel I think the device on the FLP can do this w/o any option passing or interaction with external world: all what you need to do is to define your outputspec via ConcreteDataTypeMatcher (wildcarded subspec) and tell to your device to push the output with the subspec = e.g. the FEEID of the 1st encountered RDH (which will happen to be the same as the subspec of the corresponding incoming raw data). The combination of your DataDescription and such subspec is guaranteed to be unique and this is all what you need. Obviously, the consumer device should also subscribe with ConcreteDataTypeMatcher
PS just noticed that @pkonopka proposed the same (as private communication)
Dear @mfasel, @pkonopka, @shahoian
I would like to implement same functionality for PHOS, but I see one problem in automatic reading of subspec number from the data header: If the very first TF will be empty, we do not have raw data to calculate subspec and have to send output to some default subspec. Then, once data will arrive, subspec will change. Probably, if all consumers will take wildcarded inputs is does not matter, but I am not sure, Is it OK for the framework if subspec will change in the process?
Dear Giulio @eulisse,
do you expect any progress in implementation of “excluded wildcards”? Or should we invent another way how to separate input and output messages? Best regards, Dmitri