15struct ISISCRPT_STRUCT;
350 static int vmstime(
char *timbuf,
int len, time_t time_value);
354 explicit ISISRAW(ISISCRPT_STRUCT *crpt);
355 ISISRAW(ISISCRPT_STRUCT *crpt,
bool doUpdateFromCRPT);
363 virtual int ioRAW(FILE *file,
bool from_file,
bool read_data =
true);
376 int ioRAW(FILE *file,
char *s,
int len,
bool from_file);
377 int ioRAW(FILE *file,
int *s,
int len,
bool from_file);
378 int ioRAW(FILE *file, uint32_t *s,
int len,
bool from_file);
379 int ioRAW(FILE *file,
float *s,
int len,
bool from_file);
381 int ioRAW(FILE *file,
char **s,
int len,
bool from_file);
382 int ioRAW(FILE *file,
int **s,
int len,
bool from_file);
383 int ioRAW(FILE *file, uint32_t **s,
int len,
bool from_file);
384 int ioRAW(FILE *file,
float **s,
int len,
bool from_file);
387 int ioRAW(FILE *file,
LOG_LINE **s,
int len,
bool from_file);
388 int readFromFile(
const char *filename,
bool read_data =
true);
HDR_STRUCT hdr
header block (80 bytes)
float * ut
nuse UT* user tables (total size NUSE*NDET) ut01=phi
LOG_STRUCT logsect
log section
ISISCRPT_STRUCT * m_crpt
CRPT from ICP.
int t_tcm1[5]
time channel mode
int i_use
number of user defined UTn tables NUSE
SPB_STRUCT spb
sample parameter block (64*4 bytes)
float * delt
hold off table (size NDET)
int * modn
module number for each detector (size NDET)
float t_tcp1[5][4]
time channel parameters
int e_nse
number of controlled SEPs NSEP
int getTimeChannels(float *rtcb1, int n)
rtcb1 is of size t_ntc1+1
char i_inst[8]
instrument name
uint32_t * dat1
compressed data for (NTC1+1)*(NSP1+1)*NPER values
int ver2
run section version number VER2 (=1)
ISISRAW(const ISISRAW &)=delete
int t_ntrg
number of time regimes (=1)
int i_det
number of detectors NDET
DAEP_STRUCT daep
DAE parameter block (size 64*4 bytes)
DDES_STRUCT * ddes
(NSP1+1)*NPER items, totoal size (NSP1+1)*NPER*2*4 bytes
int * code
code for UTn tables (size NDET)
int t_nper
number of periods
DHDR_STRUCT dhdr
size 32*4 bytes
int printInfo(std::ostream &os)
stuff
int * t_tcb1
time channel boundaries in clock pulses (size NTC1+1)
int t_nsp1
number of spectra in time regime 1
int * mdet
detector number for monitors (size NMON)
int ver3
instrument section version number (=2)
static int vmstime(char *timbuf, int len, time_t time_value)
stuff
item_struct< char > m_char_items
dunno
int readFromFile(const char *filename, bool read_data=true)
stuff
item_struct< float > m_real_items
dunno
int ver5
DAE section version number (=2)
int ver7
user version number (=1)
ISISRAW & operator=(ISISRAW)=delete
int * timr
time regime for each detector (size NDET)
USER_STRUCT user
user information (8*20 bytes)
int updateFromCRPT()
stuff
int i_mon
number of monitors NMON
int * crat
crate number for each detector (size NDET)
virtual int ioRAW(FILE *file, bool from_file, bool read_data=true)
stuff
int ver4
SE section version number (=2)
int ver8
data version number (=2)
float * u_dat
user defined data (ULEN, max size 400 words)
int data_format
data section format (0 = by TC, 1 = by spectrum)
char r_title[80]
run title
int * mpos
module position for each detector (size NDET)
int t_nfpp
number of frames per period
int ver6
TCB section version number (=1)
IVPB_STRUCT ivpb
instrument parameter block (64*4 bytes)
int * udet
user detector number for each detector (size NDET)
int * monp
prescale value for each monitor (size NMON)
int u_len
length of user data section
RPB_STRUCT rpb
run parameter block (32*4 bytes)
int * spec
spectrum number table (size NDET)
SE_STRUCT * e_seblock
NSEP SE parameter blocks (total size NSEP*32*4 bytes)
struct ADD_STRUCT add
9*4 bytes
int t_ntc1
number of time channels in time regime 1
float * tthe
2theta scattering angle (size NDET)
float * len2
L2 table (size NDET)
item_struct< int > m_int_items
dunno
int t_pre1
prescale for 32MHz clock
int t_pmap[256]
period number for each basic period
int frmt_ver_no
format version number VER1 (=2)
structure to hold a dae item
address offsets to various sections (9*4 bytes)
int ad_dae
ad_se + 66 + nse*32
int ad_user
ad_tcb + 288 + (ntc1 + 1)
int ad_data
ad_user + 2 + ulen
int ad_tcb
ad_dae + 65 + 5*ndet
int ad_run
32 (1+offset_of(ver2))
int ad_se
ad_inst + 70 + 2*nmon+(5+nuse)*ndet
DAE parameters block (64*4 bytes)
int neut_raw_high
raw ext. neut tot (high 32 bits)***B
int mon1_module
module for MON 1 ( 4 bits) ***B
int neut_gate_t2
ext. neutron gate (t2) (�s) ***B
int neut_good_low
good ext. neut tot (low 32 bits)***B
int neut_raw_low
raw ext. neut tot (low 32 bits)***B
int a_minppp
PPP minimum value ***B.
int a_pars
Word length in bulk store memory.
int mon1_mask
mask for MON 1 (c4:m4:d12) ***B
int neut_good_high
good ext. neut tot (high 32bits)***B
int tr_shift[3]
set to shift value (us) of each TR if (using_tr_shift >
int events_good_high
total GOOD EVENTS (high 32 bits)***B
int ppp_raw_low
raw PPP total (low 32 bits) ***B
int ext_vetos[3]
External vetoes 0,1,2 (0 dis,1.
int a_delay
frame synch delay (4�s steps) ***B
int neut_gate_t1
ext. neutron gate (t1) (�s) ***B
int mon2_crate
crate for MON 2 ( 4 bits) ***B
int ppp_good_high
good PPP total (high 32 bits) ***B
int mon1_crate
crate for MON 1 ( 4 bits) ***B
int ppp_good_low
good PPP total (low 32 bits) ***B
int a_sync
frm snch origin(0:none/1:ext/2:int)***B
int mem_size
Length of bulk store memory (bytes)**A.
int ppp_raw_high
raw PPP total (high 32 bits) ***B
int mon2_mask
mask for MON 2 (c4:m4:d12) ***B
int mon2_detector
detector for MON 2 (12 bits) ***B
int events_good_low
total GOOD EVENTS (low 32 bits)***B
int mon2_module
module for MON 2 ( 4 bits) ***B
int a_smp
Secondary Master Pulse (0:en,1:dis)
int mon1_detector
detector for MON 1 (12 bits) ***B
int nwords
number of compressed words in spectrum
int offset
offset to compressed spectrum
data section header (32*4 bytes)
int d_offset
offset to spectrum descriptor array
int d_comp
compression type (0=none, 1 = byte relative)
float d_crfile
compression ratio for whole file
int unused[26]
to bring size to 32*4 bytes
float d_crdata
compression ratio for data
int d_exp_filesize
equivalent version 1 filesize
char hd_date[12]
start date
char hd_time[8]
start time
char inst_abrv[3]
instrument abbreviated name
char hd_dur[8]
run duration (uA.hour) constructor
char hd_user[20]
user name
char hd_title[24]
short title
instrument parameter block (64*4 bytes)
int delay_error_c1
max delay error chopper 1 (us)
int i_mod
moderator type code
int delay_c3
delay chopper 3 (us)
int delay_error_c2
max delay error chopper 2 (us)
int i_posn
scattering position (1 or 2, for HRPD)
int delay_c1
delay chopper 1 (us)
int i_rslit
slit package (0="unknown",1="L",2="Med",3="Hi") HET
float i_ycen
LOQ y centre.
int status_c2
status c2 (run,stopped,stop open)
float i_xsect
beam aperture horizontal (mm)
int i_vacuum
detector_tank_vacuum 1 = vacuum on
int i_slowchop
(1=on, 0=off) HET
float freq_c2
frequency chopper 2 (Hz)
int i_rfreq
rotor_frequency (HET)
int delay_c2
delay chopper 2 (us)
float i_aofi
angle of incidence (CRISP)
int status_c3
status c3 (run,stopped,stop open)
int i_thermshut
thermal shutter open = 1
int i_mainshut
main shutter open = 1
int status_c1
status c1 (run,stopped,stop open)
int delay_error_c3
max delay error chopper 3 (us)
float freq_c3
frequency chopper 3 (Hz)
float i_sddist
source to detector distance (LOQ)
float i_l1
L1 scattering length.
float i_chfreq
frequency chopper 1 (Hz)
float i_xcen
LOQ x centre.
float i_ysect
beam aperture vertical (mm)
int spare[29]
to pad out to 64*4 bytes constructor
int i_bestop
beam_stop LOQ
float i_foeang
foe angle LOQ
float i_radbest
beam_stop_radius LOQ
int len
real length of data
char * data
padded to multiple of 4 bytes
LOG_LINE * lines
size nlines
int nlines
number of lines
Run parameter block (32*4 bytes)
int r_dur_secs
actual run duration in seconds
int r_freq
2**k where source frequency = 50 / 2**k
int r_dur_freq
test interval for above (seconds)
int r_mon_sum2
monitor sum 2
char r_endtime[8]
format HH-MM-SS
int r_dmp_units
scaler for above
int spare[10]
to pad out to 32*4 bytes constructor
char r_enddate[12]
format DD-MMM-YYYY
int r_dur_wanted
requested run duration (units as for "duration" above)
float r_gd_prtn_chrg
good proton charge (uA.hour)
int r_durunits
scaler for above (1=seconds)
int r_mon_sum1
monitor sum 1
int r_dmp_freq
test interval for above
int r_mon_sum3
monitor sum 3
int r_dur
actual run duration
int r_prop
RB (proposal) number.
float r_tot_prtn_chrg
total proton charge (uA.hour)
sample environment block (32*4 bytes)
int sep_cam_rgrp
camac register group (1 or 2)
int sep_status
are we in bounds
int sep_cam_vals[12]
camac values constructor
int sep_log
logged parameter (true/false)
float sep_period
monitor repeat period
int sep_control
controlled parameter (true/false)
char sep_units[8]
units of value
char sep_name[8]
SE block name.
float sep_stable
units per sec
int sep_run
run control parameter (true/false)
int sep_cam_sub
camac location A
int sep_offset
CAMAC offset (added to value)
int sep_pre_proc
pre process routine number
int sep_cam_addr
camac location N
sample parameter block (64*4 bytes)
float e_canxsect
can coherent scattering cross section (barn)
int e_type
sample type (1=sample+can,2=empty can)
float e_width
sample width (mm)
float can_nd
can number density (atoms.A-3)
float e_xscatt
sample coherent scattering cross section (barn)
float e_phi
phi sample angle (degrees)
float e_scatt
scattering geometry (1=trans, 2 =reflect)
float e_omega
omega sample angle (degrees)
int e_geom
sample geometry
int spare[33]
to bring up to 64*4 bytes constructor
int e_posn
sample changer position
float e_chi
chi sample angle (degrees)
float samp_cs_inc
sample incoherent cross section
float e_dens
sample number density (atoms.A-3)
float e_height
sample height (mm)
float samp_cs_abs
sample absorption cross section
char e_name[40]
sample name of chemical formula
float e_thick
sample thickness normal to sample (mm)
float e_canthick
can wall thickness (mm)
user information (8*20 bytes)
char unused[3][20]
to pad out to 8*20 bytes constructor
char r_instit[20]
institute
char r_night[20]
nighttime phone
char r_daytel[20]
daytime phone
char r_daytel2[20]
daytime phone