]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/trd_gtutracks.C
change eve redraw while processing event
[u/mrichter/AliRoot.git] / EVE / alice-macros / trd_gtutracks.C
CommitLineData
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
21TEveElementList *
22trd_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