updated write config and write parameters list

This commit is contained in:
Dhanya Maliakal 2017-12-05 13:41:16 +01:00
parent 536203b6dc
commit d00c837977
3 changed files with 315 additions and 309 deletions

View File

@ -4780,7 +4780,6 @@ int multiSlsDetector::readConfigurationFile(string const fname){
int nd=thisMultiDetector->numberOfDetectors;
for (int i=0; i<nd; ++i) {
// sprintf(ext,".det%d",i);
if (detectors[i]) {
detectors[i]->freeSharedMemory();
}
@ -4788,7 +4787,7 @@ int multiSlsDetector::readConfigurationFile(string const fname){
thisMultiDetector->numberOfDetectors=0;
multiSlsDetectorClient *cmd;
// char ext[100];
setAcquiringFlag(false);
clearAllErrorMask();
@ -4898,11 +4897,9 @@ int multiSlsDetector::readConfigurationFile(string const fname){
int multiSlsDetector::writeConfigurationFile(string const fname){
string names[]={ \
"type", \
"detsizechan", \
"hostname", \
"master", \
"sync", \
"outdir", \
@ -4917,16 +4914,12 @@ int multiSlsDetector::writeConfigurationFile(string const fname){
"binsize", \
"threaded" };
int nvar=14;
// char ext[100];
int iv=0;
int nvar=15;
char *args[100];
for (int ia=0; ia<100; ++ia) {
args[ia]=new char[1000];
}
int ret=OK;
int ret=OK,ret1=OK;
@ -4940,28 +4933,36 @@ int multiSlsDetector::writeConfigurationFile(string const fname){
slsDetectorCommand *cmd=new slsDetectorCommand(this);
// detector types!!!
cout << iv << " " << names[iv] << endl;
strcpy(args[0],names[iv].c_str());
outfile << names[iv] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
// complete size of detector
cout << iline << " " << names[iline] << endl;
strcpy(args[0],names[iline].c_str());
outfile << names[iline] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
++iline;
// hostname of the detectors
cout << iline << " " << names[iline] << endl;
strcpy(args[0],names[iline].c_str());
outfile << names[iline] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
++iline;
// single detector configuration
for (int i=0; i<thisMultiDetector->numberOfDetectors; ++i) {
// sprintf(ext,".det%d",i);
if (detectors[i]) {
iv+=detectors[i]->writeConfigurationFile(outfile,i);
ret1 = detectors[i]->writeConfigurationFile(outfile,i);
if(detectors[i]->getErrorMask())
setErrorMask(getErrorMask()|(1<<i));
if (ret1 == FAIL)
ret = FAIL;
}
}
//other configurations
for (iv=1; iv<nvar; ++iv) {
cout << iv << " " << names[iv] << endl;
strcpy(args[0],names[iv].c_str());
outfile << names[iv] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
while (iline < nvar) {
cout << iline << " " << names[iline] << endl;
strcpy(args[0],names[iline].c_str());
outfile << names[iline] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
++iline;
}
@ -4982,8 +4983,7 @@ int multiSlsDetector::writeConfigurationFile(string const fname){
}
return ret;
};
}

View File

@ -6964,7 +6964,6 @@ int slsDetector::readConfigurationFile(ifstream &infile){
int slsDetector::writeConfigurationFile(string const fname){
ofstream outfile;
#ifdef VERBOSE
int ret;
@ -6992,56 +6991,78 @@ int slsDetector::writeConfigurationFile(string const fname){
int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
;
slsDetectorCommand *cmd=new slsDetectorCommand(this);
int nvar=15;
detectorType type = thisDetector->myDetectorType;
string names[100];
int nvar=0;
string names[20]={ \
"hostname", \
"port", \
"stopport", \
"settingsdir", \
"outdir", \
"angdir", \
"moveflag", \
"lock", \
"caldir", \
"ffdir", \
"nmod", \
"waitstates", \
"setlength", \
"clkdivider", \
"extsig" };
// common config
names[nvar++] = "hostname";
names[nvar++] = "port";
names[nvar++] = "stopport";
names[nvar++] = "settingsdir";
names[nvar++] = "caldir";
names[nvar++] = "ffdir";
names[nvar++] = "outdir";
names[nvar++] = "angdir";
names[nvar++] = "moveflag";
names[nvar++] = "lock";
// to be added in the future
// "trimen",
// "receiverTCPPort",
if ((thisDetector->myDetectorType==GOTTHARD)||
(thisDetector->myDetectorType==PROPIX)||
(thisDetector->myDetectorType==JUNGFRAU)||
(thisDetector->myDetectorType==MOENCH)) {
names[0]= "hostname";
names[1]= "port";
names[2]= "stopport";
names[3]= "settingsdir";
names[4]= "angdir";
names[5]= "moveflag";
names[6]= "lock";
names[7]= "caldir";
names[8]= "ffdir";
names[9]= "extsig";
names[10]="detectormac";
names[11]="detectorip";
names[12]= "rx_tcpport";
names[13]= "rx_udpport";
names[14]="rx_udpip";
names[15]="rx_hostname";
names[16]="outdir";
names[17]="vhighvoltage";
nvar=18;
// receiver config
if (type != MYTHEN) {
names[nvar++] = "detectormac";
names[nvar++] = "detectorip";
names[nvar++] = "zmqport";
names[nvar++] = "rx_zmqport";
names[nvar++] = "rx_tcpport";
names[nvar++] = "rx_udpport";
names[nvar++] = "rx_udpport2";
names[nvar++] = "rx_udpip";
names[nvar++] = "rx_hostname";
names[nvar++] = "r_readfreq";
}
// detector specific config
switch (type) {
case MYTHEN:
names[nvar++] = "nmod";
names[nvar++] = "waitstates";
names[nvar++] = "setlength";
names[nvar++] = "clkdivider";
names[nvar++] = "extsig";
break;
case GOTTHARD:
case PROPIX:
names[nvar++] = "extsig";
names[nvar++] = "vhighvoltage";
break;
break;
case MOENCH:
names[nvar++] = "extsig";
names[nvar++] = "vhighvoltage";
break;
case EIGER:
names[nvar++] = "vhighvoltage";
names[nvar++] = "trimen";
names[nvar++] = "iodelay";
names[nvar++] = "tengiga";
break;
case JUNGFRAU:
names[nvar++] = "powerchip";
names[nvar++] = "vhighvoltage";
break;
case JUNGFRAUCTB:
names[nvar++] = "powerchip";
names[nvar++] = "vhighvoltage";
break;
default:
std::cout << "detector type " << getDetectorType(thisDetector->myDetectorType) << " not implemented in writing config file" << std::endl;
nvar = 0;
break;
}
int nsig=4;//-1;
int iv=0;
@ -7049,8 +7070,6 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
char myargs[100][1000];
for (int ia=0; ia<100; ++ia) {
//args[ia]=new char[1000];
args[ia]=myargs[ia];
}
@ -7073,6 +7092,7 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
outfile << names[iv] << " " << cmd->executeLine(1,args,GET_ACTION) << std::endl;
}
}
delete cmd;
return OK;
}

View File

@ -730,11 +730,15 @@ int slsDetectorUtils::retrieveDetectorSetup(string const fname1, int level){
int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
slsDetectorCommand *cmd;
detectorType type = getDetectorsType();
string names[100];
int nvar=0;
// common config
names[nvar++]="fname";
names[nvar++]="index";
names[nvar++]="enablefwrite";
names[nvar++]="overwrite";
names[nvar++]="dr";
names[nvar++]="settings";
names[nvar++]="exptime";
@ -743,20 +747,30 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
names[nvar++]="cycles";
names[nvar++]="measurements";
names[nvar++]="timing";
names[nvar++]="flatfield";
names[nvar++]="badchannels";
switch (getDetectorsType()) {
switch (type) {
case EIGER:
names[nvar++]="flags";
names[nvar++]="clkdivider";
names[nvar++]="threshold";
names[nvar++]="ratecorr";
names[nvar++]="trimbits";
break;
case GOTTHARD:
case PROPIX:
names[nvar++]="flags";
names[nvar++]="delay";
names[nvar++]="gates";
names[nvar++]="ratecorr";
break;
case JUNGFRAU:
names[nvar++]="flags";
names[nvar++]="delay";
names[nvar++]="gates";
names[nvar++]="ratecorr";
names[nvar++]="clkdivider";
break;
case MYTHEN:
names[nvar++]="flags";
@ -769,7 +783,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
names[nvar++]="trimbits";
break;
case JUNGFRAUCTB:
names[nvar++]="dac:0";
names[nvar++]="dac:1";
names[nvar++]="dac:2";
@ -817,7 +830,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
}
names[nvar++]="startscript";
names[nvar++]="startscriptpar";
names[nvar++]="stopscript";
@ -835,29 +847,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
names[nvar++]="scan1prec";
names[nvar++]="scan1steps";
switch (getDetectorsType()) {
case EIGER:
case MYTHEN:
case GOTTHARD:
case PROPIX:
case JUNGFRAU:
names[nvar++]="flatfield";
names[nvar++]="badchannels";
break;
default:
break;
}
switch (getDetectorsType()) {
case EIGER:
case MYTHEN:
names[nvar++]="trimbits";
break;
default:
break;
}
// char ext[100];
int iv=0;
string fname1;
@ -871,9 +860,6 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
}
int nargs;
if (level==2)
nargs=2;