mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-24 15:20:02 +02:00
parallelized calibration
This commit is contained in:
parent
09d0d3ba22
commit
74dfe04a18
@ -3929,7 +3929,7 @@ int multiSlsDetector::executeTrimming(trimMode mode, int par1, int par2, int imo
|
|||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
||||||
int id, im, ret=-100;
|
int id, im, ret=OK;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
if (detectors[id]) {
|
if (detectors[id]) {
|
||||||
@ -3948,7 +3948,7 @@ int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
|||||||
int* iret[thisMultiDetector->numberOfDetectors];
|
int* iret[thisMultiDetector->numberOfDetectors];
|
||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
if(detectors[idet]){
|
if(detectors[idet]){
|
||||||
iret[idet]= new int(-1);
|
iret[idet]= new int(OK);
|
||||||
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadSettingsFile,
|
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadSettingsFile,
|
||||||
detectors[idet],fname,imod,iret[idet]));
|
detectors[idet],fname,imod,iret[idet]));
|
||||||
threadpool->add_task(task);
|
threadpool->add_task(task);
|
||||||
@ -3958,12 +3958,10 @@ int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
|||||||
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
if(detectors[idet]){
|
if(detectors[idet]){
|
||||||
if(iret[idet] != NULL){
|
if(iret[idet] != NULL){
|
||||||
if (ret==-100)
|
if(*iret[idet] != OK)
|
||||||
ret=*iret[idet];
|
ret = FAIL;
|
||||||
else if (ret!=*iret[idet])
|
|
||||||
ret=-1;
|
|
||||||
delete iret[idet];
|
delete iret[idet];
|
||||||
}else ret=-1;
|
}else ret = FAIL;
|
||||||
if(detectors[idet]->getErrorMask())
|
if(detectors[idet]->getErrorMask())
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
}
|
}
|
||||||
@ -3971,7 +3969,6 @@ int multiSlsDetector::loadSettingsFile(string fname, int imod) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
@ -4055,7 +4052,7 @@ int multiSlsDetector::setAllTrimbits(int val, int imod){
|
|||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::loadCalibrationFile(string fname, int imod) {
|
int multiSlsDetector::loadCalibrationFile(string fname, int imod) {
|
||||||
int id, im, ret;
|
int id, im, ret = OK;
|
||||||
|
|
||||||
if (decodeNMod(imod, id, im)>=0) {
|
if (decodeNMod(imod, id, im)>=0) {
|
||||||
if (detectors[id]) {
|
if (detectors[id]) {
|
||||||
@ -4065,17 +4062,37 @@ int multiSlsDetector::loadCalibrationFile(string fname, int imod) {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
} else if (imod<0) {
|
} else if (imod<0) {
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
if(!threadpool){
|
||||||
ret=detectors[idet]->loadCalibrationFile(fname, imod);
|
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(OK);
|
||||||
|
Task* task = new Task(new func2_t <int,slsDetector,string,int,int>(&slsDetector::loadCalibrationFile,
|
||||||
|
detectors[idet],fname,imod,iret[idet]));
|
||||||
|
threadpool->add_task(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
threadpool->wait_for_tasks_to_complete();
|
||||||
|
for(int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++){
|
||||||
|
if(detectors[idet]){
|
||||||
|
if(iret[idet] != NULL){
|
||||||
|
if(*iret[idet] != OK)
|
||||||
|
ret = FAIL;
|
||||||
|
delete iret[idet];
|
||||||
|
}else ret = FAIL;
|
||||||
if(detectors[idet]->getErrorMask())
|
if(detectors[idet]->getErrorMask())
|
||||||
setErrorMask(getErrorMask()|(1<<idet));
|
setErrorMask(getErrorMask()|(1<<idet));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user