slsDetectorSoftware: trimen in multi does not check for each value in slsdet, fixed

This commit is contained in:
maliakal_d 2018-06-28 18:06:53 +02:00
parent 14d227f8db
commit 11de3dfde2
2 changed files with 46 additions and 5 deletions

View File

@ -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;
}

View File

@ -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; ip<npos;++ip) {
sprintf(answer,"%s %d",answer,opos[ip]);
if (npos != -1) {
sprintf(answer,"%d",npos);
int opos[npos];
npos = myDet->getTrimEn(opos);
if (npos != -1) {
for (int ip=0; ip<npos;++ip) {
sprintf(answer,"%s %d",answer,opos[ip]);
}
}
}
if (npos == -1)
sprintf(answer,"%d", -1);
return string(answer);
}