ROOT logo
void AliTRDdisplayTracks(Int_t track=157) 
{

  c1 = new TCanvas( "RecPoints", "RecPoints Display", 10, 10, 710, 740);
  c1->SetFillColor(1);
  TView *v=new TView(1);
  
      v->SetRange(-350.,-350.,-400.,350.,350.,400.); // full
  //  v->SetRange(0.,0.,0.,350.,350.,400.);  // top right
  //  v->SetRange(-350.,0.,0.,0.,350.,400.); // top left
  //  v->SetRange(0.,-350.,0.,350.,0.,400.); // bottom right 
  //  v->SetRange(-350.,-350.,0.,0.,0.,400.); // bottom left
  //  v->Side();
  v->Top();
  cerr<<"psi = "<<v->GetPsi()<<endl;

  // Dynamically link some shared libs
  if (gClassTable->GetID("AliRun") < 0) {
    gROOT->LoadMacro("loadlibs.C");
    loadlibs();
    cout << "Loaded shared libraries" << endl;
  }       


// Load tracks

   TFile *tf=TFile::Open("AliTRDtracks.root");
   if (!tf->IsOpen()) {cerr<<"Can't open AliTRDtracks.root !\n"; return 3;}
   TObjArray tarray(2000);
   //  tf->ls();
   TTree *tracktree=(TTree*)tf->Get("TreeT0_TRD");
   //   tracktree->ls();
   TBranch *tbranch=tracktree->GetBranch("tracks");
   Int_t nentr=tracktree->GetEntries();
   cerr<<"Found "<<nentr<<" entries in the track tree"<<endl;
   for (Int_t i=0; i<nentr; i++) {
       AliTRDtrack *iotrack=new AliTRDtrack;
       tbranch->SetAddress(&iotrack);
       tracktree->GetEvent(i);
       tarray.AddLast(iotrack);
       cerr<<"got track "<<i<<": index ="<<iotrack->GetLabel()<<endl;
   }
   tf->Close();                 


  // Load clusters
  Char_t *alifile = "TRDclusters.root";
  Int_t   nEvent  = 0;
  TObjArray rparray(2000);
  TObjArray *RecPointsArray = &rparray;
  const TFile *geofile =TFile::Open(alifile);
  //  AliTRDtracker *Tracker = new AliTRDtracker("dummy","dummy");
  AliTRDtracker *Tracker = new AliTRDtracker(geofile);
   Tracker->ReadClusters(RecPointsArray,alifile); 
  Int_t nRecPoints = RecPointsArray->GetEntriesFast();
  cerr<<"Found "<<nRecPoints<<" rec. points"<<endl;


  // Connect the AliRoot file containing Geometry, Kine, Hits, and Digits
      alifile = "galice.root";

   TFile *gafl = (TFile*) gROOT->GetListOfFiles()->FindObject(alifile);
  if (!gafl) {
    cout << "Open the ALIROOT-file " << alifile << endl;
    gafl = new TFile(alifile);
  }
  else {
    cout << alifile << " is already open" << endl;
  }
  

  // Get AliRun object from file or create it if not on file
  gAlice = (AliRun*) gafl->Get("gAlice");
  if (gAlice)
    cout << "AliRun object found on file" << endl;
  else
    gAlice = new AliRun("gAlice","Alice test program");
	

       AliTRDparameter *par =  ( AliTRDparameter *par) gafl->Get("TRDparameter");
       AliTRDv1       *TRD           = (AliTRDv1*) gAlice->GetDetector("TRD");
       AliTRDgeometry *fGeom   = TRD->GetGeometry();   
       
  Int_t i,j,index,det,sector, ti[3];
  Double_t x,y,z, cs,sn,tmp;
  Float_t global[3], local[3];

  // Display all TRD RecPoints
  TPolyMarker3D *pm = new TPolyMarker3D(nRecPoints);

  for (Int_t i = 0; i < nRecPoints; i++) {
    printf("\r point %d out of %d",i,nRecPoints);
    AliTRDcluster *rp = (AliTRDcluster *) RecPointsArray->UncheckedAt(i);    
  
   Int_t  idet=rp->GetDetector();
   Int_t iplan = fGeom->GetPlane(idet);    
   Int_t itt=rp->GetLocalTimeBin();
   Float_t  timeSlice = itt+0.5; 
   Float_t  time0     = par->GetTime0(iplan);

  // calculate (x,y,z) position in rotated chamber
   local[0] = time0 - (timeSlice - par->GetTimeBefore()) 
         * par->GetTimeBinSize();
   local[1]=rp->GetY();
   local[2]=rp->GetZ(); 

    for (j = 0; j < 3; j++) { ti[j] = rp->GetTrackIndex(j); }

    if((track < 0) ||
       ((ti[0]==track)||(ti[1]==track)||(ti[2]==track))) {

        if(fGeom->RotateBack(idet,local,global)) {     
       	x=global[0]; y=global[1]; z=global[2];
       	pm->SetPoint(i,x,y,z);
         }

    }
  }

  pm->SetMarkerSize(1); pm->SetMarkerColor(10); pm->SetMarkerStyle(1);
  pm->Draw();
  
   AliTRDparameter *par =  ( AliTRDparameter *par) gafl->Get("TRDparameter");

  Int_t ntracks = tarray.GetEntriesFast();

  for (i = 0; i < ntracks; i++) {
    AliTRDtrack *pt = (AliTRDtrack *) tarray.UncheckedAt(i), &t=*pt;
    Int_t nclusters = t.GetNumberOfClusters();
    cerr<<"in track "<<i<<" found "<<nclusters<<" clusters"<<endl;
   
    TPolyMarker3D *pm = new TPolyMarker3D(nclusters);
    for(j = 0; j < nclusters; j++) {
      index = t.GetClusterIndex(j);
      AliTRDcluster *rp = (AliTRDcluster *) RecPointsArray->UncheckedAt(index); 

   Int_t  idet=rp->GetDetector();
   Int_t iplan = fGeom->GetPlane(idet);    
   Int_t itt=rp->GetLocalTimeBin();
   Float_t  timeSlice = itt+0.5; 
   Float_t  time0     = par->GetTime0(iplan);


  // calculate (x,y,z) position in rotated chamber
       local[0] = time0 - (timeSlice - par->GetTimeBefore()) 
         * par->GetTimeBinSize();
       local[1]=rp->GetY(); 
       local[2]=rp->GetZ();

            if(fGeom->RotateBack(idet,local,global)) {     
      	x=global[0]; y=global[1]; z=global[2];
      	pm->SetPoint(j,x,y,z);
       }
    } 
    pm->SetMarkerSize(1); pm->SetMarkerColor(i%6+3); pm->SetMarkerStyle(1);
    //    pm->Draw();
  }
  
  TGeometry *geom=(TGeometry*)gafl->Get("AliceGeom");
  geom->Draw("same");

  c1->Modified(); 
  
  c1->Update();
  
  gafl->Close();

}
 AliTRDdisplayTracks.C:1
 AliTRDdisplayTracks.C:2
 AliTRDdisplayTracks.C:3
 AliTRDdisplayTracks.C:4
 AliTRDdisplayTracks.C:5
 AliTRDdisplayTracks.C:6
 AliTRDdisplayTracks.C:7
 AliTRDdisplayTracks.C:8
 AliTRDdisplayTracks.C:9
 AliTRDdisplayTracks.C:10
 AliTRDdisplayTracks.C:11
 AliTRDdisplayTracks.C:12
 AliTRDdisplayTracks.C:13
 AliTRDdisplayTracks.C:14
 AliTRDdisplayTracks.C:15
 AliTRDdisplayTracks.C:16
 AliTRDdisplayTracks.C:17
 AliTRDdisplayTracks.C:18
 AliTRDdisplayTracks.C:19
 AliTRDdisplayTracks.C:20
 AliTRDdisplayTracks.C:21
 AliTRDdisplayTracks.C:22
 AliTRDdisplayTracks.C:23
 AliTRDdisplayTracks.C:24
 AliTRDdisplayTracks.C:25
 AliTRDdisplayTracks.C:26
 AliTRDdisplayTracks.C:27
 AliTRDdisplayTracks.C:28
 AliTRDdisplayTracks.C:29
 AliTRDdisplayTracks.C:30
 AliTRDdisplayTracks.C:31
 AliTRDdisplayTracks.C:32
 AliTRDdisplayTracks.C:33
 AliTRDdisplayTracks.C:34
 AliTRDdisplayTracks.C:35
 AliTRDdisplayTracks.C:36
 AliTRDdisplayTracks.C:37
 AliTRDdisplayTracks.C:38
 AliTRDdisplayTracks.C:39
 AliTRDdisplayTracks.C:40
 AliTRDdisplayTracks.C:41
 AliTRDdisplayTracks.C:42
 AliTRDdisplayTracks.C:43
 AliTRDdisplayTracks.C:44
 AliTRDdisplayTracks.C:45
 AliTRDdisplayTracks.C:46
 AliTRDdisplayTracks.C:47
 AliTRDdisplayTracks.C:48
 AliTRDdisplayTracks.C:49
 AliTRDdisplayTracks.C:50
 AliTRDdisplayTracks.C:51
 AliTRDdisplayTracks.C:52
 AliTRDdisplayTracks.C:53
 AliTRDdisplayTracks.C:54
 AliTRDdisplayTracks.C:55
 AliTRDdisplayTracks.C:56
 AliTRDdisplayTracks.C:57
 AliTRDdisplayTracks.C:58
 AliTRDdisplayTracks.C:59
 AliTRDdisplayTracks.C:60
 AliTRDdisplayTracks.C:61
 AliTRDdisplayTracks.C:62
 AliTRDdisplayTracks.C:63
 AliTRDdisplayTracks.C:64
 AliTRDdisplayTracks.C:65
 AliTRDdisplayTracks.C:66
 AliTRDdisplayTracks.C:67
 AliTRDdisplayTracks.C:68
 AliTRDdisplayTracks.C:69
 AliTRDdisplayTracks.C:70
 AliTRDdisplayTracks.C:71
 AliTRDdisplayTracks.C:72
 AliTRDdisplayTracks.C:73
 AliTRDdisplayTracks.C:74
 AliTRDdisplayTracks.C:75
 AliTRDdisplayTracks.C:76
 AliTRDdisplayTracks.C:77
 AliTRDdisplayTracks.C:78
 AliTRDdisplayTracks.C:79
 AliTRDdisplayTracks.C:80
 AliTRDdisplayTracks.C:81
 AliTRDdisplayTracks.C:82
 AliTRDdisplayTracks.C:83
 AliTRDdisplayTracks.C:84
 AliTRDdisplayTracks.C:85
 AliTRDdisplayTracks.C:86
 AliTRDdisplayTracks.C:87
 AliTRDdisplayTracks.C:88
 AliTRDdisplayTracks.C:89
 AliTRDdisplayTracks.C:90
 AliTRDdisplayTracks.C:91
 AliTRDdisplayTracks.C:92
 AliTRDdisplayTracks.C:93
 AliTRDdisplayTracks.C:94
 AliTRDdisplayTracks.C:95
 AliTRDdisplayTracks.C:96
 AliTRDdisplayTracks.C:97
 AliTRDdisplayTracks.C:98
 AliTRDdisplayTracks.C:99
 AliTRDdisplayTracks.C:100
 AliTRDdisplayTracks.C:101
 AliTRDdisplayTracks.C:102
 AliTRDdisplayTracks.C:103
 AliTRDdisplayTracks.C:104
 AliTRDdisplayTracks.C:105
 AliTRDdisplayTracks.C:106
 AliTRDdisplayTracks.C:107
 AliTRDdisplayTracks.C:108
 AliTRDdisplayTracks.C:109
 AliTRDdisplayTracks.C:110
 AliTRDdisplayTracks.C:111
 AliTRDdisplayTracks.C:112
 AliTRDdisplayTracks.C:113
 AliTRDdisplayTracks.C:114
 AliTRDdisplayTracks.C:115
 AliTRDdisplayTracks.C:116
 AliTRDdisplayTracks.C:117
 AliTRDdisplayTracks.C:118
 AliTRDdisplayTracks.C:119
 AliTRDdisplayTracks.C:120
 AliTRDdisplayTracks.C:121
 AliTRDdisplayTracks.C:122
 AliTRDdisplayTracks.C:123
 AliTRDdisplayTracks.C:124
 AliTRDdisplayTracks.C:125
 AliTRDdisplayTracks.C:126
 AliTRDdisplayTracks.C:127
 AliTRDdisplayTracks.C:128
 AliTRDdisplayTracks.C:129
 AliTRDdisplayTracks.C:130
 AliTRDdisplayTracks.C:131
 AliTRDdisplayTracks.C:132
 AliTRDdisplayTracks.C:133
 AliTRDdisplayTracks.C:134
 AliTRDdisplayTracks.C:135
 AliTRDdisplayTracks.C:136
 AliTRDdisplayTracks.C:137
 AliTRDdisplayTracks.C:138
 AliTRDdisplayTracks.C:139
 AliTRDdisplayTracks.C:140
 AliTRDdisplayTracks.C:141
 AliTRDdisplayTracks.C:142
 AliTRDdisplayTracks.C:143
 AliTRDdisplayTracks.C:144
 AliTRDdisplayTracks.C:145
 AliTRDdisplayTracks.C:146
 AliTRDdisplayTracks.C:147
 AliTRDdisplayTracks.C:148
 AliTRDdisplayTracks.C:149
 AliTRDdisplayTracks.C:150
 AliTRDdisplayTracks.C:151
 AliTRDdisplayTracks.C:152
 AliTRDdisplayTracks.C:153
 AliTRDdisplayTracks.C:154
 AliTRDdisplayTracks.C:155
 AliTRDdisplayTracks.C:156
 AliTRDdisplayTracks.C:157
 AliTRDdisplayTracks.C:158
 AliTRDdisplayTracks.C:159
 AliTRDdisplayTracks.C:160
 AliTRDdisplayTracks.C:161
 AliTRDdisplayTracks.C:162
 AliTRDdisplayTracks.C:163
 AliTRDdisplayTracks.C:164
 AliTRDdisplayTracks.C:165
 AliTRDdisplayTracks.C:166
 AliTRDdisplayTracks.C:167
 AliTRDdisplayTracks.C:168
 AliTRDdisplayTracks.C:169