diff --git a/slsDetectorGui/include/qTabAdvanced.h b/slsDetectorGui/include/qTabAdvanced.h index 05e5f6f3a..5a15e6339 100644 --- a/slsDetectorGui/include/qTabAdvanced.h +++ b/slsDetectorGui/include/qTabAdvanced.h @@ -58,6 +58,11 @@ private: */ void AddROIInput(int num); + /** Checks for a few conditions before trimming + /returns OK or FAIL + */ + int validateBeforeTrimming(); + private slots: @@ -192,6 +197,10 @@ private: /** Trimming mode */ slsDetectorDefs::trimMode trimmingMode; + static const int TRIMMING_DYNAMIC_RANGE = 24; + static const int TRIMMING_FRAME_NUMBER = 1; + static const int TRIMMING_TRIGGER_NUMBER = 1; + static const int TRIMMING_PROBE_NUMBER = 0; bool isEnergy; bool isAngular; diff --git a/slsDetectorGui/slsDetectorGui.pro b/slsDetectorGui/slsDetectorGui.pro index bb96a4ebe..ff694965e 100644 --- a/slsDetectorGui/slsDetectorGui.pro +++ b/slsDetectorGui/slsDetectorGui.pro @@ -20,7 +20,7 @@ QMAKE_LIBS = -L$(QTDIR)/lib #LIBS = -L$(QWTDIR)/lib -lqwt -L$(QWT3D)/lib -Wl,-R$(QWTDIR)/lib -L /usr/local/epics/base/lib/$(EPICS_HOST_ARCH)/ -Wl,-R/usr/local/epics/base/lib/$(EPICS_HOST_ARCH) -lca -lCom #default -DEFINES += VERBOSE DACS_INT PRINT_LOG THIS_PATH=\\\"$$PWD\\\" #VERYVERBOSE +DEFINES += VERBOSE DACS_INT PRINT_LOG THIS_PATH=\\\"$$PWD\\\" #VERYVERBOSE LIBS = -L$(QWTDIR)/lib -lqwt -L$(QWT3D)/lib diff --git a/slsDetectorGui/src/qTabAdvanced.cpp b/slsDetectorGui/src/qTabAdvanced.cpp index f76f262aa..71bb545d9 100644 --- a/slsDetectorGui/src/qTabAdvanced.cpp +++ b/slsDetectorGui/src/qTabAdvanced.cpp @@ -436,8 +436,101 @@ void qTabAdvanced::SetTrimmingMethod(int mode){ //------------------------------------------------------------------------------------------------------------------------------------------------- -void qTabAdvanced::StartTrimming(){ +int qTabAdvanced::validateBeforeTrimming(){ +#ifdef VERBOSE + cout << "Validating conditions before Trimming" << endl; +#endif + char temp[100]; + switch(detType){ + case slsDetectorDefs::MYTHEN: + //dynamic range + if(myDet->setDynamicRange(-1) != TRIMMING_DYNAMIC_RANGE){ + sprintf(temp,"%d",TRIMMING_DYNAMIC_RANGE); + if(myDet->setDynamicRange(TRIMMING_DYNAMIC_RANGE) != TRIMMING_DYNAMIC_RANGE){ + qDefs::Message(qDefs::WARNING, + string("Trimming Pre-condition not satisfied:
" + "Could not set dynamic range to ") + string(temp)+string(".
" + "Trimming Aborted."),"qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + } + //frames + if((int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1) != TRIMMING_FRAME_NUMBER){ + if((int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,TRIMMING_FRAME_NUMBER) != TRIMMING_FRAME_NUMBER){ + sprintf(temp,"%d",TRIMMING_FRAME_NUMBER); + qDefs::Message(qDefs::WARNING, + string("Trimming Pre-condition not satisfied:
" + "Could not set Number of Frames to ") + string(temp)+string(".
" + "Trimming Aborted."),"qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + } + //trigger + if((int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,-1) != TRIMMING_TRIGGER_NUMBER){ + if((int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,TRIMMING_TRIGGER_NUMBER) != TRIMMING_TRIGGER_NUMBER){ + sprintf(temp,"%d",TRIMMING_TRIGGER_NUMBER); + qDefs::Message(qDefs::WARNING, + string("Trimming Pre-condition not satisfied:
" + "Could not set Number of Triggers to ") + string(temp)+string(".
" + "Trimming Aborted."),"qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + } + //probes + if((int)myDet->setTimer(slsDetectorDefs::PROBES_NUMBER,-1) != TRIMMING_PROBE_NUMBER){ + if((int)myDet->setTimer(slsDetectorDefs::PROBES_NUMBER,TRIMMING_PROBE_NUMBER) != TRIMMING_PROBE_NUMBER){ + sprintf(temp,"%d",TRIMMING_PROBE_NUMBER); + qDefs::Message(qDefs::WARNING, + string("Trimming Pre-condition not satisfied:
" + "Could not set Number of Probes to ") + string(temp)+string(".
" + "Trimming Aborted."),"qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + } + //Setting + if((int)myDet->getSettings() == slsDetectorDefs::UNINITIALIZED){ + if(qDefs::Message(qDefs::QUESTION, + string("Trimming Pre-condition not satisfied:
")+ + string("Settings cannot be Uninitialized to start Trimming.
" + "Change it to Standard and proceed?"),"qTabAdvanced::validateBeforeTrimming") == slsDetectorDefs::FAIL){ + qDefs::Message(qDefs::INFORMATION, + "Please change the Settings in the Settings tab to your choice.
" + "Aborting Trimming.","qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + //user asked to change settings to standard + else{ + if((int)myDet->setSettings(slsDetectorDefs::STANDARD) != slsDetectorDefs::STANDARD){ + qDefs::Message(qDefs::WARNING, + string("Trimming Pre-condition not satisfied:
" + "Could not change Settings to Standard
" + "Trimming Aborted."),"qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::FAIL; + } + } + } + + qDefs::Message(qDefs::INFORMATION,"All conditions satisfied for Trimming.
" + "Initiating Trimming...","qTabAdvanced::validateBeforeTrimming"); + return slsDetectorDefs::OK; + default: + return slsDetectorDefs::FAIL; + } +} + + +//------------------------------------------------------------------------------------------------------------------------------------------------- + + +void qTabAdvanced::StartTrimming(){ + //check a few conditions before trimming + if(validateBeforeTrimming() == slsDetectorDefs::FAIL) + return; + +#ifdef VERBOSE + cout << "Starting Trimming" << endl; +#endif int parameter1=0, parameter2=0; //optimize bool optimize = chkOptimize->isChecked();