Tracking Information

Variable 
Type 
Range 
Packing 
Size in DB 
Description 
TrkQual>nDof() 
Int 
0>255 
Integer 
1 byte 
number of degrees of freedom of the trackfit 
TrkQual>prob() 
Float 
0>1 
N/A 
N/A 
Probability of the chisquared of the track fit.
Not stored directly in the database  calculated from other, stored quantities. 
TrkQual>chi2() 
Float 
0>1000 
Logarithmic 
2 bytes 
Chisquared of the track fit 
TrkQual>trackLength() 
Float 
0>100 
Logarithmic 
1 byte 
Track length (cm) from the first to the last hit 
TrkQual>startFoundRange() 
Float 
0>100 
Logarithmic 
1 byte 
Track length (cm) from origin to the first hit 
TrkQual>nSvtHits() 
Int 
0>15 
Integer 
4 bits 
The number of z and phi hits in the SVT that are
on this candidate's track. Each of the SVT's 5 layers provides both z
and phi information. It is possible to have more than 10 hits (5 phi +
5z) due to low transversemomentum charged tracks which can curl up in
the detector. FYI, a track with Pt=0.1 GeV will make it to the outer edge
of the SVTDCH interface. 
TrkQual>SvtPattern() 
Int 
0>1023 
Integer 
10 bits 
The 10 bits of the word correspond to whether one
of the 10 views of the SVT registered a hit for this candidate:
Layer 5 zview = Most Significant Bit
Layer 4 zview
Layer 3 zview
Layer 2 zview
Layer 1 zview
Layer 5 r/phiview
Layer 4 r/phiview
Layer 3 r/phiview
Layer 2 r/phiview
Layer 1 rphiview = Least Significant Bit


TrkQual>SvtOn(int layer) 
Bool 
True/False 
Integer 
1 bit each for 10 layers 
True if this candidate has a SVT hit on track for
the given layer. Each of the 5 SVT layers contains both r and phi
info:
Layers 0>4 represent rphi hits on the 5 layers, with 0 denoting the
innermost layer.
Layers 5>9 represent z hits on the 5 layers, with 5 denoting the innermost
layer. 
TrkQual>firstDchHit() 
Int 
0>255 
Integer 
1 byte 
Innermost layer of the DCH registering a hit associated
with this charged candidate's track. There are 40 layers in the Drift Chamber. 
TrkQual>lastDchHit() 
Int 
0>255 
Integer 
1 byte 
Outermost layer of the DCH registering a hit associated
with this candidate's track. There are 40 layers in the Drift Chamber. 
TrkQual>nDchHits() 
Int 
0>255 
Integer 
1 byte 
Number of DCH layers registering hits associated
with this candidate's track. There are 40 layers in the Drift Chamber.
Due to low transversemomentum tracks which can curl up in the detector,
this number can be greater than 40. 
TrkQual>pidHypo() 
Int 
0>7 
Integer 
3 bits 
Particle Hypothesis used while fitting the track
(i.e. what mass was used). The mapping is as follows:
0= electron
1= muon
2= pion
3= kaon
4= proton 
TrkQual>fitStatus() 
Bool 
True/False 
Integer 
1 bit 
Status of the Track Fit 
Particle Identification Quality

Variable 
Type 
Range 
Packing 
Size in DB 
Description 
PidQual>dEdXSvt() 
Float 
0>100 
Logarithmic 
1 byte 
dE/dx (arbitrary units) determined from the SVT hits 
PidQual>nSamplesDeDxSvt() 
Int 
0>255 
Integer 
1 byte 
# of samples in the SVT used to calculate dEdXSvt() 
PidQual>dEdXDch() 
Float 
0>1000 
Logarithmic 
1 byte 
dE/dX (arbitrary units) for determined from the Dch
hits 
PidQual>nSamplesDeDxDch() 
Int 
0>255 
Integer 
1 byte 
# of samples in the DCH used to calculate dEdXDch() 
PidQual>deltaDchMomentum() 
Float 
100>0
MeV 
Logarithmic 
1 byte 
Candidate's momentum at the entrance of the Drift Chamber minus
the momentum at the origin. 
PidQual>deltaDrcMomentum() 
Float 
100>0
MeV 
Logarithmic 
1 byte 
Candidate's momentum at the entrance of the DIRC minus
the momentum at the origin. 
PidQual>drcInBar() 
Int 
0143 
Integer 
1 byte 
ID of the bar the candidate enters first. 0 marks the bar
at the top center of the detector. The rest of the bars are numbered in
ascending order, following positive righthanded rotation around the
electron beam. Note that the number 0 is also stored when the track
does not go into the DIRC fiducial volume. Watch for confusion with
the actual bar 0!

PidQual>drcExitBar() 
Int 
03 
Integer 
2 bits 
ID number of the bar the candidate exits the DIRC from, relative to the
bar the candidate first enters.
0: Exit Bar= Entry Bar
1: Exit Bar= Entry Bar + 1
2: Exit Bar= Entry Bar  1
3: Greater than 1 bar of displacement

