#include "AliHLTTPCCATrack.h"
#include "AliHLTTPCCAPerformance.h"
#include "AliHLTTPCCAMCTrack.h"
-#include "AliHLTTPCCAOutTrack.h"
#include "TString.h"
#include "Riostream.h"
// constructor
}
-
-AliHLTTPCCADisplay::AliHLTTPCCADisplay( const AliHLTTPCCADisplay& )
- : fYX( 0 ), fZX( 0 ), fAsk( 1 ), fSliceView( 1 ), fSlice( 0 ), fPerf( 0 ),
- fCos( 1 ), fSin( 0 ), fZMin( -250 ), fZMax( 250 ), fYMin( -250 ), fYMax( 250 ), fSliceCos( 1 ), fSliceSin( 0 ),
- fRInnerMin( 83.65 ), fRInnerMax( 133.3 ), fROuterMin( 133.5 ), fROuterMax( 247.7 ),
- fTPCZMin( -250. ), fTPCZMax( 250 ), fArc(), fLine(), fPLine(), fMarker(), fBox(), fCrown(), fLatex(), fDrawOnlyRef( 0 )
-{
- // dummy
-}
-
-const AliHLTTPCCADisplay& AliHLTTPCCADisplay::operator=( const AliHLTTPCCADisplay& ) const
-{
- // dummy
- return *this;
-}
-
AliHLTTPCCADisplay::~AliHLTTPCCADisplay()
{
// destructor
*yv = yg * fCos + xg * fSin;
}
-
-void AliHLTTPCCADisplay::DrawSliceHit( int iRow, int iHit, int color, Size_t width )
+void AliHLTTPCCADisplay::SliceHitXYZ(int iRow, int iHit, double &x, double &y, double &z )
{
- // draw hit
+ // get xyz of the hit
+
if ( !fSlice ) return;
const AliHLTTPCCARow &row = fSlice->Row( iRow );
float y0 = row.Grid().YMin();
float z0 = row.Grid().ZMin();
float stepY = row.HstepY();
float stepZ = row.HstepZ();
- float x = row.X();
- float y = y0 + fSlice->HitDataY( row, iHit ) * stepY;
- float z = z0 + fSlice->HitDataZ( row, iHit ) * stepZ;
+ x = row.X();
+ y = y0 + fSlice->HitDataY( row, iHit ) * stepY;
+ z = z0 + fSlice->HitDataZ( row, iHit ) * stepZ;
+}
+
+void AliHLTTPCCADisplay::DrawSliceHit( int iRow, int iHit, int color, Size_t width )
+{
+ // draw hit
+ if ( !fSlice ) return;
+
+ double x,y,z;
+ SliceHitXYZ( iRow, iHit, x, y, z );
SetSliceTransform( fSlice );
if ( color < 0 ) {
- if ( 0 && fPerf ) {
+ //if ( 0 && fPerf ) {
//AliHLTTPCCAPerformance::AliHLTTPCCAHitLabel lab
//= fPerf->GetClusterLabel( fSlice->Param().ISlice(), fSlice->HitInputID( row, iHit ) );
//color = GetColor( lab[0] + 1 );
//if ( mc.P() >= 1. ) color = kRed;
//else if ( fDrawOnlyRef ) return;
//}
- } else color = GetColorZ( z );
+ //} else
+ color = GetColorZ( z );
}
if ( width > 0 )fMarker.SetMarkerSize( width );
else fMarker.SetMarkerSize( .3 );
}
-void AliHLTTPCCADisplay::DrawSliceLink( int /*iRow*/, int /*iHit*/, int /*colorUp*/, int /*colorDn*/, int /*width*/ )
+void AliHLTTPCCADisplay::DrawSliceLink( int iRow, int iHit, int colorUp, int colorDn, int width )
{
// draw link between clusters
-#ifdef XXX
- if ( !fPerf || !fGB ) return;
- AliHLTTPCCAGBTracker &tracker = *fGB;
- if ( width < 0 ) width = 1.;
+
+ //if ( !fPerf ) return;
+ //AliHLTTPCCAGBTracker &tracker = *fGB;
+ if ( width < 0 ) width = 1;
fLine.SetLineWidth( width );
int colUp = colorUp >= 0 ? colorUp : kMagenta;
int colDn = colorDn >= 0 ? colorDn : kBlack;
if ( iRow < 2 || iRow >= fSlice->Param().NRows() - 2 ) return;
- const AliHLTTPCCARow& row = fSlice->Row( iRow );
- const AliHLTTPCCARow& rowUp = fSlice->Row( iRow + 2 );
- const AliHLTTPCCARow& rowDn = fSlice->Row( iRow - 2 );
+ const AliHLTTPCCARow& row = fSlice->Data().Row( iRow );
- int id = fSlice->HitInputID( row, iHit );
- const AliHLTTPCCAGBHit &h = tracker.Hits()[tracker.FirstSliceHit()[fSlice->Param().ISlice()] + id];
short iUp = fSlice->HitLinkUpData( row, iHit );
short iDn = fSlice->HitLinkDownData( row, iHit );
+
+ double p1[3], p2[3], p3[3];
+ SliceHitXYZ( iRow, iHit, p1[0],p1[1],p1[2]);
+
+ double vx, vy, vx1, vy1;
+ Slice2View( p1[0], p1[1], &vx, &vy );
+
if ( iUp >= 0 ) {
- int id1 = fSlice->HitInputID( rowUp, iUp );
- const AliHLTTPCCAGBHit &h1 = tracker.Hits()[tracker.FirstSliceHit()[fSlice->Param().ISlice()] + id1];
- double vx, vy, vx1, vy1;
- Slice2View( h.X(), h.Y(), &vx, &vy );
- Slice2View( h1.X(), h1.Y(), &vx1, &vy1 );
+ SliceHitXYZ( iRow+2, iUp, p2[0],p2[1],p2[2]);
+ Slice2View( p2[0], p2[1], &vx1, &vy1 );
fLine.SetLineColor( colUp );
fYX->cd();
fLine.DrawLine( vx - .1, vy, vx1 - .1, vy1 );
fZX->cd();
- fLine.DrawLine( h.Z() - 1., vy, h1.Z() - 1., vy1 );
+ fLine.DrawLine( p1[2] - 1., vy, p2[2] - 1., vy1 );
}
- if ( iDn >= 0 ) {
- int id1 = fSlice->HitInputID( rowDn, iDn );
- const AliHLTTPCCAGBHit &h1 = tracker.Hits()[tracker.FirstSliceHit()[fSlice->Param().ISlice()] + id1];
- double vx, vy, vx1, vy1;
- Slice2View( h.X(), h.Y(), &vx, &vy );
- Slice2View( h1.X(), h1.Y(), &vx1, &vy1 );
+ if ( iDn >= 0 ) {
+ SliceHitXYZ( iRow-2, iDn, p3[0],p3[1],p3[2]);
+ Slice2View( p3[0], p3[1], &vx1, &vy1 );
fLine.SetLineColor( colDn );
fYX->cd();
fLine.DrawLine( vx + .1, vy, vx1 + .1, vy1 );
fZX->cd();
- fLine.DrawLine( h.Z() + 1., vy, h1.Z() + 1., vy1 );
+ fLine.DrawLine( p1[2] + 1., vy, p3[2] + 1., vy1 );
}
-#endif
+
}
AliHLTTPCCADisplayTmpHit vHits[200];
for ( int ih = 0; ih < track.NHits(); ih++ ) {
- int id = tracker.FirstSliceHit()[fSlice->Param().ISlice()] + fSlice->OutTrackHits()[track.FirstHitRef()+ih];
+ int id = tracker.FirstSliceHit()[fSlice->Param().ISlice()] + fSlice->OutTrackHit(track.FirstHitRef()+ih);
const AliHLTTPCCAGBHit &h = tracker.Hits()[id];
vHits[ih].SetID( id );
vHits[ih].SetS( 0 );
AliHLTTPCCADisplayTmpHit vHits[200];
for ( int ih = 0; ih < track.NHits(); ih++ ) {
- int id = tracker.FirstSliceHit()[fSlice->Param().ISlice()] + fSlice->OutTrackHits()[track.FirstHitRef()+ih];
+ int id = tracker.FirstSliceHit()[fSlice->Param().ISlice()] + fSlice->OutTrackHit(track.FirstHitRef()+ih);
const AliHLTTPCCAGBHit &h = tracker.Hits()[id];
vHits[ih].SetID( id );
vHits[ih].SetS( 0 );