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();