PidQual>drcXPos() 
Double 
2 > +2 cm 
Integer 
6 bits 
x position where the candidate first
enters the "inBar," relative to the center of the bar.
(halfwidth of bar is actually 1.85 cm) 
PidQual>thetaC() 
Float 
0>1
radian 
Flat 
2 bytes 
The opening angle of the Cerenkov ring emitted by
the charged candidate. 
PidQual>thetaCErr() 
Float 
0>1
radian 
Logarithmic 
2 bytes 
Error on the opening angle of the Cerenkov ring. 
PidQual>ringNPhot() 
Int 
0>255 
Integer 
1 byte 
Measured number of signal photons in the Cerenkov ring fit
to the detected photons of this charged candidate. 
PidQual>ringNBkgd() 
Int 
0>255 
Integer 
1 byte 
Measured number of background photons in the Cerenkov ring fit
to the detected photons of this charged candidate. 
PidQual>ringNExPhot(const PdtEntry* p) 
Int 
0>255 
Integer 
1 byte each for the 5 hypothesis (5 bytes total) 
Number of photons expected to be associated with
a ring of this particle's momentum, given Particle ID Entry p. 
PidQual>phiAtEMC() 
Float 



phi of intercept of the track with the EMC 
PidQual>thetaAtEMC() 
Float 



theta of intercept of the track with the EMC 
Particle Identification Information 
Variable 
Type 
Range 
Packing 
Size in DB 
Description 
PidInfo>charge() 
Int 
1>+1 
Integer 
1 byte 
Charge of this candidate 
PidInfo>consistency(const PdtEntry* p, detectors det) 
Consistency 
0>1 
Logarithmic 
1 byte each for 5 detectors and 5 hypothesis (25 bytes total) 
Gives the consistency of a single detector's (
PidSystem::ifr,PidSystem::emc,PidSystem::drc,PidSystem::dch,
PidSystem::svt) information with a given particle hypothesis, p. 

Calormetric Information 
Variable 
Type 
Range 
Packing 
Size in DB 
Description 
CalQual>lateralMoment() 
Float 
0>1 
Logarithmic 
1 byte 
The lateral moment of the cluster associated with this track. Ratio of 1) to 2):
1) sum of energies of all but the 2 most energetic crystals, weighted
by the square of distance to the cluster center
2) Sum of 1) and the energies of the 2 most energetic cystals, which are weighted by r^2.
r is the length scale of a crystal, 5 cm. 
CalQual>absZernike42() 
Float 
0>1 
Logarithmic 
1 byte 
the absolute value of the complex Zernike(4,2) moment. 
CalQual>absZernike20() 
Float 
0>1 
Logarithmic 
1 byte 
the absolute value of the complex Zernike(2,0) moment. 
CalQual>s1s9() 
Float 
0>1 
Logarithmic 
1 byte 
For a cluster, the ratio of the sums of the energies
of the central crystal to the central 9 crystals surrounding the
centroid. 
CalQual>s9s25() 
Float 
0>1 
Logarithmic 
1 byte 
For a cluster, the ratio of the sums of the energies
of the central 9 crystals to the central 25 crystals surrounding the
centroid. 
CalQual>secondMomentTP() 
Float 
0>1 
Logarithmic 
1 byte 
The second moment, in thetaphi, of the cluster. 
CalQual>rawEnergy() 
Float 
0>50 
Logarithmic 
2 bytes 
Raw energy measured in EMC (GeV), after
digi calibration is applied, but with NO leakage corrections. 
CalQual>ecalEnergy() 
Float 
0>50 
Logarithmic 
2 bytes 
energy measured in EMC (GeV), after
digi calibration and leakage corrections are applied! 
CalQual>trkEmcMatchConsistency() 
Consistency 
0>1 
Logarithmic 
1 byte 
The consistency of the match between the charged
track and the EMC bump, assuming the (conservative) pion hypothesis. 
CalQual>nBumps() 
Int 
0>15 
Integer 
4 bits 
The number of bumps in the calorimeter associated
with this candidate. 
CalQual>nCrystals() 
Float 



The number of "hit" crystals for this bump. For a
crystal shared between bumps, a splitting algorithm is applied to
determine how much of its energy is given to each bump. Thus, it
is a float type. 
CalQual>centroid() 
HepPoint 
0>500
cm 
Logarithmic 
2 bytes each for 3 directions (6 bytes total) 
Centroid of the cluster/bump 
CalQual>covMat() 
HepSymMatrix 

Logarithmic 
2 bytes each for 4 entries (8 bytes total) 
4x4 covariance matrix (E,theta,phi,r) 
CalQual>neutPid() 
Int 
0>4 
Integer 
4 bits 
PID type with which the EMC and IFR quantities have been computed
(none = 1,gamma = 0,pi0= 1,K0L= 2, neutron = 3, anti_neutron = 4)

CalQual>isOk() 
Bool 
True/False 


returns true if the CalorObject (Cluster or Bump)
has no
dead or noisy Crystals in it. Also the Object is not in a ROM
which is
suffering from online dataflow damage or a noisy power supply.

CalQual>isNoisy() 
Bool 
True/False 


true if at least one crystal in the CalorObject is
noisy.

CalQual>isNearDead() 
Bool 
True/False 


