Sunsort Sort Subroutines

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.

Kinematics Group

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:

Vector
This package provides a method of manipulating 3d vectors. It can only be directly accessed from C, but the user will rarely need to access it directly. Other packages in this group use this package in the background.
Coord
This package provides methods of converting hit positions on a detector to and from 3d vectors. Like the Vector Package, this can only be directly accessed from C, but the user will usually only need the indirect access provided by the other packages.
Reaction
This package provides a method of storing and retrieving parameters of the reaction being studied.
Event-struct
This package provides methods of storing and retrieving information about particles detected in a reaction in a standard way. These event structures can be manipulated using routines in other packages.
RP
This package provides methods of creating and manipulating resonant particles formed by combining two or more singles particles.
Correlation
This package can calculate the angular correlation of particle breakups in a number of coordinate sets.

Hardware 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.

Miscellaneous Packages

There are several routines that do not fit into any group.

Utility
This packages contains useful standard routines to help with checking data. The routines only look at the raw ADC lists, and are consequently safe for use with sort codes that don't use either of the package groups listed above.

Steven M. Singer
Last modified: Thu Sep 30 13:54:07 BST 1999