REIXSPhotonSource::REIXSPhotonSource(QObject *parent) : AMCompositeControl("photonSource", "", parent, "EPU and Monochromator") { AMPVwStatusControl* directEnergy = new AMPVwStatusControl("beamlineEV", "REIXS:MONO1610-I20-01:user:energy:fbk", "REIXS:user:energy", "REIXS:status", "REIXS:energy:stop", 0, 1000);//, 2.0,new AMControlStatusCheckerDefault(1),-1) directEnergy->setSettlingTime(0); directEnergy_ = directEnergy; directEnergy_->setDescription("Beamline Energy"); bypassEnergy_ = new AMPVControl("bypassBeamlineEV", "REIXS:user:energy", "REIXS:user:energy", "REIXS:energy:stop"); userEnergyOffset_ = new AMPVControl("userEnergyOffset", "REIXS:user:energy:offset", "REIXS:user:energy:offset", QString(), this); userEnergyOffset_->setDescription("User Energy Offest"); energy_ = new REIXSBrokenMonoControl(directEnergy, 1.05, 3, 0.5, 0.5, 150, 1, 0.25, this); energy_->setDescription("Beamline Energy"); monoSlit_ = new AMPVwStatusAndUnitConversionControl("monoSlit", "SMTR1610-I20-10:mm:fbk", "SMTR1610-I20-10:mm", "SMTR1610-I20-10:status", "SMTR1610-I20-10:stop", new AMScaleAndOffsetUnitConverter("um", 1000), 0, this); //DAVID changed tolerance from 0.1->0.5 monoSlit_->setDescription("Mono Slit Width"); M5Pitch_ = new AMPVwStatusControl("M5Pitch", "SMTR1610-4-I20-02:mm:fbk", "SMTR1610-4-I20-02:mm","SMTR1610-4-I20-02:status","SMTR1610-4-I20-02:stop",this,0.5); //DAVID ADDED M5Pitch_->setDescription("M5 Mirror Pitch"); //DAVID ADDED M5Yaw_ = new AMPVwStatusControl("M5Yaw", "SMTR1610-4-I20-04:mm:fbk", "SMTR1610-4-I20-04:mm","SMTR1610-4-I20-04:status","SMTR1610-4-I20-04:stop",this,0.5); //DAVID ADDED M5Yaw_->setDescription("M5 Mirror Yaw"); //DAVID ADDED monoGratingTranslation_ = new AMPVwStatusControl("monoGratingTranslation", "MONO1610-I20-01:grating:trans:mm:fbk", "MONO1610-I20-01:grating:trans:mm", "MONO1610-I20-01:grating:trans:status", "SMTR1610-I20-04:stop", this, 0.05); monoGratingTranslation_->setDescription("Mono Grating Translation"); monoGratingSelector_ = new AMPVwStatusControl("monoGratingSelector", "MONO1610-I20-01:grating:select:fbk", "MONO1610-I20-01:grating:select", "MONO1610-I20-01:grating:trans:status", "SMTR1610-I20-04:stop", this, 1); monoGratingSelector_->setDescription("Mono Grating"); monoMirrorTranslation_ = new AMPVwStatusControl("monoMirrorTranslation", "MONO1610-I20-01:mirror:trans:mm:fbk", "MONO1610-I20-01:mirror:trans:mm", "MONO1610-I20-01:mirror:trans:status", "SMTR1610-I20-02:stop", this, 0.05); monoMirrorTranslation_->setDescription("Mono Mirror Translation"); monoMirrorSelector_ = new AMPVwStatusControl("monoMirrorSelector", "MONO1610-I20-01:mirror:select:fbk", "MONO1610-I20-01:mirror:select", "MONO1610-I20-01:mirror:trans:status", "SMTR1610-I20-02:stop", this, 1); monoMirrorSelector_->setDescription("Mono Mirror"); monoMirrorAngleStatus_ = new AMReadOnlyPVControl("monoMirrorAngleStatus","MONO1610-I20-01:mirror:status",this,"Mono Mirror Angle Status"); monoGratingAngleStatus_ = new AMReadOnlyPVControl("monoGratingAngleStatus","MONO1610-I20-01:grating:status",this,"Mono Grating Angle Status"); epuPolarization_ = new AMPVwStatusControl("epuPolarization", "REIXS:UND1410-02:polarization", "REIXS:UND1410-02:polarization", "REIXS:UND1410-02:energy:status", QString(), this, 0.1); epuPolarization_->setDescription("EPU Polarization"); epuPolarization_->enumNames() << "Circular Left"; epuPolarization_->enumNames() << "Circular Right"; epuPolarization_->enumNames() << "Linear Horizontal"; epuPolarization_->enumNames() << "Linear Vertical -"; epuPolarization_->enumNames() << "Linear Vertical +"; epuPolarization_->enumNames() << "Linear Inclined"; epuPolarizationAngle_ = new AMPVwStatusControl("epuPolarizationAngle", "REIXS:UND1410-02:polarAngle", "REIXS:UND1410-02:polarAngle", "REIXS:UND1410-02:energy:status", QString(), this, 0.5); epuPolarizationAngle_->setDescription("EPU Polarization Angle"); ringCurrent_ = new AMReadOnlyPVControl("ringCurrent","PCT1402-01:mA:fbk", this, "Storage Ring Current"); }
void SXRMBEXAFSScanConfigurationView::updateBeamlineSettingWarning() { SXRMBBeamline *sxrmbBL = SXRMBBeamline::sxrmb(); AMPVwStatusControl* sampleStageXControl = sxrmbBL->endstationSampleStageX(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageYControl = sxrmbBL->endstationSampleStageY(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageZControl = sxrmbBL->endstationSampleStageZ(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageRControl = sxrmbBL->endstationSampleStageR(sxrmbBL->currentEndstation()); bool showWarningLabel = false; if (sampleStageXControl) { showWarningLabel = showWarningLabel || !sampleStageXControl->withinTolerance(sampleStageXSpinBox_->value()); } if (sampleStageYControl) { showWarningLabel = showWarningLabel || !sampleStageYControl->withinTolerance(sampleStageNormalSpinBox_->value()); } if (sampleStageZControl) { showWarningLabel = showWarningLabel || !sampleStageZControl->withinTolerance(sampleStageZSpinBox_->value()); } if (sampleStageRControl) { showWarningLabel = showWarningLabel || !sampleStageRControl->withinTolerance(sampleStageRotationSpinBox_->value()); } sampleStageWarningLabel_->setVisible(showWarningLabel); }
void SXRMBEXAFSScanConfigurationView::onSetSampleStageFromBeamlineButtonClicked(){ SXRMBBeamline *sxrmbBL = SXRMBBeamline::sxrmb(); AMPVwStatusControl* sampleStageXControl = sxrmbBL->endstationSampleStageX(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageYControl = sxrmbBL->endstationSampleStageY(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageZControl = sxrmbBL->endstationSampleStageZ(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageRControl = sxrmbBL->endstationSampleStageR(sxrmbBL->currentEndstation()); if (sampleStageXControl) { sampleStageXSpinBox_->setValue(sampleStageXControl->value()); onSampleStageXSpinBoxEditingFinished(); } if (sampleStageZControl) { sampleStageZSpinBox_->setValue(sampleStageZControl->value()); onSampleStageZSpinBoxEditingFinished(); } if (sampleStageYControl) { sampleStageNormalSpinBox_->setValue(sampleStageYControl->value()); onSampleStageNormalSpinBoxEditingFinished(); } if (sampleStageRControl) { sampleStageRotationSpinBox_->setValue(sampleStageRControl->value()); onSampleStageRotationSpinBoxEditingFinished(); } }
void SXRMBEXAFSScanConfigurationView::createAndLayoutSampleStageSpinBox(QFormLayout *formLayout) { // reinitialize the variables and clear the layout clearLayout(formLayout); sampleStageXSpinBox_ = 0; sampleStageZSpinBox_ = 0; sampleStageNormalSpinBox_ = 0; sampleStageRotationSpinBox_ = 0; // recreate the spinboxes and signal/slot connections SXRMBBeamline *sxrmbBL = SXRMBBeamline::sxrmb(); AMPVwStatusControl* sampleStageXControl = sxrmbBL->endstationSampleStageX(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageYControl = sxrmbBL->endstationSampleStageY(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageZControl = sxrmbBL->endstationSampleStageZ(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageRControl = sxrmbBL->endstationSampleStageR(sxrmbBL->currentEndstation()); if (sampleStageXControl) { sampleStageXSpinBox_ = createSampleStageSpinBox("mm", sampleStageXControl->minimumValue(), sampleStageXControl->maximumValue(), configuration_->x()); formLayout->addRow("X Position", sampleStageXSpinBox_); connect(sampleStageXSpinBox_, SIGNAL(editingFinished()), this, SLOT(onSampleStageXSpinBoxEditingFinished())); connect(sampleStageXControl, SIGNAL(valueChanged(double)), this, SLOT(onEndstationSampleStagePositionChanged(double))); } if (sampleStageZControl) { sampleStageZSpinBox_ = createSampleStageSpinBox("mm", sampleStageZControl->minimumValue(), sampleStageZControl->maximumValue(), configuration_->z()); formLayout->addRow("Z Position", sampleStageZSpinBox_); connect(sampleStageZSpinBox_, SIGNAL(editingFinished()), this, SLOT(onSampleStageZSpinBoxEditingFinished())); connect(sampleStageZControl, SIGNAL(valueChanged(double)), this, SLOT(onEndstationSampleStagePositionChanged(double))); } if (sampleStageYControl) { sampleStageNormalSpinBox_ = createSampleStageSpinBox("mm", sampleStageYControl->minimumValue(), sampleStageYControl->maximumValue(), configuration_->y()); formLayout->addRow("Normal Position", sampleStageNormalSpinBox_); connect(sampleStageNormalSpinBox_, SIGNAL(editingFinished()), this, SLOT(onSampleStageNormalSpinBoxEditingFinished())); connect(sampleStageYControl, SIGNAL(valueChanged(double)), this, SLOT(onEndstationSampleStagePositionChanged(double))); } if (sampleStageRControl) { sampleStageRotationSpinBox_ = createSampleStageSpinBox("deg", sampleStageRControl->minimumValue(), sampleStageRControl->maximumValue(), configuration_->rotation()); formLayout->addRow("Rotation Position", sampleStageRotationSpinBox_); connect(sampleStageRotationSpinBox_, SIGNAL(editingFinished()), this, SLOT(onSampleStageRotationSpinBoxEditingFinished())); connect(sampleStageRControl, SIGNAL(valueChanged(double)), this, SLOT(onEndstationSampleStagePositionChanged(double))); } }
void SXRMBEXAFSScanConfigurationView::updateSampleStageControlRange() { SXRMBBeamline *sxrmbBL = SXRMBBeamline::sxrmb(); AMPVwStatusControl* sampleStageXControl = sxrmbBL->endstationSampleStageX(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageYControl = sxrmbBL->endstationSampleStageY(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageZControl = sxrmbBL->endstationSampleStageZ(sxrmbBL->currentEndstation()); AMPVwStatusControl* sampleStageRControl = sxrmbBL->endstationSampleStageR(sxrmbBL->currentEndstation()); if (sampleStageXControl && sampleStageXControl->isConnected()) { sampleStageXSpinBox_->setRange(sampleStageXControl->minimumValue(), sampleStageXControl->maximumValue()); } if (sampleStageYControl && sampleStageYControl->isConnected()) { sampleStageNormalSpinBox_->setRange(sampleStageYControl->minimumValue(), sampleStageYControl->maximumValue()); } if (sampleStageZControl && sampleStageZControl->isConnected()) { sampleStageZSpinBox_->setRange(sampleStageZControl->minimumValue(), sampleStageZControl->maximumValue()); } if (sampleStageRControl && sampleStageRControl->isConnected()) { sampleStageRotationSpinBox_->setRange(sampleStageRControl->minimumValue(), sampleStageRControl->maximumValue()); } }
bool VESPERSEnergyDacqScanController::startImplementation() { currentRegionIndex_ = 0; if (VESPERSBeamline::vespers()->experimentConfiguration()->sampleStageChoice()) { scan_->scanInitialConditions()->append(VESPERSBeamline::vespers()->sampleStageHorizontal()->toInfo()); scan_->scanInitialConditions()->append(VESPERSBeamline::vespers()->sampleStageVertical()->toInfo()); } else { scan_->scanInitialConditions()->append(VESPERSBeamline::vespers()->sampleStageX()->toInfo()); scan_->scanInitialConditions()->append(VESPERSBeamline::vespers()->sampleStageZ()->toInfo()); } // Setup the real config. switch(config_->ccdDetector()) { case VESPERS::Roper: if (!setupRoperScan()) { AMErrorMon::alert(this, VESPERSENERGYDACQSCANCONTROLLER_CANT_START_NO_CFG_FILE, "Error, VESPERS Energy DACQ Scan Controller failed to start (the config file failed to load). Please report this bug to the Acquaman developers."); return false; } break; case VESPERS::Mar: if (!setupMarScan()) { AMErrorMon::alert(this, VESPERSENERGYDACQSCANCONTROLLER_CANT_START_NO_CFG_FILE, "Error, VESPERS Energy DACQ Scan Controller failed to start (the config file failed to load). Please report this bug to the Acquaman developers."); return false; } break; case VESPERS::Pilatus: if (!setupPilatusScan()) { AMErrorMon::alert(this, VESPERSENERGYDACQSCANCONTROLLER_CANT_START_NO_CFG_FILE, "Error, VESPERS Energy DACQ Scan Controller failed to start (the config file failed to load). Please report this bug to the Acquaman developers."); return false; } break; default: AMErrorMon::alert(this, VESPERSENERGYDACQSCANCONTROLLER_CANT_START_NO_CFG_FILE, "Error, VESPERS EXAFS DACQ Scan Controller failed to start (Invalid Fluorescence Detector chosen). Please report this bug to the Acquaman developers."); return false; } for (int i = 0; i < config_->regionCount(); i++) { if (advAcq_->getNumRegions() == i) { AMPVwStatusControl *control = 0; control = qobject_cast<AMPVwStatusControl *>(config_->regions()->defaultControl()); if (i == 0) advAcq_->addRegion(i, control->writePVName(), config_->regionStart(i), config_->regionDelta(i), config_->regionEnd(i), 1); else advAcq_->addRegion(i, control->writePVName(), config_->regionStart(i)+config_->regionDelta(i), config_->regionDelta(i), config_->regionEnd(i), 1); } else { if (i == 0) advAcq_->setStart(i, config_->regionStart(i)); else advAcq_->setStart(i, config_->regionStart(i)+config_->regionDelta(i)); advAcq_->setDelta(i, config_->regionDelta(i)); advAcq_->setEnd(i, config_->regionEnd(i)); } } advAcq_->saveConfigFile("/home/hunterd/Desktop/writeTest.cfg"); return AMDacqScanController::startImplementation(); }