R. Snider July 7, 1999 Silicon clustering module: SiClusteringModule ---------------------------------------------- Synopsis: The silicon clustering module, SiClusteringModule, analyzes the strip data from the silicon detectors and produces a set of strip clusters that represent charge deposited by a single particle as it traverses the silicon, and a set of hits that represent the position information inferred from the cluster profile. Required inputs: SVX strip data: SIXD bank ISL strip data: ISLD bank Calibration data: none currently required High-level interfaces: SiStrip - strip-level information TRYRun2SiStripSet - strip collection based upon contents of SIXD and ISLD banks Outputs: Hits and basic clusters: QSIC bank Cluster profiles: QSIP bank High-level interfaces: (all defined in TrackingSI package) SiHit - hit information SiPhiHit - representation of hit in phi strips SiSasHit - representation of hit in small-angle stereo strips SiZHit - representation of hit in Z strips SiHitSet - hit collection SiCluster - cluster profile information SiClusterSet - cluster collection StoredSiClusterData - provides access to SiHitSet and SiClusterSet objects based upon contents of underlying banks Talk-to options: No special talk-to commands are required. Details: As particles traverse the silicon detector, they often deposit charge among several adjacent strips. The profile of the resulting "cluster" depends upon many factors, including the strip pitch, angle of incidence of the track, type of charge carrier, diffusion of charge carriers in the silicon, and magnetic field to name a few. The clustering algorithm identifies groups of contiguous strips that represent the charge from a single particle. Due to differences in the above factors across the detector, the clustering algorithm and position calculation employed may vary depending upon the particular readout element in question. SiClusteringModule defines a set of clustering objects, each of which applies to a particular detector element (one side of one half-ladder). It is possible in principle to define a separate algorithm for each side of each half-ladder in the silicon detectors. In practice, the primary distinction is between those algorithms applied to 90-degree stereo strips and those applied to all other strips. Once a set of contiguous strips has been identified as a cluster, the position and resolution is calculated using a separate algorithm that is bound to the clustering object. At present, a single algorithm is used throughout the detector, although separate clustering objects are used for each side of each layer in the detector. The current algorithm seeks to divide every set of contiguous strips at all local minima. This procedure helps to improve the position resolution and reduces the deleterious effects of cluster overlaps for clusters in phi and small-angle stereo strips. In the long term, this algorithm is not appropriate to deal with clusters in the 90-degree stereo strips produced by tracks in the forward or backward directions. It is adequate, however, for most tracks simulated using the (default) "GEOMETRICAL" charge deposition model. Performance will degrade significantly for forward and backward tracks simulated using the more realistic charge deposition models. Access to output data: Note: The details of the following classes are discussed elsewhere. Cluster information, including the number of strips, total charge and cluster profile, are held within the SiCluster class. The position information associated with a cluster is held within the SiHit class. This division is necessary because some clusters have multiple positions associated with them. All clusters are held within an SiClusterSet object, ordered by detector element, then strip number of the first strip in the cluster. Hits are held within an SiHitSet object, again ordered by detector element, then position. For hits on phi and small-angle stereo strips, the hits are ordered by increasing global phi. For hits in Z-strips, the hits are ordered by increasing global Z. Both of these collections are managed by the StoredSiClusterData class, which reads the banks associated with cluster and hit information, creates the necessary low-level objects and fills the collections. All classes have formatted print methods and respond to the "<<" output operator. Access to input data: Note: The details of the following classes are discussed elsewhere. Strip information, including the strip number and charge in ADC counts, is held by the SiStrip class. The strip data for an event can be unpacked from the raw data banks by using the TRYRun2SiStripSet class. This class derives from the SiStripSet class, which defines the interface by which users can access the strips themselves. Strips within this collection are ordered by detector element, then by increasing strip number, as defined by the readout system. All classes have formatted print methods and respond to the "<<" output operator.