<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body bgcolor="#ffffff" text="#000000">
Hi,<br>
the following are descriptions, including EVIO output bank structures,
of the SOT (author Sebouh Paul) services.<br>
Regards,<br>
Vardan<br>
<h2>ClusterFinderService</h2>
<p>A service for finding clusters among hits in the Clas12 Drift
Chambers. A cluster is defined as a set of hits in the same sector and
superlayer of the driftchamber whose wire indices form a contiguous set
and contains hits in at least 5 layers in the superlayer. After these
clusters are found, any hits in these clusters that do not have a
neighboring hit in another nearby layer are rejected, and then clusters
may be split accordingly, or rejected. </p>
<p> All of the public fields in this service engine are configurable.
The distances are in meters and the angles are in radians. <br>
Evio output format: </p>
<table>
  <tbody>
    <tr>
      <td>name</td>
      <td> tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>DC_CLUSTER</td>
      <td>510</td>
      <td>0</td>
    </tr>
    <tr>
      <td>DC_CLUSTER_digitized_output</td>
      <td>510</td>
      <td>0.100</td>
    </tr>
    <tr>
      <td>ID</td>
      <td>510</td>
      <td>0.100.1</td>
    </tr>
    <tr>
      <td>sector</td>
      <td>510</td>
      <td>0.100.2</td>
    </tr>
    <tr>
      <td>SuperLayer</td>
      <td>510</td>
      <td>0.100.3</td>
    </tr>
    <tr>
      <td>Layer</td>
      <td>510</td>
      <td>0.100.4</td>
    </tr>
    <tr>
      <td>Wire</td>
      <td>510</td>
      <td>0.100.5</td>
    </tr>
    <tr>
      <td>DC_CLUSTER_raw_output</td>
      <td>510</td>
      <td>0.200</td>
    </tr>
    <tr>
      <td>dtime</td>
      <td>510</td>
      <td>0.200.1</td>
    </tr>
  </tbody>
</table>
<br>
<br>
*ID, sector, SuperLayer, Layer, and Wire contain arrays of integers.
the first element of each one of these arrays describes the first hit,
etc. Hits with the same ID belong to the same cluster. No hit belongs
to more than one cluster. All of these numbers are indexed starting at
1, not zero. For instance, if Superlayer[0] = 1, then the first
(zeroeth) hit is in the first superlayer (the one closest to the
target). <br>
**dtime is the drift time of the hit in seconds.<br>
<br>
<h2>RoadsInClusters</h2>
Takes the clusters and finds a consistent set of 5 or 6 hits (one per
layer, with a tolerance of one missing layer) among them.
<p> All of the public fields in this service engine are configurable.
Any distances are in meters and any angles are in radians. <br>
Evio output format: </p>
<table>
  <tbody>
    <tr>
      <td>name</td>
      <td> tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>DC_SEGMENT</td>
      <td>520</td>
      <td>0</td>
    </tr>
    <tr>
      <td>DC_SEGMENT_digitized_output</td>
      <td>520</td>
      <td>0.100</td>
    </tr>
    <tr>
      <td>ID</td>
      <td>520</td>
      <td>0.100.1</td>
    </tr>
    <tr>
      <td>sector</td>
      <td>520</td>
      <td>0.100.2</td>
    </tr>
    <tr>
      <td>SuperLayer</td>
      <td>520</td>
      <td>0.100.3</td>
    </tr>
    <tr>
      <td>Layer</td>
      <td>520</td>
      <td>0.100.4</td>
    </tr>
    <tr>
      <td>Wire</td>
      <td>520</td>
      <td>0.100.5</td>
    </tr>
    <tr>
      <td>LeftRight</td>
      <td>520</td>
      <td>0.100.6</td>
    </tr>
    <tr>
      <td>DC_SEGMENT_raw_output</td>
      <td>520</td>
      <td>0.200</td>
    </tr>
    <tr>
      <td>dtime</td>
      <td>520</td>
      <td>0.200.1</td>
    </tr>
  </tbody>
