ef88699b949f6fc1fe420afc377b592fd6fbbcc5
[u/mrichter/AliRoot.git] / EVE / alice-macros / trd_gtutracks.C
1 #ifndef __CINT__
2 #include "TEveManager.h"
3 #include "TEveLine.h"
4 #include "TEveStraightLineSet.h"
5 #include "TClonesArray.h"
6 #include "EveBase/AliEveEventManager.h"
7
8 #include "AliRunLoader.h"
9 #include "AliLoader.h"
10 #include "AliDataLoader.h"
11 #include "AliTreeLoader.h"
12 #include "TRD/AliTRDarrayADC.h"
13 #include "EveDet/AliEveTRDData.h"
14 #include "TRD/AliTRDtrackletWord.h"
15 #include "TRD/AliTRDtrackletMCM.h"
16 #include "TRD/AliTRDtrackGTU.h"
17 #include "TRD/AliTRDtrackletGTU.h"
18 #include "TParticlePDG.h"
19 #endif
20
21 TEveElementList *
22 trd_gtutracks()
23 {
24   AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
25   AliLoader *loader = rl->GetLoader("TRDLoader");
26   AliDataLoader *dl = loader->GetDataLoader("gtutracks");
27   if (!dl) {
28     dl = new AliDataLoader("TRD.GtuTracks.root","gtutracks", "gtutracks");
29     rl->GetLoader("TRDLoader")->AddDataLoader(dl);
30   }
31
32   dl->Load();
33   TTree *trktree = dl->Tree();
34   if (!trktree) {
35     printf("No GTU track tree");
36     return 0x0;
37   }
38   AliTRDtrackGTU *trk = 0x0;
39   trktree->SetBranchAddress("TRDtrackGTU", &trk);
40   
41   gEve->DisableRedraw();
42   TEveElementList* listOfTracks = new TEveElementList("GTU Tracks");
43   gEve->AddElement(listOfTracks);
44
45   AliTRDgeometry *geo = new AliTRDgeometry;
46
47   //  printf("found %i tracks\n", trktree->GetEntriesFast());
48   for (Int_t i = 0; i < trktree->GetEntriesFast(); i++) {
49     trktree->GetEntry(i);
50     if (!trk)
51       continue;
52     Int_t sector = trk->GetSector();
53     Double_t *x = new Double_t[3];
54     Double_t *p = new Double_t[3];
55     Double_t *p2 = new Double_t[3];
56     x[0] = x[1] = x[2] = 0;
57     x[1] = trk->GetA() / 2 * 160e-4;
58     geo->RotateBack(sector*30, x, p);
59     x[0] = 400;
60     x[1] = x[0] * trk->GetB() + trk->GetA() / 2 * 160e-4;
61     x[2] = -1 * x[0] * trk->GetC() / TMath::Tan( -2.0 / 180.0 * TMath::Pi() );
62     geo->RotateBack(sector*30, x, p2);
63     TEveLine *track = new TEveLine(Form("GTU track pt: %4.2f (%i)", trk->GetPt(), trk->GetLabel()));
64     track->SetMainColor((Color_t) 4);
65     track->SetNextPoint(p[0], p[1], p[2]);
66     track->SetNextPoint(p2[0], p2[1], p2[2]);
67     gEve->AddElement(track, listOfTracks);
68     delete[] x;
69     delete[] p;
70     delete[] p2;
71 //    TEveStraightLineSet* trkl = new TEveStraightLineSet("TRD Tracklets");
72 //    trkl->SetMainColor((Color_t) 2);
73 //    gEve->AddElement(trkl, track);
74 //    Int_t det = trk->GetSector() * 30 + trk->GetStack() * 6;
75 //    printf("Track in SM: %i, Stack: %i => Det: %i\n", trk->GetSector(), trk->GetStack(), det);
76 //      for (Int_t layer = 0; layer < 6; layer++) {
77 //        printf("checking for tracklet in layer %i\n", layer);
78 //      if (trk->IsTrackletInLayer(layer)) {
79 //          printf("tracklet in layer %i\n", layer);
80 //        AliTRDtrackletGTU *trklet = trk->GetTracklet(layer);
81 //        Double_t *x = new Double_t[3];
82 //        x[0] = geo->GetTime0(layer);
83 //        AliTRDpadPlane *pp = geo->GetPadPlane(layer, trk->GetStack());
84 //        x[1] = trklet->GetYbin() * 0.0160; 
85 //        x[2] = pp->GetRowPos(trklet->GetZbin()) - pp->GetRowSize(trklet->GetZbin())/2;
86 //        Double_t *p = new Double_t[3];
87 //        Double_t *p2 = new Double_t[3];
88 //        geo->RotateBack(det, x, p);
89 //        x[0] -= 10;
90 //        x[1] += 10 * trklet->GetdYdX();
91 //        x[2] *= x[0]/(x[0]+10);
92 //        geo->RotateBack(det, x, p2);
93 //        trkl->AddLine(p[0], p[1], p[2], p2[0], p2[1], p2[2]);
94 //        delete[] x;
95 //        delete[] p;
96 //        delete[] p2;
97 //
98 //      }
99 //      }
100   }
101
102   gEve->EnableRedraw();
103   gEve->Redraw3D();
104
105   return listOfTracks;
106 }
107