C# 클래스 TransferCavityLock2012.Controller

A class for locking the laser using a transfer cavity. The controller reads the voltage fed to the piezo of the cavity, the voltage from a photodiode measuring the light from a master laser (He-Ne) and a further n photodiode signals from n lasers you're trying to lock. The controller then fits a lorenzian to each of these datasets, and works out what to do with each slave laser to keep the peak distances the same. In the hardware class, you need to make a TCLConfig and populate all the fields of that TCLConfig.
상속: System.MarshalByRefObject
파일 보기 프로젝트 열기: ColdMatter/EDMSuite 1 사용 예제들

공개 프로퍼티들

프로퍼티 타입 설명
SlaveLasers SlaveLaser>.Dictionary
TCLState ControllerState
config DAQ.TransferCavityLock2012.TCLConfig
default_ScanPoints int
rampStopLock object
tweakLock object

공개 메소드들

메소드 설명
Controller ( ) : System
Controller ( string configName ) : System
DisengageLock ( string name ) : void
EngageLock ( string name ) : void
InitializeLifetimeService ( ) : Object
InitializeUI ( ) : void
RefreshLockParametersOnUI ( string name ) : void
SetLaserSetpoint ( string laserName, double newSetpoint ) : void
Start ( ) : void
StartLogger ( ) : void
StartTCL ( ) : void
StopLogger ( ) : void
StopTCL ( ) : void

This will make the program exit the while loop in ramploop. Note: this will call

UpdateUIState ( string name, SlaveLaser state ) : void

The controller needs to be able to change the UI. Enabling buttons, changing the values in text boxes...

disposeMasterVoltageOut ( ) : void
setupMasterVoltageOut ( ) : void
writeMasterVoltageOut ( double voltage ) : void

비공개 메소드들

메소드 설명
AddSetPointDecrement ( string name ) : void
AddSetPointIncrement ( string name ) : void
GainChanged ( string name, double g ) : void
RefreshErrorGraph ( string name ) : void
SetPointIncrementSize ( string name, double value ) : void
VoltageToLaserChanged ( string name, double voltage ) : void

These are events triggered by one of the LockControlPanels. Example: User changes the voltage to be sent to the slave laser. The UI will call VoltageToLaserChanged. Each LockControlPanel knows which laser it corresponds to. so the "name" argument tells the controller which SlaveLaser class it needs to send the command to!

acquireAI ( ScanParameters sp ) : CavityScanData

Reads some analogue inputs. The basic unit of the program.

calculateNewMasterVoltage ( double masterV ) : double
checkRampChannel ( ) : bool

Functions for locking master laser to cavity length

createInitialScanParameters ( ) : ScanParameters
endRamping ( ) : void

The function which gets called at the end, after breaking out of the while loop.

fitMaster ( CavityScanData data ) : double[]
fitSlave ( string name, CavityScanData data ) : double[]
getErrorCount ( string name ) : int
incrementCounter ( string name ) : void
initializeAIHardware ( ScanParameters sp ) : void

Prepares the hardware for analog reads.

initializeAIs ( string>.Dictionary channels ) : void
initializeSlaveLaserControl ( string>.Dictionary lockableLasers ) : void
mainLoop ( ) : void

The main loop. Reads the analog inputs, fits to the data and (when locked) adjusts the slave laser voltage.

plotCavity ( CavityScanData data ) : void
plotError ( string name, double time, double error ) : void
plotMaster ( CavityScanData data ) : void
plotMaster ( CavityScanData data, double MasterFit ) : void
plotSlave ( string name, CavityScanData data, double slaveFit ) : void
plotSlaveNoFit ( string name, CavityScanData data ) : void
readParametersFromUI ( ) : void
updateTime ( System.DateTime previousTime ) : void

메소드 상세

Controller() 공개 메소드

public Controller ( ) : System
리턴 System

Controller() 공개 메소드

public Controller ( string configName ) : System
configName string
리턴 System

DisengageLock() 공개 메소드

public DisengageLock ( string name ) : void
name string
리턴 void

EngageLock() 공개 메소드

public EngageLock ( string name ) : void
name string
리턴 void

InitializeLifetimeService() 공개 메소드

public InitializeLifetimeService ( ) : Object
리턴 Object

InitializeUI() 공개 메소드

public InitializeUI ( ) : void
리턴 void

RefreshLockParametersOnUI() 공개 메소드

public RefreshLockParametersOnUI ( string name ) : void
name string
리턴 void

SetLaserSetpoint() 공개 메소드

public SetLaserSetpoint ( string laserName, double newSetpoint ) : void
laserName string
newSetpoint double
리턴 void

Start() 공개 메소드

public Start ( ) : void
리턴 void

StartLogger() 공개 메소드

public StartLogger ( ) : void
리턴 void

StartTCL() 공개 메소드

public StartTCL ( ) : void
리턴 void

StopLogger() 공개 메소드

public StopLogger ( ) : void
리턴 void

StopTCL() 공개 메소드

This will make the program exit the while loop in ramploop. Note: this will call
public StopTCL ( ) : void
리턴 void

UpdateUIState() 공개 메소드

The controller needs to be able to change the UI. Enabling buttons, changing the values in text boxes...
public UpdateUIState ( string name, SlaveLaser state ) : void
name string
state SlaveLaser
리턴 void

disposeMasterVoltageOut() 공개 메소드

public disposeMasterVoltageOut ( ) : void
리턴 void

setupMasterVoltageOut() 공개 메소드

public setupMasterVoltageOut ( ) : void
리턴 void

writeMasterVoltageOut() 공개 메소드

public writeMasterVoltageOut ( double voltage ) : void
voltage double
리턴 void

프로퍼티 상세

SlaveLasers 공개적으로 프로퍼티

public Dictionary SlaveLasers
리턴 SlaveLaser>.Dictionary

TCLState 공개적으로 프로퍼티

public ControllerState TCLState
리턴 ControllerState

config 공개적으로 프로퍼티

public TCLConfig,DAQ.TransferCavityLock2012 config
리턴 DAQ.TransferCavityLock2012.TCLConfig

default_ScanPoints 공개적으로 프로퍼티

public int default_ScanPoints
리턴 int

rampStopLock 공개적으로 프로퍼티

public object rampStopLock
리턴 object

tweakLock 공개적으로 프로퍼티

public object tweakLock
리턴 object