mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-24 02:27:59 +02:00
Offline flag implemented
git-svn-id: file:///afs/psi.ch/project/sls_det_software/svn/slsDetectorSoftware@19 951219d9-93cf-4727-9268-0efd64621fa3
This commit is contained in:
@ -347,6 +347,13 @@ string mythenDetector::executeLine(int narg, char *args[], int action) {
|
|||||||
}
|
}
|
||||||
sprintf(answer,"%d",setThreadedProcessing());
|
sprintf(answer,"%d",setThreadedProcessing());
|
||||||
return string(answer);
|
return string(answer);
|
||||||
|
} else if (var=="online") {
|
||||||
|
if (action==PUT_ACTION) {
|
||||||
|
sscanf(args[1],"%d",&ival);
|
||||||
|
setOnline(ival);
|
||||||
|
}
|
||||||
|
sprintf(answer,"%d",setOnline());
|
||||||
|
return string(answer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -517,21 +524,21 @@ string mythenDetector::executeLine(int narg, char *args[], int action) {
|
|||||||
else if (var=="exptime") {
|
else if (var=="exptime") {
|
||||||
if (action==PUT_ACTION) {
|
if (action==PUT_ACTION) {
|
||||||
sscanf(args[1],"%f",&fval);// in seconds!
|
sscanf(args[1],"%f",&fval);// in seconds!
|
||||||
setTimer(ACQUISITION_TIME,fval*1E+9);
|
setTimer(ACQUISITION_TIME,(int64_t)(fval*1E+9));
|
||||||
}
|
}
|
||||||
sprintf(answer,"%f",(float)setTimer(ACQUISITION_TIME)*1E-9);
|
sprintf(answer,"%f",(float)setTimer(ACQUISITION_TIME)*1E-9);
|
||||||
return string(answer);
|
return string(answer);
|
||||||
} else if (var=="period") {
|
} else if (var=="period") {
|
||||||
if (action==PUT_ACTION) {
|
if (action==PUT_ACTION) {
|
||||||
sscanf(args[1],"%f",&fval);// in seconds!
|
sscanf(args[1],"%f",&fval);// in seconds!
|
||||||
setTimer(FRAME_PERIOD,fval*1E+9);
|
setTimer(FRAME_PERIOD,(int64_t)(fval*1E+9));
|
||||||
}
|
}
|
||||||
sprintf(answer,"%f",(float)setTimer(FRAME_PERIOD)*1E-9);
|
sprintf(answer,"%f",(float)setTimer(FRAME_PERIOD)*1E-9);
|
||||||
return string(answer);
|
return string(answer);
|
||||||
} else if (var=="delay") {
|
} else if (var=="delay") {
|
||||||
if (action==PUT_ACTION) {
|
if (action==PUT_ACTION) {
|
||||||
sscanf(args[1],"%f",&fval);// in seconds!
|
sscanf(args[1],"%f",&fval);// in seconds!
|
||||||
setTimer(DELAY_AFTER_TRIGGER,fval*1E+9);
|
setTimer(DELAY_AFTER_TRIGGER,(int64_t)(fval*1E+9));
|
||||||
}
|
}
|
||||||
sprintf(answer,"%f",(float)setTimer(DELAY_AFTER_TRIGGER)*1E-9);
|
sprintf(answer,"%f",(float)setTimer(DELAY_AFTER_TRIGGER)*1E-9);
|
||||||
return string(answer);
|
return string(answer);
|
||||||
@ -991,10 +998,8 @@ string mythenDetector::helpLine( int action) {
|
|||||||
int mythenDetector::readConfigurationFile(string const fname){
|
int mythenDetector::readConfigurationFile(string const fname){
|
||||||
|
|
||||||
string ans;
|
string ans;
|
||||||
char line[500];
|
|
||||||
string str;
|
string str;
|
||||||
ifstream infile;
|
ifstream infile;
|
||||||
string::size_type pos;
|
|
||||||
int iargval;
|
int iargval;
|
||||||
int interrupt=0;
|
int interrupt=0;
|
||||||
char *args[100];
|
char *args[100];
|
||||||
@ -1084,7 +1089,6 @@ int mythenDetector::writeConfigurationFile(string const fname){
|
|||||||
args[ia]=new char[1000];
|
args[ia]=new char[1000];
|
||||||
}
|
}
|
||||||
|
|
||||||
int nargs;
|
|
||||||
|
|
||||||
outfile.open(fname.c_str(),ios_base::out);
|
outfile.open(fname.c_str(),ios_base::out);
|
||||||
if (outfile.is_open()) {
|
if (outfile.is_open()) {
|
||||||
@ -1134,7 +1138,6 @@ int mythenDetector::dumpDetectorSetup(string fname, int level){
|
|||||||
int iv=0;
|
int iv=0;
|
||||||
string fname1;
|
string fname1;
|
||||||
ofstream outfile;
|
ofstream outfile;
|
||||||
char dum[100];
|
|
||||||
char *args[2];
|
char *args[2];
|
||||||
for (int ia=0; ia<2; ia++) {
|
for (int ia=0; ia<2; ia++) {
|
||||||
args[ia]=new char[1000];
|
args[ia]=new char[1000];
|
||||||
@ -1217,7 +1220,7 @@ int mythenDetector::dumpDetectorSetup(string fname, int level){
|
|||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
std::cout<< "wrote " <<iv << " lines to "<< fname1 << std::endl;
|
std::cout<< "wrote " <<iv << " lines to "<< fname1 << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1226,10 +1229,8 @@ int mythenDetector::retrieveDetectorSetup(string fname1, int level){
|
|||||||
|
|
||||||
|
|
||||||
string fname;
|
string fname;
|
||||||
char line[500];
|
|
||||||
string str;
|
string str;
|
||||||
ifstream infile;
|
ifstream infile;
|
||||||
string::size_type pos;
|
|
||||||
int iargval;
|
int iargval;
|
||||||
int interrupt=0;
|
int interrupt=0;
|
||||||
char *args[2];
|
char *args[2];
|
||||||
@ -1321,9 +1322,8 @@ int mythenDetector::retrieveDetectorSetup(string fname1, int level){
|
|||||||
string str;
|
string str;
|
||||||
ifstream infile;
|
ifstream infile;
|
||||||
ostringstream oss;
|
ostringstream oss;
|
||||||
int isgood=1;
|
|
||||||
int iline=0;
|
int iline=0;
|
||||||
string names[]={"Vtrim", "Vthresh", "Rgsh1", "Rgsh2", "Rgpr", "Vcal", "outBuffEnable"};
|
// string names[]={"Vtrim", "Vthresh", "Rgsh1", "Rgsh2", "Rgpr", "Vcal", "outBuffEnable"};
|
||||||
string sargname;
|
string sargname;
|
||||||
int ival;
|
int ival;
|
||||||
int ichan=0, ichip=0, idac=0;
|
int ichan=0, ichip=0, idac=0;
|
||||||
@ -1464,7 +1464,7 @@ int mythenDetector::writeTrimFile(string fname, sls_detector_module mod){
|
|||||||
|
|
||||||
if (outfile.is_open()) {
|
if (outfile.is_open()) {
|
||||||
for (idac=0; idac<mod.ndac; idac++) {
|
for (idac=0; idac<mod.ndac; idac++) {
|
||||||
iv=mod.dacs[idac];
|
iv=(int)mod.dacs[idac];
|
||||||
outfile << names[idac] << " " << iv << std::endl;
|
outfile << names[idac] << " " << iv << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1542,7 +1542,7 @@ int mythenDetector::writeDataFile(string fname, float *data, float *err, float *
|
|||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
default:
|
default:
|
||||||
idata=*(data+ichan);
|
idata=(int)(*(data+ichan));
|
||||||
outfile << idata << " ";
|
outfile << idata << " ";
|
||||||
}
|
}
|
||||||
if (err) {
|
if (err) {
|
||||||
@ -1626,7 +1626,7 @@ int mythenDetector::readDataFile(string fname, float *data, float *err, float *a
|
|||||||
ssstr >> ichan >> fdata;
|
ssstr >> ichan >> fdata;
|
||||||
ich=ichan;
|
ich=ichan;
|
||||||
if (ich!=iline)
|
if (ich!=iline)
|
||||||
std::cout<< "Channel number " << ichan << " does not match with line number " << iline << std::endl;
|
std::cout<< "Channel number " << ichan << " does not match with line number " << iline << " " << dataformat << std::endl;
|
||||||
} else {
|
} else {
|
||||||
ssstr >> fang >> fdata;
|
ssstr >> fang >> fdata;
|
||||||
ich=iline;
|
ich=iline;
|
||||||
@ -1716,7 +1716,6 @@ int mythenDetector::readDataFile(string fname, int *data){
|
|||||||
|
|
||||||
int mythenDetector::readCalibrationFile(string fname, float &gain, float &offset){
|
int mythenDetector::readCalibrationFile(string fname, float &gain, float &offset){
|
||||||
|
|
||||||
char line[500];
|
|
||||||
string str;
|
string str;
|
||||||
ifstream infile;
|
ifstream infile;
|
||||||
#ifdef VERBOSE
|
#ifdef VERBOSE
|
||||||
@ -1740,7 +1739,22 @@ int mythenDetector::readCalibrationFile(string fname, float &gain, float &offset
|
|||||||
};
|
};
|
||||||
|
|
||||||
int mythenDetector::writeCalibrationFile(string fname, float gain, float offset){
|
int mythenDetector::writeCalibrationFile(string fname, float gain, float offset){
|
||||||
std::cout<< "Function not yet implemented " << std::endl;
|
//std::cout<< "Function not yet implemented " << std::endl;
|
||||||
|
ofstream outfile;
|
||||||
|
|
||||||
|
outfile.open (fname.c_str());
|
||||||
|
|
||||||
|
// >> i/o operations here <<
|
||||||
|
if (outfile.is_open()) {
|
||||||
|
outfile << offset << " " << gain << std::endl;
|
||||||
|
} else {
|
||||||
|
std::cout<< "Could not open calibration file "<< fname << " for writing" << std::endl;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
outfile.close();
|
||||||
|
|
||||||
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1817,7 +1831,6 @@ int mythenDetector::getAngularConversion(int &direction, angleConversionConstan
|
|||||||
|
|
||||||
|
|
||||||
int mythenDetector::readAngularConversion(string fname) {
|
int mythenDetector::readAngularConversion(string fname) {
|
||||||
char line[500];
|
|
||||||
string str;
|
string str;
|
||||||
ifstream infile;
|
ifstream infile;
|
||||||
int mod;
|
int mod;
|
||||||
@ -1926,7 +1939,7 @@ int mythenDetector::addToMerging(float *p1, float *v1, float *e1, float *mp, fl
|
|||||||
float binmi=-180., binma;
|
float binmi=-180., binma;
|
||||||
int ibin=0;
|
int ibin=0;
|
||||||
int imod;
|
int imod;
|
||||||
float ang;
|
float ang=0;
|
||||||
|
|
||||||
if (thisDetector->binSize>0)
|
if (thisDetector->binSize>0)
|
||||||
binsize=thisDetector->binSize;
|
binsize=thisDetector->binSize;
|
||||||
@ -2098,12 +2111,10 @@ void* mythenDetector::processData(int delflag) {
|
|||||||
float *ffcdata=NULL, *ffcerr=NULL;
|
float *ffcdata=NULL, *ffcerr=NULL;
|
||||||
float *ang=NULL;
|
float *ang=NULL;
|
||||||
float bs=0.004;
|
float bs=0.004;
|
||||||
int i=0;
|
|
||||||
int imod;
|
int imod;
|
||||||
int nb;
|
int nb;
|
||||||
int np;
|
int np;
|
||||||
detectorData *thisData;
|
detectorData *thisData;
|
||||||
int outer_c_s;
|
|
||||||
int dum=1;
|
int dum=1;
|
||||||
// thisDetector->progressIndex=0;
|
// thisDetector->progressIndex=0;
|
||||||
|
|
||||||
@ -2194,7 +2205,7 @@ void* mythenDetector::processData(int delflag) {
|
|||||||
thisDetector->binSize=bs;
|
thisDetector->binSize=bs;
|
||||||
|
|
||||||
|
|
||||||
nb=(360./bs);
|
nb=(int)(360./bs);
|
||||||
|
|
||||||
mergingBins=new float[nb];
|
mergingBins=new float[nb];
|
||||||
mergingCounts=new float[nb];
|
mergingCounts=new float[nb];
|
||||||
@ -2329,16 +2340,15 @@ void* mythenDetector::processData(int delflag) {
|
|||||||
}
|
}
|
||||||
dum=0;
|
dum=0;
|
||||||
} // ????????????????????????
|
} // ????????????????????????
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void mythenDetector::startThread(int delflag) {
|
void mythenDetector::startThread(int delflag) {
|
||||||
pthread_attr_t tattr, mattr;
|
pthread_attr_t tattr;
|
||||||
int ret;
|
int ret;
|
||||||
int newprio;
|
|
||||||
sched_param param, mparam;
|
sched_param param, mparam;
|
||||||
void *arg;
|
|
||||||
int policy= SCHED_OTHER;
|
int policy= SCHED_OTHER;
|
||||||
|
|
||||||
|
|
||||||
@ -2374,7 +2384,6 @@ void mythenDetector::startThread(int delflag) {
|
|||||||
|
|
||||||
void* startProcessData(void *n) {
|
void* startProcessData(void *n) {
|
||||||
//void* processData(void *n) {
|
//void* processData(void *n) {
|
||||||
void *w;
|
|
||||||
mythenDetector *myDet=(mythenDetector*)n;
|
mythenDetector *myDet=(mythenDetector*)n;
|
||||||
myDet->processData(1);
|
myDet->processData(1);
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
@ -2383,7 +2392,6 @@ void* startProcessData(void *n) {
|
|||||||
|
|
||||||
void* startProcessDataNoDelete(void *n) {
|
void* startProcessDataNoDelete(void *n) {
|
||||||
//void* processData(void *n) {
|
//void* processData(void *n) {
|
||||||
void *w;
|
|
||||||
mythenDetector *myDet=(mythenDetector*)n;
|
mythenDetector *myDet=(mythenDetector*)n;
|
||||||
myDet->processData(0);
|
myDet->processData(0);
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
|
@ -34,7 +34,7 @@ class mythenDetector : public slsDetector{
|
|||||||
//slsDetector(string const fname);
|
//slsDetector(string const fname);
|
||||||
// ~slsDetector(){while(dataQueue.size()>0){}};
|
// ~slsDetector(){while(dataQueue.size()>0){}};
|
||||||
/** destructor */
|
/** destructor */
|
||||||
~mythenDetector(){};
|
virtual ~mythenDetector(){};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
executes a set of string arguments according to a given format. It is used to read/write configuration file, dump and retrieve detector settings and for the command line interface command parsing
|
executes a set of string arguments according to a given format. It is used to read/write configuration file, dump and retrieve detector settings and for the command line interface command parsing
|
||||||
@ -311,7 +311,6 @@ enum {GET_ACTION, PUT_ACTION, READOUT_ACTION};
|
|||||||
|
|
||||||
int64_t getTimeLeft(timerIndex index);
|
int64_t getTimeLeft(timerIndex index);
|
||||||
|
|
||||||
/**
|
|
||||||
/**
|
/**
|
||||||
get run status on the stop socket
|
get run status on the stop socket
|
||||||
\returns status mask
|
\returns status mask
|
||||||
|
Reference in New Issue
Block a user