mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-23 15:00:02 +02:00
merge from 3.0.1 parallalize dr
This commit is contained in:
commit
a654febb7e
@ -4266,45 +4266,63 @@ int multiSlsDetector::setCounterBit(int i){
|
||||
|
||||
int multiSlsDetector::setDynamicRange(int p) {
|
||||
|
||||
int ret=-100, ret1;
|
||||
thisMultiDetector->dataBytes=0;
|
||||
thisMultiDetector->dataBytesInclGapPixels=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));
|
||||
thisMultiDetector->dataBytes+=detectors[idet]->getDataBytes();
|
||||
thisMultiDetector->dataBytesInclGapPixels+=detectors[idet]->getDataBytesInclGapPixels();
|
||||
// cout << "db " << idet << " " << detectors[idet]->getDataBytes() << endl;
|
||||
thisMultiDetector->numberOfChannels+=detectors[idet]->getTotalNumberOfChannels();
|
||||
int ret=-100;
|
||||
thisMultiDetector->dataBytes=0;
|
||||
thisMultiDetector->dataBytesInclGapPixels=0;
|
||||
thisMultiDetector->numberOfChannels=0;
|
||||
|
||||
if (ret==-100)
|
||||
ret=ret1;
|
||||
else if (ret!=ret1)
|
||||
ret=-1;
|
||||
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();
|
||||
thisMultiDetector->dataBytesInclGapPixels+=detectors[idet]->getDataBytesInclGapPixels();
|
||||
thisMultiDetector->numberOfChannels+=detectors[idet]->getTotalNumberOfChannels();
|
||||
if (ret==-100)
|
||||
ret=*iret[idet];
|
||||
else if (ret!=*iret[idet])
|
||||
ret=-1;
|
||||
delete iret[idet];
|
||||
}else ret=-1;
|
||||
if(detectors[idet]->getErrorMask())
|
||||
setErrorMask(getErrorMask()|(1<<idet));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//for usability for the user
|
||||
if (getDetectorsType() == EIGER){
|
||||
if(p == 32){
|
||||
std::cout << "Setting Clock to Quarter Speed to cope with Dynamic Range of 32" << std::endl;
|
||||
setSpeed(CLOCK_DIVIDER,2);
|
||||
}
|
||||
else if(p == 16){
|
||||
std::cout << "Setting Clock to Half Speed for Dynamic Range of 16" << std::endl;
|
||||
setSpeed(CLOCK_DIVIDER,1);
|
||||
}
|
||||
if (p != -1)
|
||||
updateOffsets();
|
||||
}
|
||||
return ret;
|
||||
|
||||
//for usability for the user
|
||||
if (getDetectorsType() == EIGER){
|
||||
if(p == 32){
|
||||
std::cout << "Setting Clock to Quarter Speed to cope with Dynamic Range of 32" << std::endl;
|
||||
setSpeed(CLOCK_DIVIDER,2);
|
||||
}
|
||||
else if(p == 16){
|
||||
std::cout << "Setting Clock to Half Speed for Dynamic Range of 16" << std::endl;
|
||||
setSpeed(CLOCK_DIVIDER,1);
|
||||
}
|
||||
if (p != -1)
|
||||
updateOffsets();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
int multiSlsDetector::getMaxMods() {
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user