From 11de3dfde203013c50ad349ccf1f1991f97d04de Mon Sep 17 00:00:00 2001 From: Dhanya Thattil Date: Thu, 28 Jun 2018 18:06:53 +0200 Subject: [PATCH] slsDetectorSoftware: trimen in multi does not check for each value in slsdet, fixed --- .../multiSlsDetector/multiSlsDetector.cpp | 35 +++++++++++++++++++ .../slsDetector/slsDetectorCommand.cpp | 16 ++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 69e86450f..2b45004a7 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -3517,6 +3517,7 @@ int multiSlsDetector::enableGapPixels(int val) { int multiSlsDetector::setTrimEn(int ne, int* ene) { int ret = -100, ret1; + int* ene1 = 0; for (int idet = 0; idet < detectors.size(); ++idet) { ret1 = detectors[idet]->setTrimEn(ne, ene); if (detectors[idet]->getErrorMask()) @@ -3525,12 +3526,28 @@ int multiSlsDetector::setTrimEn(int ne, int* ene) { ret = ret1; else if (ret != ret1) ret = -1; + + if (ene != NULL) { + if (ene1 == 0) { + ene1 = new int[ret1]; + for (int i = 0; i < ret1; ++i){ + ene1[i] = ene[i]; + } + }else if (ret != -1) { + // only check if it is not already a fail + for (int i = 0; i < ret; ++i){ + if (ene1[i] != ene[i]) + ret = -1; + } + } + } } return ret; } int multiSlsDetector::getTrimEn(int* ene) { int ret = -100, ret1; + int* ene1 = 0; for (int idet = 0; idet < detectors.size(); ++idet) { ret1 = detectors[idet]->getTrimEn(ene); if (detectors[idet]->getErrorMask()) @@ -3539,7 +3556,25 @@ int multiSlsDetector::getTrimEn(int* ene) { ret = ret1; else if (ret != ret1) ret = -1; + + if (ene != NULL) { + if (ene1 == 0) { + ene1 = new int[ret1]; + for (int i = 0; i < ret1; ++i){ + ene1[i] = ene[i]; + } + }else if (ret != -1) { + // only check if it is not already a fail + for (int i = 0; i < ret; ++i){ + if (ene1[i] != ene[i]) + ret = -1; + } + } + } } + + if (ene1) + delete [] ene1; return ret; } diff --git a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp index 385599a33..f129aca7a 100644 --- a/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp +++ b/slsDetectorSoftware/slsDetector/slsDetectorCommand.cpp @@ -3008,12 +3008,18 @@ string slsDetectorCommand::cmdTrimEn(int narg, char *args[], int action){ } } int npos=myDet->getTrimEn(); - sprintf(answer,"%d",npos); - int opos[npos]; - myDet->getTrimEn(opos); - for (int ip=0; ipgetTrimEn(opos); + if (npos != -1) { + for (int ip=0; ip