

Public Member Functions | |
| setup (self) | |
| handle_reset (self, existing_property, new_message) | |
| update_dm (self) | |
| update_wfs (self) | |
| update_disturbance (self) | |
| loop (self) | |
Public Attributes | |
| err | |
Static Public Attributes | |
| aoSimConfig | config |
Protected Attributes | |
| _nmodes | |
| _dm | |
| _wfs | |
| _disturbance | |
| _t | |
| _dt | |
| _current_disturbance | |
| _current_dm_state | |
| _lag | |
| _dm_command_history | |
| _noise | |
| _frequency | |
Adaptive Optics System Simulator. The aoSim application provides a simulated modal AO system for testing and development.
Definition at line 55 of file __init__.py.
| xapp.aoSim.aoSim.handle_reset | ( | self, | |
| existing_property, | |||
| new_message | |||
| ) |
Definition at line 104 of file __init__.py.
References xapp.aoSim.aoSim._current_disturbance, xapp.aoSim.aoSim._current_dm_state, xapp.aoSim.aoSim._disturbance, xapp.aoSim.aoSim._dm, xapp.aoSim.aoSim._dm_command_history, xapp.aoSim.aoSim._lag, xapp.aoSim.aoSim._nmodes, xapp.aoSim.aoSim._t, xapp.aoSim.aoSim._wfs, dbIngest.NewXFilesHandler.log, libXWCTest::appTest::devTest::stdMotionStageHarness.log(), MagAOX::app::MagAOXApp< _useINDI >.log(), MagAOX::app::MagAOXApp< true >.log(), MagAOX::app::MagAOXApp< false >.log(), MagAOX::logger::logManager< nnReconstructor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flowRPM, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hwpTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zylaCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cameraSim, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3008Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cacaoInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< w2tcsOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< ocam2KCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< qhyCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalGainOpt, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmMode, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cred2Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeCenter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picoMotorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalFilter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< baslerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< filterWheelCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< derivedT, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmRecon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmSpeckle, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< usbtempMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< andorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfAcq, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< adcTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< observerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeXCorr, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flipperCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< siglentSDG, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamWriter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< _parentT, _logFileT >.log(), MagAOX::logger::logManager< hsfwCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< userGainCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pi335Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< shmimIntegrator, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< koolanceCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< rhusbMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamCircBuff, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zaberCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< smc100ccCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pwfsSlopeCalc, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sparkleClock, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pvcamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3208Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sysMonitor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pupilFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< tcsInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< t2wOffloader, logFileRaw< verboseT > >.log(), MagAOX::app::MagAOXApp< true >.log(), MagAOX::app::MagAOXApp< false >.log(), MagAOX::app::MagAOXApp< _useINDI >.log(), MagAOX::logger::logManager< flipperCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmRecon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< filterWheelCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalFilter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hsfwCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< siglentSDG, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< ocam2KCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zaberCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< _parentT, _logFileT >.log(), MagAOX::logger::logManager< dmMode, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< qhyCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalGainOpt, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< usbtempMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3008Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< shmimIntegrator, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< adcTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< andorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< tcsInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< smc100ccCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeCenter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< koolanceCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamWriter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmSpeckle, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cred2Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sysMonitor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< observerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picoMotorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< rhusbMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flowRPM, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeXCorr, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pi335Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sparkleClock, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfAcq, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< derivedT, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cacaoInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< nnReconstructor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< userGainCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zylaCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< t2wOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< baslerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3208Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cameraSim, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pwfsSlopeCalc, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pvcamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hwpTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< w2tcsOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamCircBuff, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pupilFit, logFileRaw< verboseT > >.log(), Logger.log(), MagAOX::logger::logManager< modalFilter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< koolanceCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< t2wOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmSpeckle, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3208Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< siglentSDG, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< w2tcsOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cameraSim, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< ocam2KCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flipperCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flowRPM, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hwpTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< nnReconstructor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hsfwCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3008Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cred2Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< userGainCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmMode, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeXCorr, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeCenter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sysMonitor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pi335Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picoMotorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfAcq, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< baslerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pupilFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< tcsInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamCircBuff, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pvcamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pwfsSlopeCalc, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< qhyCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< shmimIntegrator, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sparkleClock, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< observerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< derivedT, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< rhusbMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmRecon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< smc100ccCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalGainOpt, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< _parentT, _logFileT >.log(), MagAOX::logger::logManager< filterWheelCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cacaoInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zylaCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< andorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< usbtempMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zaberCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< adcTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamWriter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3008Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< derivedT, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< observerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< t2wOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pi335Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< smc100ccCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfAcq, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalGainOpt, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< modalFilter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< shmimIntegrator, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pwfsSlopeCalc, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hwpTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmSpeckle, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< qhyCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeCenter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< w2tcsOffloader, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< baslerCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cacaoInterface, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< _parentT, _logFileT >.log(), MagAOX::logger::logManager< cameraSim, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmMode, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmPokeXCorr, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sparkleClock, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< picoMotorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< rhusbMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< siglentSDG, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< sysMonitor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< usbtempMon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zaberCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< zylaCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< filterWheelCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< nnReconstructor, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< koolanceCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamCircBuff, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< ocam2KCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< hsfwCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flipperCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< cred2Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< flowRPM, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< streamWriter, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< mcp3208Ctrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pupilFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< dmRecon, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< pvcamCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< adcTracker, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< userGainCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< andorCtrl, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< psfFit, logFileRaw< verboseT > >.log(), MagAOX::logger::logManager< tcsInterface, logFileRaw< verboseT > >.log(), and xapp.aoSim.aoSim.update_dm().
Referenced by adcCtrl.app.adcCtrl.setup().
| xapp.aoSim.aoSim.loop | ( | self | ) |
Execute one iteration of the AO simulation loop.
Definition at line 142 of file __init__.py.
References xapp.aoSim.aoSim._current_disturbance, xapp.aoSim.aoSim._current_dm_state, xapp.aoSim.aoSim._dt, xapp.aoSim.aoSim._t, xapp.aoSim.aoSim.err, DDSPC::RecursiveLeastSquares.err, xapp.aoSim.aoSim.update_disturbance(), xapp.aoSim.aoSim.update_dm(), and xapp.aoSim.aoSim.update_wfs().
| xapp.aoSim.aoSim.setup | ( | self | ) |
Initialize the AO simulator application. Sets up shared memory images for DM, WFS, and disturbance, initializes simulation state variables, and configures the control loop parameters.
Definition at line 62 of file __init__.py.
| xapp.aoSim.aoSim.update_disturbance | ( | self | ) |
Update the atmospheric/system disturbance for this timestep.
Definition at line 136 of file __init__.py.
References xapp.aoSim.aoSim._current_disturbance, xapp.aoSim.aoSim._disturbance, xapp.aoSim.aoSim._frequency, xapp.aoSim.aoSim._nmodes, and xapp.aoSim.aoSim._t.
Referenced by xapp.aoSim.aoSim.loop().
| xapp.aoSim.aoSim.update_dm | ( | self | ) |
Update the deformable mirror state from its command history.
Definition at line 122 of file __init__.py.
References xapp.aoSim.aoSim._current_dm_state, xapp.aoSim.aoSim._dm, and xapp.aoSim.aoSim._dm_command_history.
Referenced by xapp.aoSim.aoSim.handle_reset(), and xapp.aoSim.aoSim.loop().
| xapp.aoSim.aoSim.update_wfs | ( | self | ) |
Update the wavefront sensor measurement in shared memory.
Definition at line 129 of file __init__.py.
Referenced by xapp.aoSim.aoSim.loop().
|
protected |
Definition at line 82 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), xapp.aoSim.aoSim.loop(), and xapp.aoSim.aoSim.update_disturbance().
|
protected |
Definition at line 83 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), xapp.aoSim.aoSim.loop(), and xapp.aoSim.aoSim.update_dm().
|
protected |
Definition at line 78 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), and xapp.aoSim.aoSim.update_disturbance().
|
protected |
Definition at line 72 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), and xapp.aoSim.aoSim.update_dm().
|
protected |
Definition at line 86 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), and xapp.aoSim.aoSim.update_dm().
|
protected |
Definition at line 81 of file __init__.py.
Referenced by xapp.aoSim.aoSim.loop().
|
protected |
Definition at line 89 of file __init__.py.
Referenced by xapp.aoSim.aoSim.update_disturbance().
|
protected |
Definition at line 85 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset().
|
protected |
Definition at line 69 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), and xapp.aoSim.aoSim.update_disturbance().
|
protected |
Definition at line 88 of file __init__.py.
|
protected |
Definition at line 80 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset(), xapp.aoSim.aoSim.loop(), and xapp.aoSim.aoSim.update_disturbance().
|
protected |
Definition at line 75 of file __init__.py.
Referenced by xapp.aoSim.aoSim.handle_reset().
|
static |
Definition at line 60 of file __init__.py.
Referenced by dbIngest.dbIngest._ensure_connected(), visxCtrl.core.visxCtrl.cooling_on_target(), pupilCorAlign.pupilCorAlign.handle_centroid_ref(), pupilCorAlign.pupilCorAlign.handle_fwlyot(), pupilCorAlign.pupilCorAlign.handle_fwlyot_ref(), pupilCorAlign.pupilCorAlign.handle_fwpupil(), pupilCorAlign.pupilCorAlign.handle_fwpupil_ref(), dbIngest.dbIngest.launch_followers(), dbIngest.dbIngest.loop(), adcCtrl.app.adcCtrl.setup(), corAlign.corAlign.setup(), efcControl.efcControl.setup(), pupilCorAlign.pupilCorAlign.setup(), and sparkleTracker.sparkleTracker.setup().
| xapp.aoSim.aoSim.err |
Definition at line 132 of file __init__.py.
Referenced by xapp.aoSim.aoSim.loop().