</table>
<br>
<br>
*ID, sector, SuperLayer, Layer, and Wire contain arrays of integers.
The first element of each one of these arrays describes the first hit,
etc. Hits with the same ID belong to the same cluster. No hit belongs
to more than one cluster. All of these numbers are indexed starting at
1, not zero. For instance, if Superlayer[0] = 1, then the first
(zeroeth) hit is in the first superlayer (the one closest to the
target). LeftRight determines whether the particle went to the left or
to the right of the particle's trajectory. <br>
**dtime is the drift time of the hit in seconds.
<br>
<h2>TrackCandidateFindingService</h2>
<br>
<p>This is service for linking region segments in the driftchamber into
track candidates. * </p>
<p> All of the public fields in this service engine are configurable.
Any distances are in meters and any angles are in radians. <br>
Evio Output Banks:
</p>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>DC_TCANDIDATE </td>
      <td>540 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>DC_TCANDIDATE_digitized_output </td>
      <td>540 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>ID </td>
      <td>540 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>qf </td>
      <td>540 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>sector </td>
      <td>540 </td>
      <td>0.100.3 </td>
    </tr>
    <tr>
      <td>SuperLayer </td>
      <td>540 </td>
      <td>0.100.4 </td>
    </tr>
    <tr>
      <td>Layer </td>
      <td>540 </td>
      <td>0.100.5 </td>
    </tr>
    <tr>
      <td>Wire </td>
      <td>540 </td>
      <td>0.100.6 </td>
    </tr>
    <tr>
      <td>LeftRight </td>
      <td>540 </td>
      <td>0.100.7 </td>
    </tr>
    <tr>
      <td>DC_TCANDIDATE_raw_output </td>
      <td>540 </td>
      <td>0.200 </td>
    </tr>
    <tr>
      <td>dtime </td>
      <td>540 </td>
      <td>0.200.1 </td>
    </tr>
  </tbody>
</table>
<br>
<br>
*ID, sector, SuperLayer, Layer, and Wire contain arrays of integers.
the first element of each one of these arrays describes the first hit,
etc. Hits with the same ID belong to the same region segment. No hit
belongs to more than one cluster. All of these numbers are indexed
starting at 1, not zero. For instance, if Superlayer[0] = 1, then the
first (zeroeth) hit is in the first superlayer (the one closest to the
target). <br>
**dtime is the drift time of the hit in seconds.
<br>
<h2>FSThitsToTrackSegments</h2>
<br>
<p>Finds FST segments (groups of 6 hits in the forward svt) among the
FST hits. </p>
<p> All of the public fields in this service engine are configurable.
The distances are in meters and the angles are in radians. </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>FST_SEGMENTS </td>
      <td>412 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>FST_SEGMENTS_digitized </td>
      <td>412 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>layer </td>
      <td>412 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>sector </td>
      <td>412 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>wire </td>
      <td>412 </td>
      <td>0.100.3 </td>
    </tr>
    <tr>
      <td>id </td>
      <td>412 </td>
      <td>0.100.4 </td>
    </tr>
  </tbody>
</table>
<br>
*layer, sector and wire represent the layer, sector and wire of the
hits. hits with the same id belong to the same segment
<br>
<h2>KalmanFilterService</h2>
<br>
<p>Runs a kalman filter on the DC track candidates. If there are FST
segments found, then the algorithm attempts to match the DC track
candidate with the FST segment. </p>
<p> The configurable parameters of this service are the fields in the
class <a href="cid:part1.00090906.03000507@jlab.org"
 title="class in org.sot.forwardTracking"><code>ParamsKF_F</code></a>.
When configuring this service, use the name of the field as the name of
the parameter, and for the type, use the type of the parameter (double,
int, etc.) </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>FORWARD_TRACK_PARAM </td>
      <td>550 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>FORWARD_TRACK_PARAM_digitized_output </td>
      <td>550 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>dc_id </td>
      <td>550 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>svt_id </td>
      <td>550 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>charge </td>
      <td>550 </td>
      <td>0.100.3 </td>
    </tr>
    <tr>
      <td>FORWARD_TRACK_PARAM_raw_output </td>
      <td>550 </td>
      <td>0.200 </td>
    </tr>
    <tr>
      <td>px </td>
      <td>550 </td>
      <td>0.200.1 </td>
    </tr>
    <tr>
      <td>py </td>
      <td>550 </td>
      <td>0.200.2 </td>
    </tr>
    <tr>
      <td>pz </td>
      <td>550 </td>
      <td>0.200.3 </td>
    </tr>
    <tr>
      <td>x </td>
      <td>550 </td>
      <td>0.200.4 </td>
    </tr>
    <tr>
      <td>y </td>
      <td>550 </td>
      <td>0.200.5 </td>
    </tr>
    <tr>
      <td>z </td>
      <td>550 </td>
      <td>0.200.6 </td>
    </tr>
    <tr>
      <td>pathlength</td>
      <td>550 </td>
      <td>0.200.7 </td>
    </tr>
  </tbody>
