eiger receiver, receiving many packets at a time, with 16,8, 4 bitmode sort of working

This commit is contained in:
Maliakal Dhanya 2014-07-02 10:57:03 +02:00
parent b256e0b9e3
commit 4d9bbeecc3
4 changed files with 66 additions and 58 deletions

View File

@ -76,7 +76,10 @@ private:
*/ */
void Initialization(); void Initialization();
/** Gets the dynamic range and sets it on the gui
* @param setvalue the value set by the gui when used as a check
*/
void GetDynamicRange(int setvalue = -1);

View File

@ -88,7 +88,7 @@ void qTabDeveloper::SetupWidgetWindow(){
dacNames.push_back("v Vtgstv:"); dacNames.push_back("v Vtgstv:");
dacNames.push_back("v Vcmp_ll:"); dacNames.push_back("v Vcmp_ll:");
dacNames.push_back("v Vcmp_lr:"); dacNames.push_back("v Vcmp_lr:");
dacNames.push_back("i cal:"); dacNames.push_back("v cal:");
dacNames.push_back("v Vcmp_rl:"); dacNames.push_back("v Vcmp_rl:");
dacNames.push_back("v rxb_rb:"); dacNames.push_back("v rxb_rb:");
dacNames.push_back("v rxb_lb:"); dacNames.push_back("v rxb_lb:");
@ -260,7 +260,8 @@ void qTabDeveloper::SetDacValues(int id){
#ifdef VERBOSE #ifdef VERBOSE
cout << "Setting dac:" << dacNames[id] << " : " << spinDacs[id]->value() << endl; cout << "Setting dac:" << dacNames[id] << " : " << spinDacs[id]->value() << endl;
#endif #endif
spinDacs[id]->setValue((double)myDet->setDAC((dacs_t)spinDacs[id]->value(),getSLSIndex(id))); //spinDacs[id]->setValue((double)myDet->setDAC((dacs_t)spinDacs[id]->value(),getSLSIndex(id)));
myDet->setDAC((dacs_t)spinDacs[id]->value(),getSLSIndex(id));
qDefs::checkErrorMessage(myDet,"qTabDeveloper::SetDacValues"); qDefs::checkErrorMessage(myDet,"qTabDeveloper::SetDacValues");
} }

View File

@ -139,8 +139,8 @@ void qTabMeasurement::SetupTimingMode(){
item[(int)Gated_Start]->setEnabled(true); item[(int)Gated_Start]->setEnabled(true);
break; break;
case slsDetectorDefs::EIGER: case slsDetectorDefs::EIGER:
item[(int)Trigger_Exp_Series]->setEnabled(false);/**not implemented yet*/ item[(int)Trigger_Exp_Series]->setEnabled(true);
item[(int)Trigger_Readout]->setEnabled(false); item[(int)Trigger_Readout]->setEnabled(true);
item[(int)Gated]->setEnabled(true); item[(int)Gated]->setEnabled(true);
item[(int)Gated_Start]->setEnabled(false); item[(int)Gated_Start]->setEnabled(false);
break; break;
@ -638,36 +638,38 @@ void qTabMeasurement::SetTimingMode(int mode){
if(myDet->setExternalCommunicationMode(slsDetectorDefs::AUTO_TIMING)==slsDetectorDefs::AUTO_TIMING) if(myDet->setExternalCommunicationMode(slsDetectorDefs::AUTO_TIMING)==slsDetectorDefs::AUTO_TIMING)
success = true; success = true;
break; break;
case Trigger_Exp_Series://#Frames, #Triggers, ExpTime, Period, Delay case Trigger_Exp_Series://#(Frames), #Triggers, ExpTime, Period, (Delay)
if(detType == slsDetectorDefs::EIGER)//more than 1 frame per trigger yet to be implemented if(detType == slsDetectorDefs::EIGER) //only 1 frame for each trigger for eiger
spinNumFrames->setValue(1); spinNumFrames->setValue(1);
else{ else{
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
} }
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true); lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true); lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true);
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
if(myDet->setExternalCommunicationMode(slsDetectorDefs::TRIGGER_EXPOSURE)==slsDetectorDefs::TRIGGER_EXPOSURE) if(myDet->setExternalCommunicationMode(slsDetectorDefs::TRIGGER_EXPOSURE)==slsDetectorDefs::TRIGGER_EXPOSURE)
success = true; success = true;
break; break;
case Trigger_Readout://#Frames, ExpTime, Period, Delay case Trigger_Readout://#Frames, ExpTime, Period, (Delay)
if(detType != slsDetectorDefs::EIGER){
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
}
spinNumTriggers->setValue(1); spinNumTriggers->setValue(1);
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true); lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true);
lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true); lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true);
lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true);
if(myDet->setExternalCommunicationMode(slsDetectorDefs::TRIGGER_READOUT)==slsDetectorDefs::TRIGGER_READOUT) if(myDet->setExternalCommunicationMode(slsDetectorDefs::TRIGGER_READOUT)==slsDetectorDefs::TRIGGER_READOUT)
success = true; success = true;
break; break;
case Gated://#Frames, #Gates case Gated://#Frames, #(Gates)
spinNumTriggers->setValue(1); if(detType != slsDetectorDefs::EIGER){
if(detType == slsDetectorDefs::EIGER)//more than 1 frame per trigger yet to be implemented lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
spinNumGates->setValue(1);
else{
lblNumGates->setEnabled(true); spinNumGates->setEnabled(true);
} }
spinNumTriggers->setValue(1);
lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true);
if(myDet->setExternalCommunicationMode(slsDetectorDefs::GATE_FIX_NUMBER)==slsDetectorDefs::GATE_FIX_NUMBER) if(myDet->setExternalCommunicationMode(slsDetectorDefs::GATE_FIX_NUMBER)==slsDetectorDefs::GATE_FIX_NUMBER)
success = true; success = true;
break; break;

