Provided with Sunsort are a range of optional packages that you may choose to use to help you with your analysis. These packages are grouped together into groups which work together. Some packages within a group may rely on other packages within the same group. Each package description lists what other packages it needs to use. Some packages will only work from inside Sunsort, those will be marked as relying on Sunsort, packages not marked as relying on Sunsort may be called from stand-alone programs.
This group of package provides standardised ways of storing information about particles detected in an experiment, storing the parameters of an experiment and performing common kinematic manipulation of the particles. This package group is fairly easy to use and although it works well with the Hardware Group it works equally well on its own. It is recommended that new users learn to use this group before learning to use the Hardware Group.
You may find it useful to read the quick start guide to get a feel for the package.
The following packages are in this group:
This group of packages provides a sophisticated way of extracting the information about an event into an easy to process form. It is a little complicated to use, so new users should avoid this package group and instead concentrate on the Kinematics Group.
To use this group, users should use the Structure Package to define the setup of the experiment, then they should use the ADCs Package to attach parts of the structure to the ADC inputs, and finally use the Markhits Package to process events.
Although this is more complicated to learn than the standard method of processing events, I believe that for experiments with a large number of channels the benefits, both in terms of simplifying the user's code and in terms of faster event processing, are worth the steep learning curve.
Since the benefits only accrue when all three packages are used together it makes sense to give an overview of how they work with each other.
The user describes the structure of the experiment in terms of detectors. Each detector can, in turn, consist of other detectors. Finally, the base level detectors are described in terms of signals. So, for example, a user may have an experiment in which they used four silicon strip detectors, and two sheet detector-CsI telescopes. If the experiment was done with the Megha DA where every signal has an associated timing signal, then the user would describe the experiment as consisting of four strip detectors (pssd) and two telescopes where a strip detector consists of sixteen strips, a strip consists of four signals , a telescope consists of one sheet detector and one CsI detector, a sheet detector consists of ten signals and a CsI detector consists of two signals.
If this was an object-orientated language, which it isn't but which it resembles, the user has declared six classes: experiment; pssd; strip; telescope; sheet; and CsI. The user has declared several instances of each class: one of experiment; four of pssd; 64 of strip (16 for each pssd); two of telescope; two of sheet (one for each telescope); and two of CsI (one for each telescope). The user has also declared several signal classes and many instances of each signal class.
The user then uses the ADCs Package to associate each signal with an ADC. This differentiates the instances of each class. Finally the user uses the Markhits Package to apply gains, offsets and thresholds to the ADCs and to associate initialisation and event processing routines (methods) with each detector (class).
Once the setup is complete, the user can initialise the instances of each detector. Then, every event the user receives can be passed directly to the processing routine in the Markhits Package. Control is returned to the user's sort code when ADC processing is complete.
To use these routines, the user needs some when of reporting the data (particles found in the detectors) back to the sort code. This could be accomplished through a FORTRAN common block, or through C external variables, but it is recommended that the user use the Kinematics Group and, in particular, the Event-struct Package which is designed for this purpose.
There are several routines that do not fit into any group.