/* * qTabMeasurement.cpp * * Created on: May 2, 2012 * Author: l_maliakal_d */ /** Qt Project Class Headers */ #include "qTabMeasurement.h" #include "qDefs.h" #include "qDrawPlot.h" /** Project Class Headers */ #include "slsDetector.h" #include "multiSlsDetector.h" #include /** C++ Include Headers */ #include using namespace std; #define Detector_Index 0 #define UndefinedSettings 7 qTabMeasurement::qTabMeasurement(QWidget *parent,slsDetectorUtils*& detector, qDrawPlot*& plot): QWidget(parent),myDet(detector),myPlot(plot){ setupUi(this); if(myDet) { SetupWidgetWindow(); Initialization(); } } qTabMeasurement::~qTabMeasurement(){ delete myDet; delete myPlot; } void qTabMeasurement::SetupWidgetWindow(){ /** File Name **/ dispFileName->setText(QString(myDet->getFileName().c_str())); /** File Index **/ spinIndex->setValue(myDet->getFileIndex()); /** only initially **/ lblProgressIndex->setText(QString::number(myDet->getFileIndex())); /** Enabling/Disabling depending on the detector type*/ QStandardItemModel* model = qobject_cast(comboTimingMode->model()); QModelIndex index[NumTimingModes]; QStandardItem* item[NumTimingModes]; if (model) { for(int i=0;iindex(i, comboTimingMode->modelColumn(), comboTimingMode->rootModelIndex()); item[i] = model->itemFromIndex(index[i]); } switch(myDet->getDetectorsType()){ case slsDetectorDefs::MYTHEN: item[(int)Gated]->setEnabled(true); item[(int)Trigger_Exp_Series]->setEnabled(true); item[(int)Trigger_Frame]->setEnabled(false); item[(int)Trigger_Readout]->setEnabled(true); item[(int)Gated_Start]->setEnabled(true); item[(int)Trigger_Window]->setEnabled(false); break; case slsDetectorDefs::EIGER: item[(int)Gated]->setEnabled(false); item[(int)Trigger_Exp_Series]->setEnabled(true); item[(int)Trigger_Frame]->setEnabled(true); item[(int)Trigger_Readout]->setEnabled(false); item[(int)Gated_Start]->setEnabled(false); item[(int)Trigger_Window]->setEnabled(true); break; case slsDetectorDefs::GOTTHARD: item[(int)Gated]->setEnabled(false); item[(int)Trigger_Exp_Series]->setEnabled(true); item[(int)Trigger_Frame]->setEnabled(false); item[(int)Trigger_Readout]->setEnabled(false); item[(int)Gated_Start]->setEnabled(false); item[(int)Trigger_Window]->setEnabled(false); break; /* case slsDetectorDefs::PICASSO: case slsDetectorDefs::PILATUS: case slsDetectorDefs::AGIPD:*/ default: cout<<"ERROR: Detector Type is Generic"<setEnabled(enable); gridLayout->setEnabled(enable); boxProgress->setEnabled(enable); /** Enable this always **/ if(!enable) btnStartStop->setEnabled(true); } void qTabMeasurement::UpdateFinished(){ disconnect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition())); btnStartStop->setText("Start"); Enable(1); connect(btnStartStop,SIGNAL(clicked()),this,SLOT(startStopAcquisition())); } void qTabMeasurement::setFileName(const QString& fName){ // emit fileNameChanged(fName); // thred-->fileName=s;myDet->setFileName(fName.ascii()); myDet->setFileName(fName.toAscii().data()); #ifdef VERBOSE cout<<"Setting File name to " << myDet->getFileName()<setFileIndex(index); #ifdef VERBOSE cout<<"Setting File Index to " << myDet->getFileIndex()<text().compare("Start")){ #ifdef VERBOSE cout<setText("Stop"); Enable(0); }else{ #ifdef VERBOSE cout<<"Stopping Acquisition"<setText("Start"); Enable(1); } myPlot->StartStopDaqToggle(); } void qTabMeasurement::setNumFrames(int val){ myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,val); #ifdef VERBOSE cout<<"Setting number of frames to " << (int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1)<currentIndex(),spinExpTime->value()); #ifdef VERBOSE cout<<"Setting acquisition time to " << exptime64 << " clocks" << endl; #endif myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME,exptime64); //float t=exptime64; //emit acquisitionTimeChanged(t/(100E+6)); ?????????????????????? } void qTabMeasurement::setAcquisitionPeriod(){ int64_t exptime64; /** Get the 64 bit value of timer**/ exptime64 = qDefs::get64bTime((qDefs::timeUnit)comboPeriodUnit->currentIndex(),spinPeriod->value()); #ifdef VERBOSE cout<<"Setting frame period between exposures to " << exptime64 << " clocks" << endl; #endif myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,exptime64); //float t=exptime64; //emit acquisitionTimeChanged(t/(100E+6)); ?????????????????????? } void qTabMeasurement::setNumTriggers(int val){ myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,val); #ifdef VERBOSE cout<<"Setting number of triggers to " << (int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,-1)<currentIndex(),spinDelay->value()); #ifdef VERBOSE cout<<"Setting delay after trigger to " << exptime64 << " clocks" << endl; #endif myDet->setTimer(slsDetectorDefs::DELAY_AFTER_TRIGGER,exptime64); } void qTabMeasurement::setNumGates(int val){ myDet->setTimer(slsDetectorDefs::GATES_NUMBER,val); #ifdef VERBOSE cout<<"Setting number of gates to " << (int)myDet->setTimer(slsDetectorDefs::GATES_NUMBER,-1)<setTimer(slsDetectorDefs::PROBES_NUMBER,val); #ifdef VERBOSE cout<<"Setting number of frames to " << (int)myDet->setTimer(slsDetectorDefs::PROBES_NUMBER,-1)<currentText().toAscii().data()<setEnabled(false); spinNumFrames->setEnabled(false); lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false); lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false); lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); lblNumProbes->setEnabled(false); spinNumProbes->setEnabled(false); break; case Auto: lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true); lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true); lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); break; case Gated: lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false); lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false); lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(true); spinNumGates->setEnabled(true); break; case Trigger_Exp_Series: lblNumFrames->setEnabled(true); spinNumFrames->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); lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); break; case Trigger_Readout: lblNumFrames->setEnabled(true); spinNumFrames->setEnabled(true); lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true); lblPeriod->setEnabled(true); spinPeriod->setEnabled(true); comboPeriodUnit->setEnabled(true); lblNumTriggers->setEnabled(false); spinNumTriggers->setEnabled(false); lblDelay->setEnabled(true); spinDelay->setEnabled(true); comboDelayUnit->setEnabled(true); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); break; case Gated_Start: lblNumFrames->setEnabled(true); spinNumFrames->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); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(true); spinNumGates->setEnabled(true); break; case Trigger_Frame: lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false); lblExpTime->setEnabled(true); spinExpTime->setEnabled(true); comboExpUnit->setEnabled(true); lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false); lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); break; case Trigger_Window: lblNumFrames->setEnabled(false); spinNumFrames->setEnabled(false); lblExpTime->setEnabled(false); spinExpTime->setEnabled(false); comboExpUnit->setEnabled(false); lblPeriod->setEnabled(false); spinPeriod->setEnabled(false); comboPeriodUnit->setEnabled(false); lblNumTriggers->setEnabled(true); spinNumTriggers->setEnabled(true); lblDelay->setEnabled(false); spinDelay->setEnabled(false); comboDelayUnit->setEnabled(false); lblNumGates->setEnabled(false); spinNumGates->setEnabled(false); break; default: cout<<"ERROR: Timing mode being set to other should never happen"<getDetectorsType()==slsDetectorDefs::MYTHEN){ lblNumProbes->setEnabled(true); spinNumProbes->setEnabled(true); }else{ lblNumProbes->setEnabled(false); spinNumProbes->setEnabled(false); } } /** To disconnect all the signals before changing their values*/ DeInitialization(); float time; int val; /**Number of Frames */ if(lblNumFrames->isEnabled()){ val = (int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1); spinNumFrames->setValue(val); #ifdef VERBOSE cout<<"Getting number of frames : " << val <isEnabled()){ time = (float)(myDet->setTimer(slsDetectorDefs::ACQUISITION_TIME,-1)*(1E-9)); #ifdef VERBOSE cout<<"Getting acquisition time : " << time << "s" << endl; #endif spinExpTime->setValue(time); comboExpUnit->setCurrentIndex(qDefs::SECONDS); } /**Frame Period between exposures */ if(lblPeriod->isEnabled()){ time = (float)(myDet->setTimer(slsDetectorDefs::FRAME_PERIOD,-1)*(1E-9)); #ifdef VERBOSE cout<<"Getting frame period between exposures : " << time << "s" << endl; #endif spinPeriod->setValue(time); comboPeriodUnit->setCurrentIndex(qDefs::SECONDS); } /**Number of Triggers */ if(lblNumTriggers->isEnabled()){ val = (int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,-1); spinNumTriggers->setValue(val); #ifdef VERBOSE cout<<"Getting number of triggers : " << val <isEnabled()){ time = (float)(myDet->setTimer(slsDetectorDefs::DELAY_AFTER_TRIGGER,-1)*(1E-9)); #ifdef VERBOSE cout<<"Getting delay after trigger : " << time << "s" << endl; #endif spinDelay->setValue(time); comboDelayUnit->setCurrentIndex(qDefs::SECONDS); } /**Number of Gates */ if(lblNumGates->isEnabled()){ val = (int)myDet->setTimer(slsDetectorDefs::GATES_NUMBER,-1); spinNumGates->setValue(val); #ifdef VERBOSE cout<<"Getting number of gates : " << val <isEnabled()){ val = (int)myDet->setTimer(slsDetectorDefs::PROBES_NUMBER,-1); spinNumProbes->setValue(val); #ifdef VERBOSE cout<<"Getting number of probes : " << val <