mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 10:07:59 +02:00
added iodelay with setttings
This commit is contained in:
@ -2658,6 +2658,7 @@ int slsDetector::setModule(int reg, int imod){
|
||||
sls_detector_module myModule;
|
||||
int* g=0;
|
||||
int* o=0;
|
||||
int* iod=0;
|
||||
|
||||
#ifdef VERBOSE
|
||||
std::cout << "slsDetector set module " << std::endl;
|
||||
@ -2726,14 +2727,14 @@ int slsDetector::setModule(int reg, int imod){
|
||||
ads[i]=-1;
|
||||
myModule.adcs=ads;
|
||||
}
|
||||
ret=setModule(myModule,g,o);
|
||||
ret=setModule(myModule,g,o,iod);
|
||||
}
|
||||
return ret;
|
||||
|
||||
|
||||
};
|
||||
|
||||
int slsDetector::setModule(sls_detector_module module, int* gainval, int* offsetval){
|
||||
int slsDetector::setModule(sls_detector_module module, int* gainval, int* offsetval, int* iodelay){
|
||||
|
||||
int fnum=F_SET_MODULE;
|
||||
int retval;
|
||||
@ -2757,6 +2758,8 @@ int slsDetector::setModule(sls_detector_module module, int* gainval, int* offset
|
||||
controlSocket->SendDataOnly(gainval,sizeof(int)*thisDetector->nGain);
|
||||
if((thisDetector->nOffset) && (offsetval))
|
||||
controlSocket->SendDataOnly(offsetval,sizeof(int)*thisDetector->nOffset);
|
||||
if(thisDetector->myDetectorType == EIGER)
|
||||
controlSocket->SendDataOnly(iodelay,sizeof(int));
|
||||
|
||||
controlSocket->ReceiveDataOnly(&ret,sizeof(ret));
|
||||
if (ret!=FAIL) {
|
||||
@ -3116,10 +3119,13 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
string ssettings;
|
||||
|
||||
int* gainval=0, *offsetval=0;
|
||||
int* iodelay=0;
|
||||
if(thisDetector->nGain)
|
||||
gainval=new int[thisDetector->nGain];
|
||||
if(thisDetector->nOffset)
|
||||
offsetval=new int[thisDetector->nOffset];
|
||||
if(thisDetector->myDetectorType == EIGER)
|
||||
iodelay = new int;
|
||||
|
||||
int ret=0;
|
||||
|
||||
@ -3269,7 +3275,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
#ifdef VERBOSE
|
||||
cout << "the settings file name is "<<settingsfname << endl;
|
||||
#endif
|
||||
if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod)) {
|
||||
if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod,iodelay)) {
|
||||
//if it didnt open, try default settings file
|
||||
ostringstream ostfn_default;
|
||||
switch(thisDetector->myDetectorType){
|
||||
@ -3289,7 +3295,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
#ifdef VERBOSE
|
||||
cout << settingsfname << endl;
|
||||
#endif
|
||||
if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod)) {
|
||||
if (!readSettingsFile(settingsfname,thisDetector->myDetectorType, myMod,iodelay)) {
|
||||
//if default doesnt work, return error
|
||||
std::cout << "Could not open settings file" << endl;
|
||||
setErrorMask((getErrorMask())|(SETTINGS_FILE_NOT_OPEN));
|
||||
@ -3334,7 +3340,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
}
|
||||
|
||||
//if everything worked, set module****
|
||||
setModule(*myMod,gainval,offsetval);
|
||||
setModule(*myMod,gainval,offsetval,iodelay);
|
||||
}
|
||||
}
|
||||
|
||||
@ -6155,9 +6161,9 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
|
||||
|
||||
|
||||
|
||||
int slsDetector::writeSettingsFile(string fname, int imod){
|
||||
int slsDetector::writeSettingsFile(string fname, int imod, int* iodelay){
|
||||
|
||||
return writeSettingsFile(fname,thisDetector->myDetectorType, detectorModules[imod]);
|
||||
return writeSettingsFile(fname,thisDetector->myDetectorType, detectorModules[imod], iodelay);
|
||||
|
||||
};
|
||||
|
||||
@ -6168,6 +6174,7 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
|
||||
|
||||
sls_detector_module *myMod=NULL;
|
||||
int* gainval=0; int* offsetval=0;
|
||||
int *iodelay=0;
|
||||
if(thisDetector->nGain){
|
||||
gainval=new int[thisDetector->nGain];
|
||||
for(int i=0;i<thisDetector->nGain;i++)
|
||||
@ -6178,6 +6185,8 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
|
||||
for(int i=0;i<thisDetector->nOffset;i++)
|
||||
offsetval[i] = -1;
|
||||
}
|
||||
if(thisDetector->myDetectorType == EIGER)
|
||||
iodelay = new int;*iodelay=0;
|
||||
string fn=fname;
|
||||
fn=fname;
|
||||
int mmin=0, mmax=setNumberOfModules();
|
||||
@ -6197,13 +6206,14 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
|
||||
ostfn << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER, im);
|
||||
fn=ostfn.str();
|
||||
}
|
||||
myMod=readSettingsFile(fn, thisDetector->myDetectorType);
|
||||
myMod=readSettingsFile(fn, thisDetector->myDetectorType,myMod,iodelay);
|
||||
|
||||
if (myMod) {
|
||||
myMod->module=im;
|
||||
//settings is saved in myMod.reg for all except mythen
|
||||
if(thisDetector->myDetectorType!=MYTHEN)
|
||||
myMod->reg=thisDetector->currentSettings;
|
||||
setModule(*myMod,gainval,offsetval);
|
||||
setModule(*myMod,gainval,offsetval,iodelay);
|
||||
deleteModule(myMod);
|
||||
if(gainval) delete[] gainval;
|
||||
if(offsetval) delete[] offsetval;
|
||||
@ -6216,9 +6226,9 @@ int slsDetector::loadSettingsFile(string fname, int imod) {
|
||||
|
||||
int slsDetector::saveSettingsFile(string fname, int imod) {
|
||||
|
||||
|
||||
sls_detector_module *myMod=NULL;
|
||||
int ret=FAIL;
|
||||
int *iod = 0;
|
||||
|
||||
int mmin=0, mmax=setNumberOfModules();
|
||||
if (imod>=0) {
|
||||
@ -6227,13 +6237,18 @@ int slsDetector::saveSettingsFile(string fname, int imod) {
|
||||
}
|
||||
for (int im=mmin; im<mmax; im++) {
|
||||
ostringstream ostfn;
|
||||
if(thisDetector->myDetectorType == EIGER)
|
||||
if(thisDetector->myDetectorType == EIGER){
|
||||
ostfn << fname << ".sn" << setfill('0') << setw(3) << dec << getId(DETECTOR_SERIAL_NUMBER);
|
||||
else
|
||||
} else
|
||||
ostfn << fname << ".sn" << setfill('0') << setw(3) << hex << getId(MODULE_SERIAL_NUMBER,im);
|
||||
if ((myMod=getModule(im))) {
|
||||
ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod);
|
||||
deleteModule(myMod);
|
||||
|
||||
if(thisDetector->myDetectorType == EIGER){
|
||||
iod = new int;
|
||||
*iod = (int)setDAC((dacs_t)-1,IO_DELAY,0,-1);
|
||||
}
|
||||
ret=writeSettingsFile(ostfn.str(), thisDetector->myDetectorType, *myMod,iod);
|
||||
deleteModule(myMod);
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@ -6284,6 +6299,7 @@ int slsDetector::loadCalibrationFile(string fname, int imod) {
|
||||
string fn=fname;
|
||||
|
||||
int* gainval=0; int* offsetval=0;
|
||||
int* iodelay=0;
|
||||
if(thisDetector->nGain){
|
||||
gainval=new int[thisDetector->nGain];
|
||||
for(int i=0;i<thisDetector->nGain;i++)
|
||||
@ -6315,7 +6331,8 @@ int slsDetector::loadCalibrationFile(string fname, int imod) {
|
||||
}
|
||||
fn=ostfn.str();
|
||||
if((myMod=getModule(im))){
|
||||
|
||||
iodelay = new int;
|
||||
*iodelay = (int)setDAC(-1,IO_DELAY,0);
|
||||
//extra gain and offset
|
||||
if(thisDetector->nGain){
|
||||
if(readCalibrationFile(fn,gainval, offsetval,thisDetector->myDetectorType)==FAIL)
|
||||
@ -6325,7 +6342,7 @@ int slsDetector::loadCalibrationFile(string fname, int imod) {
|
||||
if(readCalibrationFile(fn,myMod->gain, myMod->offset)==FAIL)
|
||||
return FAIL;
|
||||
}
|
||||
setModule(*myMod,gainval,offsetval);
|
||||
setModule(*myMod,gainval,offsetval,iodelay);
|
||||
|
||||
deleteModule(myMod);
|
||||
if(gainval) delete[]gainval;
|
||||
|
@ -494,11 +494,12 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
writes a trim/settings file for module number imod - the values will be read from the current detector structure
|
||||
\param fname name of the file to be written
|
||||
\param imod module number
|
||||
\param iodelay io delay (detector specific)
|
||||
\returns OK or FAIL if the file could not be written
|
||||
\sa ::sls_detector_module sharedSlsDetector mythenDetector::writeSettingsFile(string, int)
|
||||
*/
|
||||
using energyConversion::writeSettingsFile;
|
||||
int writeSettingsFile(string fname, int imod);
|
||||
int writeSettingsFile(string fname, int imod, int* iodelay=0);
|
||||
|
||||
|
||||
/**
|
||||
@ -908,10 +909,11 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
\param module module to be set - must contain correct module number and also channel and chip registers
|
||||
\param gainval pointer to extra gain values
|
||||
\param offsetval pointer to extra offset values
|
||||
\param iodelay iodelay (detector specific)
|
||||
\returns current register value
|
||||
\sa ::sls_detector_module
|
||||
*/
|
||||
int setModule(sls_detector_module module, int* gainval, int* offsetval);
|
||||
int setModule(sls_detector_module module, int* gainval, int* offsetval,int* iodelay);
|
||||
//virtual int setModule(sls_detector_module module);
|
||||
|
||||
/**
|
||||
|
@ -3070,7 +3070,7 @@ string slsDetectorCommand::cmdSettings(int narg, char *args[], int action) {
|
||||
string sval=string(args[1]);
|
||||
#ifdef VERBOSE
|
||||
std::cout<< " trimfile " << sval << std::endl;
|
||||
#endif
|
||||
#endif
|
||||
if (action==GET_ACTION) {
|
||||
//create file names
|
||||
myDet->saveSettingsFile(sval, -1);
|
||||
|
Reference in New Issue
Block a user