TEC Tracking using Hough Transform
(class mTecHoughTrack)


TEC Reconstruction Analysis Chain

Example of macro to run Tec reconstruction:     tecrecrun.C     tecrecini.C

Example of macro to run Tec test analysis chain (pisa-to-dst):     tectestrun.C     tectestini.C



INPUT : dTecCalib object of class dTecCalibWrapper and dTecGhitRaw object of class dTecGhitRawWrapper

OUTPUT : dTecTrack object of class dTecTrackWrapper and dTecRawTrack object of class dTecRawTrackWrapper.

CALL : mTecHoughTrackModule* TecHoughTrack->event( PHCompositeNode* topNode);


the code: mTecHoughTrackModule.cc

header file: mTecHoughTrackModule.h



Brief explanation of some tracking parameters

mTecHoughTrack->set_fillRawTrack(int frt); -- if frt=0, relational table dTecRawTrack will not be filled (default = 1).

mTecHoughTrack->set_Verbose(int verbose); -- if verbose> 0, debug printout will be activated (default=0).

mTecHoughTrack->set_Write2File(int w2f); -- if w2f > 0, three ASCII files will be written to disk: points.dat, mytracks.dat and array.dat. The first of these files contains global X and Y coordinates of TEC hits (time bins of fired wires), the second one X and Y coordinates of entry and exit points of found tracks, the third one is two-dimensional phi/theta array (default=0).

mTecHoughTrack->set_RandSeed(long int rs); -- set different random seed for hit pair selection (you can get slightly different number of tracks with different random seeds).

mTecHoughTrack->set_Statistics(int stat); stat number of hit pairs will be used in Hough transform for low multiplicity events (default=25000).

mTecHoughTrack->set_minbins(int mb); -- track must have mb number of hits to be accepted (default = 72).

mTecHoughTrack->set_minPlanes(int mp); -- track must fire at least mp planes to be accepted (default 2).

mTecHoughTrack->set_algorithm(int alg) -- select clustering algorithm (default=1). There is no significant difference in tracking efficiency between two algorithms.

mTecHoughTrack->set_INDEX(int inddex); -- select a sector for tracking. if index is positive, it indicates which side of which sector is to be tracked.
-1234 both sides of both arms will be tracked
-12 whole west arm will be tracked
-34 whole east arm will be tracked
-1 south side of the west arm
-2 north side of the west arm
-3 south side of the east arm
-4 north side of the east arm

mTecHoughTrack->set_Rebin(int rebin); -- rebin time bins of each wire before tracking (default=4).

mTecHoughTrack->set_angLim(float al); -- reject tracks with alngle of insidence > al (default=0.6).

mTecHoughTrack->set_clPar(int i, float clpar) -- set clustering parameter i (default = 0.05, 0.08, 1.50, 0.08, 99.0, 8.0).
The last parameter (clPar[5]) is a cut on hit amplitude. If hits has amplitude less than clPar[5], it is not used for tracking.

mTecHoughTrack->set_Radius0(float r0) -- Phi and Theta are determined at this radius (default=450.0).

mTecHoughTrack->set_Dist0(float d0); -- distance from the track to a TEC time bin for the bin to be associated with this track (default=0.26).

mTecHoughTrack->set_Refit(int refit); if refit=0 tracks will not be refitted after hit association (default=1).

mTecHoughTrack->set_LowThreshold(float lf); -- hits with amplitude < lf are not associated with tracks (default=4.0).




Tracking Algorithm Description

TEC tracking technique is the same as was used by Drift Chamber Group. Main idea is that TEC tracks are lines, and each line has its unique slope and intercept (or, alternatively, other pairs of variables could be used). We found that the best choice of variables is the same as for the Drift Chamber - polar angle Phi at the intersection of the track with a reference circle, and inclination angle Theta between the track and reference line (see figure below).

Since all tracks are lines, then if we consider all possible combinations of hits in TEC and calculate Phi and Theta for them, hit pairs from the same track will have the same Phi and Theta, while all other combinations will be randomly distributed in Phi-Theta space.

This will cause peaks to appear on two-dimensional plot Phi-Theta, each peak corresponding to a track.

Tracking is done separately for each side of each sector. For each active TEC plane (there are 4 of them now) all hits (by hits I mean time bins of TEC wires) are stored in an array.
Next, two random hits from different planes are taken, and Phi and Theta are calculated for a line joining these two hits. A two-dimensional array Phi vs Theta is filled. Following plot shows how such two-dimensional array looks in case of a single track in TEC.

Since all hits lie on the same line, we have a single peak and nothing else. Bin size of the two-dimensional histogram is choosen in such way, that all hit combinations have Theta and Phi within 2-3 channels. This enables to determine tracks Phi and Theta with very good accuracy. Algorithm looks for clusters (adjasent bins with amplitude greater than some threshold value, typically 1/4 of maximum) and calculates total amplitude of the cluster (sums up all bins belonging to a cluster). If this amplitude is greater than some threshold (typically 1/2 of maximum) this peak is accepted as a candidate for a track.
Typically, clusters look like this before amplitude cut, and like this after the cut.

To be accepted as a track, track candidates have to pass through angle cut and humber-of-hits-in-track cut.

The plot below shows track (thin black line) reconstructed using two-dimensional plot above and TEC hits (red circles forming thick read lines).

Following 2 plots show an example with 5 tracks in TEC. This time there are several small scattered peaks around 5 big ones, but peaks from the tracks are easily recognizable.

Following two plots show an example of tracking a Hijing event in one side of one sector.

Peaks in two-dimentional Theta/Phi histograms are considered as track candidates. Next they are associated with Tec hits (fired time bins). If a hit is within mTecHoughTrack.Dist0 from a track, this hit is considered as associated with this track. A hit can be associated with several tracks.

After hit association, tracks are re-fitted using associated hits (this improves space resolution) and several cuts are applied: a cut on angle of incidence to reject ghost tracks (this cut will also reject real tracks with momentum < 100 MeV/c), a cut on total number of associated hits, and a cut i on number of fired planes.

Track candidates which passed all cuts are used to fill dTecTrack object of class dTecTrackWrapper.

How to use Draw() method

After tracking if finished, you can draw found tracks and hits using mTecHoughTrackModule::Draw(PHCompositeNode* topNode, int sector, int side, int eventNumber, char* prdfIFile); To draw both sides of sectors 1 and 2 do this:

mTecHoughTrack->Draw(topNode,1,0,eventNumber,prdfIFile);
mTecHoughTrack->Draw(topNode,1,1,eventNumber,prdfIFile);
mTecHoughTrack->Draw(topNode,2,0,eventNumber,prdfIFile);
mTecHoughTrack->Draw(topNode,2,1,eventNumber,prdfIFile);

eventNumber and prdfFile will be shown on top of the display (you can set them to any value, this will not change the display itself). South is 0, north is 1. Press "Enter" to continue.




More tracking examples

Old Tracking Efficiency Study


Last updated 06/13/2001 by Sasha Lebedev

up