parallelized setting dynamic range

This commit is contained in:
2018-02-07 15:45:59 +01:00
parent a6b917851c
commit 94b61ea2c4

View File

@@ -4228,22 +4228,40 @@ int multiSlsDetector::setCounterBit(int i){
int multiSlsDetector::setDynamicRange(int p) {
int ret=-100, ret1;
int ret=-100;
thisMultiDetector->dataBytes=0;
thisMultiDetector->numberOfChannels=0;
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; ++idet) {
if (detectors[idet]) {
ret1=detectors[idet]->setDynamicRange(p);
if(detectors[idet]->getErrorMask())
setErrorMask(getErrorMask()|(1<<idet));
if(!threadpool){
cout << "Error in creating threadpool. Exiting" << endl;
return -1;
}else{
//return storage values
int* iret[thisMultiDetector->numberOfDetectors];
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; ++idet){
if(detectors[idet]){
iret[idet]= new int(-1);
Task* task = new Task(new func1_t<int,int>(&slsDetector::setDynamicRange,
detectors[idet],p,iret[idet]));
threadpool->add_task(task);
}
}
threadpool->startExecuting();
threadpool->wait_for_tasks_to_complete();
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; ++idet){
if(detectors[idet]){
if(iret[idet] != NULL){
thisMultiDetector->dataBytes+=detectors[idet]->getDataBytes();
// cout << "db " << idet << " " << detectors[idet]->getDataBytes() << endl;
thisMultiDetector->numberOfChannels+=detectors[idet]->getTotalNumberOfChannels();
if (ret==-100)
ret=ret1;
else if (ret!=ret1)
ret=*iret[idet];
else if (ret!=*iret[idet])
ret=-1;
delete iret[idet];
}else ret=-1;
if(detectors[idet]->getErrorMask())
setErrorMask(getErrorMask()|(1<<idet));
}
}
}
@@ -4259,9 +4277,10 @@ int multiSlsDetector::setDynamicRange(int p) {
}
}
return ret;
}
int multiSlsDetector::getMaxMods() {