</table>
<br>
*Each of the leaf banks contain an array of ints or doubles. The ith
element of all of the arrays represent attributes of the ith track. The
tracks in the output are in the same order as the track candidates in
bank 540 in the input of this service. x, y, z are a point along the
track. px, py, pz are the momenta of the particle that had made the
track at that point. dc_id is the id number of the track (to be
consistent with bank 530 (DC_TRACK_CANDIDATES) in the input of this
service. svt_id is the id number of the associated svt track segment,
consistent with bank 412 (FST_SEGMENTS) in the input, or -1 if there is
no associated svt track segment for the given dc track candidate.
Charge is the charge of the particle, or zero if there was an error in
the KF process. pathlength is the distance along the track from the DC
hit furthest from the target, to the target itself.
<br>
<h2>AssociateFTOF</h2>
<br>
<p>Extrapolates the DC tracks towards the FTOF and attempts to
associate each DC track with a hit on the FTOF. </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>ASSOC_FTOF </td>
      <td>71 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>ASSOC_FTOF_digitized_output </td>
      <td>71 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>matched </td>
      <td>71 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>panel </td>
      <td>71 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>sector </td>
      <td>71 </td>
      <td>0.100.20 </td>
    </tr>
    <tr>
      <td>paddle </td>
      <td>71 </td>
      <td>0.100.21 </td>
    </tr>
    <tr>
      <td>adcLeft </td>
      <td>71 </td>
      <td>0.100.22 </td>
    </tr>
    <tr>
      <td>adcRight </td>
      <td>71 </td>
      <td>0.100.23 </td>
    </tr>
    <tr>
      <td>tdcLeft </td>
      <td>71 </td>
      <td>0.100.24 </td>
    </tr>
    <tr>
      <td>tdcRight </td>
      <td>71 </td>
      <td>0.100.25 </td>
    </tr>
    <tr>
      <td>ASSOC_FTOF_raw_output </td>
      <td>71 </td>
      <td>0.200 </td>
    </tr>
    <tr>
      <td>dist </td>
      <td>71 </td>
      <td>0.200.1 </td>
    </tr>
    <tr>
      <td>time</td>
      <td>71 </td>
      <td>0.200.2 </td>
    </tr>
  </tbody>
</table>
<br>
*Each entry in the arrays of ints and doubles in the output represent
one of the tracks from the DC. matched is 1 if the DC track was matched
to an FTOF hit, else zero. Panel tells which FTOF panel the associated
hit is on (60 = 1A; 70 = 1B; 80 = 2B). Sector, paddle, adc/tdc
left/right are all attributes of the hit. dist is the distance along
the extrapolated DC track from the DC to the FTOF hit. The bank "time"
represents the time that the particle actually hit the FTOF.
<p></p>
<p></p>
<br>
<h2>ParticleIDService</h2>
<br>
<p>Estimates the mass of the particles using the pathlengths, charge
and momenta from the output of the Kalman Filter and the time of flight
from the FTOF. </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>PARTICLE_ID </td>
      <td>72 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>PARTICLE_ID_digitized_output </td>
      <td>72 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>pid </td>
      <td>72 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>PARTICLE_ID_raw_output </td>
      <td>72 </td>
      <td>0.200 </td>
    </tr>
    <tr>
      <td>mass_estimate </td>
      <td>72 </td>
      <td>0.200.1 </td>
    </tr>
  </tbody>
</table>
<br>
*pid is an array of the pdg numbers of each of the particles that
passed through the detector. This array is in the same order as the
arrays of track parameters from the Kalman Filter service <br>
2122 = proton <br>
221 = pi+ <br>
321 = K+ <br>
-221 = pi- <br>
-321 = K- <br>
** mass_estimate is an array of the estimates of the masses of the
particles in GeV, in the same order as the arrays in the input
<p></p>
<p></p>
<br>
<h2>FindInterBST</h2>
<br>
<p>Finds intersecting pairs of BST hits (herein refered to
intersections) </p>
<h3>Output Evio Banks</h3>
<td?0.200></td?0.200>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>BST_INTERSECTIONS </td>
      <td>401 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>BST_INTERSECTIONS_digitized_output </td>
      <td>401 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>Layer </td>
      <td>401 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>Sector </td>
      <td>401 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>Strip1 </td>
      <td>401 </td>
      <td>0.100.3 </td>
    </tr>
    <tr>
      <td>Strip2 </td>
      <td>401 </td>
      <td>0.100.4 </td>
    </tr>
    <tr>
      <td>BST_INTERSECTIONS_raw_output</td>
      <td>401 </td>
    </tr>
    <tr>
      <td>x </td>
      <td>401 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>y </td>
      <td>401 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>z </td>
      <td>401 </td>
      <td>0.100.3 </td>
    </tr>
  </tbody>
</table>
<br>
*Layer, Sector, Strip1 and Strip2 respectively represent the superlayer
number, sector number of the intersection, and the strip numbers of the
first and second hit in the intersection. X, y, and z represent the
estimated position where the particle hit the first strip in the
intersection
<br>
<h2>LinkIntersectionsBST</h2>
<br>
<p>Links intersections together into BST track candidates: Each
candidate contains one hit from each layer of the BST. </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>BST_CANDIDATES </td>
      <td>402 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>BST_CANDIDATES_digitized_output </td>
      <td>402 </td>
      <td>0.100 </td>
    </tr>
    <tr>
      <td>Layer </td>
      <td>402 </td>
      <td>0.100.1 </td>
    </tr>
    <tr>
      <td>Sector </td>
      <td>402 </td>
      <td>0.100.2 </td>
    </tr>
    <tr>
      <td>Strip1 </td>
      <td>402 </td>
      <td>0.100.3 </td>
    </tr>
    <tr>
      <td>Strip2 </td>
      <td>402 </td>
      <td>0.100.4 </td>
    </tr>
  </tbody>
</table>
<br>
*Layer, Sector, Strip1 and Strip2 respectively represent the superlayer
number, sector number of the intersection, and the strip numbers of the
first and second hit in the intersection. <br>
** Because the number of intersections per track candidate is fixed (at
3), the first three intersections belong to the first track candidate,
the next three to the second track candidate, etc.
<br>
<h2>RefitHelixBST</h2>
<br>
<p>Produces a more accurate estimate of the positions of the
intersections in a candidate. The output adds the following banks into
the output of <a href="cid:part2.01020402.05040104@jlab.org"
 title="class in org.sot.services.bst"><code>LinkIntersectionsBST</code></a>
</p>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>BST_INTERSECTIONS_raw_output</td>
      <td>402 </td>
      <td>0.200</td>
    </tr>
    <tr>
      <td>x </td>
      <td>402 </td>
      <td>0.200.1 </td>
    </tr>
    <tr>
      <td>y </td>
      <td>402 </td>
      <td>0.200.2 </td>
    </tr>
    <tr>
      <td>z </td>
      <td>402 </td>
      <td>0.200.3 </td>
    </tr>
  </tbody>
</table>
<br>
X, y, and z represent the estimated position where the particle hit the
first strip in the intersection
<br>
<h2>KalmanFilterServiceBST</h2>
<br>
<p>Runs a Kalman filter on the BST Track Candidates. * </p>
<h3>Output Evio Banks</h3>
<table>
  <tbody>
    <tr>
      <td>bank name </td>
      <td>tag</td>
      <td>num</td>
    </tr>
    <tr>
      <td>BST_TRACK_PARAM </td>
      <td>403 </td>
      <td>0 </td>
    </tr>
    <tr>
      <td>BST_TRACK_PARAM_raw_output </td>
      <td>403 </td>
      <td>0.200 </td>
    </tr>
    <tr>
      <td>px </td>
      <td>403 </td>
      <td>0.200.1 </td>
    </tr>
    <tr>
      <td>py </td>
      <td>403 </td>
      <td>0.200.2 </td>
    </tr>
    <tr>
      <td>pz </td>
      <td>403 </td>
      <td>0.200.3 </td>
    </tr>
    <tr>
      <td>x </td>
      <td>403 </td>
      <td>0.200.4 </td>
    </tr>
    <tr>
      <td>y </td>
      <td>403 </td>
      <td>0.200.5 </td>
    </tr>
    <tr>
      <td>z </td>
      <td>403 </td>
      <td>0.200.6 </td>
    </tr>
  </tbody>
</table>
<br>
<p>
</p>
<p></p>
<br>
</body>
</html>