ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TClonesArray.h>
#include <TParticlePDG.h>
#include <TEveLine.h>
#include <TEveStraightLineSet.h>
#include <TEveManager.h>
#include <TEveElement.h>

#include <AliRunLoader.h>
#include <AliLoader.h>
#include <AliDataLoader.h>
#include <AliTreeLoader.h>
#include <AliTRDarrayADC.h>
#include <AliTRDgeometry.h>
#include <AliTRDtrackletWord.h>
#include <AliTRDtrackletMCM.h>
#include <AliTRDtrackGTU.h>
#include <AliTRDtrackletGTU.h>
#include <AliEveEventManager.h>
#include <AliEveTRDData.h>
#endif

TEveElementList *
trd_gtutracks()
{
  AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
  AliLoader *loader = rl->GetLoader("TRDLoader");
  AliDataLoader *dl = loader->GetDataLoader("gtutracks");
  if (!dl) {
    dl = new AliDataLoader("TRD.GtuTracks.root","gtutracks", "gtutracks");
    rl->GetLoader("TRDLoader")->AddDataLoader(dl);
  }

  dl->Load();
  TTree *trktree = dl->Tree();
  if (!trktree) {
    printf("No GTU track tree");
    return 0x0;
  }
  AliTRDtrackGTU *trk = 0x0;
  trktree->SetBranchAddress("TRDtrackGTU", &trk);
  
  gEve->DisableRedraw();
  TEveElementList* listOfTracks = new TEveElementList("GTU Tracks");
  gEve->AddElement(listOfTracks);

  AliTRDgeometry *geo = new AliTRDgeometry;

  //  printf("found %i tracks\n", trktree->GetEntriesFast());
  for (Int_t i = 0; i < trktree->GetEntriesFast(); i++) {
    trktree->GetEntry(i);
    if (!trk)
      continue;
    Int_t sector = trk->GetSector();
    Double_t *x = new Double_t[3];
    Double_t *p = new Double_t[3];
    Double_t *p2 = new Double_t[3];
    x[0] = x[1] = x[2] = 0;
    x[1] = trk->GetA() / 2 * 160e-4;
    geo->RotateBack(sector*30, x, p);
    x[0] = 400;
    x[1] = x[0] * trk->GetB() + trk->GetA() / 2 * 160e-4;
    x[2] = -1 * x[0] * trk->GetC() / TMath::Tan( -2.0 / 180.0 * TMath::Pi() );
    geo->RotateBack(sector*30, x, p2);
    TEveLine *track = new TEveLine(Form("GTU track pt: %4.2f (%i)", trk->GetPt(), trk->GetLabel()));
    track->SetMainColor((Color_t) 4);
    track->SetNextPoint(p[0], p[1], p[2]);
    track->SetNextPoint(p2[0], p2[1], p2[2]);
    gEve->AddElement(track, listOfTracks);
    delete[] x;
    delete[] p;
    delete[] p2;
//    TEveStraightLineSet* trkl = new TEveStraightLineSet("TRD Tracklets");
//    trkl->SetMainColor((Color_t) 2);
//    gEve->AddElement(trkl, track);
//    Int_t det = trk->GetSector() * 30 + trk->GetStack() * 6;
//    printf("Track in SM: %i, Stack: %i => Det: %i\n", trk->GetSector(), trk->GetStack(), det);
//      for (Int_t layer = 0; layer < 6; layer++) {
//        printf("checking for tracklet in layer %i\n", layer);
//	if (trk->IsTrackletInLayer(layer)) {
//          printf("tracklet in layer %i\n", layer);
//	  AliTRDtrackletGTU *trklet = trk->GetTracklet(layer);
//	  Double_t *x = new Double_t[3];
//	  x[0] = geo->GetTime0(layer);
//	  AliTRDpadPlane *pp = geo->GetPadPlane(layer, trk->GetStack());
//	  x[1] = trklet->GetYbin() * 0.0160; 
//	  x[2] = pp->GetRowPos(trklet->GetZbin()) - pp->GetRowSize(trklet->GetZbin())/2;
//	  Double_t *p = new Double_t[3];
//	  Double_t *p2 = new Double_t[3];
//	  geo->RotateBack(det, x, p);
//	  x[0] -= 10;
//	  x[1] += 10 * trklet->GetdYdX();
//	  x[2] *= x[0]/(x[0]+10);
//	  geo->RotateBack(det, x, p2);
//	  trkl->AddLine(p[0], p[1], p[2], p2[0], p2[1], p2[2]);
//	  delete[] x;
//	  delete[] p;
//	  delete[] p2;
//
//	}
//      }
  }

  gEve->EnableRedraw();
  gEve->Redraw3D();

  return listOfTracks;
}

 trd_gtutracks.C:1
 trd_gtutracks.C:2
 trd_gtutracks.C:3
 trd_gtutracks.C:4
 trd_gtutracks.C:5
 trd_gtutracks.C:6
 trd_gtutracks.C:7
 trd_gtutracks.C:8
 trd_gtutracks.C:9
 trd_gtutracks.C:10
 trd_gtutracks.C:11
 trd_gtutracks.C:12
 trd_gtutracks.C:13
 trd_gtutracks.C:14
 trd_gtutracks.C:15
 trd_gtutracks.C:16
 trd_gtutracks.C:17
 trd_gtutracks.C:18
 trd_gtutracks.C:19
 trd_gtutracks.C:20
 trd_gtutracks.C:21
 trd_gtutracks.C:22
 trd_gtutracks.C:23
 trd_gtutracks.C:24
 trd_gtutracks.C:25
 trd_gtutracks.C:26
 trd_gtutracks.C:27
 trd_gtutracks.C:28
 trd_gtutracks.C:29
 trd_gtutracks.C:30
 trd_gtutracks.C:31
 trd_gtutracks.C:32
 trd_gtutracks.C:33
 trd_gtutracks.C:34
 trd_gtutracks.C:35
 trd_gtutracks.C:36
 trd_gtutracks.C:37
 trd_gtutracks.C:38
 trd_gtutracks.C:39
 trd_gtutracks.C:40
 trd_gtutracks.C:41
 trd_gtutracks.C:42
 trd_gtutracks.C:43
 trd_gtutracks.C:44
 trd_gtutracks.C:45
 trd_gtutracks.C:46
 trd_gtutracks.C:47
 trd_gtutracks.C:48
 trd_gtutracks.C:49
 trd_gtutracks.C:50
 trd_gtutracks.C:51
 trd_gtutracks.C:52
 trd_gtutracks.C:53
 trd_gtutracks.C:54
 trd_gtutracks.C:55
 trd_gtutracks.C:56
 trd_gtutracks.C:57
 trd_gtutracks.C:58
 trd_gtutracks.C:59
 trd_gtutracks.C:60
 trd_gtutracks.C:61
 trd_gtutracks.C:62
 trd_gtutracks.C:63
 trd_gtutracks.C:64
 trd_gtutracks.C:65
 trd_gtutracks.C:66
 trd_gtutracks.C:67
 trd_gtutracks.C:68
 trd_gtutracks.C:69
 trd_gtutracks.C:70
 trd_gtutracks.C:71
 trd_gtutracks.C:72
 trd_gtutracks.C:73
 trd_gtutracks.C:74
 trd_gtutracks.C:75
 trd_gtutracks.C:76
 trd_gtutracks.C:77
 trd_gtutracks.C:78
 trd_gtutracks.C:79
 trd_gtutracks.C:80
 trd_gtutracks.C:81
 trd_gtutracks.C:82
 trd_gtutracks.C:83
 trd_gtutracks.C:84
 trd_gtutracks.C:85
 trd_gtutracks.C:86
 trd_gtutracks.C:87
 trd_gtutracks.C:88
 trd_gtutracks.C:89
 trd_gtutracks.C:90
 trd_gtutracks.C:91
 trd_gtutracks.C:92
 trd_gtutracks.C:93
 trd_gtutracks.C:94
 trd_gtutracks.C:95
 trd_gtutracks.C:96
 trd_gtutracks.C:97
 trd_gtutracks.C:98
 trd_gtutracks.C:99
 trd_gtutracks.C:100
 trd_gtutracks.C:101
 trd_gtutracks.C:102
 trd_gtutracks.C:103
 trd_gtutracks.C:104
 trd_gtutracks.C:105
 trd_gtutracks.C:106
 trd_gtutracks.C:107
 trd_gtutracks.C:108
 trd_gtutracks.C:109
 trd_gtutracks.C:110