AMAction3* VESPERSEnergyScanActionController::createInitializationActions() { AMSequentialListAction3 *initializationActions = new AMSequentialListAction3(new AMSequentialListActionInfo3("Initialization List")); initializationActions->addSubAction(buildBaseInitializationAction(double(configuration_->scanAxisAt(0)->regionAt(0)->regionTime()))); initializationActions->addSubAction(buildCCDInitializationAction(configuration_->ccdDetector(), configuration_->ccdFileName(), scan_->largestNumberInScansWhere(AMDatabase::database("user"), QString(" name = '%1'").arg(scan_->name()))+1)); initializationActions->addSubAction(AMActionSupport::buildChangeToleranceAction(VESPERSBeamline::vespers()->energy(), double(configuration_->scanAxisAt(0)->regionAt(0)->regionEnd())*0.05)); return initializationActions; }
bool VESPERSEnergyDacqScanController::initializeImplementation() { buildBaseInitializationAction(config_->regionTime(0)); AMBeamlineParallelActionsList *setupActionsList = initializationAction_->list(); // Third stage. Changing the name and number of the CCD. if (config_->ccdDetector() == VESPERS::Roper) { VESPERSRoperCCDDetector *ccd = VESPERSBeamline::vespers()->roperCCD(); QString name = getUniqueCCDName(ccd->ccdFilePath(), config_->name()); if (name != config_->ccdFileName()) config_->setCCDFileName(name); setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNameAction(config_->ccdFileName())); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNumberAction(1)); } else if (config_->ccdDetector() == VESPERS::Mar) { VESPERSMarCCDDetector *ccd = VESPERSBeamline::vespers()->marCCD(); QString name = getUniqueCCDName(ccd->ccdFilePath(), config_->name()); if (name != config_->ccdFileName()) config_->setCCDFileName(name); setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNameAction(config_->ccdFileName())); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNumberAction(1)); } else if (config_->ccdDetector() == VESPERS::Pilatus) { VESPERSPilatusCCDDetector *ccd = VESPERSBeamline::vespers()->pilatusCCD(); QString name = getUniqueCCDName(ccd->ccdFilePath(), config_->name()); if (name != config_->ccdFileName()) config_->setCCDFileName(name); setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); QString dataFolder = AMUserSettings::userDataFolder; if (dataFolder.contains(QRegExp("\\d{2,2}-\\d{4,4}"))) setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFilePathAction("/ramdisk/" % dataFolder.mid(dataFolder.indexOf(QRegExp("\\d{2,2}-\\d{4,4}")), 7))); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNameAction(config_->ccdFileName())); setupActionsList->appendAction(setupActionsList->stageCount()-1, ccd->createFileNumberAction(1)); } // Fourth stage. if (config_->goToPosition() && VESPERSBeamline::vespers()->experimentConfiguration()->sampleStageChoice()) { setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, VESPERSBeamline::vespers()->pseudoSampleStage()->createHorizontalMoveAction(config_->x())); setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, VESPERSBeamline::vespers()->pseudoSampleStage()->createVerticalMoveAction(config_->y())); } else if (config_->goToPosition() && !VESPERSBeamline::vespers()->experimentConfiguration()->sampleStageChoice()) { setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, VESPERSBeamline::vespers()->realSampleStage()->createHorizontalMoveAction(config_->x())); setupActionsList->appendStage(new QList<AMBeamlineActionItem *>()); setupActionsList->appendAction(setupActionsList->stageCount()-1, VESPERSBeamline::vespers()->realSampleStage()->createVerticalMoveAction(config_->y())); } connect(initializationAction_, SIGNAL(succeeded()), this, SLOT(onInitializationActionsSucceeded())); connect(initializationAction_, SIGNAL(failed(int)), this, SLOT(onInitializationActionsFailed(int))); connect(initializationAction_, SIGNAL(progress(double,double)), this, SLOT(onInitializationActionsProgress(double,double))); initializationAction_->start(); return true; }