true if at least one crystal in the CalorObject is
dead.

CalQual>isDamaged() 
Bool 
True/False 


true if at least one crystal in the CalorObject is in a
ReadOut Module that has online dataflow damage in that event.

CalQual>isFlickery() 
Bool 
True/False 


true if at least one crystal in the CalorObject
is in a ReadOut Module that has power supply noise (flicker). This is
worked out by measuring the occupancy of the ReadOut Module in the
event, and determining if it is over the following cuts:
ReadOut Module occupancy of digis with energy greater than 1MeV has
to be greater than or equal to 50% (barrel) and 100% (end cap)
(energetic bhabha's can
cause all the crystals in an endcap ReadOut Module to be on) 
CalQual>maxIsNoisy() 
Bool 
True/False 


true if any of the central 9 crystals of the
CalorObject (where center = highest energy crystal) is noisy.

CalQual>maxIsNearDead() 
Bool 
True/False 


true if any of the central 9 crystals of the
CalorObject is dead. 
CalQual>maxIsDamaged() 
Bool 
True/False 


true if any of the central 9 crystals of the
CalorObject is in a online dataflow damaged ReadOut Module. 
CalQual>maxIsFlickery() 
Bool 
True/False 


true if any of the central 9 crystals of the
CalorObject is in a flickery (flickery defined in description
of the isFlickery method, above) the ReadOut Module. 
Muon System Information 
Variable 
Type 
Range 
Packing 
Size in DB 
Description 
IfrQual>IfrNStrips() 
Int 
0>255 
Integer 
1 byte 
Number of "hit" strips associated with this candidate. 
IfrQual>nStrips(int layer) 
Int 
0>14 
Integer 
4 bits each for 21 layers and
4 bits for the barrell/endcap division (22x4 bits = 11 bytes) 
The number of strips hit in a given IFR layer.
Only the range 0>14 is physical. The one layer which returns 15
is a dummy (not physical) layer used to denote the barrelendcap
interface. Lower numbered layers are in the barrel, while higher
numbered layers are in the encap. The total number of strips in
both cylindrical RPC layers is stored in layer=0. 
IfrQual>IfrLayHits() 
Int 
0>20 
* see below 
* see below 
Number of "hit" layers in the IFR associated
with this candidate. If there are hits in both layers of the
cylindrical RPC it is counted as one layer in this total. 
IfrQual>firstHit() 
Int 
1>20 
* see below 
* see below 
Number of the innermost IFR layer with a hit
associated with this candidate. (1 = cylindrical layer) 
IfrQual>lastHit() 
Int 
1>20 
* see below 
* see below 
Number of the outermost IFR layer with a hit
associated with this candidate. (1 = cylindrical layer) 
IfrQual>hasInner() 
Bool 
True/False 
* see below 
* see below 
True when candidate has a hit in the "inner" 2layer
cylindrical layers. 
IfrQual>hasBarrel() 
Bool 
True/False 
* see below 
* see below 
True when candidate has a hit in the "outer" 19layer
barrel region of IFR 
IfrQual>lastBarrel() 
Int 
0>20 
* see below 
* see below 
The number of the last barrel layer hit in the IFR. 
IfrQual>hasFWD() 
Bool 
True/False 
* see below 
* see below 
True when candidate has a hit in the 18layer forward
encap of IFR 
IfrQual>hasBWD() 
Bool 
True/False 
* see below 
* see below 
True when candidate has a hit in the 18layer backward
encap of IFR 
IfrQual>expectedInteractionLengths() 
Float 
0>10 
Logarithmic 
1 byte 
The swimmer calculates the number of interaction lengths
to the last active RPC chamber along the trajectory of the track. This is a
calculation independent of the chambers actually hit. 
IfrQual>measuredInteractionLengths() 
Float 
0>10 
Logarithmic 
1 byte 
Number of interactions lengths through which the
candidate's path travels. Dominated by DRC, EMC, and IFR because of their
high densisty. Caculated by a "swimmer." 
IfrQual>interactionLengthsBeforeIron() 
Float 
0>10 
Logarithmic 
1 byte 
Number of interactions lengths traversed by a candidate,
not including the IFR iron. Again, using a "swimmer." 
IfrQual>IfrTrkMatchChi2() 
Float 
0>50 
Logarithmic 
1 byte 
This is the sum of the squares of the residuals
(in both readout perpendicular views) of the measured hit positions w.r.t.
the swum track, exrapolated from the DCH. The
chisquared is then normalized to the number of degrees of freedom.

IfrQual>IfrEmcMatch() 
Float 
0>1000 
Logarithmic 
1 byte 
Numbering indicating the consistency of the IFR hits
with the EMC bumps/clusters of this track.. 
IfrQual>clusterFitChi2() 
Float 
 

For a candidate's IFR cluster, the individual strips
for each view are extracted. In each of the 2 perpendicular views,
the coordinates of the strips are fit to a second order polynomial.
The chisquare of these two fits are then summed to produce this number.
This quantity is thus independent of tracking.

* The IfrQual quantities marked with this asterisk
are not actually stored in the database. They are calculated from
IfrQual>nStrips(int layer).
