81 lines
2.3 KiB
C
81 lines
2.3 KiB
C
/*---------------------------------------------------------------------------
|
|
|
|
F o M e r g e
|
|
|
|
This module is for the FOCUS instrument. FOCUS has three detector
|
|
banks. These are sent to SICS as one big array by the histogram memory.
|
|
However, depending on the situation these need to be accessed either:
|
|
- as single banks.
|
|
- or as a merged bank, where detector counts from all three banks are
|
|
summed onto a common two theta scale.
|
|
|
|
This module is responsible for accessing single detectors and for doing
|
|
the merging operation.
|
|
|
|
|
|
Mark Koennecke, March 2000
|
|
---------------------------------------------------------------------------*/
|
|
#ifndef FOMERGE
|
|
#define FOMERGE
|
|
|
|
#define UPPER 1
|
|
#define MIDDLE 2
|
|
#define LOWER 3
|
|
#define MERGED 4
|
|
#define TIMEBIN 5
|
|
|
|
int setFMDataPointer(HistInt * lData, int timeBins, int bank);
|
|
/*
|
|
sets the data array with the unmerged data. timeBins is the
|
|
length of the time binning used. upper, medium and lower are flags
|
|
which indicate the presence of the detector bank.
|
|
*/
|
|
|
|
void setFMconfiguration(int upper, int medium, int lower);
|
|
/*
|
|
sets the configuration of the histogram memory
|
|
*/
|
|
|
|
HistInt *getFMBankPointer(int which);
|
|
/*
|
|
returns a pointer to the counted data for the detector bank
|
|
specified by which. Possible values are given above.
|
|
|
|
*/
|
|
float *getFMBankTheta(int which);
|
|
/*
|
|
returns a pointer to a float array with the two theta values for
|
|
the detector bank specified by which.
|
|
*/
|
|
|
|
int initializeFM(char *mergefile);
|
|
/*
|
|
initializes the two-theta and merging data from the file
|
|
mergefile. This must have been called before anything else.
|
|
*/
|
|
|
|
void killFM(void);
|
|
/*
|
|
frees all merging data structures.
|
|
*/
|
|
|
|
int getFMdim(int which);
|
|
/*
|
|
returns the dimension in two theta for the detector banks of
|
|
the length of the time binning if TIMEBIN has been specified.
|
|
*/
|
|
|
|
int InstallFocusMerge(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|
int argc, char *argv[]);
|
|
/*
|
|
install the standalone FocusMerge module
|
|
*/
|
|
int FocusMergeAction(SConnection * pCon, SicsInterp * pSics, void *pData,
|
|
int argc, char *argv[]);
|
|
|
|
/*
|
|
FocusMerge interpreter wrapper function
|
|
*/
|
|
|
|
#endif
|