fixed segfault on loading trimbits

This commit is contained in:
Erik Frojdh 2019-03-18 18:10:50 +01:00
parent 43012e4f28
commit 38bf540c1a
3 changed files with 14 additions and 9 deletions

View File

@ -6,7 +6,7 @@ Created on Tue Nov 14 16:49:07 2017
@author: l_frojdh @author: l_frojdh
""" """
fw_version = 22 fw_version = 23
detector_type = 'Eiger' detector_type = 'Eiger'
known_hostnames = ['beb083', 'beb098'] known_hostnames = ['beb083', 'beb098']
image_size = (512,1024) #rows, cols image_size = (512,1024) #rows, cols

View File

@ -176,7 +176,7 @@ int64_t multiSlsDetector::getId(idMode mode, int detPos) {
return sls::minusOneIfDifferent(r); return sls::minusOneIfDifferent(r);
} }
std::vector<int64_t> multiSlsDetector::getDetectorNumber(){ std::vector<int64_t> multiSlsDetector::getDetectorNumber() {
return parallelCall(&slsDetector::getId, slsDetectorDefs::DETECTOR_SERIAL_NUMBER); return parallelCall(&slsDetector::getId, slsDetectorDefs::DETECTOR_SERIAL_NUMBER);
} }
@ -849,7 +849,7 @@ multiSlsDetector::setSettings(detectorSettings isettings, int detPos) {
return (detectorSettings)sls::minusOneIfDifferent(r); return (detectorSettings)sls::minusOneIfDifferent(r);
} }
int multiSlsDetector::getThresholdEnergy(int detPos) { int multiSlsDetector::getThresholdEnergy(int detPos){
// single // single
if (detPos >= 0) { if (detPos >= 0) {
return detectors[detPos]->getThresholdEnergy(); return detectors[detPos]->getThresholdEnergy();
@ -863,16 +863,17 @@ int multiSlsDetector::getThresholdEnergy(int detPos) {
return -1; return -1;
} }
int multiSlsDetector::setThresholdEnergy(int e_eV, detectorSettings isettings, int multiSlsDetector::setThresholdEnergy(int e_eV,
int tb, int detPos) { detectorSettings isettings,
int tb,
int detPos) {
// single // single
if (detPos >= 0) { if (detPos >= 0) {
return detectors[detPos]->setThresholdEnergy(e_eV, isettings, tb); return detectors[detPos]->setThresholdEnergy(e_eV, isettings, tb);
} }
// multi // multi
auto r = auto r = parallelCall(&slsDetector::setThresholdEnergy, e_eV, isettings, tb);
parallelCall(&slsDetector::setThresholdEnergy, e_eV, isettings, tb);
if (sls::allEqualWithTol(r, 200)) { if (sls::allEqualWithTol(r, 200)) {
return r.front(); return r.front();
} }

View File

@ -1339,7 +1339,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
FILE_LOG(logDEBUG1) << "Settings File is " << settingsfname; FILE_LOG(logDEBUG1) << "Settings File is " << settingsfname;
//read the files //read the files
myMod = createModule(); // readSettings also checks if create module is null // myMod = createModule(); // readSettings also checks if create module is null
if (nullptr == readSettingsFile(settingsfname, myMod, tb)) { if (nullptr == readSettingsFile(settingsfname, myMod, tb)) {
if (myMod) { if (myMod) {
deleteModule(myMod); deleteModule(myMod);
@ -1392,7 +1392,10 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
deleteModule(myMod2); deleteModule(myMod2);
return FAIL; return FAIL;
} }
myMod->iodelay = myMod1->iodelay; // myMod = createModule();
// myMod->iodelay = myMod1->iodelay;
//interpolate module //interpolate module
myMod = interpolateTrim(myMod1, myMod2, e_eV, trim1, trim2, tb); myMod = interpolateTrim(myMod1, myMod2, e_eV, trim1, trim2, tb);
@ -1404,6 +1407,7 @@ int slsDetector::setThresholdEnergyAndSettings(int e_eV, detectorSettings isetti
return FAIL; return FAIL;
} }
//interpolate tau //interpolate tau
myMod->iodelay = myMod1->iodelay;
myMod->tau = linearInterpolation(e_eV, trim1, trim2, myMod1->tau, myMod2->tau); myMod->tau = linearInterpolation(e_eV, trim1, trim2, myMod1->tau, myMod2->tau);
//printf("new tau:%d\n",tau); //printf("new tau:%d\n",tau);