]>
Commit | Line | Data |
---|---|---|
a1d14acd | 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" | |
98b9b8b2 | 18 | #include "TParticlePDG.h" |
a1d14acd | 19 | #endif |
98b9b8b2 | 20 | |
21 | TEveElementList * | |
22 | trd_gtutracks() | |
23 | { | |
a1d14acd | 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 | } | |
98b9b8b2 | 31 | |
a1d14acd | 32 | dl->Load(); |
33 | TTree *trktree = dl->Tree(); | |
34 | if (!trktree) { | |
35 | printf("No GTU track tree"); | |
36 | return 0x0; | |
37 | } | |
98b9b8b2 | 38 | AliTRDtrackGTU *trk = 0x0; |
a1d14acd | 39 | trktree->SetBranchAddress("TRDtrackGTU", &trk); |
40 | ||
98b9b8b2 | 41 | gEve->DisableRedraw(); |
42 | TEveElementList* listOfTracks = new TEveElementList("GTU Tracks"); | |
43 | gEve->AddElement(listOfTracks); | |
44 | ||
45 | AliTRDgeometry *geo = new AliTRDgeometry; | |
a1d14acd | 46 | |
47 | // printf("found %i tracks\n", trktree->GetEntriesFast()); | |
98b9b8b2 | 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); | |
98b9b8b2 | 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); | |
98b9b8b2 | 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; | |
a1d14acd | 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 | // } | |
98b9b8b2 | 100 | } |
101 | ||
102 | gEve->EnableRedraw(); | |
103 | gEve->Redraw3D(); | |
104 | ||
105 | return listOfTracks; | |
106 | } | |
107 |