From a7dbfa91ce294be1e32bd439c1947fb966e65a84 Mon Sep 17 00:00:00 2001 From: l_maliakal_d Date: Fri, 15 Mar 2013 08:11:11 +0000 Subject: [PATCH] changed multislsdetector class to check for error mask each time they call a slsdetector fucntion git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@494 951219d9-93cf-4727-9268-0efd64621fa3 --- .../multiSlsDetector/multiSlsDetector.cpp | 339 +++++++++++++++--- 1 file changed, 291 insertions(+), 48 deletions(-) diff --git a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp index 27b6b01ea..4519e0047 100644 --- a/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp +++ b/slsDetectorSoftware/multiSlsDetector/multiSlsDetector.cpp @@ -268,7 +268,7 @@ multiSlsDetector::~multiSlsDetector() { int multiSlsDetector::addSlsDetector(int id, int pos) { int j=thisMultiDetector->numberOfDetectors; - + if (slsDetector::exists(id)==0) { cout << "Detector " << id << " does not exist - You should first create it to determine type etc." << endl; @@ -316,9 +316,7 @@ int multiSlsDetector::addSlsDetector(int id, int pos) { detectors[pos]=new slsDetector(id, this); thisMultiDetector->detectorIds[pos]=detectors[pos]->getDetectorId(); thisMultiDetector->numberOfDetectors++; - - - + thisMultiDetector->dataBytes+=detectors[pos]->getDataBytes(); thisMultiDetector->numberOfChannels+=detectors[pos]->getTotalNumberOfChannels(); @@ -787,6 +785,8 @@ int multiSlsDetector::setMaster(int i) { #endif thisMultiDetector->masterPosition=i; detectors[i]->setMaster(IS_MASTER); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { if (i!=id) { @@ -795,6 +795,9 @@ int multiSlsDetector::setMaster(int i) { cout << "detector position " << id << " "; #endif detectors[id]->setMaster(IS_SLAVE); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setMaster(NO_MASTER); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setMaster(GET_MASTER); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { if (detectors[id]) { ret1=detectors[id]->setSynchronization(sync); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getThresholdEnergy(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<(ret1+200)) @@ -1008,6 +1022,8 @@ int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings ise for (i=posmin; isetThresholdEnergy(e_eV,-1,isettings); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getSettings(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setSettings(isettings); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { nChansDet = detectors[idet]->getChanRegs(retval1,fromDetector); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition) if (detectors[i]) { ret=detectors[i]->startAcquisition(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) { if (detectors[i]) { ret=detectors[i]->startAcquisition(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) { if (detectors[i]) { ret=detectors[i]->stopAcquisition(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->stopAcquisition(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[i]) { ret=detectors[i]->startReadOut(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->startReadOut(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getDataFromDetector(p); n=detectors[id]->getDataBytes(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<stopAcquisition(); - while ((retdet=detectors[id]->getDataFromDetector())) { + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getDataFromDetector())) { + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { if (detectors[id]) { retdet=detectors[id]->readFrame(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getDataBytes(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { if (detectors[id]) { detectors[id]->readAllNoWait(); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition) if (detectors[i]) { ret=detectors[i]->startAndReadAllNoWait(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) { if (detectors[i]) { ret=detectors[i]->startAndReadAllNoWait(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) - if (detectors[thisMultiDetector->masterPosition]) - return detectors[thisMultiDetector->masterPosition]->getRunStatus(); + if (detectors[thisMultiDetector->masterPosition]){ + s = detectors[thisMultiDetector->masterPosition]->getRunStatus(); + if(detectors[thisMultiDetector->masterPosition]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition)); + return s; + } - - if (detectors[0]) s=detectors[0]->getRunStatus(); + if (detectors[0]){ + s=detectors[0]->getRunStatus(); + if(detectors[0]->getErrorMask()) + setErrorMask(getErrorMask()|(1<<0)); + } for (int i=0; inumberOfDetectors; i++) { s1=detectors[i]->getRunStatus(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->setTimer(index,t); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) - if (detectors[thisMultiDetector->masterPosition]) - return detectors[thisMultiDetector->masterPosition]->getTimeLeft(index); - + if (detectors[thisMultiDetector->masterPosition]){ + ret1 = detectors[thisMultiDetector->masterPosition]->getTimeLeft(index); + if(detectors[thisMultiDetector->masterPosition]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition)); + return ret1; + } for (i=0; inumberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->getTimeLeft(index); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->setSpeed(index,value); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<dataBytes-=detectors[i]->getDataBytes(); ret=detectors[i]->setDynamicRange(n); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++){ if (detectors[i]){ temp = detectors[i]->getROI(index); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { detectors[i]->decodeData(datap, detp); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<correctionMask&=~(1<flatFieldFile,"none"); for (int i=0; inumberOfDetectors; i++) { - if (detectors[i]) + if (detectors[i]){ detectors[i]->setFlatFieldCorrection(NULL, NULL); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setFlatFieldCorrection(p, ep); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getTotalNumberOfChannels(); } } @@ -2144,6 +2230,8 @@ int multiSlsDetector::getFlatFieldCorrection(double *corr, double *ecorr) { else ep=NULL; dff=detectors[idet]->getFlatFieldCorrection(p, ep); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getTotalNumberOfChannels(); @@ -2255,6 +2343,8 @@ int multiSlsDetector::flatFieldCorrect(double* datain, double *errin, double* da if (errin) perr+=ichdet; detectors[idet]->flatFieldCorrect(datain+ichdet, perr, dataout+ichdet, errout+ichdet); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getTotalNumberOfChannels();//detectors[idet]->getNChans()*detectors[idet]->getNChips()*detectors[idet]->getNMods(); } } @@ -2280,6 +2370,8 @@ int multiSlsDetector::setRateCorrection(double t){ if (detectors[idet]) { detectors[idet]->setRateCorrection(t); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<rateCorrect(datain+ichdet, perr, dataout+ichdet, errout+ichdet); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getTotalNumberOfChannels(); } } @@ -2411,6 +2505,8 @@ int multiSlsDetector::setBadChannelCorrection(int nbad, int *badlist, int ff) { cout << "setting " << nbaddet << " badchans to detector " << idet << endl; #endif detectors[idet]->setBadChannelCorrection(nbaddet,badlist,0); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getMaxNumberOfChannels(); nbaddet=0; idet++; @@ -2431,6 +2527,8 @@ int multiSlsDetector::setBadChannelCorrection(int nbad, int *badlist, int ff) { cout << "setting " << nbaddet << " badchans to detector " << idet << endl; #endif detectors[idet]->setBadChannelCorrection(nbaddet,badlist,0); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getMaxNumberOfChannels(); nbaddet=0; idet++; @@ -2443,7 +2541,9 @@ int multiSlsDetector::setBadChannelCorrection(int nbad, int *badlist, int ff) { #endif if (detectors[i]) { detectors[i]->setBadChannelCorrection(nbaddet,badlist,0); - } + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setBadChannelCorrection(nbaddet,badlist,0); - } + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<correctionMask&=~(1<readAngularConversion(infile); - } + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { detectors[idet]->writeAngularConversion(outfile); - } + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { detectors[idet]->getAngularConversion(dir1,a1); - if (dir==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setDAC(val, idac, im); - if (ret1==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setChannel(reg, ichan, ichip, im); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setAngularConversionParameter(c,v); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getBadChannelCorrection(); bd = new int[nd]; nd=detectors[idet]->getBadChannelCorrection(bd); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getTotalNumberOfChannels()) { if (bad) bad[ntot]=choff+bd[id]; @@ -2717,6 +2835,8 @@ char* multiSlsDetector::getSettingsDir() { for (int idet=0; idetnumberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getSettingsDir(); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { detectors[idet]->setSettingsDir(s); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setSettingsDir(s.substr(p1,p2-p1)); - } + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setTrimEn(ne,ene); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->getTrimEn(ene); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getCalDir(); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { detectors[idet]->setCalDir(s); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setCalDir(s.substr(p1,p2-p1)); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getNetworkParameter(p); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->lockServer(p); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getLastClientIP(); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setReadOutFlags(flag); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setExternalCommunicationMode(pol); + if(detectors[0]->getErrorMask()) + setErrorMask(getErrorMask()|(1<<0)); for (int idet=1; idetnumberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setExternalCommunicationMode(pol); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<setExternalSignalFlags(pol,signalindex); + if(detectors[0]->getErrorMask()) + setErrorMask(getErrorMask()|(1<<0)); for (int idet=1; idetnumberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setExternalSignalFlags(pol,signalindex); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getSettingsFile(); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { - if(detectors[idet]->readDataFile(infile,imageVals)>=0){ + if(detectors[idet]->readDataFile(infile,imageVals)>=0){ ret1=detectors[idet]->sendImageToDetector(index,imageVals); if (ret==-100) ret=ret1; else if (ret!=ret1) ret=-1; } + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->resetCounterBlock(startACQ); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setDynamicRange(p); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<dataBytes+=detectors[idet]->getDataBytes(); thisMultiDetector->numberOfChannels+=detectors[idet]->getTotalNumberOfChannels(); if (ret==-100) @@ -3328,6 +3488,8 @@ int multiSlsDetector::setNumberOfModules(int p, dimension d) { } } ret+=detectors[idet]->setNumberOfModules(nm); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<dataBytes+=detectors[idet]->getDataBytes(); thisMultiDetector->numberOfChannels+=detectors[idet]->getTotalNumberOfChannels(); } @@ -3381,11 +3543,14 @@ int multiSlsDetector::decodeNMod(int i, int &id, int &im) { int64_t multiSlsDetector::getId(idMode mode, int imod) { - int id, im; + int id, im, ret; if (decodeNMod(imod, id, im)>=0) { if (detectors[id]) { - return detectors[id]->getId(mode, im); + ret = detectors[id]->getId(mode, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[id]) { - return detectors[id]->digitalTest(mode, im); + ret = detectors[id]->digitalTest(mode, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[id]) { - return detectors[id]->executeTrimming(mode, par1, par2, im); + ret = detectors[id]->executeTrimming(mode, par1, par2, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret=detectors[idet]->executeTrimming(mode, par1, par2, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[id]) { - return detectors[id]->loadSettingsFile(fname, im); + ret = detectors[id]->loadSettingsFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret=detectors[idet]->loadSettingsFile(fname, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[id]) { - return detectors[id]->saveSettingsFile(fname, im); + ret = detectors[id]->saveSettingsFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret=detectors[idet]->saveSettingsFile(fname, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<=0) { if (detectors[id]) { - return detectors[id]->loadCalibrationFile(fname, im); + 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]) { - return detectors[id]->saveCalibrationFile(fname, im); + ret = detectors[id]->saveCalibrationFile(fname, im); + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret=detectors[idet]->saveCalibrationFile(fname, imod); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->writeRegister(addr,val); - if (ret1==-100) + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->readRegister(addr); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<writeConfigurationFile(outfile,i); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<writeDataFile(outfile,n, data+off, pe, pa, dataformat, choff); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<writeDataFile(outfile, detectors[i]->getTotalNumberOfChannels(), data+off, choff); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getMaxNumberOfChannels(); off+=detectors[i]->getTotalNumberOfChannels(); } @@ -3882,6 +4085,8 @@ int multiSlsDetector::readDataFile(string fname, double *data, double *err, doub for (int i=0; inumberOfDetectors; i++) { if (detectors[i]) { iline+=detectors[i]->readDataFile(detectors[i]->getTotalNumberOfChannels(), infile, data+off, pe, pa, dataformat, choff); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getMaxNumberOfChannels(); off+=detectors[i]->getTotalNumberOfChannels(); if (pe) @@ -3922,6 +4127,8 @@ int multiSlsDetector::readDataFile(string fname, int *data) { for (int i=0; inumberOfDetectors; i++) { if (detectors[i]) { iline+=detectors[i]->readDataFile(infile, data+off,detectors[i]->getTotalNumberOfChannels(), choff); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getMaxNumberOfChannels(); off+=detectors[i]->getTotalNumberOfChannels(); } @@ -4003,6 +4210,8 @@ string multiSlsDetector::setFileName(string s) { if(getNumberOfDetectors()>1) setDetectorIndex(idet); ret1=detectors[idet]->setFileName(s); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setFileIndex(i); + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition) if (detectors[i]) { ret=detectors[i]->startReceiver(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) { if (detectors[i]) { ret=detectors[i]->startReceiver(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) { if (detectors[i]) { ret=detectors[i]->stopReceiver(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) { if (detectors[i]) { ret=detectors[i]->stopReceiver(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition>=0) - if (detectors[thisMultiDetector->masterPosition]) - return detectors[thisMultiDetector->masterPosition]->getReceiverStatus(); - + if (detectors[thisMultiDetector->masterPosition]){ + s = detectors[thisMultiDetector->masterPosition]->getReceiverStatus(); + if(detectors[thisMultiDetector->masterPosition]->getErrorMask()) + setErrorMask(getErrorMask()|(1<masterPosition)); + return s; + } if (detectors[0]) s=detectors[0]->getReceiverStatus(); for (int i=0; inumberOfDetectors; i++) { s1=detectors[i]->getReceiverStatus(); + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; i++) - if (detectors[i]) + if (detectors[i]){ ret1+=detectors[i]->getFramesCaughtByReceiver(); - + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors) return ret; ret=(int)(ret1/thisMultiDetector->numberOfDetectors); @@ -4125,9 +4352,11 @@ int multiSlsDetector::getFramesCaughtByReceiver() { int multiSlsDetector::getReceiverCurrentFrameIndex() { int ret=0,ret1=0; for (int i=0; inumberOfDetectors; i++) - if (detectors[i]) + if (detectors[i]){ ret1+=detectors[i]->getReceiverCurrentFrameIndex(); - + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors) return ret; ret=(int)(ret1/thisMultiDetector->numberOfDetectors); @@ -4142,7 +4371,9 @@ int multiSlsDetector::resetFramesCaught() { for (int i=0; inumberOfDetectors; i++){ if (detectors[i]){ ret1=detectors[i]->resetFramesCaught(); - if (ret==-100) + if(detectors[i]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; id++) { if (detectors[id]) { retdet=detectors[id]->readFrameFromReceiver(fName,fIndex); - if (retdet) { + if(detectors[id]->getErrorMask()) + setErrorMask(getErrorMask()|(1<getDataBytes(); memcpy(p,retdet,n); delete [] retdet; @@ -4206,7 +4439,9 @@ int multiSlsDetector::lockReceiver(int lock) { for (int idet=0; idetnumberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->lockReceiver(lock); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { s=detectors[idet]->getReceiverLastClientIP(); - + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->enableWriteToFile(enable); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->setFrameIndex(index); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<numberOfDetectors; idet++) { if (detectors[idet]) { ret1=detectors[idet]->calibratePedestal(frames); - if (ret==-100) + if(detectors[idet]->getErrorMask()) + setErrorMask(getErrorMask()|(1<