From 1eb70f63ad3a57d54bf1f731d8646ad1dab26c3f Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Tue, 26 Jan 2021 17:04:09 +0100 Subject: [PATCH] replacing out of range trimbits with edge values --- slsDetectorSoftware/src/Module.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/slsDetectorSoftware/src/Module.cpp b/slsDetectorSoftware/src/Module.cpp index d02b8ef04..771fa23d0 100644 --- a/slsDetectorSoftware/src/Module.cpp +++ b/slsDetectorSoftware/src/Module.cpp @@ -351,6 +351,23 @@ void Module::setAllThresholdEnergy(std::array e_eV, myMod.reg = isettings; std::copy(e_eV.begin(), e_eV.end(), myMod.eV); LOG(logDEBUG) << "ev:" << ToString(myMod.eV); + + //check for trimbits that are out of range + bool out_of_range = false; + for(int i = 0; i!=myMod.nchan; ++i){ + if (myMod.chanregs[i]<0){ + myMod.chanregs[i] = 0; + out_of_range = true; + }else if(myMod.chanregs[i]>63){ + myMod.chanregs[i]=63; + out_of_range = true; + } + } + if (out_of_range){ + LOG(logWARNING) << "Some trimbits were out of range after interpolation, these have been replaced with 0 or 63."; + } + + setModule(myMod, trimbits); if (getSettings() != isettings) { throw RuntimeError("setThresholdEnergyAndSettings: Could not set "