514aab181273404c492a068ad5d8405b9c03c3fc
[u/mrichter/AliRoot.git] / EVE / alice-macros / tpc_digits.C
1 // $Id$
2
3 #include "TGLViewer.h"
4
5 namespace Alieve {
6 class TPCData;
7 class Event;
8 }
9
10 Alieve::TPCData* g_tpc_data = 0;
11 Alieve::Event*   g_tpc_last_event = 0;
12
13 void tpc_digits(Int_t mode=0)
14 {
15   if (g_tpc_data == 0 || g_tpc_last_event != Alieve::gEvent) {
16     AliRunLoader* rl =  Alieve::Event::AssertRunLoader();
17     rl->LoadDigits("TPC");
18     TTree* dt = rl->GetTreeD("TPC", false);
19
20     g_tpc_data = new Alieve::TPCData;
21     g_tpc_data->LoadDigits(dt, kTRUE); // Create all present sectors.
22
23     g_tpc_last_event = Alieve::gEvent;
24   }
25
26   // Viewport limits.
27   /*
28   Float_t left, right, top, bottom;
29   right  = di->fOut2Seg.fNMaxPads* di->fOut2Seg.fPadWidth;
30   left   = -right;
31   bottom = di->fInnSeg.fRlow;
32   top    = bottom + di->fOut2Seg.fRlow +
33     di->fOut2Seg.fNRows*di->fOut2Seg.fPadLength - di->fInnSeg.fRlow;
34   */
35
36   gStyle->SetPalette(1, 0);
37   UInt_t col = 36;
38
39   switch(mode) {
40
41   case 0: { // Display a single sector
42    
43     gReve->DisableRedraw();
44   
45     Alieve::TPCSector2D* s = new Alieve::TPCSector2D();
46     s->SetDataSource(g_tpc_data);
47     s->SetMainColor(Color_t(col));
48     gReve->AddRenderElement(s);
49     gReve->DrawRenderElement(s);
50
51     gReve->EnableRedraw();
52
53     TGLViewer* cam = dynamic_cast<TGLViewer*>(gReve->GetCC()->GetViewer3D());
54     //cam->SetCurrentCamera(TGLViewer::kCameraOrthoXOY) ;
55     //cam->SetOrthoCamera(TGLViewer::kCameraOrthoXOY, 2*left, 2*right, 2*top, bottom); 
56     //printf("%f %f %f %f\n", left, right, top, bottom);
57
58     break;
59   }
60
61   case 1: { // Display all sectors
62
63     gReve->DisableRedraw();
64     {
65       Reve::RenderElementList* l = new Reve::RenderElementList("TPC plate 1");
66       l->SetTitle("TPC Plate");
67       l->SetMainColor(Color_t(col));
68       TGListTreeItem *ti = gReve->AddRenderElement(l);
69       
70       for(Int_t i = 0; i<18; i++) {
71         Alieve::TPCSector2D* s = new Alieve::TPCSector2D();
72         s->SetSegmentID(i);
73         s->SetDataSource(g_tpc_data);
74         s->SetMainColor(Color_t(col));
75         s->SetTrans(true);
76         l->AddElement(s);
77         gReve->AddRenderElement(ti, s);
78       }
79       gReve->DrawRenderElement(l);
80     }
81     {
82       Reve::RenderElementList* l = new Reve::RenderElementList("TPC plate 2");
83       l->SetTitle("TPC Plate");
84       l->SetMainColor(Color_t(col));
85
86       TGListTreeItem *ti = gReve->AddRenderElement(l);
87       for(Int_t i = 18; i<36; i++) {
88         Alieve::TPCSector2D* s = new Alieve::TPCSector2D();
89         s->SetSegmentID(i);
90         s->SetDataSource(g_tpc_data);
91         s->SetMainColor(Color_t(col));
92         s->SetTrans(true);
93         l->AddElement(s);
94         gReve->AddRenderElement(ti, s);
95       }
96       gReve->DrawRenderElement(l);
97     }
98     gReve->EnableRedraw();
99
100     break;
101   }
102
103     /* // Almost ready ...
104   case 2 : { // Display a single sector in 3D
105     Reve::RenderElementList* l = new Reve::RenderElementList("TPC Drift");
106     l->SetTitle("TPC Segment Drift");
107     l->SetMainColor(Color_t(col));
108     TGListTreeItem *ti = gReve->AddRenderElement(l);
109   
110     Alieve::TPCSector3D* = new Alieve::TPCSector3D(di, 0);
111     s->SetMainColor(Color_t(col));
112     l->AddElement(s);
113     gReve->AddRenderElement(ti, s);
114     gReve->DrawRenderElement(l);
115     gReve->EnableRedraw();
116     break;
117   }
118     */
119
120   } // switch
121 }