Correlation Package for Sunsort

Relies on: Coord, Vector, Reaction, Event-struct, RP
C include file: evsubs.h
FORTRAN include files: subs.i and evsubs.i

Strictly speaking the RP package isn't necessary, but use of the correlation package requires resonant particles and the easiest way to generate them is with the RP package.

This package generates angular correlations for the breakup of particles in a variety of coordinate sets.

Coordinate sets

There are three coordinate sets used by this package. In each coordinate set, theta* and phi* give the direction of travel of the resonant particle in the centre of mass frame of the reaction and psi and chi give the direction of travel of the light ion in the centre of mass frame of the resonant particle (or if you prefer, the direction from the heavy particle to the light particle).

Polar coordinates

This coordinate set has the Z axis aligned with the beam axis. If you are doing an experiment with two detector groups - one each side of the beam - then it's usual to nominate the line connecting the two groups as the X axis.

All other packages use only the polar coordinate set.

Axial coordinates

This is a rotation of the polar coordinate set. The beam axis is now the X axis and the line connecting two detector groups is the Y axis. This is axial(x,y,z) = polar(z,x,y).

Basel coordinates

This is a rotation of the axial coordinate set around the beam (X) axis. The rotation is on an event by event basis and is chosen so that theta* is 90 degrees.

Data structure

The information from the correlations is held in the following data structure:

	struct correlation {
	    struct vector vrel;
	    struct vector p_li;
	    struct vector p_hi;
	    struct vector p_vrp;
	};
      

where vrel is the relative velocity of the two breakup particles, p_li, p_hi are the momenta of the breakup particles in the lab frame and p_vrp is the momentum of the resonant particle in the centre of mass frame of the reaction.

In the C routines, you pass a pointer to one of these structures to the correlation routines and they fill it in. In the FORTRAN routines, you don't pass the structure, instead the values are held in memory and you can use other routines to query the values.

In C, for convenience, the following macros are defined:

	#define corr_ths(x) (vector_td(x.p_vrp))
	#define corr_phis(x) (vector_pd(x.p_vrp))
	#define corr_psi(x) (vector_td(x.vrel))
	#define corr_chi(x) (vector_pd(x.vrel))
      

these extract theta*, phi*, psi and chi out of one of these structures in degrees.

Routines

void corr_polar(struct correlation *tp, particle *vrp)
subroutine corr_polar(integer vrp)

This routine calculates the correlation in the polar coordinate set.

void corr_axial(struct correlation *tp, particle *vrp)
subroutine corr_axial(integer vrp)

This routine calculates the correlation in the axial coordinate set.

void corr_basel(struct correlation *tp, particle *vrp)
subroutine corr_basel(integer vrp)

This routine calculates the correlation in the basel coordinate set.

Fortran routines

For each of the 4 vectors vrel, p_li, p_hi and p_vrp and for each of the quantities handled by the vector package, namely x, y, z, r, r2, t, p, td, pd, tx, ty, txd and tyd, there is a double precision function corr_x_y to return the quantity, where x is the name of the vector and y is the name of the variable.

To save typing, the four parameters theta*, phi*, psi and chi may be accessed with the four double precision functions corr_ths, corr_phis, corr_psi and corr_chi.


Steven M. Singer
Last modified: Thu Sep 30 20:39:47 BST 1999