Initial revision
This commit is contained in:
79
tricsnex.w
Normal file
79
tricsnex.w
Normal file
@@ -0,0 +1,79 @@
|
||||
\subsection{TRICS NeXus Data Files}
|
||||
This section describes the data file handling for the four circle
|
||||
diffractometer TRICS at SinQ. TRICS collects a lot of detector frames in
|
||||
time intervalls of days or weeks. The data writing scheme has to adress the
|
||||
issue, that the HDF routines cannot ensure that there is no data corruption
|
||||
when writing data files.
|
||||
|
||||
Thus the following scheme is implemented: With a special command, the user
|
||||
enforces a new file. At that time header information is written. After that
|
||||
the file is closed. With another command, the file is reopened and a frame
|
||||
is added to it. Each frame data group will hold a flag which decides if the
|
||||
frame is valid or not. After writing the frame, the file is closed again.
|
||||
This scheme minimises the danger of data corruption.
|
||||
|
||||
The current frame number is kept in a non NeXus standard field in the data file
|
||||
itself. This allows to reopen files and append data to it.
|
||||
|
||||
The interface to this object looks like this:
|
||||
|
||||
@d nxtrics @{
|
||||
typedef struct __NexTrics *pNexTrics;
|
||||
|
||||
/*----------------------------- live & death -----------------------------*/
|
||||
pNexTrics CreateNexTrics(pDataNumber pNum, char *pRoot, char *pDict,
|
||||
SicsInterp *pSics);
|
||||
void DeleteNexTrics(void *pData);
|
||||
|
||||
int NexTricsFactory(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
int argc, char *argv[]);
|
||||
/*----------------------------- interaction ------------------------------*/
|
||||
|
||||
int StartFile(pNexTrics self, SConnection *pCon);
|
||||
|
||||
int ReopenFile(pNexTrics self, char *filename);
|
||||
|
||||
int DumpFrame(pNexTrics self, SConnection *pCon);
|
||||
|
||||
int NexTricsAction(SConnection *pCon, SicsInterp *pSics, void *pData,
|
||||
int argc, char *argv[]);
|
||||
|
||||
@}
|
||||
|
||||
\begin{description}
|
||||
\item[CreateNexTrics] creates a new TRICS NeXus data file writing object.
|
||||
Parameters are a data number object for the automatic creation of file names
|
||||
and the directory name where the data files ought to live. The next
|
||||
parameter is the name of the NeXus dictionary file to use for writing.
|
||||
\item[DeleteNexTrics] deletes a NexTrics object. The last parameter is the
|
||||
name of the SICS interpreter to search for objects. NexTrics will maintain a
|
||||
cache of frequently used SICS objects for writing.
|
||||
\item[NexTricsFactory] is the interpreter wrapper function for the command
|
||||
to install the nexus data writing object for Trics into the system.
|
||||
\item[StartFile] will automatically create a new file and write the header
|
||||
information to it.
|
||||
\item[DumpFrame] will dump a frame worth of data to the file. Thereby
|
||||
reopening and closing it. This will be called for each detector shot, i.e.
|
||||
in the end three frames will be written when all three detectors have been
|
||||
installed at TRICS.
|
||||
\item[NexTricsAction] is the command interface to the TRICS NeXus data file
|
||||
writing object.
|
||||
\end{description}
|
||||
|
||||
@o nextrics.h @{
|
||||
/*----------------------------------------------------------------------------
|
||||
N E X T R I C S
|
||||
|
||||
An object for writing NeXus data files for the four ciclre diffractometer
|
||||
TRICS at PSI. Can be used as basis for writing files for other four
|
||||
circles equiped with a PSD as well.
|
||||
|
||||
copyright: see copyright.h
|
||||
|
||||
Mark Koennecke, April 1998
|
||||
------------------------------------------------------------------------------*/
|
||||
#ifndef NEXTRICS
|
||||
#define NEXTRICS
|
||||
@<nxtrics@>
|
||||
#endif
|
||||
@}
|
||||
Reference in New Issue
Block a user