mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 01:58:00 +02:00
Merge branch 'master' of gitorious.psi.ch:sls_det_software/sls_detector_software
This commit is contained in:
@ -1,11 +1,11 @@
|
||||
//#define SVNPATH ""
|
||||
#define SVNURLLIB "git@gitorious.psi.ch:sls_det_software/sls_detector_software.git"
|
||||
#define SVNURLLIB "maliakal_d@gitorious.psi.ch:sls_det_software/sls_detector_software.git"
|
||||
//#define SVNREPPATH ""
|
||||
#define SVNREPUUIDLIB "eff6ffc4c32edd46844d2cd1670cd4d4e7d05ca3"
|
||||
//#define SVNREV 0x882
|
||||
#define SVNREPUUIDLIB "3b5e43dfbd7f3819ace58ad8cd0aefd0ba0034c3"
|
||||
//#define SVNREV 0x945
|
||||
//#define SVNKIND ""
|
||||
//#define SVNSCHED ""
|
||||
#define SVNAUTHLIB "Maliakal_Dhanya"
|
||||
#define SVNREVLIB 0x882
|
||||
#define SVNDATELIB 0x20141208
|
||||
#define SVNAUTHLIB "Dhanya_Maliakal"
|
||||
#define SVNREVLIB 0x945
|
||||
#define SVNDATELIB 0x20150622
|
||||
//
|
||||
|
@ -44,6 +44,12 @@ int slsDetector::initSharedMemory(detectorType type, int id) {
|
||||
nc=10;
|
||||
nd=13; // dacs+adcs
|
||||
break;
|
||||
case PROPIX:
|
||||
nch=22*22;
|
||||
nm=1;
|
||||
nc=1;
|
||||
nd=13; // dacs+adcs
|
||||
break;
|
||||
case EIGER:
|
||||
nch=256*256; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
@ -553,6 +559,17 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
thisDetector->nModMax[Y]=1;
|
||||
thisDetector->dynamicRange=16;
|
||||
break;
|
||||
case PROPIX:
|
||||
thisDetector->nChan[X]=22;
|
||||
thisDetector->nChan[Y]=22;
|
||||
thisDetector->nChip[X]=1;
|
||||
thisDetector->nChip[Y]=1;
|
||||
thisDetector->nDacs=8;
|
||||
thisDetector->nAdcs=5;
|
||||
thisDetector->nModMax[X]=1;
|
||||
thisDetector->nModMax[Y]=1;
|
||||
thisDetector->dynamicRange=16;
|
||||
break;
|
||||
case MOENCH:
|
||||
thisDetector->nChan[X]=160;
|
||||
thisDetector->nChan[Y]=160;
|
||||
@ -775,7 +792,7 @@ int slsDetector::initializeDetectorSize(detectorType type) {
|
||||
fileName=parentDet->fileName;
|
||||
fileIndex=parentDet->fileIndex;
|
||||
framesPerFile=parentDet->framesPerFile;
|
||||
if(thisDetector->myDetectorType==GOTTHARD)
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==PROPIX))
|
||||
setFramesPerFile(MAX_FRAMES_PER_FILE);
|
||||
if (thisDetector->myDetectorType==MOENCH)
|
||||
setFramesPerFile(MOENCH_MAX_FRAMES_PER_FILE);
|
||||
@ -881,6 +898,13 @@ slsDetectorDefs::sls_detector_module* slsDetector::createModule(detectorType t)
|
||||
nd=8; // dacs+adcs
|
||||
na=5;
|
||||
break;
|
||||
case PROPIX:
|
||||
nch=22*22;
|
||||
nm=1;
|
||||
nc=1;
|
||||
nd=8; // dacs+adcs
|
||||
na=5;
|
||||
break;
|
||||
case EIGER:
|
||||
nch=256*256; // one EIGER half module
|
||||
nm=1; //modules/detector
|
||||
@ -2133,7 +2157,7 @@ dacs_t slsDetector::setDAC(dacs_t val, dacIndex index, int mV, int imod){
|
||||
std::cout<< "Dac set to "<< retval[0] << " dac units (" << retval[1] << "mV)" << std::endl;
|
||||
#endif
|
||||
if (ret==FAIL) {
|
||||
std::cout<< "Set dac failed " << std::endl;
|
||||
std::cout<< "Set dac " << index << " of module " << imod << " to " << val << " failed." << std::endl;
|
||||
}
|
||||
if(mV)
|
||||
return retval[1];
|
||||
@ -2951,6 +2975,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
case HIGHGAIN:
|
||||
if ( (thisDetector->myDetectorType == MYTHEN) ||
|
||||
(thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH) ||
|
||||
(thisDetector->myDetectorType == EIGER)) {
|
||||
ssettings="/highgain";
|
||||
@ -2959,6 +2984,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case DYNAMICGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/dynamicgain";
|
||||
thisDetector->currentSettings=DYNAMICGAIN;
|
||||
@ -2966,6 +2992,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case LOWGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/lowgain";
|
||||
thisDetector->currentSettings=LOWGAIN;
|
||||
@ -2973,6 +3000,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case MEDIUMGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/mediumgain";
|
||||
thisDetector->currentSettings=MEDIUMGAIN;
|
||||
@ -2980,6 +3008,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case VERYHIGHGAIN:
|
||||
if ((thisDetector->myDetectorType == GOTTHARD) ||
|
||||
(thisDetector->myDetectorType == PROPIX) ||
|
||||
(thisDetector->myDetectorType == MOENCH)) {
|
||||
ssettings="/veryhighgain";
|
||||
thisDetector->currentSettings=VERYHIGHGAIN;
|
||||
@ -3024,6 +3053,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
break;
|
||||
case MOENCH:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
case JUNGFRAUCTB:
|
||||
//settings is saved in myMod.reg
|
||||
myMod->reg=thisDetector->currentSettings;
|
||||
@ -3054,6 +3084,7 @@ slsDetectorDefs::detectorSettings slsDetector::setSettings( detectorSettings ise
|
||||
switch(thisDetector->myDetectorType){
|
||||
case MOENCH:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
case JUNGFRAUCTB:
|
||||
ostfn << thisDetector->settingsDir << ssettings << ssettings << ".settings";
|
||||
break;
|
||||
@ -3167,7 +3198,9 @@ int slsDetector::updateDetectorNoWait() {
|
||||
n = controlSocket->ReceiveDataOnly( &t,sizeof(t));
|
||||
thisDetector->currentSettings=t;
|
||||
|
||||
if((thisDetector->myDetectorType!= GOTTHARD)&&(thisDetector->myDetectorType!= MOENCH)){
|
||||
if((thisDetector->myDetectorType!= GOTTHARD)&&
|
||||
(thisDetector->myDetectorType!= PROPIX)&&
|
||||
(thisDetector->myDetectorType!= MOENCH)){
|
||||
//thr=getThresholdEnergy();
|
||||
n = controlSocket->ReceiveDataOnly( &thr,sizeof(thr));
|
||||
thisDetector->currentThresholdEV=thr;
|
||||
@ -3639,7 +3672,9 @@ int64_t slsDetector::setTimer(timerIndex index, int64_t t){
|
||||
//std::cout<< "offline " << std::endl;
|
||||
if (t>=0)
|
||||
thisDetector->timerValue[index]=t;
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==MOENCH))
|
||||
if((thisDetector->myDetectorType==GOTTHARD)||
|
||||
(thisDetector->myDetectorType==PROPIX)||
|
||||
(thisDetector->myDetectorType==MOENCH))
|
||||
thisDetector->timerValue[PROBES_NUMBER]=0;
|
||||
}
|
||||
} else {
|
||||
@ -4199,10 +4234,10 @@ int slsDetector::setDynamicRange(int n){
|
||||
thisDetector->dynamicRange=retval;
|
||||
|
||||
|
||||
//#ifdef VERBOSE
|
||||
#ifdef VERBOSE
|
||||
std::cout<< "Dynamic range set to "<< thisDetector->dynamicRange << std::endl;
|
||||
std::cout<< "Data bytes "<< thisDetector->dataBytes << std::endl;
|
||||
//#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@ -4210,11 +4245,11 @@ int slsDetector::setDynamicRange(int n){
|
||||
if(ret != FAIL){
|
||||
if(setReceiverOnline(ONLINE_FLAG)==ONLINE_FLAG){
|
||||
#ifdef VERBOSE
|
||||
std::cout << "Sending/Getting dynamic range to/from receiver " << retval << std::endl;
|
||||
std::cout << "Sending/Getting dynamic range to/from receiver " << n << std::endl;
|
||||
#endif
|
||||
if (connectData() == OK)
|
||||
ret=thisReceiver->sendInt(fnum2,retval1,retval);
|
||||
if((retval1 != retval)|| (ret==FAIL)){
|
||||
ret=thisReceiver->sendInt(fnum2,retval1,n);
|
||||
if ((ret==FAIL) || (retval1 != retval)){
|
||||
ret = FAIL;
|
||||
cout << "ERROR:Dynamic range in receiver set incorrectly to " << retval1 << " instead of " << retval << endl;
|
||||
setErrorMask((getErrorMask())|(RECEIVER_DYNAMIC_RANGE));
|
||||
@ -5721,7 +5756,9 @@ int slsDetector::writeConfigurationFile(ofstream &outfile, int id){
|
||||
// "trimen",
|
||||
// "receiverTCPPort",
|
||||
|
||||
if ((thisDetector->myDetectorType==GOTTHARD)||(thisDetector->myDetectorType==MOENCH)) {
|
||||
if ((thisDetector->myDetectorType==GOTTHARD)||
|
||||
(thisDetector->myDetectorType==PROPIX)||
|
||||
(thisDetector->myDetectorType==MOENCH)) {
|
||||
names[0]= "hostname";
|
||||
names[1]= "port";
|
||||
names[2]= "stopport";
|
||||
|
@ -1118,7 +1118,7 @@ class slsDetector : public slsDetectorUtils, public energyConversion {
|
||||
\param flag readout flag to be set
|
||||
\returns current flag
|
||||
*/
|
||||
int setReadOutFlags(readOutFlags flag=GET_READOUT_FLAGS);
|
||||
int setReadOutFlags(readOutFlags flag=GET_READOUT_FLAGS);
|
||||
|
||||
/**
|
||||
execute trimming
|
||||
|
@ -534,6 +534,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
case MOENCH: return string("Moench"); \
|
||||
case JUNGFRAU: return string("Jungfrau"); \
|
||||
case JUNGFRAUCTB: return string("JungfrauCTB"); \
|
||||
case PROPIX: return string("Propix"); \
|
||||
default: return string("Unknown"); \
|
||||
}};
|
||||
|
||||
@ -550,6 +551,7 @@ class slsDetectorBase : public virtual slsDetectorDefs, public virtual errorDef
|
||||
if (type=="Moench") return MOENCH; \
|
||||
if (type=="Jungfrau") return JUNGFRAU; \
|
||||
if (type=="JungfrauCTB") return JUNGFRAUCTB; \
|
||||
if (type=="Propix") return PROPIX; \
|
||||
return GENERIC;};
|
||||
|
||||
|
||||
|
@ -884,6 +884,10 @@ slsDetectorCommand::slsDetectorCommand(slsDetectorUtils *det) {
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdReceiver;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="resetframescaught";
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdReceiver;
|
||||
i++;
|
||||
|
||||
descrToFuncMap[i].m_pFuncName="frameindex";
|
||||
descrToFuncMap[i].m_pFuncPtr=&slsDetectorCommand::cmdReceiver;
|
||||
i++;
|
||||
@ -4058,8 +4062,9 @@ string slsDetectorCommand::helpSpeed(int narg, char *args[], int action) {
|
||||
|
||||
string slsDetectorCommand::cmdAdvanced(int narg, char *args[], int action) {
|
||||
|
||||
int retval;
|
||||
char answer[1000]="";
|
||||
|
||||
|
||||
if (action==HELP_ACTION)
|
||||
return helpAdvanced(narg, args, action);
|
||||
|
||||
@ -4090,25 +4095,28 @@ string slsDetectorCommand::cmdAdvanced(int narg, char *args[], int action) {
|
||||
|
||||
myDet->setOnline(ONLINE_FLAG);
|
||||
|
||||
switch (myDet->setReadOutFlags(flag)) {
|
||||
case NORMAL_READOUT:
|
||||
return string("none");
|
||||
case STORE_IN_RAM:
|
||||
return string("storeinram");
|
||||
case TOT_MODE:
|
||||
return string("tot");
|
||||
case CONTINOUS_RO:
|
||||
return string("continous");
|
||||
case PARALLEL:
|
||||
return string("parallel");
|
||||
case NONPARALLEL:
|
||||
return string("nonparallel");
|
||||
case SAFE:
|
||||
return string("safe");
|
||||
default:
|
||||
return string("unknown");
|
||||
}
|
||||
|
||||
retval = myDet->setReadOutFlags(flag);
|
||||
|
||||
if(retval == NORMAL_READOUT)
|
||||
return string("none");
|
||||
|
||||
if(retval & STORE_IN_RAM)
|
||||
strcat(answer,"storeinram ");
|
||||
if(retval & TOT_MODE)
|
||||
strcat(answer,"tot ");
|
||||
if(retval & CONTINOUS_RO)
|
||||
strcat(answer,"continous ");
|
||||
if(retval & PARALLEL)
|
||||
strcat(answer,"parallel ");
|
||||
if(retval & NONPARALLEL)
|
||||
strcat(answer,"nonparallel ");
|
||||
if(retval & SAFE)
|
||||
strcat(answer,"safe ");
|
||||
if(strlen(answer))
|
||||
return string(answer);
|
||||
|
||||
return string("unknown");
|
||||
|
||||
} else if (cmd=="extsig") {
|
||||
externalSignalFlag flag=GET_EXTERNAL_SIGNAL_FLAG;
|
||||
int is=-1;
|
||||
@ -4282,6 +4290,18 @@ string slsDetectorCommand::cmdReceiver(int narg, char *args[], int action) {
|
||||
}
|
||||
}
|
||||
|
||||
else if(cmd=="resetframescaught"){
|
||||
if (action==GET_ACTION)
|
||||
return string("cannot get");
|
||||
else{
|
||||
if(myDet->resetFramesCaught() == FAIL)
|
||||
strcpy(answer,"failed");
|
||||
else
|
||||
strcpy(answer,"successful");
|
||||
return string(answer);
|
||||
}
|
||||
}
|
||||
|
||||
else if(cmd=="frameindex"){
|
||||
if (action==PUT_ACTION)
|
||||
return string("cannot put");
|
||||
@ -4336,6 +4356,7 @@ string slsDetectorCommand::helpReceiver(int narg, char *args[], int action) {
|
||||
ostringstream os;
|
||||
if (action==PUT_ACTION || action==HELP_ACTION) {
|
||||
os << "receiver [status] \t starts/stops the receiver to listen to detector packets. - can be start or stop" << std::endl;
|
||||
os << "resetframescaught [any value] \t resets frames caught by receiver" << std::endl;
|
||||
os << "r_readfreq \t sets the gui read frequency of the receiver, 0 if gui requests frame, >0 if receiver sends every nth frame to gui" << std::endl;
|
||||
os << "tengiga \t sets system to be configure for 10Gbe if set to 1, else 1Gbe if set to 0" << std::endl;
|
||||
}
|
||||
|
@ -53,6 +53,14 @@ void slsDetectorUtils::acquire(int delflag){
|
||||
|
||||
int multiframe = nc*nf;
|
||||
|
||||
//
|
||||
if(setDynamicRange() == 32) subframe = 1;
|
||||
else subframe = 0;
|
||||
|
||||
pthread_mutex_lock(&mg);
|
||||
acquiringDone = 0;
|
||||
pthread_mutex_unlock(&mg);
|
||||
|
||||
// setTotalProgress();
|
||||
//moved these 2 here for measurement change
|
||||
progressIndex=0;
|
||||
@ -462,8 +470,11 @@ void slsDetectorUtils::acquire(int delflag){
|
||||
pthread_mutex_unlock(&mg);
|
||||
|
||||
|
||||
if (measurement_finished)
|
||||
measurement_finished(im,*fileIndex,measFinished_p);
|
||||
if (measurement_finished){
|
||||
pthread_mutex_lock(&mg);
|
||||
measurement_finished(im,*fileIndex,measFinished_p);
|
||||
pthread_mutex_unlock(&mg);
|
||||
}
|
||||
|
||||
if (*stoppedFlag) {
|
||||
break;
|
||||
@ -806,6 +817,7 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
names[nvar++]="ratecorr";
|
||||
break;
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[nvar++]="flags";
|
||||
names[nvar++]="delay";
|
||||
names[nvar++]="gates";
|
||||
@ -889,6 +901,7 @@ int slsDetectorUtils::dumpDetectorSetup(string const fname, int level){
|
||||
case EIGER:
|
||||
case MYTHEN:
|
||||
case GOTTHARD:
|
||||
case PROPIX:
|
||||
names[nvar++]="flatfield";
|
||||
names[nvar++]="badchannels";
|
||||
break;
|
||||
|
Reference in New Issue
Block a user