]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/macros/reve_quad_test.C
Added function reve_quad_test_hierarchy() to demonstrate usage of nested objects...
[u/mrichter/AliRoot.git] / EVE / macros / reve_quad_test.C
1 // $Header$
2
3 Reve::QuadSet* reve_quad_test(Float_t x=0, Float_t y=0, Float_t z=0,
4                               Int_t num=100)
5 {
6   TRandom r(0);
7
8   gStyle->SetPalette(1, 0);
9
10   Reve::QuadSet* q = new Reve::QuadSet("RectangleXY");
11   q->Reset(Reve::QuadSet::QT_RectangleXY, kFALSE, 32);
12   for (Int_t i=0; i<num; ++i) {
13     q->AddQuad(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
14                r.Uniform(0.2, 1), r.Uniform(0.2, 1));
15     q->QuadValue(r.Uniform(0, 130));
16   }
17   q->RefitPlex();
18
19   Reve::ZTrans& t = q->RefHMTrans();
20   t.SetPos(x, y, z);
21
22   gReve->AddRenderElement(q);
23   gReve->Redraw3D();
24
25   return q;
26 }
27
28 Reve::QuadSet* reve_quad_test_circ()
29 {
30   TRandom r(0);
31
32   gStyle->SetPalette(1, 0);
33
34   Reve::QuadSet* q = new Reve::QuadSet("Pepe");
35   q->Reset(Reve::QuadSet::QT_RectangleXY, kFALSE, 32);
36
37   Float_t R = 10, dW = 1, dH = .5;
38   for (Int_t i=0; i<12; ++i) {
39     Float_t x = R * TMath::Cos(TMath::TwoPi()*i/12);
40     Float_t y = R * TMath::Sin(TMath::TwoPi()*i/12);
41     q->AddQuad(x-dW, y-dH, r.Uniform(-1, 1), 2*dW, 2*dH);
42     q->QuadValue(r.Uniform(0, 130));
43   }
44   q->RefitPlex();
45
46   Reve::ZTrans& t = q->RefHMTrans();
47   t.SetPos(0, 0, 300);
48
49   gReve->AddRenderElement(q);
50   gReve->Redraw3D();
51
52   return q;
53 }
54
55 Reve::QuadSet* reve_quad_test_hex(Float_t x=0, Float_t y=0, Float_t z=0,
56                                   Int_t num=100)
57 {
58   TRandom r(0);
59
60   gStyle->SetPalette(1, 0);
61
62   {
63     Reve::QuadSet* q = new Reve::QuadSet("HexagonXY");
64     q->Reset(Reve::QuadSet::QT_HexagonXY, kFALSE, 32);
65     for (Int_t i=0; i<num; ++i) {
66       q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
67                     r.Uniform(0.2, 1));
68       q->QuadValue(r.Uniform(0, 120));
69     }
70     q->RefitPlex();
71
72     Reve::ZTrans& t = q->RefHMTrans();
73     t.SetPos(x, y, z);
74
75     gReve->AddRenderElement(q);
76     gReve->Redraw3D();
77   }
78
79   {
80     Reve::QuadSet* q = new Reve::QuadSet("HexagonYX");
81     q->Reset(Reve::QuadSet::QT_HexagonYX, kFALSE, 32);
82     for (Int_t i=0; i<num; ++i) {
83       q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
84                     r.Uniform(0.2, 1));
85       q->QuadValue(r.Uniform(0, 120));
86     }
87     q->RefitPlex();
88
89     Reve::ZTrans& t = q->RefHMTrans();
90     t.SetPos(x, y, z);
91
92     gReve->AddRenderElement(q);
93     gReve->Redraw3D();
94   }
95
96   return q;
97 }
98
99 Reve::QuadSet* reve_quad_test_hexid(Float_t x=0, Float_t y=0, Float_t z=0,
100                                     Int_t num=100, Bool_t register=kTRUE)
101 {
102   TRandom r(0);
103
104   gStyle->SetPalette(1, 0);
105
106   {
107     Reve::QuadSet* q = new Reve::QuadSet("HexagonXY");
108     q->SetOwnIds(kTRUE);
109     q->Reset(Reve::QuadSet::QT_HexagonXY, kFALSE, 32);
110     for (Int_t i=0; i<num; ++i) {
111       q->AddHexagon(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
112                     r.Uniform(0.2, 1));
113       q->QuadValue(r.Uniform(0, 120));
114       q->QuadId(new TNamed(Form("Quad with idx=%d", i), "This title is not confusing."));
115     }
116     q->RefitPlex();
117
118     Reve::ZTrans& t = q->RefHMTrans();
119     t.SetPos(x, y, z);
120
121     if (register)
122     {
123       gReve->AddRenderElement(q);
124       gReve->Redraw3D();
125     }
126   }
127
128   return q;
129 }
130
131 void reve_quad_test_hierarchy(Int_t n=4)
132 {
133   gStyle->SetPalette(1, 0);
134
135   Reve::RGBAPalette* pal = new RGBAPalette(20, 100);
136   pal->SetLimits(0, 120);
137
138   Reve::FrameBox*    box = new FrameBox();
139   box->SetAABox(-10, -10, -10, 20, 20, 20);
140   box->SetFrameColor((Color_t) 33);
141
142   Reve::RenderElementList* l = new Reve::RenderElementList("Parent/Dir");
143   l->SetTitle("Tooltip");
144   //  l->SetMainColor((Color_t)3);
145   gReve->AddRenderElement(l);
146
147   // PMD: obtain digit-tree from run-loader, loop over entries.
148
149   for (Int_t i=0; i<n; ++i)
150   {
151     Reve::QuadSet* qs = reve_quad_test_hexid(0, 0, 50*i, 50, kFALSE);
152     // PMD: loop over clones-array, create hexagons above threshold.
153     qs->SetPalette(pal);
154     qs->SetFrame(box);
155     gReve->AddRenderElement(l, qs);
156   }
157
158   gReve->Redraw3D();
159 }