The rewrite of the analysis codes was undertaken for a variety of reasons including:
- Provide a consistent framework for event processing.
- Take advantage of C++ features.
- Enable the inclusion of ROOT as a post experimental processing tool.
- Provide a route for adding new detector and or features that do not require alterations significant portions of the code.
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 100MHz 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.
A schematic data analysis flow chart is shown in the *** file located in the manual directory of the pixie16 analysis code.
For each buffer that is collected (from either a ldf file or an online source) the SCAN routine invokes the hissub_()
function. The hissub_()
, 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.
Scan_List() 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 process_event() function of the detector_driver
class the rawevent
is processed. Each channel is checked against its threshold value read in during initialization from cal.txt and calibrated using the function threshandcal(). The threshandcal() function 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 plotraw() and plotcal() functions using the DAMM spectra numbers read in from map.txt. 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.