diff --git a/include/DoocsProcessArray.h b/include/DoocsProcessArray.h index 5e431e118356cbf9c64fd9017aacf4ca4b81ed6d..2507df78d122511722c80229e2b339c5fa617490 100644 --- a/include/DoocsProcessArray.h +++ b/include/DoocsProcessArray.h @@ -104,7 +104,10 @@ namespace ChimeraTK { // before calling this function because calling this function through a function pointer is // comparatively expensive. // Only check the consistency group if there is a macro pulse number associated. - if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { + // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since + // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered + // from the DOOCS write to the other property. + if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { // data is not consistent (yet). Don't update the Doocs buffer. // check if this will now throw away data and generate a warning if(transferElementId == _processArray->getId()) { diff --git a/include/DoocsProcessScalar.h b/include/DoocsProcessScalar.h index 501516114a400f23f13d734f9b570495b3f0113b..b099e241df586d6153bab20992039e67192dda50 100644 --- a/include/DoocsProcessScalar.h +++ b/include/DoocsProcessScalar.h @@ -25,7 +25,10 @@ namespace ChimeraTK { // before calling this function because calling this function through a function pointer is // comparatively expensive. // Only check the consistency group if there is a macro pulse number associated. - if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { + // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since + // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered + // from the DOOCS write to the other property. + if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { // data is not consistent (yet). Don't update the Doocs buffer. // check if this will now throw away data and generate a warning if(transferElementId == _processScalar->getId()) { diff --git a/src/DoocsIfff.cc b/src/DoocsIfff.cc index 0b2a45e1a893d84018f014383000540cb31c0490..d798b21324457bb61ad1d7f81d6d0c353a186d2f 100644 --- a/src/DoocsIfff.cc +++ b/src/DoocsIfff.cc @@ -58,8 +58,11 @@ namespace ChimeraTK { registerVariable(OneDRegisterAccessor<float>(_f3Value)); } - void DoocsIfff::updateDoocsBuffer(const TransferElementID& elementId) { - if(!_consistencyGroup.update(elementId)) { + void DoocsIfff::updateDoocsBuffer(const TransferElementID& transferElementId) { + // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since + // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered + // from the DOOCS write to the other property. + if(transferElementId.isValid() && !_consistencyGroup.update(transferElementId)) { return; } diff --git a/src/DoocsSpectrum.cc b/src/DoocsSpectrum.cc index 3c2e7d29d5874f36efe9122ae3211efdaa4a9102..98562e97433427d44f10378211b135b654ead549 100644 --- a/src/DoocsSpectrum.cc +++ b/src/DoocsSpectrum.cc @@ -132,7 +132,10 @@ namespace ChimeraTK { // There are only the processArray and the macro pulse number in the consistency // group. The limits are coming asynchronously and not for every macro pulse, // so we just take test latest we have. - if(_macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { + // Do not check if update is coming from another DOOCS property mapped to the same variable (ID invalid), since + // the check would never pass. Such variables cannot use exact data matching anyway, since the update is triggered + // from the DOOCS write to the other property. + if(transferElementId.isValid() && _macroPulseNumberSource && !_consistencyGroup.update(transferElementId)) { // data is not consistent (yet). Don't update the Doocs buffer. // check if this will now throw away data and generate a warning if(transferElementId == _processArray->getId()) {