Overriding and setting default values for homer processes

From LIBISIS
Jump to navigation Jump to search

Where are the defaults specified

the homer distribution files are contained in

on a windows distribution: /your_libisis_directory/matlab/

on a linux rpm installation: /usr/local/libisis/applications/matlab/

in the svn repository: /libisis/applications/matlab/

each instrument has a named directory where there are instrument specific scripts used to define default values and files which are used to set up and populate the IXTrunfile object.

Setting homer defaults

For each instrument there can be particular default values specified for each step in the homering process. When homering using a script there are set default values for the white beam process (None of the following is relevant to the GUI system). For example the MARI white beam defaults are specified in the script:

MARI/setup_mari_white_beam.m

function setup_mari_white_beam

ixf_global_var('homer_white_beam','remove');

% particular to white beam operation
ixf_global_var('homer_white_beam','set','ei','white');
ixf_global_var('homer_white_beam','set','d_int',[20,40]);

% more general settings 
ixf_global_var('homer_white_beam','set','peak_scale',1000000);
ixf_global_var('homer_white_beam','set','uamp_scale',1000);
ixf_global_var('homer_white_beam','set','mon_scale',1000);
ixf_global_var('homer_white_beam','set','det_units','$e');

% default normalisation is with monitor 1
ixf_global_var('homer_white_beam','set','normalisation',int32(1));
ixf_global_var('homer_white_beam','set','range',[1000,2000]);

all the values are stored in persistent matlab memory using the function ixf_global_var, the specific values which have been set all refer to keywords which are specific to the white beam process. To therefore set the default white beam integration limits to be 20 to 100 meV and for the monitor normalisation integration range to be 1000 to 5000 microseconds

ixf_global_var('homer_white_beam','set','d_int',[20,100]);
ixf_global_var('homer_white_beam','set','range',[1000,5000]);

It is also possible to change the normalisation process entirely, if we want instead to set normalisation by microamp hours we remove the 'range' and change the normalisation to be:

ixf_global_var('homer_white_beam','set','normalisation','uamp');

Overriding homer defaults

To override homer defaults when using the Scripting_Homer_Functions it is quite simple. The keywords are simply specified with their value eg.

>> rf=white_beam(dso,run_number,'range',[1000,5000],'d_int',[20,100])

Overriding instrument specific population

using defined nexus files

In the case where there is incorrect information in the rawfile which has been generated we can populate detector and spectra information from a nexus file. The creation of these files is defined below

For example the specific MERLIN population information is contained in the file

MERLIN/setup_merlin_data_source.m

This script defines the nexus files which are required for population of the IXTrunfile object which in turn the .spe file is produced from.

To define files used to populate the IXTdetector and IXTspectra objects we can add the following two lines to this file:

DSO=add_item(DSO,'inst_nxs:::merlin_detector.nxs','detector');
DSO=add_item(DSO,'inst_nxs:::merlin_spectra.nxs','spectra');

These files are not distributed with the libisis package as they can change. The 'inst_nxs:::' path is a standard definition which is specified in the inst_defs.m file or in the Instrument setup

using a reference file built from a detector.dat information

it is possible to generate detector information from the files specified to create detector.dat files, these contain extra information about the IXTgeometry, IXTshape, [[IXTtranslation] and IXTorientation of the detectors.

It is first necessary to build a reference detector file

Creating populated nexus files

Populate an IXTrunfile from a raw file containing the correct values and enough detectors to include all those used by the mapping you have chosen - ie if you have an IXTrunfile which has been populated by the 'mon' command then it will not contain enough detector information. then you make the matlab command

>> write_nxs(your_runfile.inst.detector,'mydetectorfile.nxs')
>> write_nxs(your_runfile.inst.spectra,'myspectrafile.nxs')

these files can then be used in the lines above to populate the IXTrunfile object provided they are placed in the inst_nxs::: path