CODE STRUCTURE
These routines are in the e831code/src/driver library and the general user should never have to modify them, but only to link to the corresponding objects. The actions performed by these routines are controlled by flags which the user chooses in the code namelists. The main include file for all driver routines is drvflag.inc
Each data event is processed through three consecutive steps: unpacking, reconstruction and analysis, packing or transfer. If a fatal error is returned at any of the three steps, further processing for that event is aborted and a new event is read from the input stream.
Raw or reconstructed blocks can be unpacked by setting the corresponding flags in the namelist file.
Reconstruction (of PWC tracks, SSD vertices, VEEs etc.) is governed by the REC... flags. Note that if you ask for an object to be reconstructed (for example, you want SSD tracks), but the reconstruction program didn't find any in that event (in our example, numtra=0), a reconstruction error is returned (currently this feature works for some blocks but not for all....).
ANALYSIS is performed by the user routine usranal.sf, which is called at the end of drvanal.sf. Obviously, to analize information from a raw or reconstructed block you first need to unpack it and/or reconstruct it.
You can transfer raw or reconstructed blocks (by setting the flags RAW... or REC...), but you can pack out only reconstructed blocks (with the flags REC... ). If a block was requested to be transfered, but it was found to be empty, a packing error is returned and the block is NOT transfered.