__________________________________________________[C++ CLASS IMPLEMENTATION] Name: TSnkDDA0816.cxx Purpose: Implement class methods for dac module DDA0816 Description: Class methods to operate a dac type DDA0816 in the SNAKE environment Header files: TSnkDDA0816.h -- class definitions Keywords: Author: R. Lutter Mailto: <a href=mailto:rudi.lutter@physik.uni-muenchen.de>R. Lutter</a> Revision: $Id: TSnkDDA0816.cxx,v 1.1 2009/03/26 11:18:28 Rudolf.Lutter Exp $ Date:
| TSnkDDAChannel* | CheckChannel(Int_t, const Char_t*, const Char_t*) |
| Bool_t | CheckConnect(const Char_t*, const Char_t*) |
| Bool_t | CheckParams(const Char_t*, const Char_t*) |
| virtual void | TObject::DoError(int level, const char* location, const char* fmt, va_list va) const |
| void | TObject::MakeZombie() |
| Bool_t | SaveAsDDAFile(const Char_t* SaveFile, const Char_t* Prefix) |
| Bool_t | SetBeamOn() |
| Bool_t | SetHysteresis() |
| Int_t | SetLShape(TArrayI&, Int_t, Int_t, Int_t, Int_t, Int_t) |
| Int_t | SetSawToothLR(TArrayI&, Int_t, Int_t, Int_t, Int_t) |
| Int_t | SetSawToothRL(TArrayI&, Int_t, Int_t, Int_t, Int_t) |
| Int_t | SetTriangle(TArrayI&, Int_t, Int_t, Int_t, Int_t) |
| enum TObject::EStatusBits { | kCanDelete | |
| kMustCleanup | ||
| kObjInCanvas | ||
| kIsReferenced | ||
| kHasUUID | ||
| kCannotPick | ||
| kNoContextMenu | ||
| kInvalidObject | ||
| }; | ||
| enum TObject::[unnamed] { | kIsOnHeap | |
| kNotDeleted | ||
| kZombie | ||
| kBitMask | ||
| kSingleKey | ||
| kOverwrite | ||
| kWriteDelete | ||
| }; |
| Double_t | fAmplYScale | scale factor Y in case of symmetric scan |
| Int_t | fChargeState | charge number |
| ESnkClockSource | fClockSource | clock source |
| Int_t | fCycleCount | number of cycles to perform |
| TSnkDDAChannel | fDacB | channel B (beam on/off) |
| TSnkDDAChannel | fDacError | dummy in case of error |
| TSnkDDAChannel | fDacH | channel H (hysteresis) |
| TSnkDDAChannel | fDacX | channel X |
| TSnkDDAChannel | fDacY | channel Y |
| Double_t | fEnergy | beam energy [MeV] |
| UInt_t | fExecMode | exec mode |
| TMrbLofNamedX | fLofClockSources | clock sources |
| TMrbLofNamedX | fLofExecModes | exec modes |
| TMrbLofNamedX | fLofPreScales | prescaler values |
| TMrbLofNamedX | fLofScanModes | scan modes |
| TMrbLofNamedX | fLofScanProfiles | scan profiles |
| Int_t | fMassNo | mass number |
| Int_t | fMaxPoints | max number of points/pixels |
| TString | TNamed::fName | object identifier |
| Int_t | fPacerClock | pacer clock |
| Int_t | fPort | port number |
| ESnkPreScale | fPreScale | prescale frequency |
| TString | fSaveScan | save of current scan data |
| TString | fScanDataFile | file name if scan data taken from file |
| Double_t | fScanInterval | interval in seconds |
| ESnkScanMode | fScanMode | scan mode |
| TString | fServer | server name |
| TSocket* | fSocket | ! connection to server |
| Int_t | fSubdevice | subdevice: 0 (chn 0-2), 1 (chn 4-6), 2 (chn 8-10), 3 (chn 12-14) |
| TString | fSubdeviceName | ... |
| TString | TNamed::fTitle | object title |
| Bool_t | fVerbose | kTRUE if verbose mode |

