From 74dfe04a181ec6863f29ad0177f3fc43771b6be0 Mon Sep 17 00:00:00 2001 From: Dhanya Maliakal Date: Thu, 7 Jul 2016 16:24:58 +0200 Subject: [PATCH] parallelized calibration --- .../multiSlsDetector/multiSlsDetector.cpp | 75 ++++++++++++------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index a982057b4..ffcbae1ef 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -3929,7 +3929,7 @@ int multiSlsDetector::executeTrimming(trimMode mode, int par1, int par2, int imo int multiSlsDetector::loadSettingsFile(string fname, int imod) { - int id, im, ret=-100; + int id, im, ret=OK; if (decodeNMod(imod, id, im)>=0) { if (detectors[id]) { @@ -3948,7 +3948,7 @@ int multiSlsDetector::loadSettingsFile(string fname, int imod) { int* iret[thisMultiDetector->numberOfDetectors]; for(int idet=0; idetnumberOfDetectors; idet++){ if(detectors[idet]){ - iret[idet]= new int(-1); + iret[idet]= new int(OK); Task* task = new Task(new func2_t (&slsDetector::loadSettingsFile, detectors[idet],fname,imod,iret[idet])); threadpool->add_task(task); @@ -3957,13 +3957,11 @@ int multiSlsDetector::loadSettingsFile(string fname, int imod) { threadpool->wait_for_tasks_to_complete(); for(int idet=0; idetnumberOfDetectors; idet++){ if(detectors[idet]){ - if(iret[idet] != NULL){ - if (ret==-100) - ret=*iret[idet]; - else if (ret!=*iret[idet]) - ret=-1; - delete iret[idet]; - }else ret=-1; + if(iret[idet] != NULL){ + if(*iret[idet] != OK) + ret = FAIL; + delete iret[idet]; + }else ret = FAIL; if(detectors[idet]->getErrorMask()) setErrorMask(getErrorMask()|(1<=0) { - if (detectors[id]) { - ret = detectors[id]->loadCalibrationFile(fname, im); - if(detectors[id]->getErrorMask()) - setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { - if (detectors[idet]) { - ret=detectors[idet]->loadCalibrationFile(fname, imod); - if(detectors[idet]->getErrorMask()) - setErrorMask(getErrorMask()|(1<=0) { + if (detectors[id]) { + ret = detectors[id]->loadCalibrationFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors]; + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + iret[idet]= new int(OK); + Task* task = new Task(new func2_t (&slsDetector::loadCalibrationFile, + detectors[idet],fname,imod,iret[idet])); + threadpool->add_task(task); + } + } + threadpool->wait_for_tasks_to_complete(); + for(int idet=0; idetnumberOfDetectors; idet++){ + if(detectors[idet]){ + if(iret[idet] != NULL){ + if(*iret[idet] != OK) + ret = FAIL; + delete iret[idet]; + }else ret = FAIL; + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<