mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-12 12:57:13 +02:00
really merged after the mess...
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@163 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
@ -482,7 +482,7 @@ enum angleConversionParameter {
|
|||||||
protected:
|
protected:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "sls_detector_funcs.h
|
#include "sls_detector_funcs.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -97,8 +97,11 @@ enum {
|
|||||||
|
|
||||||
F_SET_MASTER, /**< sets master/slave flag for multi detector structures */
|
F_SET_MASTER, /**< sets master/slave flag for multi detector structures */
|
||||||
|
|
||||||
F_SET_SYNCHRONIZATION_MODE /**< sets master/slave synchronization mode for multidetector structures */
|
F_SET_SYNCHRONIZATION_MODE, /**< sets master/slave synchronization mode for multidetector structures */
|
||||||
|
|
||||||
|
F_READ_COUNTER_BLOCK,
|
||||||
|
|
||||||
|
F_RESET_COUNTER_BLOCK,
|
||||||
|
|
||||||
/* Always append functions hereafter!!! */
|
/* Always append functions hereafter!!! */
|
||||||
|
|
||||||
|
@ -653,7 +653,7 @@ int multiSlsDetector::setMaster(int i) {
|
|||||||
\param sync syncronization mode
|
\param sync syncronization mode
|
||||||
\returns current syncronization mode
|
\returns current syncronization mode
|
||||||
*/
|
*/
|
||||||
synchronizationMode multiSlsDetector::setSynchronization(synchronizationMode sync) {
|
slsDetectorDefs::synchronizationMode multiSlsDetector::setSynchronization(synchronizationMode sync) {
|
||||||
|
|
||||||
|
|
||||||
synchronizationMode ret=GET_SYNCHRONIZATION_MODE, ret1=GET_SYNCHRONIZATION_MODE;
|
synchronizationMode ret=GET_SYNCHRONIZATION_MODE, ret1=GET_SYNCHRONIZATION_MODE;
|
||||||
@ -797,7 +797,7 @@ int multiSlsDetector::setThresholdEnergy(int e_eV, int pos, detectorSettings ise
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
detectorSettings multiSlsDetector::getSettings(int pos) {
|
slsDetectorDefs::detectorSettings multiSlsDetector::getSettings(int pos) {
|
||||||
|
|
||||||
int i, posmin, posmax;
|
int i, posmin, posmax;
|
||||||
detectorSettings ret1=GET_SETTINGS, ret;
|
detectorSettings ret1=GET_SETTINGS, ret;
|
||||||
@ -825,7 +825,7 @@ detectorSettings multiSlsDetector::getSettings(int pos) {
|
|||||||
return ret1;
|
return ret1;
|
||||||
}
|
}
|
||||||
|
|
||||||
detectorSettings multiSlsDetector::setSettings(detectorSettings isettings, int pos) {
|
slsDetectorDefs::detectorSettings multiSlsDetector::setSettings(detectorSettings isettings, int pos) {
|
||||||
|
|
||||||
|
|
||||||
int i, posmin, posmax;
|
int i, posmin, posmax;
|
||||||
@ -1172,7 +1172,7 @@ int multiSlsDetector::startAndReadAllNoWait(){
|
|||||||
get run status
|
get run status
|
||||||
\returns status mask
|
\returns status mask
|
||||||
*/
|
*/
|
||||||
runStatus multiSlsDetector::getRunStatus() {
|
slsDetectorDefs::runStatus multiSlsDetector::getRunStatus() {
|
||||||
|
|
||||||
runStatus s,s1;
|
runStatus s,s1;
|
||||||
|
|
||||||
@ -2405,7 +2405,7 @@ int multiSlsDetector::setReadOutFlags(readOutFlags flag) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
externalCommunicationMode multiSlsDetector::setExternalCommunicationMode(externalCommunicationMode pol) {
|
slsDetectorDefs::externalCommunicationMode multiSlsDetector::setExternalCommunicationMode(externalCommunicationMode pol) {
|
||||||
|
|
||||||
externalCommunicationMode ret, ret1;
|
externalCommunicationMode ret, ret1;
|
||||||
|
|
||||||
@ -2429,7 +2429,7 @@ externalCommunicationMode multiSlsDetector::setExternalCommunicationMode(externa
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
externalSignalFlag multiSlsDetector::setExternalSignalFlags(externalSignalFlag pol, int signalindex) {
|
slsDetectorDefs::externalSignalFlag multiSlsDetector::setExternalSignalFlags(externalSignalFlag pol, int signalindex) {
|
||||||
|
|
||||||
externalSignalFlag ret, ret1;
|
externalSignalFlag ret, ret1;
|
||||||
|
|
||||||
@ -2507,7 +2507,6 @@ int multiSlsDetector::configureMAC() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::loadImageToDetector(imageType index,string const fname){
|
int multiSlsDetector::loadImageToDetector(imageType index,string const fname){
|
||||||
|
|
||||||
int ret=-100, ret1;
|
int ret=-100, ret1;
|
||||||
@ -2543,6 +2542,57 @@ int multiSlsDetector::loadImageToDetector(imageType index,string const fname){
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int multiSlsDetector::writeCounterBlockFile(string const fname,int startACQ){
|
||||||
|
|
||||||
|
int ret=OK, ret1=OK;
|
||||||
|
short int arg[thisMultiDetector->numberOfChannels];
|
||||||
|
ofstream outfile;
|
||||||
|
outfile.open(fname.c_str(), ios_base::out);
|
||||||
|
if (outfile.is_open()) {
|
||||||
|
#ifdef VERBOSE
|
||||||
|
std::cout<< std::endl<< "Reading Counter to \""<<fname;
|
||||||
|
if(startACQ==1)
|
||||||
|
std::cout<<"\" and Restarting Acquisition";
|
||||||
|
std::cout<<std::endl;
|
||||||
|
#endif
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret1=detectors[idet]->getCounterBlock(arg,startACQ);
|
||||||
|
if(ret1!=OK)
|
||||||
|
ret=FAIL;
|
||||||
|
else{
|
||||||
|
ret1=detectors[idet]->writeDataFile(outfile,arg);
|
||||||
|
if(ret1!=OK)
|
||||||
|
ret=FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
outfile.close();
|
||||||
|
} else {
|
||||||
|
std::cout<< "Could not open file "<< fname << std::endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int multiSlsDetector::resetCounterBlock(int startACQ){
|
||||||
|
|
||||||
|
int ret=-100, ret1;
|
||||||
|
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
||||||
|
if (detectors[idet]) {
|
||||||
|
ret1=detectors[idet]->resetCounterBlock(startACQ);
|
||||||
|
if (ret==-100)
|
||||||
|
ret=ret1;
|
||||||
|
else if (ret!=ret1)
|
||||||
|
ret=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::setDynamicRange(int p) {
|
int multiSlsDetector::setDynamicRange(int p) {
|
||||||
@ -3382,52 +3432,3 @@ int multiSlsDetector::readDataFile(string fname, int *data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::writeCounterBlockFile(string const fname,int startACQ){
|
|
||||||
|
|
||||||
int ret=OK, ret1=OK;
|
|
||||||
short int arg[thisMultiDetector->numberOfChannels];
|
|
||||||
ofstream outfile;
|
|
||||||
outfile.open(fname.c_str(), ios_base::out);
|
|
||||||
if (outfile.is_open()) {
|
|
||||||
#ifdef VERBOSE
|
|
||||||
std::cout<< std::endl<< "Reading Counter to \""<<fname;
|
|
||||||
if(startACQ==1)
|
|
||||||
std::cout<<"\" and Restarting Acquisition";
|
|
||||||
std::cout<<std::endl;
|
|
||||||
#endif
|
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
|
||||||
ret1=detectors[idet]->getCounterBlock(arg,startACQ);
|
|
||||||
if(ret1!=OK)
|
|
||||||
ret=FAIL;
|
|
||||||
else{
|
|
||||||
ret1=detectors[idet]->writeDataFile(outfile,arg);
|
|
||||||
if(ret1!=OK)
|
|
||||||
ret=FAIL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
outfile.close();
|
|
||||||
} else {
|
|
||||||
std::cout<< "Could not open file "<< fname << std::endl;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int multiSlsDetector::resetCounterBlock(int startACQ){
|
|
||||||
|
|
||||||
int ret=-100, ret1;
|
|
||||||
for (int idet=0; idet<thisMultiDetector->numberOfDetectors; idet++) {
|
|
||||||
if (detectors[idet]) {
|
|
||||||
ret1=detectors[idet]->resetCounterBlock(startACQ);
|
|
||||||
if (ret==-100)
|
|
||||||
ret=ret1;
|
|
||||||
else if (ret!=ret1)
|
|
||||||
ret=-1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
@ -4613,10 +4613,6 @@ int slsDetector:: writeAngularConversion(ofstream &ofs) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int slsDetector::loadImageToDetector(imageType index,string const fname){
|
int slsDetector::loadImageToDetector(imageType index,string const fname){
|
||||||
|
|
||||||
int ret=FAIL;
|
int ret=FAIL;
|
||||||
@ -4640,13 +4636,6 @@ int slsDetector::loadImageToDetector(imageType index,string const fname){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int slsDetector::sendImageToDetector(imageType index,short int imageVals[]){
|
int slsDetector::sendImageToDetector(imageType index,short int imageVals[]){
|
||||||
|
|
||||||
int ret=FAIL;
|
int ret=FAIL;
|
||||||
@ -4681,6 +4670,89 @@ int slsDetector::sendImageToDetector(imageType index,short int imageVals[]){
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
int slsDetector::getCounterBlock(short int arg[],int startACQ){
|
||||||
|
|
||||||
|
int ret=FAIL;
|
||||||
|
int fnum=F_READ_COUNTER_BLOCK;
|
||||||
|
char mess[100];
|
||||||
|
|
||||||
|
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||||
|
if (controlSocket) {
|
||||||
|
if (controlSocket->Connect()>=0) {
|
||||||
|
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||||
|
controlSocket->SendDataOnly(&startACQ,sizeof(startACQ));
|
||||||
|
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||||
|
if (ret!=FAIL)
|
||||||
|
controlSocket->ReceiveDataOnly(arg,thisDetector->dataBytes);
|
||||||
|
else {
|
||||||
|
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||||
|
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||||
|
}
|
||||||
|
controlSocket->Disconnect();
|
||||||
|
if (ret==FORCE_UPDATE)
|
||||||
|
updateDetector();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int slsDetector::writeCounterBlockFile(string const fname,int startACQ){
|
||||||
|
|
||||||
|
int ret=FAIL;
|
||||||
|
short int counterVals[thisDetector->nChans*thisDetector->nChips];
|
||||||
|
|
||||||
|
#ifdef VERBOSE
|
||||||
|
std::cout<< std::endl<< "Reading Counter to \""<<fname;
|
||||||
|
if(startACQ==1)
|
||||||
|
std::cout<<"\" and Restarting Acquisition";
|
||||||
|
std::cout<<std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ret=getCounterBlock(counterVals,startACQ);
|
||||||
|
if(ret==OK)
|
||||||
|
ret=writeDataFile(fname,counterVals);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int slsDetector::resetCounterBlock(int startACQ){
|
||||||
|
|
||||||
|
int ret=FAIL;
|
||||||
|
int fnum=F_RESET_COUNTER_BLOCK;
|
||||||
|
char mess[100];
|
||||||
|
|
||||||
|
#ifdef VERBOSE
|
||||||
|
std::cout<< std::endl<< "Resetting Counter";
|
||||||
|
if(startACQ==1)
|
||||||
|
std::cout<<" and Restarting Acquisition";
|
||||||
|
std::cout<<std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
||||||
|
if (controlSocket) {
|
||||||
|
if (controlSocket->Connect()>=0) {
|
||||||
|
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
||||||
|
controlSocket->SendDataOnly(&startACQ,sizeof(startACQ));
|
||||||
|
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||||
|
if (ret==FAIL){
|
||||||
|
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
||||||
|
std::cout<< "Detector returned error: " << mess << std::endl;
|
||||||
|
}
|
||||||
|
controlSocket->Disconnect();
|
||||||
|
if (ret==FORCE_UPDATE)
|
||||||
|
updateDetector();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -5551,86 +5623,3 @@ slsDetectorDefs::synchronizationMode slsDetector::setSynchronization(synchroniza
|
|||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int slsDetector::getCounterBlock(short int arg[],int startACQ){
|
|
||||||
|
|
||||||
int ret=FAIL;
|
|
||||||
int fnum=F_READ_COUNTER_BLOCK;
|
|
||||||
char mess[100];
|
|
||||||
|
|
||||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
|
||||||
if (controlSocket) {
|
|
||||||
if (controlSocket->Connect()>=0) {
|
|
||||||
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
|
||||||
controlSocket->SendDataOnly(&startACQ,sizeof(startACQ));
|
|
||||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
|
||||||
if (ret!=FAIL)
|
|
||||||
controlSocket->ReceiveDataOnly(arg,thisDetector->dataBytes);
|
|
||||||
else {
|
|
||||||
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
|
||||||
std::cout<< "Detector returned error: " << mess << std::endl;
|
|
||||||
}
|
|
||||||
controlSocket->Disconnect();
|
|
||||||
if (ret==FORCE_UPDATE)
|
|
||||||
updateDetector();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int slsDetector::writeCounterBlockFile(string const fname,int startACQ){
|
|
||||||
|
|
||||||
int ret=FAIL;
|
|
||||||
short int counterVals[thisDetector->nChans*thisDetector->nChips];
|
|
||||||
|
|
||||||
#ifdef VERBOSE
|
|
||||||
std::cout<< std::endl<< "Reading Counter to \""<<fname;
|
|
||||||
if(startACQ==1)
|
|
||||||
std::cout<<"\" and Restarting Acquisition";
|
|
||||||
std::cout<<std::endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ret=getCounterBlock(counterVals,startACQ);
|
|
||||||
if(ret==OK)
|
|
||||||
ret=writeDataFile(fname,counterVals);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int slsDetector::resetCounterBlock(int startACQ){
|
|
||||||
|
|
||||||
int ret=FAIL;
|
|
||||||
int fnum=F_RESET_COUNTER_BLOCK;
|
|
||||||
char mess[100];
|
|
||||||
|
|
||||||
#ifdef VERBOSE
|
|
||||||
std::cout<< std::endl<< "Resetting Counter";
|
|
||||||
if(startACQ==1)
|
|
||||||
std::cout<<" and Restarting Acquisition";
|
|
||||||
std::cout<<std::endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (thisDetector->onlineFlag==ONLINE_FLAG) {
|
|
||||||
if (controlSocket) {
|
|
||||||
if (controlSocket->Connect()>=0) {
|
|
||||||
controlSocket->SendDataOnly(&fnum,sizeof(fnum));
|
|
||||||
controlSocket->SendDataOnly(&startACQ,sizeof(startACQ));
|
|
||||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
|
||||||
if (ret==FAIL){
|
|
||||||
controlSocket->ReceiveDataOnly(mess,sizeof(mess));
|
|
||||||
std::cout<< "Detector returned error: " << mess << std::endl;
|
|
||||||
}
|
|
||||||
controlSocket->Disconnect();
|
|
||||||
if (ret==FORCE_UPDATE)
|
|
||||||
updateDetector();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -768,13 +768,13 @@ class slsDetectorBase : public slsDetectorDefs
|
|||||||
virtual int retrieveDetectorSetup(string const fname, int level=0)=0;
|
virtual int retrieveDetectorSetup(string const fname, int level=0)=0;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/* /\** */
|
||||||
Loads dark image or gain image to the detector
|
/* Loads dark image or gain image to the detector */
|
||||||
\param index can be DARK_IMAGE or GAIN_IMAGE
|
/* \param index can be DARK_IMAGE or GAIN_IMAGE */
|
||||||
\param fname file name to load data from
|
/* \param fname file name to load data from */
|
||||||
\returns OK or FAIL
|
/* \returns OK or FAIL */
|
||||||
*/
|
/* *\/ */
|
||||||
virtual int loadImageToDetector(imageType index,string const fname)=0;
|
/* virtual int loadImageToDetector(imageType index,string const fname)=0; */
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
|
|
||||||
slsDetectorCommand::slsDetectorCommand(slsDetectorBase *det) {
|
slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
||||||
|
|
||||||
myDet=det;
|
myDet=det;
|
||||||
|
|
||||||
@ -134,6 +134,7 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorBase *det) {
|
|||||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdCounter;
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdCounter;
|
||||||
i++;
|
i++;
|
||||||
|
|
||||||
|
|
||||||
/* trim/cal directories */
|
/* trim/cal directories */
|
||||||
descrToFuncMap[i].m_pFuncName="trimdir"; //OK
|
descrToFuncMap[i].m_pFuncName="trimdir"; //OK
|
||||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettingsDir;
|
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdSettingsDir;
|
||||||
@ -1636,7 +1637,6 @@ string slsDetectorCommand::helpThreaded(int narg, char *args[], int action){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string slsDetectorCommand::cmdImage(int narg, char *args[], int action){
|
string slsDetectorCommand::cmdImage(int narg, char *args[], int action){
|
||||||
string sval;
|
string sval;
|
||||||
int retval;
|
int retval;
|
||||||
@ -1676,7 +1676,6 @@ string slsDetectorCommand::helpImage(int narg, char *args[], int action){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string slsDetectorCommand::cmdCounter(int narg, char *args[], int action){
|
string slsDetectorCommand::cmdCounter(int narg, char *args[], int action){
|
||||||
int ival;
|
int ival;
|
||||||
string sval;
|
string sval;
|
||||||
@ -1728,6 +1727,7 @@ string slsDetectorCommand::helpCounter(int narg, char *args[], int action){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string slsDetectorCommand::cmdPositions(int narg, char *args[], int action){
|
string slsDetectorCommand::cmdPositions(int narg, char *args[], int action){
|
||||||
int ival;
|
int ival;
|
||||||
int ip;
|
int ip;
|
||||||
|
@ -113,6 +113,8 @@ class slsDetectorUtils : public slsDetectorBase {
|
|||||||
|
|
||||||
using slsDetectorBase::setBadChannelCorrection;
|
using slsDetectorBase::setBadChannelCorrection;
|
||||||
using slsDetectorBase::getAngularConversion;
|
using slsDetectorBase::getAngularConversion;
|
||||||
|
/** Frees the shared memory - should not be used except for debugging*/
|
||||||
|
virtual int freeSharedMemory()=0;
|
||||||
|
|
||||||
|
|
||||||
/** adds the detector with ID id in postion pos
|
/** adds the detector with ID id in postion pos
|
||||||
@ -375,6 +377,11 @@ class slsDetectorUtils : public slsDetectorBase {
|
|||||||
\sa angleConversionConstant mythenDetector::writeAngularConversion
|
\sa angleConversionConstant mythenDetector::writeAngularConversion
|
||||||
*/
|
*/
|
||||||
static int writeAngularConversion(ofstream& ofs, int nmod, angleConversionConstant *angOff);
|
static int writeAngularConversion(ofstream& ofs, int nmod, angleConversionConstant *angOff);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
virtual int writeAngularConversion(const char *fname)=0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
set bad channels correction
|
set bad channels correction
|
||||||
\param fname file with bad channel list ("" disable)
|
\param fname file with bad channel list ("" disable)
|
||||||
@ -650,6 +657,31 @@ s
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Loads dark image or gain image to the detector
|
||||||
|
\param index can be DARK_IMAGE or GAIN_IMAGE
|
||||||
|
\fname file name to load data from
|
||||||
|
\returns OK or FAIL
|
||||||
|
*/
|
||||||
|
virtual int loadImageToDetector(imageType index,string const fname)=0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
writes the counter memory block from the detector
|
||||||
|
\param startACQ is 1 to start acquisition after reading counter
|
||||||
|
\fname file fname to load data from
|
||||||
|
\returns OK or FAIL
|
||||||
|
*/
|
||||||
|
virtual int writeCounterBlockFile(string const fname,int startACQ=0)=0;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Resets counter memory block in detector
|
||||||
|
\param startACQ is 1 to start acquisition after resetting counter
|
||||||
|
\returns OK or FAIL
|
||||||
|
*/
|
||||||
|
virtual int resetCounterBlock(int startACQ=0)=0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user