__________________________________________________________________[C++ CTOR] Name: TSnkDDA0816 Purpose: Create a DDA0816 object Results: -- Exceptions: Description: Class constructor Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetSubdevice Purpose: Define channel names according to subdevice Arguments: Int_t Subdevice -- subdevice number Results: kTRUE/kFALSE Exceptions: Description: Assigns channel names. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetDac Purpose: Return DAC address Arguments: Int_t Channel -- channel number Results: TSnkDDAChannl * Addr -- channel address Exceptions: Description: Returns dac address. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::CheckParams Purpose: Check if channel number is ok Arguments: Char_t * Class -- class name Char_t * Method -- calling method Results: kTRUE/kFALSE Exceptions: Description: Checks validity of params. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::CheckChannel Purpose: Check if channel number is ok Arguments: Int_t Channel -- channel number (0 or 1) Char_t * Class -- class name Char_t * Method -- calling method Results: TSnkDDAChannel * Chaddr -- channel addr Exceptions: returns NULL on error Description: Checks if channel number is 0, 1 or 2. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetConnection Purpose: Get connection data Arguments: TString & Server -- server name Int_t & Port -- port number Results: TSocket * Socket -- TCP socket Exceptions: Description: Returns connection data to be used bu other DDA objects. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetConnection Purpose: Set connection data Arguments: TSocket * Socket -- TCP socket Char_t * Server -- server name Int_t Port -- port number Results: kTRUE/kFALSE Exceptions: Description: Sets connection to what we got from other DDA object. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::CheckConnect Purpose: Check if server connection ok Arguments: -- Results: kTRUE/kFALSE Exceptions: returns NULL on error Description: Checks if channel number is 0, 1 or 2. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::AdjustSettings Purpose: Calculate a legal set of params Arguments: Int_t Channel -- DAC channel Bool_t Verbose -- error printout on/off Results: kTRUE/kFALSE Exceptions: Description: Calculates increment from amplitude and scan size, adjusts amplitude if necessary. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetPreScaler Purpose: Set prescale Arguments: Char_t * PreScale -- prescale value Results: kTRUE/kFALSE Exceptions: Description: Sets prescale value. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetPreScaler Purpose: Set prescale Arguments: ESnkPreScale PreScale -- prescale value Results: kTRUE/kFALSE Exceptions: Description: Sets prescale value. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetClockSource Purpose: Set clock source Arguments: Int_t Channel -- channel number (0 or 1) Char_t * ClockSource -- clock source Results: kTRUE/kFALSE Exceptions: Description: Sets clock source. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetSoftScale Purpose: Set soft scale Arguments: Int_t Channel -- channel number (0 or 1) Results: kTRUE/kFALSE Exceptions: Description: Sets soft scale value. Soft scale down for one channel is derived from scan size of the other one. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetSoftScale Purpose: Return soft scale Arguments: Int_t Channel -- channel number (0 or 1) Results: Int_t SoftScale -- soft scale value Exceptions: Description: Returns spft scale value. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetOffset Purpose: Return offset value Arguments: Int_t Channel -- channel number (0 or 1) Results: Int_t Offset -- offset Exceptions: Description: Returns offset (=start) value. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetAmplitude Purpose: Set scan range Arguments: Int_t Channel -- channel number (0 or 1) Int_t Amplitude -- scan amplitude Results: kTRUE/kFALSE Exceptions: Description: Sets scan range. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetAmplitude Purpose: Return scan range Arguments: Int_t Channel -- channel number (0 or 1) Results: Int_t Amplitude -- amplitude value Exceptions: Description: Returns scan range. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetIncrement Purpose: Set scan increment Arguments: Int_t Channel -- channel number (0 or 1) Int_t Increment -- scan increment Results: kTRUE/kFALSE Exceptions: Description: Sets step size. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetIncrement Purpose: Return scan increment Arguments: Int_t Channel -- channel number (0 or 1) Results: Int_t Increment -- increment Exceptions: Description: Returns step size. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetScanProfile Purpose: Set scan profile Arguments: Int_t Channel -- channel number (0 or 1) Char_t * ScanProfile -- scan profile (triangle, sawtooth left/right) Results: kTRUE/kFALSE Exceptions: Description: Sets scan profile. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetScanProfile Purpose: Set scan profile Arguments: Int_t Channel -- channel number (0 or 1) ESnkScanProfile ScanProfile -- scan profile (triangle, sawtooth left/right) Results: kTRUE/kFALSE Exceptions: Description: Sets scan profile. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetScanProfile Purpose: Return scan profile Arguments: Int_t Channel -- channel number (0 or 1) Results: TMrbNamedX * ScanProfile -- scan profile Exceptions: Description: Returns scan profile. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurve Purpose: Set curve data Arguments: Int_t Channel -- channel number (0 or 1) TArrayI & Data -- curve data Int_t NofDataPoints -- size of data array Results: kTRUE/kFALSE Exceptions: Description: Fills the curve buffer. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SaveAs Purpose: Save setup Arguments: Char_t * FileName -- file name Char_t * Prefix -- prefix to be used in .dda file Results: kTRUE/kFALSE Exceptions: Description: Writes TSnkDDA0816 object to root or dda file. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SaveDefault Purpose: Save setup using default name Arguments: Bool_t SaveAsDDA -- save as .dda file if kTRUE Char_t * Prefix -- prefix to be used in .dda file Results: kTRUE/kFALSE Exceptions: Description: Writes TSnkDDA0816 object to root or dda file. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::Save Purpose: Save setup Arguments: Char_t * SaveFile -- file name Char_t * Prefix -- prefix to be used in .dda file Results: kTRUE/kFALSE Exceptions: Description: Writes TSnkDDA0816 object to root or dda file. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SaveAsDDAFile Purpose: Save DDA data as environment Arguments: Char_t * SaveFile -- file name Char_t * Prefix -- prefix Results: kTRUE/kFALSE Exceptions: Description: Writes TSnkDDA0816 data using environment (TMrbEnv) format. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveSymm Purpose: Setup: symmetric scan Arguments: Bool_t SaveFlag -- kTRUE if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data for a symmetric scan. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveAsymm Purpose: Setup: asymmetric scan Arguments: Bool_t SaveFlag -- kTRUE if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data for an asymmetric scan. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveLShape Purpose: Setup: asymmetric scan Arguments: Bool_t SaveFlag -- kTRUE if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data for an asymmetric scan. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveXOnly Purpose: Setup: scan x axis only Arguments: Bool_t SaveFlag -- kTRUE if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data to scan along x. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveYOnly Purpose: Setup: scan y axis only Arguments: Bool_t SaveFlag -- if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data to scan along y. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveXYConst Purpose: Setup: x = const, y = const Arguments: Bool_t SaveFlag -- if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Calculates curve data for x = const and y = const Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetCurveFromFile Purpose: Setup: data taken from file Arguments: Char_t * FileName -- file name Bool_t SaveFlag -- kTRUE if data should be saved Results: kTRUE/kFALSE Exceptions: Description: Reads data from external file Data format is <xval> <yval> <intensity> <beam> Data fields separated by white space (blank and/or tab> <intensity>=1,2,... means "stay <intensity> time slices on same place" (default=1) <beam>=1 means "beam on", =0 "beam off" (default=1) Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::ConnectToServer Purpose: Connect to server Arguments: Char_t * ServerName -- server addr Int_t Port -- port number Char_t * ServerProg -- program to be started Results: kTRUE/kFALSE Exceptions: Description: Establishes a server connection. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::StartScan Purpose: Start actual scan Arguments: Double_t ScanInterval -- scan time in seconds Int_t NofCycles -- number of cycles Results: kTRUE/kFALSE Exceptions: Description: Starts actual scanning. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::StopScan Purpose: Stop scan Arguments: -- Results: kTRUE/kFALSE Exceptions: Description: Stops scan. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::KillServer Purpose: Stop server program Arguments: -- Results: kTRUE/kFALSE Exceptions: Description: Stops server program. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::ResetScan Purpose: Reset to x = 0, y = 0 Arguments: -- Results: kTRUE/kFALSE Exceptions: Description: Resets scan. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetTriangle Purpose: Setup a triangular shape Arguments: TArrayI & Data -- array to store data Int_t Offset -- offset Int_t Amplitude -- amplitude Int_t Increment -- increment Int_t NofPixels -- number of pixels Results: Int_t NofDataPoints -- actual number of data points Exceptions: Description: Calculates a triangular shape. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetSawToothLR Purpose: Setup a saw-tooth from left to right Arguments: TArrayI & Data -- array to store data Int_t Offset -- offset Int_t Amplitude -- amplitude Int_t Increment -- increment Int_t NofPixels -- number of pixels Results: Int_t NofDataPoints -- actual number of data points Exceptions: Description: Calculates a saw-tooth shape. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetSawToothRL Purpose: Setup a saw-tooth from right to left Arguments: TArrayI & Data -- array to store data Int_t Offset -- offset Int_t Amplitude -- amplitude Int_t Increment -- increment Int_t NofPixels -- number of pixels Results: Int_t NofDataPoints -- actual number of data points Exceptions: Description: Calculates a saw-tooth shape. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetTriangle Purpose: Setup a triangular shape Arguments: TArrayI & Data -- array to store data Int_t Offset -- offset Int_t Increment1 -- increment (axis 1) Int_t NofPixels1 -- number of pixels (axis 1) Int_t Increment2 -- increment (axis 2) Int_t NofPixels2 -- number of pixels (axis 2) Results: Int_t NofDataPoints -- actual number of data points Exceptions: Description: Calculates a L-shaped curve. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetHysteresis Purpose: Calculate hysteresis output for channel 2 Arguments: -- Results: kTRUE/kFALSE Exceptions: Description: Sets curve data according to slope in dac0 or dac1. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetBeamOn Purpose: Set beam permanently on Arguments: -- Results: kTRUE/kFALSE Exceptions: Description: Sets curve data for channel 3. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::GetSubdeviceName Purpose: Return subdevice Arguments: -- Results: Char_t * Subdevice -- subdevice name Exceptions: Description: Returns subdevice as ascii string. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::Calibrate Purpose: Calibrate amplitude Arguments: Int_t ChargeState -- charge number Double_t Energy -- beam energy [MeV] Double_t CalibX -- calibration X Double_t VoltageX -- max voltage power supply X [kV] Double_t CalibY -- calibration Y Double_t VoltageY -- max voltage power supply Y [kV] Results: kTRUE/kFALSE Exceptions: Description: Calculates calibration constants: step width, range. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::Dist2Ampl Purpose: Distance to amplitude conversion Arguments: Int_t XorY -- X(0) or Y(1) Double_t Distance -- distance [um] Results: Int_t Amplitude -- amplitude [steps] Exceptions: Description: Converts distance to amplitude. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::Ampl2Dist Purpose: Amplitude to distance conversion Arguments: Int_t XorY -- X(0) or Y(1) Int_t Amplitude -- amplitude [steps] Results: Double_t Distance -- distance [um] Exceptions: Description: Converts amplitude to distance. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::ResetCalibration Purpose: Reset calibration Arguments: -- Results: -- Exceptions: Description: Resets calibration to default values. Keywords:
________________________________________________________________[C++ METHOD] Name: TSnkDDA0816::SetStopPos Purpose: Define stop position Arguments: Int_t XorY -- X(0) or Y(1) Double_t StopPos -- stop position [um] Int_t Pos0 -- offset (steps) Results: kTRUE/kFALSE Exceptions: Description: Sets the stop position for a channel. Keywords:
{ return(IsXorY(XorY) ? this->GetDac(XorY)->GetCalibration() : 1.); }{ return(IsXorY(XorY) ? this->GetDac(XorY)->GetStepWidth() : 1.); }