10 TEveBoxSet* boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0,
11 Int_t num=100, Bool_t
register=kTRUE)
13 TEveManager::Create();
15 using namespace TMath;
17 auto lines =
new TEveStraightLineSet(
"StraightLines");
18 lines->SetLineColor(kYellow);
19 lines->SetLineWidth(2);
22 auto pal =
new TEveRGBAPalette(0, 500);
23 auto cones =
new TEveBoxSet(
"ConeSet");
24 cones->SetPalette(pal);
25 cones->Reset(TEveBoxSet::kBT_Cone, kFALSE, 64);
29 Float_t theta, phi, height, rad;
30 for (Int_t i=0; i<num; ++i) {
31 theta = r.Uniform(0,TMath::Pi());
32 phi = r.Uniform (-TMath::Pi(), TMath::Pi());
33 height = r.Uniform(5, 15);
34 rad = r.Uniform(3, 5);
35 dir.Set(Cos(phi)*Cos(theta), Sin(phi)*Cos(theta), Sin(theta));
37 pos.Set(r.Uniform(-a,a), r.Uniform(-a, a), r.Uniform(-a, a));
39 cones->AddCone(pos, dir, rad);
40 cones->DigitValue(r.Uniform(0, 500));
43 TEveVector end = pos + dir*1.3f;
44 lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ);
48 if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE);
51 TEveTrans& t = cones->RefMainTrans();
54 gEve->AddElement(cones);
55 gEve->AddElement(lines);
57 gEve->Redraw3D(kTRUE);
62 TEveBoxSet* elliptic_boxset_cones(Float_t x=0, Float_t y=0, Float_t z=0,
63 Int_t num=100, Bool_t
register=kTRUE)
65 TEveManager::Create();
67 using namespace TMath;
69 TEveManager::Create();
71 auto lines =
new TEveStraightLineSet(
"StraightLines");
72 lines->SetLineColor(kYellow);
73 lines->SetLineWidth(2);
77 auto cones =
new TEveBoxSet(
"EllipticConeSet");
78 cones->Reset(TEveBoxSet::kBT_EllipticCone, kTRUE, 64);
80 cones->SetPickable(kTRUE);
84 Float_t theta, phi, height, rad;
85 for (Int_t i=0; i<num; ++i) {
86 theta = r.Uniform(0,TMath::Pi());
87 phi = r.Uniform (-TMath::Pi(), TMath::Pi());
88 height = r.Uniform(5, 15);
89 rad = r.Uniform(3, 5);
90 dir.Set(Cos(phi)*Cos(theta), Sin(phi)*Cos(theta), Sin(theta));
92 pos.Set(r.Uniform(-a,a), r.Uniform(-a, a), r.Uniform(-a, a));
94 cones->AddEllipticCone(pos, dir, rad, 0.5*rad, r.Uniform(0,360));
95 cones->DigitColor(r.Uniform(20, 255), r.Uniform(20, 255),
96 r.Uniform(20, 255), r.Uniform(20, 255));
99 TEveVector end = pos + dir*1.3f;
100 lines->AddLine(pos.fX, pos.fY, pos.fZ, end.fX, end.fY, end.fZ);
104 if (r.Integer(2)>0) cones->SetDrawConeCap(kTRUE);
107 TEveTrans& t = cones->RefMainTrans();
110 gEve->AddElement(cones);
111 gEve->AddElement(lines);
113 gEve->Redraw3D(kTRUE);