Package gda.scan
Class TrajectoryScanPreparer
java.lang.Object
gda.factory.FindableBase
gda.scan.TrajectoryScanPreparer
- All Implemented Interfaces:
Findable,org.springframework.beans.factory.InitializingBean
public class TrajectoryScanPreparer
extends FindableBase
implements org.springframework.beans.factory.InitializingBean
Epics controller for Trajectory scan.
Contains getters, setters for accessing PVs for time, position, velocity mode, user mode arrays, etc. needed
for setting up, building and executing a trajectory scan.
Trajectories can also be built up in memory by using the functions
,
addPointsToTrajectory(java.lang.Double[], java.lang.Double[], java.lang.Integer[]),
invalid reference
#addSpectrumToTrajectory
addPointsForTimingGroups(gda.scan.TurboXasMotorParameters) before sending to Epics using sendProfileValues().- Since:
- 12/1/2017
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddPointsForTimingGroups(TurboXasMotorParameters motorParameters) Setup trajectory scan points using timing groups from TurboXasParametersvoidaddPointsToTrajectory(Double[] positions, Double[] times, Integer[] velocityMode) Add position, time, velocity mode arrays to trajectory point list.voidaddPointToTrajectory(double position, double time, int velocityMode) voidaddSpectraBiDirectional(TurboXasMotorParameters motorParameters, List<TurboSlitTimingGroup> timingGroups, List<gda.scan.TrajectoryScanPreparer.TurnaroundParameters> turnaroundParams) voidaddSpectraMonoDirectional(TurboXasMotorParameters motorParameters, List<TurboSlitTimingGroup> timingGroups) Adds several repetitions of same spectrum, using.invalid reference
#addSpectrumToTrajectorySubdivide(double, double, double, double, double, double, boolean)voidaddSpectrumToTrajectoryRunupDown(double spectrumStart, double spectrumEnd, double timeForSpectrum, gda.scan.TrajectoryScanPreparer.TurnaroundParameters turnparams) voidaddSpectrumToTrajectorySubdivide(double userStart, double userEnd, double startDelta, double endDelta, double timeForSpectrum, double timeBetweenSpectra) Same asexcept move corresponding to spectrum collection and move back to beginning are subdivided into number of steps (invalid reference
#addSpectrumToTrajectoryTimes(double, double, double, double, double, double, int)numStepsForSpectrumSweep,numStepsForReturnSweeprespectively).voidaddSubdividedStep(double startPos, double endPos, double timeForMove, int numSteps, int velocityMode) Add 'numSteps' positions between startPos and endPos to trajectory (constant speed), taking total of timeForMove seconds for whole move.'voidvoidList<gda.scan.TrajectoryScanPreparer.TurnaroundParameters> createTurnaroundParameters(TurboXasMotorParameters motorParams, List<TurboSlitTimingGroup> timingGroups) Calculate the runup/down distances and times for each spectrum in bi-directional scan.doubleintintdoubledoublebooleanbooleanbooleanvoidSend trajectory profile to Epics, building and appending as many times as necessary to send all the points.intsendAppendProfileValues(int startPoint) Build/append profile in Epics; take range of values from trajectory scan list.voidSend currently stored trajectory scan list values to Epics.voidvoidvoidvoidvoidvoidsetMaxTimePerStep(double maxTimePerStep) voidsetNumStepsForReturnSweep(int numStepsForReturnSweep) voidsetNumStepsForSpectrumSweep(int numStepsForSpectrumSweep) voidsetProfileTimeArray(Double[] vals) voidsetTimeForRundown(double minTimeForRundown) voidsetTrajectoryPositionList(List<Double> positionProfileValues) voidsetTrajectoryScanController(TrajectoryScanController trajScanController) voidsetTrajectoryTimesList(List<Double> timeProfileValues) voidsetTrajectoryVelocityModesList(List<Integer> velocityModeProfileValues) voidsetTurnaroundDistance(double turnaroundDistance) voidsetTwoWayScan(boolean twoWayScan) voidsetUseFixedTurnaroundDistance(boolean useFixedTurnaroundDistance) voidsetUseMaxTimePerStep(boolean useMaxTimePerStep) Methods inherited from class gda.factory.FindableBase
equals, getName, hashCode, setName
-
Constructor Details
-
TrajectoryScanPreparer
public TrajectoryScanPreparer()
-
-
Method Details
-
afterPropertiesSet
- Specified by:
afterPropertiesSetin interfaceorg.springframework.beans.factory.InitializingBean- Throws:
Exception
-
setProfileTimeArray
- Throws:
IOException
-
setBuildProfile
- Throws:
Exception
-
getBuildProfileStatus
- Throws:
Exception
-
setAppendProfile
- Throws:
Exception
-
getAppendProfileStatus
- Throws:
Exception
-
setExecuteProfile
- Throws:
Exception
-
setAbortProfile
- Throws:
Exception
-
setDefaults
- Throws:
Exception
-
addPointsForTimingGroups
Setup trajectory scan points using timing groups from TurboXasParameters- Parameters:
motorParameters-
-
createTurnaroundParameters
public List<gda.scan.TrajectoryScanPreparer.TurnaroundParameters> createTurnaroundParameters(TurboXasMotorParameters motorParams, List<TurboSlitTimingGroup> timingGroups) Calculate the runup/down distances and times for each spectrum in bi-directional scan. The rundown distance is adjusted to match the runup of next spectrum, to make sure end/start positions between timing groups match up.- Parameters:
motorParams-- Returns:
-
addSpectraBiDirectional
public void addSpectraBiDirectional(TurboXasMotorParameters motorParameters, List<TurboSlitTimingGroup> timingGroups, List<gda.scan.TrajectoryScanPreparer.TurnaroundParameters> turnaroundParams) -
addSpectrumToTrajectoryRunupDown
public void addSpectrumToTrajectoryRunupDown(double spectrumStart, double spectrumEnd, double timeForSpectrum, gda.scan.TrajectoryScanPreparer.TurnaroundParameters turnparams) -
addSpectraMonoDirectional
public void addSpectraMonoDirectional(TurboXasMotorParameters motorParameters, List<TurboSlitTimingGroup> timingGroups) Adds several repetitions of same spectrum, using.invalid reference
#addSpectrumToTrajectorySubdivide(double, double, double, double, double, double, boolean)- Parameters:
userStart-userEnd-startDelta-endDelta-timeForSpectrum-timeBetweenSpectra-numRepetitions-
-
addSpectrumToTrajectorySubdivide
public void addSpectrumToTrajectorySubdivide(double userStart, double userEnd, double startDelta, double endDelta, double timeForSpectrum, double timeBetweenSpectra) Same asexcept move corresponding to spectrum collection and move back to beginning are subdivided into number of steps (invalid reference
#addSpectrumToTrajectoryTimes(double, double, double, double, double, double, int)numStepsForSpectrumSweep,numStepsForReturnSweeprespectively).- Parameters:
userStart-userEnd-startDelta-endDelta-timeForSpectrum-timeBetweenSpectra-includeMoveToInitialPosition- include initial move to start of trajectory (set to true for first spectrum only, since move back to start is added at end of each spectrum sweep)
-
addSubdividedStep
public void addSubdividedStep(double startPos, double endPos, double timeForMove, int numSteps, int velocityMode) Add 'numSteps' positions between startPos and endPos to trajectory (constant speed), taking total of timeForMove seconds for whole move.'- Parameters:
startPos- start positionendPos- end positiontimeForMove- total time to take for movenumSteps- number of steps to addvelocityMode- velocity mode to use
-
addPointsToTrajectory
Add position, time, velocity mode arrays to trajectory point list.- Parameters:
positions-times-velocityMode-
-
addPointToTrajectory
public void addPointToTrajectory(double position, double time, int velocityMode) -
sendProfileValues
Send currently stored trajectory scan list values to Epics. (i.e. convert from List to array and send to appropriate PV)- Throws:
Exception
-
sendAppendProfileValues
Send trajectory profile to Epics, building and appending as many times as necessary to send all the points. See alsosendAppendProfileValues(int).- Throws:
Exception
-
sendAppendProfileValues
Build/append profile in Epics; take range of values from trajectory scan list. Build if startPoint==0; otherwise Append. Use 'maxPointsPerProfileBuild' to set the number of profile points sent per build/append operation.- Parameters:
startPoint- index of first point in trajectory profile to send.- Returns:
- index of next point to be sent to Epics
- Throws:
Exception
-
getTrajectoryPositionsList
-
setTrajectoryPositionList
-
getTrajectoryTimesList
-
setTrajectoryTimesList
-
getTrajectoryVelocityModesList
-
setTrajectoryVelocityModesList
-
clearTrajectoryLists
public void clearTrajectoryLists() -
getNumStepsForReturnSweep
public int getNumStepsForReturnSweep() -
setNumStepsForReturnSweep
public void setNumStepsForReturnSweep(int numStepsForReturnSweep) -
getNumStepsForSpectrumSweep
public int getNumStepsForSpectrumSweep() -
setNumStepsForSpectrumSweep
public void setNumStepsForSpectrumSweep(int numStepsForSpectrumSweep) -
getMaxTimePerStep
public double getMaxTimePerStep() -
setMaxTimePerStep
public void setMaxTimePerStep(double maxTimePerStep) -
getUseMaxTimePerStep
public boolean getUseMaxTimePerStep() -
setUseMaxTimePerStep
public void setUseMaxTimePerStep(boolean useMaxTimePerStep) -
getTrajectoryScanController
-
setTrajectoryScanController
-
isTwoWayScan
public boolean isTwoWayScan() -
setTwoWayScan
public void setTwoWayScan(boolean twoWayScan) -
getTimeForRundown
public double getTimeForRundown() -
setTimeForRundown
public void setTimeForRundown(double minTimeForRundown) -
isUseFixedTurnaroundDistance
public boolean isUseFixedTurnaroundDistance() -
setUseFixedTurnaroundDistance
public void setUseFixedTurnaroundDistance(boolean useFixedTurnaroundDistance) -
getTurnaroundDistance
public double getTurnaroundDistance() -
setTurnaroundDistance
public void setTurnaroundDistance(double turnaroundDistance)
-