10 void quadset_callback(TEveDigitSet* ds, Int_t idx, TObject* obj);
11 TString quadset_tooltip_callback(TEveDigitSet* ds, Int_t idx);
12 void quadset_set_callback(TEveDigitSet* ds);
16 TEveQuadSet* quadset(Float_t x=0, Float_t y=0, Float_t z=0,
17 Int_t num=100, Bool_t registerSet=kTRUE)
19 TEveManager::Create();
23 TEveRGBAPalette *pal =
new TEveRGBAPalette(0, 130);
24 TEveFrameBox *box =
new TEveFrameBox();
25 box->SetAAQuadXY(-10, -10, 0, 20, 20);
26 box->SetFrameColor(kGray);
28 TEveQuadSet* q =
new TEveQuadSet(
"RectangleXY");
32 q->Reset(TEveQuadSet::kQT_RectangleXY, kFALSE, 32);
33 for (Int_t i=0; i<num; ++i)
35 q->AddQuad(r.Uniform(-10, 9), r.Uniform(-10, 9), 0,
36 r.Uniform(0.2, 1), r.Uniform(0.2, 1));
37 q->QuadValue(r.Uniform(0, 130));
38 q->QuadId(
new TNamed(Form(
"QuadIdx %d", i),
39 "TNamed assigned to a quad as an indentifier."));
43 TEveTrans& t = q->RefMainTrans();
44 t.RotateLF(1, 3, 0.5*TMath::Pi());
47 TGLViewer* v = gEve->GetDefaultGLViewer();
48 v->SetCurrentCamera(TGLViewer::kCameraOrthoZOY);
49 TGLCameraOverlay* co = v->GetCameraOverlay();
50 co->SetShowOrthographic(kTRUE);
51 co->SetOrthographicMode(TGLCameraOverlay::kGridFront);
57 TEveRGBAPaletteOverlay *po =
new TEveRGBAPaletteOverlay(pal, 0.55, 0.1, 0.4, 0.05);
58 v = gEve->GetDefaultGLViewer();
59 v->AddOverlayElement(po);
68 gEve->Redraw3D(kTRUE);
71 Info(
"quadset",
"use alt-left-mouse to select individual digits.");
76 TEveQuadSet* quadset_emc(Float_t x=0, Float_t y=0, Float_t z=0, Int_t num=100)
78 TEveManager::Create();
82 TEveQuadSet* q =
new TEveQuadSet(
"EMC Supermodule");
84 q->Reset(TEveQuadSet::kQT_RectangleXZFixedDimY, kFALSE, 32);
88 for (Int_t i=0; i<num; ++i)
90 q->AddQuad(r.Uniform(-100, 100), r.Uniform(-100, 100));
91 q->QuadValue(r.Uniform(0, 130));
92 q->QuadId(
new TNamed(Form(
"Cell %d", i),
"Dong!"));
96 TEveTrans& t = q->RefMainTrans();
105 TEveQuadSet* quadset_circ()
107 TEveManager::Create();
111 Float_t R = 10, dW = 1, dH = .5;
113 TEveFrameBox *box =
new TEveFrameBox();
117 for (Int_t i = 0; i < 36; ++i, p += 3) {
118 p[0] = 11 * TMath::Cos(TMath::TwoPi()*i/36);
119 p[1] = 11 * TMath::Sin(TMath::TwoPi()*i/36);
122 box->SetQuadByPoints(frame, 36);
124 box->SetFrameColor(kGray);
126 TEveQuadSet* q =
new TEveQuadSet(
"Pepe");
128 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
130 for (Float_t r = R; r > 2; r *= 0.8)
132 Int_t maxI = 2.0*TMath::Pi()*r / 2;
133 for (Int_t i = 0; i < maxI; ++i)
135 Float_t x = r * TMath::Cos(TMath::TwoPi()*i/maxI);
136 Float_t y = r * TMath::Sin(TMath::TwoPi()*i/maxI);
137 q->AddHexagon(x, y, rnd.Uniform(-1, 1), rnd.Uniform(0.2, 1));
138 q->QuadValue(rnd.Uniform(0, 130));
143 TEveTrans& t = q->RefMainTrans();
144 t.RotateLF(1, 3, 0.5*TMath::Pi());
152 TEveQuadSet* quadset_hex(Float_t x=0, Float_t y=0, Float_t z=0,
153 Int_t num=100, Bool_t registerSet=kTRUE)
155 TEveManager::Create();
160 TEveQuadSet* q =
new TEveQuadSet(
"HexagonXY");
161 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
162 for (Int_t i=0; i<num; ++i)
164 q->AddHexagon(r.Uniform(-10, 10),
168 q->QuadValue(r.Uniform(0, 120));
172 TEveTrans& t = q->RefMainTrans();
183 TEveQuadSet* q =
new TEveQuadSet(
"HexagonYX");
184 q->Reset(TEveQuadSet::kQT_HexagonYX, kFALSE, 32);
185 for (Int_t i=0; i<num; ++i)
187 q->AddHexagon(r.Uniform(-10, 10),
191 q->QuadValue(r.Uniform(0, 120));
195 TEveTrans& t = q->RefMainTrans();
208 TEveQuadSet* quadset_hexid(Float_t x=0, Float_t y=0, Float_t z=0,
209 Int_t num=100, Bool_t registerSet=kTRUE)
211 TEveManager::Create();
215 TEveQuadSet* q =
new TEveQuadSet(
"HexagonXY");
220 q->Reset(TEveQuadSet::kQT_HexagonXY, kFALSE, 32);
221 for (Int_t i=0; i<num; ++i)
223 q->AddHexagon(r.Uniform(-10, 10),
227 q->QuadValue(r.Uniform(0, 120));
228 q->QuadId(
new TNamed(Form(
"Quad with idx=%d", i),
229 "This title is not confusing."));
233 TEveTrans& t = q->RefMainTrans();
243 quadset_set_callback(q);
253 void quadset_hierarchy(Int_t n=4)
255 TEveManager::Create();
258 TEveRGBAPalette* pal =
new TEveRGBAPalette(20, 100);
259 pal->SetLimits(0, 120);
261 TEveFrameBox* box =
new TEveFrameBox();
262 box->SetAABox(-10, -10, -10, 20, 20, 20);
263 box->SetFrameColor(33);
265 TEveElementList* l =
new TEveElementList(
"Parent/Dir");
266 l->SetTitle(
"Tooltip");
270 for (Int_t i=0; i<n; ++i)
272 TEveQuadSet* qs = quadset_hexid(0, 0, 50*i, 50, kFALSE);
283 void quadset_callback(TEveDigitSet* ds, Int_t idx, TObject* obj)
285 printf(
"dump_digit_set_hit - 0x%lx, id=%d, obj=0x%lx\n",
286 (ULong_t) ds, idx, (ULong_t) obj);
289 TString quadset_tooltip_callback(TEveDigitSet* ds, Int_t idx)
295 return TString::Format(
"callback tooltip for '%s' - 0x%lx, id=%d\n",
296 ds->GetElementName(), (ULong_t) ds, idx);
299 void quadset_set_callback(TEveDigitSet* ds)
301 ds->SetCallbackFoo(quadset_callback);
302 ds->SetTooltipCBFoo(quadset_tooltip_callback);