-}
-
-
-void AliHLTTPCCADisplay::DrawGBTrack( Int_t itr, Int_t color, Int_t width )
-{
- // draw global track
-
- AliHLTTPCCAGBTracker &tracker = *fGB;
- AliHLTTPCCADisplayTmpHit vHits[1000];
-
- AliHLTTPCCAGBTrack &track = tracker.Tracks()[itr];
- if( track.NHits()<2 ) return;
-
- for( Int_t ih=0; ih<track.NHits(); ih++ ){
- Int_t i = tracker.TrackHits()[ track.FirstHitRef() + ih];
- AliHLTTPCCAGBHit &h = tracker.Hits()[i];
- vHits[ih].SetID( i );
- vHits[ih].SetS( 0 );
- vHits[ih].SetZ( h.Z() );
- }
-
- DrawTrack( track.Param(), track.Alpha(), vHits, track.NHits(), color, width );
-}
-
-
-void AliHLTTPCCADisplay::DrawGBTrackFast( AliHLTTPCCAGBTracker &tracker, Int_t itr, Int_t color )
-{
- // draw global track
-
- AliHLTTPCCAGBTrack &track = tracker.Tracks()[itr];
- if( track.NHits()<2 ) return;
- Int_t width = 1;
-
- AliHLTTPCCADisplayTmpHit *vHits = new AliHLTTPCCADisplayTmpHit[track.NHits()];
- AliHLTTPCCATrackParam t = track.Param();
-
- for( Int_t ih=0; ih<track.NHits(); ih++ ){
- Int_t i = tracker.TrackHits()[ track.FirstHitRef() + ih];
- AliHLTTPCCAGBHit *h = &(tracker.Hits()[i]);
- vHits[ih].SetID( i );
- vHits[ih].SetS( 0 );
- vHits[ih].SetZ( h->Z() );
- }
-
- sort(vHits, vHits + track.NHits(), AliHLTTPCCADisplayTmpHit::CompareHitZ );
- Int_t colorY = color;
- {
- AliHLTTPCCAGBHit &h1 = tracker.Hits()[ vHits[0].ID()];
- AliHLTTPCCAGBHit &h2 = tracker.Hits()[ vHits[track.NHits()-1].ID()];
- if( color<0 ) color = GetColorZ( (h1.Z()+h2.Z())/2. );
- Double_t gx1, gy1, gx2, gy2;
- Slice2View(h1.X(), h1.Y(), &gx1, &gy1 );
- Slice2View(h2.X(), h2.Y(), &gx2, &gy2 );
- if( colorY<0 ) colorY = GetColorY( (gy1+gy2)/2. );
- color = colorY = GetColorK(t.GetQPt());
- }
-
- fMarker.SetMarkerColor(color);//kBlue);
- fMarker.SetMarkerSize(1.);
- fLine.SetLineColor(color);
- fLine.SetLineWidth(width);
- fArc.SetFillStyle(0);
- fArc.SetLineColor(color);
- fArc.SetLineWidth(width);
- TPolyLine pl;
- pl.SetLineColor(colorY);
- pl.SetLineWidth(width);
-
- Int_t oldSlice = -1;
- Double_t alpha = track.Alpha();
- // YX
- {
-
- AliHLTTPCCAGBHit &h1 = tracker.Hits()[vHits[0].ID()];
- AliHLTTPCCAGBHit &h2 = tracker.Hits()[vHits[track.NHits()-1].ID()];
- Float_t x1, y1, z1, x2, y2, z2;
- Double_t vx1, vy1, vx2, vy2;
-
- if( h1.ISlice() != oldSlice ){
- t.Rotate( tracker.Slices()[h1.ISlice()].Param().Alpha() - alpha);
- oldSlice = h1.ISlice();
- alpha = tracker.Slices()[h1.ISlice()].Param().Alpha();
- SetSliceTransform( &(tracker.Slices()[oldSlice]) );
- }
- t.GetDCAPoint( h1.X(), h1.Y(), h1.Z(), x1, y1, z1, fSlice->Param().Bz() );
- Slice2View(x1, y1, &vx1, &vy1 );
-
- if( h2.ISlice() != oldSlice ){
- t.Rotate( tracker.Slices()[h2.ISlice()].Param().Alpha() - alpha);
- oldSlice = h2.ISlice();
- alpha = tracker.Slices()[h2.ISlice()].Param().Alpha();
- SetSliceTransform( &(tracker.Slices()[oldSlice]) );
- }
- t.GetDCAPoint( h2.X(), h2.Y(), h2.Z(), x2, y2, z2, fSlice->Param().Bz() );
- Slice2View(x2, y2, &vx2, &vy2 );
-
- Double_t x0 = t.GetX();
- Double_t y0 = t.GetY();
- Double_t sinPhi = t.GetSinPhi();
- Double_t k = t.GetKappa( fSlice->Param().Bz() );
- Double_t ex = t.GetCosPhi();
- Double_t ey = sinPhi;
-
- if( TMath::Abs(k)>1.e-4 ){
-
- fYX->cd();
-
- Double_t r = 1/TMath::Abs(k);
- Double_t xc = x0 -ey*(1/k);
- Double_t yc = y0 +ex*(1/k);
-
- Double_t vx, vy;
- Slice2View( xc, yc, &vx, &vy );
-
- Double_t a1 = TMath::ATan2(vy1-vy, vx1-vx)/TMath::Pi()*180.;
- Double_t a2 = TMath::ATan2(vy2-vy, vx2-vx)/TMath::Pi()*180.;
- if( a1<0 ) a1+=360;
- if( a2<0 ) a2+=360;
- if( a2<a1 ) a2+=360;
- Double_t da = TMath::Abs(a2-a1);
- if( da>360 ) da-= 360;
- if( da>180 ){
- da = a1;
- a1 = a2;
- a2 = da;
- if( a2<a1 ) a2+=360;
- }
- fArc.DrawArc(vx,vy,r, a1,a2,"only");
- //fArc.DrawArc(vx,vy,r, 0,360,"only");
- } else {
- fYX->cd();
- fLine.DrawLine(vx1,vy1, vx2, vy2 );
- }
- }
-
- // ZX
- Double_t py[track.NHits()], pz[track.NHits()];
-
- for( Int_t iHit=0; iHit<track.NHits(); iHit++ ){
-
- AliHLTTPCCAGBHit &h1 = tracker.Hits()[vHits[iHit].ID()];
- Float_t x1, y1, z1;
- Double_t vx1, vy1;
- if( h1.ISlice() != oldSlice ){
- t.Rotate( tracker.Slices()[h1.ISlice()].Param().Alpha() - alpha);
- oldSlice = h1.ISlice();
- alpha = tracker.Slices()[h1.ISlice()].Param().Alpha();
- SetSliceTransform( &(tracker.Slices()[oldSlice]) );
- }
- t.GetDCAPoint( h1.X(), h1.Y(), h1.Z(), x1, y1, z1, fSlice->Param().Bz() );
- Slice2View(x1, y1, &vx1, &vy1 );
- py[iHit] = vy1;
- pz[iHit] = z1;
- }
-
-
- fZX->cd();
- pl.DrawPolyLine(track.NHits(),pz,py);
-
- fLine.SetLineWidth(1);
- delete[] vHits;
-}
-
-
-
-
-
-#ifdef XXXX
-
-
-
-
-void AliHLTTPCCADisplay::DrawMergedHit( Int_t iRow, Int_t iHit, Int_t color )
-{
- // connect two cells on display
-
-#ifdef XXX
-
- const AliHLTTPCCARow &row = fSlice->Row(iRow);
- AliHLTTPCCAHit &h = row.Hits()[iHit];
- AliHLTTPCCAHit &hyz = row.HitsYZ()[iHit];
-
- Double_t x = row.X();
- Double_t y = hyz.Y();
- Double_t z = hyz.Z();
- Double_t x1 = x, x2 = x;
- Double_t y1 = y, y2 = y;
- Double_t z1 = z, z2 = z;
- Int_t iRow1 = iRow, iHit1 = iHit;
- Int_t iRow2 = iRow, iHit2 = iHit;
-
- if( fSlice->HitLinksDown()[]>=0 ){
- iRow1 = iRow - 1;
- iHit1 = h.LinkDown();
- AliHLTTPCCARow &row1 = fSlice->Rows()[iRow1];
- AliHLTTPCCAHitYZ &h1 = row1.HitsYZ()[iHit1];
- x1 = row1.X();
- y1 = h1.Y();
- z1 = h1.Z();
- }
- if( h.LinkUp()>=0 ){
- iRow2 = iRow+1;
- iHit2 = h.LinkUp();
- AliHLTTPCCARow &row2 = fSlice->Rows()[iRow2];
- AliHLTTPCCAHitYZ &h2 = row2.HitsYZ()[iHit2];
- x2 = row2.X();
- y2 = h2.Y();
- z2 = h2.Z();
- }
- if( color<0 ) color = GetColorZ( (z+z1+z2)/3. );
-
-
- Slice2View(x,y, &x, &y );
- Slice2View(x1,y1, &x1, &y1 );
- Slice2View(x2,y2, &x2, &y2 );
-
- Double_t lx[] = { x1, x, x2 };
- Double_t ly[] = { y1, y, y2 };
- Double_t lz[] = { z1, z, z2 };
-
- fPLine.SetLineColor(color);
- fPLine.SetLineWidth(1);
- //fPLine.SetFillColor(color);
- fPLine.SetFillStyle(-1);
-
- fYX->cd();
- fPLine.DrawPolyLine(3, lx, ly );
- fZX->cd();
- fPLine.DrawPolyLine(3, lz, ly );
- DrawHit( iRow, iHit, color );
- DrawHit( iRow1, iHit1, color );
- DrawHit( iRow2, iHit2, color );