View File

@ -23,8 +23,6 @@ qTabSettings::qTabSettings(QWidget *parent,multiSlsDetector*& detector):
item[i]=0; item[i]=0;
setupUi(this); setupUi(this);
SetupWidgetWindow(); SetupWidgetWindow();
Initialization();
} }
//------------------------------------------------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------------------------------------------------
@ -54,21 +52,52 @@ void qTabSettings::SetupWidgetWindow(){
spinNumModules->setMaximum(myDet->getMaxNumberOfModules()); spinNumModules->setMaximum(myDet->getMaxNumberOfModules());
spinNumModules->setValue(myDet->setNumberOfModules()); spinNumModules->setValue(myDet->setNumberOfModules());
Initialization();
// Dynamic Range // Dynamic Range
switch(myDet->setDynamicRange(-1)){ GetDynamicRange();
qDefs::checkErrorMessage(myDet,"qTabSettings::SetupWidgetWindow");
}
//-------------------------------------------------------------------------------------------------------------------------------------------------
void qTabSettings::GetDynamicRange(int setvalue){
#ifdef VERBOSE
cout << "Getting dynamic range" << endl;
#endif
int ret = myDet->setDynamicRange(-1);
if(detType == slsDetectorDefs::MYTHEN)
if(ret==24)
ret=32;
else if(ret==24)
cout<<"ret:"<<ret<<endl;
//check if the set value is equal to return value
if((setvalue!=-1) && (setvalue!=ret)){
qDefs::Message(qDefs::WARNING,"Dynamic Range cannot be set to this value.","qTabSettings::SetDynamicRange");
#ifdef VERBOSE
cout << "ERROR: Setting dynamic range to "<< ret << endl;
#endif
}
//set the final value on gui
disconnect(comboDynamicRange, SIGNAL(activated(int)), this, SLOT(SetDynamicRange(int)));
switch(ret){
case 32: comboDynamicRange->setCurrentIndex(0); break; case 32: comboDynamicRange->setCurrentIndex(0); break;
case 24: comboDynamicRange->setCurrentIndex(0); break;
case 16: comboDynamicRange->setCurrentIndex(1); break; case 16: comboDynamicRange->setCurrentIndex(1); break;
case 8: comboDynamicRange->setCurrentIndex(2); break; case 8: comboDynamicRange->setCurrentIndex(2); break;
case 4: comboDynamicRange->setCurrentIndex(3); break; case 4: comboDynamicRange->setCurrentIndex(3); break;
default: comboDynamicRange->setCurrentIndex(0); break; default: comboDynamicRange->setCurrentIndex(0); break;
} }
connect(comboDynamicRange, SIGNAL(activated(int)), this, SLOT(SetDynamicRange(int)));
qDefs::checkErrorMessage(myDet,"qTabSettings::SetupWidgetWindow");
} }
//------------------------------------------------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------------------------------------------------
void qTabSettings::SetupDetectorSettings(){ void qTabSettings::SetupDetectorSettings(){
// Get detector settings from detector // Get detector settings from detector
slsDetectorDefs::detectorSettings sett = myDet->getSettings(); slsDetectorDefs::detectorSettings sett = myDet->getSettings();
@ -200,34 +229,20 @@ void qTabSettings::SetNumberOfModules(int index){
void qTabSettings::SetDynamicRange(int index){ void qTabSettings::SetDynamicRange(int index){
int ret,dr; int dr;
switch (index) { switch (index) {
case 0: dr=32; break; case 0: dr=32; break;
case 1: dr=16; break; case 1: dr=16; break;
case 2: dr=8; break; case 2: dr=8; break;
case 3: dr=4; break; case 3: dr=4; break;
default: dr=32; break; default: dr=32; break;
} }
ret=myDet->setDynamicRange(dr); myDet->setDynamicRange(dr);
if((ret==24)&&(dr==32)) dr = ret;
#ifdef VERBOSE #ifdef VERBOSE
cout << "Setting dynamic range to "<< dr << endl; cout << "Setting dynamic range to "<< dr << endl;
#endif #endif
if(ret!=dr){ //check
qDefs::Message(qDefs::WARNING,"Dynamic Range cannot be set to this value.","qTabSettings::SetDynamicRange"); GetDynamicRange(dr);
#ifdef VERBOSE
cout << "ERROR: Setting dynamic range to "<< ret << endl;
#endif
switch(ret){
case 32: comboDynamicRange->setCurrentIndex(0); break;
case 24: comboDynamicRange->setCurrentIndex(0); break;
case 16: comboDynamicRange->setCurrentIndex(1); break;
case 8: comboDynamicRange->setCurrentIndex(2); break;
case 4: comboDynamicRange->setCurrentIndex(3); break;
default: comboDynamicRange->setCurrentIndex(0); break;
}
}
qDefs::checkErrorMessage(myDet,"qTabSettings::SetDynamicRange"); qDefs::checkErrorMessage(myDet,"qTabSettings::SetDynamicRange");
} }
@ -263,7 +278,6 @@ void qTabSettings::Refresh(){
disconnect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(setSettings(int))); disconnect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(setSettings(int)));
disconnect(spinNumModules, SIGNAL(valueChanged(int)), this, SLOT(SetNumberOfModules(int))); disconnect(spinNumModules, SIGNAL(valueChanged(int)), this, SLOT(SetNumberOfModules(int)));
disconnect(comboDynamicRange, SIGNAL(activated(int)), this, SLOT(SetDynamicRange(int)));
disconnect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy())); disconnect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy()));
@ -278,18 +292,7 @@ void qTabSettings::Refresh(){
spinNumModules->setValue(numMod); spinNumModules->setValue(numMod);
// Dynamic Range // Dynamic Range
#ifdef VERBOSE GetDynamicRange();
cout << "Getting dynamic range" << endl;
#endif
switch(myDet->setDynamicRange(-1)){
case 32: comboDynamicRange->setCurrentIndex(0); break;
case 24: comboDynamicRange->setCurrentIndex(0); break;
case 16: comboDynamicRange->setCurrentIndex(1); break;
case 8: comboDynamicRange->setCurrentIndex(2); break;
case 4: comboDynamicRange->setCurrentIndex(3); break;
default: comboDynamicRange->setCurrentIndex(0); break;
}
// Settings // Settings
#ifdef VERBOSE #ifdef VERBOSE
@ -319,7 +322,6 @@ void qTabSettings::Refresh(){
connect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(setSettings(int))); connect(comboSettings, SIGNAL(currentIndexChanged(int)), this, SLOT(setSettings(int)));
connect(spinNumModules, SIGNAL(valueChanged(int)), this, SLOT(SetNumberOfModules(int))); connect(spinNumModules, SIGNAL(valueChanged(int)), this, SLOT(SetNumberOfModules(int)));
connect(comboDynamicRange, SIGNAL(activated(int)), this, SLOT(SetDynamicRange(int)));
connect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy())); connect(spinThreshold, SIGNAL(valueChanged(int)), this, SLOT(SetEnergy()));
#ifdef VERBOSE #ifdef VERBOSE