Pixie16 Analysis Software Suite
Analysis code for processing of .ldf files
|
The code has managed to get to its next major revision. This has not been as extensive overhaul as was done with v2; however, there have still been significant changes done to the code. These changes have been necessary to keep the code useful and relevant to the current directions of the research group. Unfortunately, this has also caused the a break in backwards compatability with the previous versions of the map2.txt and cal.txt.
The rewrite of the analysis codes was undertaken for a variety of reasons including:
In the Pixie16 analysis the basic unit of information is the channel. For each channel that triggers the acquisition the channel identification, energy, time, and trace (if applicable) are grouped together and sorted according to the times at which they occur (based on the Pixie16 clock). The time sorted list of channels is then scanned and channels that fall within a certain time window are grouped together into events. The events are subsequently processed in two stages. The first stage operates channel by channel within the event and performs such operations as calibrations and raw parameter plotting and should not be altered. The second level of processing is the experiment specific event processing and includes such activities as correlations between implant events and decay events. This section section should be altered according to experimental need.
Below is the data analysis flow chart, it attempts to describe in general terms how the analysis proceeds. (needs revision).
For each buffer that is collected (from either a ldf file or an online source) the SCAN routine invokes the hissub_() function. The hissub_(), hissub_sec(), and ReadBuffData() functions serve to ultimately reconstruct a spill of Pixie16 data (i.e. a read of all Pixie16 modules) and sort the channels that triggered according to their times.
ScanList() is called on the time sorted event list to group channels with similar times into events, store these channels in the variable rawevent and pass them on for further processing.
In the function DetectorDriver::ProcessEvent(), the RawEvent is processed. Each channel is checked against its threshold value read in during initialization from the XML Based Configuration File and calibrated using ThreshAndCal(). The function ThreshAndCal() also keeps track of the multiplicities of different detector types and the maximum energy deposited into each detector type. The raw and calibrated energies are then plotted using the functions PlotRaw() and PlotCal() using the DAMM spectra numbers read in from the XML Based Configuration File. This is the end of general event processing and should not be altered between experiments.
The next step in the event processing is the experiment specific tasks and these will vary for different setups but include such tasks as determining correlations between decays and implants.
Once all event processing has finished various plotting routines are invoked for creating the DAMM spectra we all know and love.