This groups is used to store various tags for the CSI hits group. This includes tags for CSI blocks hit by (recoil and MPS) or (TCYL and MPS) tracks.
typedef struct { int32 nhits; uint32 tags[1]; } csi_tags_t;
tagCsi_doTrack()
tagCsi_doEvent()
tagCsi_getEnergy()
TagCSI-track_phidiff
TagCSI-track_zdiff
TagCSI-MPStrack_phidiff
TagCSI-MPStrack_rhodiff
This group is created to store information about CSI blocks that are hit by the recoil particles as well as the mps tracks. This peice of code could be used for both the (0-X-X)Y as well as the (1-X-X)Y trigger topologies, where X and Y are number of hits in tpx1, tpx2, and number of gammas or reconstructed pi0's and eta's in the lgd.
To get the CSI energy associated with the recoil and mps particles, one can use
the tagCsi_getEnergy(...)
function. This function
returns the total energy in the CSI, the tagged energy (associated with the recoil particle
and the mps tracks) and untagged energy (not associated with the recoil or the mps tracks).
To (re)create this group, the tagCsi_doEvent(void *event,int eventLength)
function should be called. It takes two arguments: the pointer to the event buffer and
the length of the event buffer.
This function creates an empty GROUP_CSI_TAGS group and fills it by calling the
tagCsi_doEvent()
function for each (tcyl and mps) track found
in the GROUP_GEO_TRACKS group for the (1-X-X)Y trigger topology data, and for
(the recoil and each mps) track found in the GROUP_GEO_TRACKS group for the
(0-X-X)Y trigger topology data.
The tagCsi_doTrack(itape_header_t *event,
const int charge, const uint32 track_type,
vector3_t* v, vector3_t* p,const csi_hits_t* hits,
csi_tags_t* tags)
function takes:
the pointer to the event buffer event
,
the charge of the particle (for neutral and charged recoil, and mps tracks)charge
,
the track type (recoil, tcyl, mps)track_type
,
the pointer to the track starting point v
,
the pointer to it's momentum vector p
,
the pointer to the CSI hits group hits
and
the pointer to the tags group to be filled tags
.
More information about CSI tagging routines is available here.
For both the neutral and charged recoil tracks, the function extrapolates the track into the middle of the CSI blocks from the hits group, and sets the tag bits for all the hits that are "close" to the track.
In the case of a neutral recoil, the vertex position is used as the starting position, and the RECOIL track is used for the direction of track.
In the case of a charged recoil, the vertex position is used as the starting point of the track and the TCYL track is used for the direction of the track. A loop is performed over all TCYL tracks put on the vertex for a given event.
In the case of mps tracks, the vertex position is used as the starting point of the track and the MPS track is used for the direction of the track. A loop is performed over all MPS tracks in an event.
For a neutral recoil, a hit is defined as being "close" to the track if it satisfies the phi requirements. The phi requirement follows from the correlation between the phi of the RECOIL track and the phi at the middle of the CSI blocks hit, shown on the plot below.
The peak in the middle of the histogram corresponds to the CSI blocks that are hit by RECOIL track.
CSI blocks are selected for tagging by using the cut:
-50 < (deltaphi(deg)) < 50
No Z requirement was imposed since as is clear from the following histogram, in the absence of haviong a better resolution in measuring the Z component of the momentum of the RECOIL, no correlation between the z of the RECOIL track and the z at the middle of the CSI blocks hit exits.
For a charged recoil, a hit is defined as being "close" to the track if it satisfies the phi requirements. The phi requirement follows from the correlation between the phi of the TCYL tracks and the phi at the middle of the CSI blocks hit, shown on the plot below.
The peak in the middle of the histogram corresponds to the CSI blocks that are hit by TCYL tracks.
CSI blocks are selected for tagging by using the cut:
-14 < (delta_Phi(deg)) < 14
The Z requirement for hits that meet the phi requirement follows from the correlation between the Z of the TCYL tracks and the Z(in the mps system) at the middle of the CSI blocks hit. This is shown on the plot below.
The peak in the middle of the histogram corresponds to the CSI blocks that are hit by TCYL tracks.
CSI blocks are selected for tagging by using the cut:
-16< (delta_Z(cm)) < 16
For both the charged and the neutral recoil, the mps tracks (if any) are also tracked to the middle (z) of the csi blocks hit. This is accomplished by swimming the MPS tracks to the closest csi hit in the z direction and from there to the end of the z defined by the physical geometry of CIB, with increments of one block at a time. A hit is defined as being "close" to the MPS track if it satisfies the phi requirements. The phi requirement follows from the correlation between the phi of the MPS tracks and the phi at the middle of the CSI blocks hit, shown on the plot below.
The peak in the middle of the histogram corresponds to the CSI blocks that are hit by MPS tracks. CSI blocks are selected for tagging by using the cut:
-20 < (delta_Phi(deg)) < 20
The Rho (radial distance from the center of the CSI in the CSI system) requirement for hits that meet the phi requirement follows from the correlation between the Rho of the MPS tracks and the inner Rho of the CSI blocks hit. This is shown on the same plot. Ideally, all the hits for which delta rho is less than or equal to zero correspond to the CSI blocks that are hit by MPS tracks.
CSI blocks are selected for tagging by using the cut:
(deltaRho(cm)) < 2.5
Here is the same plot for another trigger (0-2-2)0g.
Any track, including the missing momentum, can be used to tag the CSI blocks.
To do this, the user has to call the tagCsi_doTrack(...)
function by hand. In this case, the user has to give the function
the track position and momentum as close as possible to the
intersection point between the CSI barrel and the track.
nhits:
same as nhits
in GROUP_CSI_HITS
tags[i]:
bitmapped:
The tagCsi.h header file defines a couple of useful macros for all the tag bits
and a couple of macros to test the tagging patterns, for example, the following code sequence
should be used to calculate the tagged and untagged energy:
The CSI hits tagged by this group are shown in the event display program in a different color.