diff --git a/andorApp/src/SPEHeader.h b/andorApp/src/SPEHeader.h index 4ff47b1..25446e8 100755 --- a/andorApp/src/SPEHeader.h +++ b/andorApp/src/SPEHeader.h @@ -1,3 +1,7 @@ +// SPEHeader.h. +// Mark Rivers, April 12, 2014 +// This file originally was CHeader.h from Princeton Instruments. +// Modified to be OS-independent by using EPICS types. // CHeader.h : definition of WinX/32 (CSMA-style) file header // // Copyright (C) 1997-2000 Roper Scientific @@ -36,10 +40,10 @@ */ ///////////////////////////////////////////////////////////////////////////// -#if !defined(CHEADER_H) -#define CHEADER_H /* define shows that include is now done */ +#if !defined(SPEHEADER_H) +#define SPEHEADER_H /* define shows that include is now done */ -#include "bvstruct.h" +/*#include "bvstruct.h" */ /* NOTE: the following values should not change, otherwise the header will */ /* be bleeped up. */ @@ -86,207 +90,207 @@ enum CSCTRLTYPE { typedef struct tagROIinfo // ROI information { - WORD startx; // left x start value. - WORD endx; // right x value. - WORD groupx; // amount x is binned/grouped in hw. - WORD starty; // top y start value. - WORD endy; // bottom y value. - WORD groupy; // amount y is binned/grouped in hw. + epicsUInt16 startx; // left x start value. + epicsUInt16 endx; // right x value. + epicsUInt16 groupx; // amount x is binned/grouped in hw. + epicsUInt16 starty; // top y start value. + epicsUInt16 endy; // bottom y value. + epicsUInt16 groupy; // amount y is binned/grouped in hw. } ROIinfo; // 12 Bytes Each typedef struct tagCSMAHEAD { #ifdef __cplusplus // STARTING tagCSMAHEAD(); // ADDRESS #endif // (decimal) - SHORT ControllerVersion; // 0 Hardware Version - SHORT LogicOutput; // 2 Definition of Output BNC - WORD AmpHiCapLowNoise; // 4 Amp Switching Mode - WORD xDimDet; // 6 Detector x dimension of chip. - SHORT mode; // 8 timing mode - float exp_sec; // 10 alternitive exposure, in sec. - SHORT VChipXdim; // 14 Virtual Chip X dim - SHORT VChipYdim; // 16 Virtual Chip Y dim - WORD yDimDet; // 18 y dimension of CCD or detector. - char date[DATEMAX]; // 20 date - SHORT VirtualChipFlag; // 30 On/Off - char Spare_1[2]; // 32 - SHORT noscan; // 34 Old number of scans - should always be -1 - float DetTemperature; // 36 Detector Temperature Set - SHORT DetType; // 40 CCD/DiodeArray type - WORD xdim; // 42 actual # of pixels on x axis - SHORT stdiode; // 44 trigger diode - float DelayTime; // 46 Used with Async Mode - WORD ShutterControl; // 50 Normal, Disabled Open, Disabled Closed - SHORT AbsorbLive; // 52 On/Off - WORD AbsorbMode; // 54 Reference Strip or File - SHORT CanDoVirtualChipFlag; // 56 T/F Cont/Chip able to do Virtual Chip - SHORT ThresholdMinLive; // 58 On/Off - float ThresholdMinVal; // 60 Threshold Minimum Value - SHORT ThresholdMaxLive; // 64 On/Off - float ThresholdMaxVal; // 66 Threshold Maximum Value - SHORT SpecAutoSpectroMode; // 70 T/F Spectrograph Used - float SpecCenterWlNm; // 72 Center Wavelength in Nm - SHORT SpecGlueFlag; // 76 T/F File is Glued - float SpecGlueStartWlNm; // 78 Starting Wavelength in Nm - float SpecGlueEndWlNm; // 82 Starting Wavelength in Nm - float SpecGlueMinOvrlpNm; // 86 Minimum Overlap in Nm - float SpecGlueFinalResNm; // 90 Final Resolution in Nm - SHORT PulserType; // 94 0=None, PG200=1, PTG=2, DG535=3 - SHORT CustomChipFlag; // 96 T/F Custom Chip Used - SHORT XPrePixels; // 98 Pre Pixels in X direction - SHORT XPostPixels; // 100 Post Pixels in X direction - SHORT YPrePixels; // 102 Pre Pixels in Y direction - SHORT YPostPixels; // 104 Post Pixels in Y direction - SHORT asynen; // 106 asynchron enable flag 0 = off - SHORT datatype; // 108 experiment datatype - // 0 = FLOATING POINT - // 1 = LONG INTEGER - // 2 = INTEGER - // 3 = UNSIGNED INTEGER - SHORT PulserMode; // 110 Repetitive/Sequential - USHORT PulserOnChipAccums; // 112 Num PTG On-Chip Accums - DWORD PulserRepeatExp; // 114 Num Exp Repeats (Pulser SW Accum) - float PulseRepWidth; // 118 Width Value for Repetitive pulse (usec) - float PulseRepDelay; // 122 Width Value for Repetitive pulse (usec) - float PulseSeqStartWidth; // 126 Start Width for Sequential pulse (usec) - float PulseSeqEndWidth; // 130 End Width for Sequential pulse (usec) - float PulseSeqStartDelay; // 134 Start Delay for Sequential pulse (usec) - float PulseSeqEndDelay; // 138 End Delay for Sequential pulse (usec) - SHORT PulseSeqIncMode; // 142 Increments: 1=Fixed, 2=Exponential - SHORT PImaxUsed; // 144 PI-Max type controller flag - SHORT PImaxMode; // 146 PI-Max mode - SHORT PImaxGain; // 148 PI-Max Gain - SHORT BackGrndApplied; // 150 1 if background subtraction done - SHORT PImax2nsBrdUsed; // 152 T/F PI-Max 2ns Board Used - WORD minblk; // 154 min. # of strips per skips - WORD numminblk; // 156 # of min-blocks before geo skps - SHORT SpecMirrorLocation[2]; // 158 Spectro Mirror Location, 0=Not Present - SHORT SpecSlitLocation[4]; // 162 Spectro Slit Location, 0=Not Present - SHORT CustomTimingFlag; // 170 T/F Custom Timing Used - char ExperimentTimeLocal[TIMEMAX];// 172 Experiment Local Time as hhmmss\0 - char ExperimentTimeUTC[TIMEMAX]; // 179 Experiment UTC Time as hhmmss\0 - SHORT ExposUnits; // 186 User Units for Exposure - WORD ADCoffset; // 188 ADC offset - WORD ADCrate; // 190 ADC rate - WORD ADCtype; // 192 ADC type - WORD ADCresolution; // 194 ADC resolution - WORD ADCbitAdjust; // 196 ADC bit adjust - WORD gain; // 198 gain - char Comments[5][COMMENTMAX];// 200 File Comments - WORD geometric; // 600 geometric ops: rotate 0x01, - // reverse 0x02, flip 0x04 - char xlabel[LABELMAX]; // 602 intensity display string - WORD cleans; // 618 cleans - WORD NumSkpPerCln; // 620 number of skips per clean. - SHORT SpecMirrorPos[2]; // 622 Spectrograph Mirror Positions - float SpecSlitPos[4]; // 626 Spectrograph Slit Positions - SHORT AutoCleansActive; // 642 T/F - SHORT UseContCleansInst; // 644 T/F - SHORT AbsorbStripNum; // 646 Absorbance Strip Number - SHORT SpecSlitPosUnits; // 648 Spectrograph Slit Position Units - float SpecGrooves; // 650 Spectrograph Grating Grooves - SHORT srccmp; // 654 number of source comp. diodes - WORD ydim; // 656 y dimension of raw data. - SHORT scramble; // 658 0=scrambled,1=unscrambled - SHORT ContinuousCleansFlag; // 660 T/F Continuous Cleans Timing Option - SHORT ExternalTriggerFlag; // 662 T/F External Trigger Timing Option - long lnoscan; // 664 Number of scans (Early WinX) - long lavgexp; // 668 Number of Accumulations - float ReadoutTime; // 672 Experiment readout time - SHORT TriggeredModeFlag; // 676 T/F Triggered Timing Option - char Spare_2[10]; // 678 - char sw_version[FILEVERMAX]; // 688 Version of SW creating this file - SHORT type; // 704 0=1000,1=new120,2=old120,3=130, - // st121=4,st138=5,dc131(PentaMax)=6, - // st133(MicroMax)=7,st135(GPIB)=8, - // VICCD=9, ST116(GPIB)=10, - // OMA3(GPIB)=11,OMA4=12 - SHORT flatFieldApplied; // 706 1 if flat field was applied. - char Spare_3[16]; // 708 - SHORT kin_trig_mode; // 724 Kinetics Trigger Mode - char dlabel[LABELMAX]; // 726 Data label. - char Spare_4[436]; // 742 - char PulseFileName[HDRNAMEMAX]; // 1178 Name of Pulser File with - // Pulse Widths/Delays (for Z-Slice) - char AbsorbFileName[HDRNAMEMAX]; // 1298 Name of Absorbance File (if File Mode) - DWORD NumExpRepeats; // 1418 Number of Times experiment repeated - DWORD NumExpAccums; // 1422 Number of Time experiment accumulated - SHORT YT_Flag; // 1426 Set to 1 if this file contains YT data - float clkspd_us; // 1428 Vert Clock Speed in micro-sec - SHORT HWaccumFlag; // 1432 set to 1 if accum done by Hardware. - SHORT StoreSync; // 1434 set to 1 if store sync used. - SHORT BlemishApplied; // 1436 set to 1 if blemish removal applied. - SHORT CosmicApplied; // 1438 set to 1 if cosmic ray removal applied - SHORT CosmicType; // 1440 if cosmic ray applied, this is type. - float CosmicThreshold; // 1442 Threshold of cosmic ray removal. - long NumFrames; // 1446 number of frames in file. - float MaxIntensity; // 1450 max intensity of data (future) - float MinIntensity; // 1454 min intensity of data (future) - char ylabel[LABELMAX]; // 1458 y axis label. - WORD ShutterType; // 1474 shutter type. - float shutterComp; // 1476 shutter compensation time. - WORD readoutMode; // 1480 readout mode, full,kinetics, etc - WORD WindowSize; // 1482 window size for kinetics only. - WORD clkspd; // 1484 clock speed for kinetics & frame transfer. - WORD interface_type; // 1486 computer interface - // (isa-taxi, pci, eisa, etc.) - SHORT NumROIsInExperiment; // 1488 May be more than the 10 allowed in - // this header (if 0, assume 1) - char Spare_5[16]; // 1490 - WORD controllerNum; // 1506 if multiple controller system will - // have controller number data came from. - // this is a future item. - WORD SWmade; // 1508 Which software package created this file - SHORT NumROI; // 1510 number of ROIs used. if 0 assume 1. - ROIinfo ROIinfoblk[ROIMAX]; // 1512 ROI information - char FlatField[HDRNAMEMAX]; // 1632 Flat field file name. - char background[HDRNAMEMAX]; // 1752 background sub. file name. - char blemish[HDRNAMEMAX]; // 1872 blemish file name. - float file_header_ver; // 1992 version of this file header - char YT_Info[1000]; // 1996-2996 Reserved for YT information - LONG WinView_id; // 2996 == 0x01234567L if in use by WinView - struct { // X Y - double offset; // 3000 3489 offset for absolut data scaling - double factor; // 3008 3497 factor for absolut data scaling - char current_unit; // 3016 3505 selected scaling unit - char CalibReserved1; // 3017 3506 reserved - char display_string[40]; // 3018 3507 string used for drawing axes... - char CalibReserved2[40]; // 3058 3547 reserved - char calib_valid; // 3098 3587 flag if calibration is valid - char input_unit; // 3099 3588 current input units for "calib_value" - char polynounit; // 3100 3589 linear UNIT and used in the "polynocoeff" - char polynoorder; // 3101 3590 ORDER of calibration POLYNOM - char calib_count; // 3102 3591 valid calibration data pairs - double pixel_position[10]; // 3103 3592 pixel pos. of calibration data - double calib_value[10]; // 3183 3672 calibration VALUE at above pos - double polynocoeff[6]; // 3263 3752 polynom COEFFICIENTS - double laser_position; // 3311 3800 laser wavenumber for relativ WN - char CalibReserved3; // 3319 3808 reserved - BYTE leftover_flag; // 3320 3809 not used. - char user_label[40]; // 3321 3810 Calibration label - char expansion[128]; // 3361 3850 Expansion area - } xcalibration, // 3000 -> 3488 X axis calibration - ycalibration; // 3489 -> 3977 Y axis calibration - char Istring[40]; // 3978 special intensity scaling string - char Spare_6[25]; // 4018 - BYTE SpecType; // 4043 spectrometer type (acton, spex, etc.) - BYTE SpecModel; // 4044 spectrometer model (type dependent) - BYTE PulseBurstUsed; // 4045 pulser burst mode on/off - DWORD PulseBurstCount; // 4046 pulser triggers per burst - double PulseBurstPeriod; // 4050 pulser burst period (in usec) - BYTE PulseBracketUsed; // 4058 pulser bracket pulsing on/off - BYTE PulseBracketType; // 4059 pulser bracket pulsing type - double PulseTimeConstFast; // 4060 pulser slow exponential time constant (in usec) - double PulseAmplitudeFast; // 4068 pulser fast exponential amplitude constant - double PulseTimeConstSlow; // 4076 pulser slow exponential time constant (in usec) - double PulseAmplitudeSlow; // 4084 pulser slow exponential amplitude constant - SHORT AnalogGain; // 4092 analog gain - SHORT AvGainUsed; // 4094 avalanche gain was used - SHORT AvGain; // 4096 avalanche gain value - SHORT lastvalue; // 4098 Always the LAST value in the header -} CSMAHead; // 4100 Bytes Total Header Size + epicsInt16 ControllerVersion; // 0 Hardware Version + epicsInt16 LogicOutput; // 2 Definition of Output BNC + epicsUInt16 AmpHiCapLowNoise; // 4 Amp Switching Mode + epicsUInt16 xDimDet; // 6 Detector x dimension of chip. + epicsInt16 mode; // 8 timing mode + epicsFloat32 exp_sec; // 10 alternitive exposure, in sec. + epicsInt16 VChipXdim; // 14 Virtual Chip X dim + epicsInt16 VChipYdim; // 16 Virtual Chip Y dim + epicsUInt16 yDimDet; // 18 y dimension of CCD or detector. + char date[DATEMAX]; // 20 date + epicsInt16 VirtualChipFlag; // 30 On/Off + char Spare_1[2]; // 32 + epicsInt16 noscan; // 34 Old number of scans - should always be -1 + epicsFloat32 DetTemperature; // 36 Detector Temperature Set + epicsInt16 DetType; // 40 CCD/DiodeArray type + epicsUInt16 xdim; // 42 actual # of pixels on x axis + epicsInt16 stdiode; // 44 trigger diode + epicsFloat32 DelayTime; // 46 Used with Async Mode + epicsUInt16 ShutterControl; // 50 Normal, Disabled Open, Disabled Closed + epicsInt16 AbsorbLive; // 52 On/Off + epicsUInt16 AbsorbMode; // 54 Reference Strip or File + epicsInt16 CanDoVirtualChipFlag; // 56 T/F Cont/Chip able to do Virtual Chip + epicsInt16 ThresholdMinLive; // 58 On/Off + epicsFloat32 ThresholdMinVal; // 60 Threshold Minimum Value + epicsInt16 ThresholdMaxLive; // 64 On/Off + epicsFloat32 ThresholdMaxVal; // 66 Threshold Maximum Value + epicsInt16 SpecAutoSpectroMode; // 70 T/F Spectrograph Used + epicsFloat32 SpecCenterWlNm; // 72 Center Wavelength in Nm + epicsInt16 SpecGlueFlag; // 76 T/F File is Glued + epicsFloat32 SpecGlueStartWlNm; // 78 Starting Wavelength in Nm + epicsFloat32 SpecGlueEndWlNm; // 82 Starting Wavelength in Nm + epicsFloat32 SpecGlueMinOvrlpNm; // 86 Minimum Overlap in Nm + epicsFloat32 SpecGlueFinalResNm; // 90 Final Resolution in Nm + epicsInt16 PulserType; // 94 0=None, PG200=1, PTG=2, DG535=3 + epicsInt16 CustomChipFlag; // 96 T/F Custom Chip Used + epicsInt16 XPrePixels; // 98 Pre Pixels in X direction + epicsInt16 XPostPixels; // 100 Post Pixels in X direction + epicsInt16 YPrePixels; // 102 Pre Pixels in Y direction + epicsInt16 YPostPixels; // 104 Post Pixels in Y direction + epicsInt16 asynen; // 106 asynchron enable flag 0 = off + epicsInt16 datatype; // 108 experiment datatype + // 0 = FLOATING POINT + // 1 = LONG INTEGER + // 2 = INTEGER + // 3 = UNSIGNED INTEGER + epicsInt16 PulserMode; // 110 Repetitive/Sequential + epicsUInt16 PulserOnChipAccums; // 112 Num PTG On-Chip Accums + epicsUInt32 PulserRepeatExp; // 114 Num Exp Repeats (Pulser SW Accum) + epicsFloat32 PulseRepWidth; // 118 Width Value for Repetitive pulse (usec) + epicsFloat32 PulseRepDelay; // 122 Width Value for Repetitive pulse (usec) + epicsFloat32 PulseSeqStartWidth; // 126 Start Width for Sequential pulse (usec) + epicsFloat32 PulseSeqEndWidth; // 130 End Width for Sequential pulse (usec) + epicsFloat32 PulseSeqStartDelay; // 134 Start Delay for Sequential pulse (usec) + epicsFloat32 PulseSeqEndDelay; // 138 End Delay for Sequential pulse (usec) + epicsInt16 PulseSeqIncMode; // 142 Increments: 1=Fixed, 2=Exponential + epicsInt16 PImaxUsed; // 144 PI-Max type controller flag + epicsInt16 PImaxMode; // 146 PI-Max mode + epicsInt16 PImaxGain; // 148 PI-Max Gain + epicsInt16 BackGrndApplied; // 150 1 if background subtraction done + epicsInt16 PImax2nsBrdUsed; // 152 T/F PI-Max 2ns Board Used + epicsUInt16 minblk; // 154 min. # of strips per skips + epicsUInt16 numminblk; // 156 # of min-blocks before geo skps + epicsInt16 SpecMirrorLocation[2]; // 158 Spectro Mirror Location, 0=Not Present + epicsInt16 SpecSlitLocation[4]; // 162 Spectro Slit Location, 0=Not Present + epicsInt16 CustomTimingFlag; // 170 T/F Custom Timing Used + char ExperimentTimeLocal[TIMEMAX];// 172 Experiment Local Time as hhmmss\0 + char ExperimentTimeUTC[TIMEMAX]; // 179 Experiment UTC Time as hhmmss\0 + epicsInt16 ExposUnits; // 186 User Units for Exposure + epicsUInt16 ADCoffset; // 188 ADC offset + epicsUInt16 ADCrate; // 190 ADC rate + epicsUInt16 ADCtype; // 192 ADC type + epicsUInt16 ADCresolution; // 194 ADC resolution + epicsUInt16 ADCbitAdjust; // 196 ADC bit adjust + epicsUInt16 gain; // 198 gain + char Comments[5][COMMENTMAX];// 200 File Comments + epicsUInt16 geometric; // 600 geometric ops: rotate 0x01, + // reverse 0x02, flip 0x04 + char xlabel[LABELMAX]; // 602 intensity display string + epicsUInt16 cleans; // 618 cleans + epicsUInt16 NumSkpPerCln; // 620 number of skips per clean. + epicsInt16 SpecMirrorPos[2]; // 622 Spectrograph Mirror Positions + epicsFloat32 SpecSlitPos[4]; // 626 Spectrograph Slit Positions + epicsInt16 AutoCleansActive; // 642 T/F + epicsInt16 UseContCleansInst; // 644 T/F + epicsInt16 AbsorbStripNum; // 646 Absorbance Strip Number + epicsInt16 SpecSlitPosUnits; // 648 Spectrograph Slit Position Units + epicsFloat32 SpecGrooves; // 650 Spectrograph Grating Grooves + epicsInt16 srccmp; // 654 number of source comp. diodes + epicsUInt16 ydim; // 656 y dimension of raw data. + epicsInt16 scramble; // 658 0=scrambled,1=unscrambled + epicsInt16 ContinuousCleansFlag; // 660 T/F Continuous Cleans Timing Option + epicsInt16 ExternalTriggerFlag; // 662 T/F External Trigger Timing Option + epicsInt32 lnoscan; // 664 Number of scans (Early WinX) + epicsInt32 lavgexp; // 668 Number of Accumulations + epicsFloat32 ReadoutTime; // 672 Experiment readout time + epicsInt16 TriggeredModeFlag; // 676 T/F Triggered Timing Option + char Spare_2[10]; // 678 + char sw_version[FILEVERMAX]; // 688 Version of SW creating this file + epicsInt16 type; // 704 0=1000,1=new120,2=old120,3=130, + // st121=4,st138=5,dc131(PentaMax)=6, + // st133(MicroMax)=7,st135(GPIB)=8, + // VICCD=9, ST116(GPIB)=10, + // OMA3(GPIB)=11,OMA4=12 + epicsInt16 flatFieldApplied; // 706 1 if flat field was applied. + char Spare_3[16]; // 708 + epicsInt16 kin_trig_mode; // 724 Kinetics Trigger Mode + char dlabel[LABELMAX]; // 726 Data label. + char Spare_4[436]; // 742 + char PulseFileName[HDRNAMEMAX]; // 1178 Name of Pulser File with + // Pulse Widths/Delays (for Z-Slice) + char AbsorbFileName[HDRNAMEMAX]; // 1298 Name of Absorbance File (if File Mode) + epicsUInt32 NumExpRepeats; // 1418 Number of Times experiment repeated + epicsUInt32 NumExpAccums; // 1422 Number of Time experiment accumulated + epicsInt16 YT_Flag; // 1426 Set to 1 if this file contains YT data + epicsFloat32 clkspd_us; // 1428 Vert Clock Speed in micro-sec + epicsInt16 HWaccumFlag; // 1432 set to 1 if accum done by Hardware. + epicsInt16 StoreSync; // 1434 set to 1 if store sync used. + epicsInt16 BlemishApplied; // 1436 set to 1 if blemish removal applied. + epicsInt16 CosmicApplied; // 1438 set to 1 if cosmic ray removal applied + epicsInt16 CosmicType; // 1440 if cosmic ray applied, this is type. + epicsFloat32 CosmicThreshold; // 1442 Threshold of cosmic ray removal. + epicsInt32 NumFrames; // 1446 number of frames in file. + epicsFloat32 MaxIntensity; // 1450 max intensity of data (future) + epicsFloat32 MinIntensity; // 1454 min intensity of data (future) + char ylabel[LABELMAX]; // 1458 y axis label. + epicsUInt16 ShutterType; // 1474 shutter type. + epicsFloat32 shutterComp; // 1476 shutter compensation time. + epicsUInt16 readoutMode; // 1480 readout mode, full,kinetics, etc + epicsUInt16 WindowSize; // 1482 window size for kinetics only. + epicsUInt16 clkspd; // 1484 clock speed for kinetics & frame transfer. + epicsUInt16 interface_type; // 1486 computer interface + // (isa-taxi, pci, eisa, etc.) + epicsInt16 NumROIsInExperiment; // 1488 May be more than the 10 allowed in + // this header (if 0, assume 1) + char Spare_5[16]; // 1490 + epicsUInt16 controllerNum; // 1506 if multiple controller system will + // have controller number data came from. + // this is a future item. + epicsUInt16 SWmade; // 1508 Which software package created this file + epicsInt16 NumROI; // 1510 number of ROIs used. if 0 assume 1. + ROIinfo ROIinfoblk[ROIMAX]; // 1512 ROI information + char FlatField[HDRNAMEMAX]; // 1632 Flat field file name. + char background[HDRNAMEMAX]; // 1752 background sub. file name. + char blemish[HDRNAMEMAX]; // 1872 blemish file name. + epicsFloat32 file_header_ver; // 1992 version of this file header + char YT_Info[1000]; // 1996-2996 Reserved for YT information + epicsInt32 WinView_id; // 2996 == 0x01234567L if in use by WinView + struct { // X Y + epicsFloat64 offset; // 3000 3489 offset for absolut data scaling + epicsFloat64 factor; // 3008 3497 factor for absolut data scaling + char current_unit; // 3016 3505 selected scaling unit + char CalibReserved1; // 3017 3506 reserved + char display_string[40]; // 3018 3507 string used for drawing axes... + char CalibReserved2[40]; // 3058 3547 reserved + char calib_valid; // 3098 3587 flag if calibration is valid + char input_unit; // 3099 3588 current input units for "calib_value" + char polynounit; // 3100 3589 linear UNIT and used in the "polynocoeff" + char polynoorder; // 3101 3590 ORDER of calibration POLYNOM + char calib_count; // 3102 3591 valid calibration data pairs + epicsFloat64 pixel_position[10]; // 3103 3592 pixel pos. of calibration data + epicsFloat64 calib_value[10]; // 3183 3672 calibration VALUE at above pos + epicsFloat64 polynocoeff[6]; // 3263 3752 polynom COEFFICIENTS + epicsFloat64 laser_position; // 3311 3800 laser wavenumber for relativ WN + char CalibReserved3; // 3319 3808 reserved + epicsUInt8 leftover_flag; // 3320 3809 not used. + char user_label[40]; // 3321 3810 Calibration label + char expansion[128]; // 3361 3850 Expansion area + } xcalibration, // 3000 -> 3488 X axis calibration + ycalibration; // 3489 -> 3977 Y axis calibration + char Istring[40]; // 3978 special intensity scaling string + char Spare_6[25]; // 4018 + epicsUInt8 SpecType; // 4043 spectrometer type (acton, spex, etc.) + epicsUInt8 SpecModel; // 4044 spectrometer model (type dependent) + epicsUInt8 PulseBurstUsed; // 4045 pulser burst mode on/off + epicsUInt32 PulseBurstCount; // 4046 pulser triggers per burst + epicsFloat64 PulseBurstPeriod; // 4050 pulser burst period (in usec) + epicsUInt8 PulseBracketUsed; // 4058 pulser bracket pulsing on/off + epicsUInt8 PulseBracketType; // 4059 pulser bracket pulsing type + epicsFloat64 PulseTimeConstFast; // 4060 pulser slow exponential time constant (in usec) + epicsFloat64 PulseAmplitudeFast; // 4068 pulser fast exponential amplitude constant + epicsFloat64 PulseTimeConstSlow; // 4076 pulser slow exponential time constant (in usec) + epicsFloat64 PulseAmplitudeSlow; // 4084 pulser slow exponential amplitude constant + epicsInt16 AnalogGain; // 4092 analog gain + epicsInt16 AvGainUsed; // 4094 avalanche gain was used + epicsInt16 AvGain; // 4096 avalanche gain value + epicsInt16 lastvalue; // 4098 Always the LAST value in the header +} CSMAHead; // 4100 Bytes Total Header Size #pragma pack() -#endif // CHEADER_H \ No newline at end of file +#endif // CHEADER_H