ROOT
v6-26
Reference Guide
Loading...
Searching...
No Matches
boxset.C File Reference
Tutorials
»
Event display tutorials
Detailed Description
Demonstrates usage of
TEveBoxSet
class.
#include "
TRandom.h
"
#include <
ROOT/REveElement.hxx
>
#include <
ROOT/REveScene.hxx
>
#include <
ROOT/REveManager.hxx
>
#include <
ROOT/REveBoxSet.hxx
>
using namespace
ROOT::Experimental
;
REveBoxSet
* boxset(
Int_t
num=100)
{
auto
eveMng
= REveManager::Create();
TRandom
r
(0);
auto
pal =
new
REveRGBAPalette
(0, 130);
auto
q
=
new
REveBoxSet
(
"BoxSet"
);
q
->SetPalette(pal);
q
->Reset(REveBoxSet::kBT_FreeBox,
kFALSE
, 64);
#define RND_BOX(x) (Float_t)r.Uniform(-(x), (x))
Float_t
verts[24];
for
(
Int_t
i=0; i<num; ++i) {
Float_t
x
=
RND_BOX
(10);
Float_t
y
=
RND_BOX
(10);
Float_t
z =
RND_BOX
(10);
Float_t
a
=
r
.Uniform(0.2, 0.5);
Float_t
d
= 0.05;
Float_t
verts[24] = {
x
-
a
+
RND_BOX
(
d
),
y
-
a
+
RND_BOX
(
d
), z -
a
+
RND_BOX
(
d
),
x
-
a
+
RND_BOX
(
d
),
y
+
a
+
RND_BOX
(
d
), z -
a
+
RND_BOX
(
d
),
x
+
a
+
RND_BOX
(
d
),
y
+
a
+
RND_BOX
(
d
), z -
a
+
RND_BOX
(
d
),
x
+
a
+
RND_BOX
(
d
),
y
-
a
+
RND_BOX
(
d
), z -
a
+
RND_BOX
(
d
),
x
-
a
+
RND_BOX
(
d
),
y
-
a
+
RND_BOX
(
d
), z +
a
+
RND_BOX
(
d
),
x
-
a
+
RND_BOX
(
d
),
y
+
a
+
RND_BOX
(
d
), z +
a
+
RND_BOX
(
d
),
x
+
a
+
RND_BOX
(
d
),
y
+
a
+
RND_BOX
(
d
), z +
a
+
RND_BOX
(
d
),
x
+
a
+
RND_BOX
(
d
),
y
-
a
+
RND_BOX
(
d
), z +
a
+
RND_BOX
(
d
) };
q
->AddBox(verts);
q
->DigitValue(
r
.Uniform(0, 130));
}
q
->RefitPlex();
#undef RND_BOX
// Uncomment these two lines to get internal highlight / selection.
q
->SetPickable(1);
q
->SetAlwaysSecSelect(1);
eveMng
->
GetEventScene
()->
AddElement
(
q
);
eveMng
->
Show
();
return
q
;
}
REveBoxSet
* boxset_axisaligned(
Float_t
x
=0,
Float_t
y
=0,
Float_t
z=0,
Int_t
num=100,
Bool_t
registerSet=
kTRUE
)
{
auto
eveMng
= REveManager::Create();
TRandom
r
(0);
auto
pal =
new
REveRGBAPalette
(0, 130);
auto
frm =
new
REveFrameBox
();
frm->SetAABoxCenterHalfSize(0, 0, 0, 12, 12, 12);
frm->SetFrameColor(
kCyan
);
frm->SetBackColorRGBA(120,120,120,20);
frm->SetDrawBack(
kTRUE
);
auto
q
=
new
REveBoxSet
(
"BoxSet"
);
q
->SetPalette(pal);
q
->SetFrame(frm);
q
->Reset(REveBoxSet::kBT_AABox,
kFALSE
, 64);
for
(
Int_t
i=0; i<num; ++i) {
q
->AddBox(
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1));
q
->DigitValue(
r
.Uniform(0, 130));
}
q
->RefitPlex();
REveTrans
& t =
q
->RefMainTrans();
t.SetPos(
x
,
y
, z);
// Uncomment these two lines to get internal highlight / selection.
q
->SetPickable(1);
q
->SetAlwaysSecSelect(1);
if
(registerSet)
{
eveMng
->
GetEventScene
()->
AddElement
(
q
);
eveMng
->
Show
();
}
return
q
;
}
REveBoxSet
* boxset_colisval(
Float_t
x
=0,
Float_t
y
=0,
Float_t
z=0,
Int_t
num=100,
Bool_t
registerSet=
kTRUE
)
{
auto
eveMng
= REveManager::Create();
TRandom
r
(0);
auto
q
=
new
REveBoxSet
(
"BoxSet"
);
q
->Reset(REveBoxSet::kBT_AABox,
kTRUE
, 64);
for
(
Int_t
i=0; i<num; ++i) {
q
->AddBox(
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1));
q
->DigitColor(
r
.Uniform(20, 255),
r
.Uniform(20, 255),
r
.Uniform(20, 255),
r
.Uniform(20, 255));
}
q
->RefitPlex();
REveTrans
& t =
q
->RefMainTrans();
t.SetPos(
x
,
y
, z);
if
(registerSet)
{
eveMng
->
GetEventScene
()->
AddElement
(
q
);
eveMng
->
Show
();
}
return
q
;
}
REveBoxSet
* boxset_single_color(
Float_t
x
=0,
Float_t
y
=0,
Float_t
z=0,
Int_t
num=100,
Bool_t
registerSet=
kTRUE
)
{
auto
eveMng
= REveManager::Create();
TRandom
r
(0);
auto
q
=
new
REveBoxSet
(
"BoxSet"
);
q
->UseSingleColor();
q
->SetMainColorPtr(
new
Color_t
);
q
->SetMainColor(
kRed
);
q
->SetMainTransparency(50);
q
->Reset(REveBoxSet::kBT_AABox,
kFALSE
, 64);
for
(
Int_t
i=0; i<num; ++i) {
q
->AddBox(
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(-10, 10),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1),
r
.Uniform(0.2, 1));
}
q
->RefitPlex();
REveTrans
& t =
q
->RefMainTrans();
t.SetPos(
x
,
y
, z);
if
(registerSet) {
eveMng
->
GetEventScene
()->
AddElement
(
q
);
eveMng
->
Show
();
}
return
q
;
}
/*
REveBoxSet* boxset_hex(Float_t x=0, Float_t y=0, Float_t z=0,
Int_t num=100, Bool_t registerSet=kTRUE)
{
auto eveMng = REveManager::Create();
TRandom r(0);
auto q = new REveBoxSet("BoxSet");
q->Reset(REveBoxSet::kBT_Hex, kTRUE, 64);
for (Int_t i=0; i<num; ++i) {
q->AddHex(REveVector(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10)),
r.Uniform(0.2, 1), r.Uniform(0, 60), r.Uniform(0.2, 5));
q->DigitColor(r.Uniform(20, 255), r.Uniform(20, 255),
r.Uniform(20, 255), r.Uniform(20, 255));
}
q->RefitPlex();
q->SetPickable(true);
q->SetAlwaysSecSelect(true);
REveTrans& t = q->RefMainTrans();
t.SetPos(x, y, z);
if (registerSet)
{
eveMng->GetEventScene()->AddElement(q);
eveMng->Show();
}
return q;
}
*/
r
ROOT::R::TRInterface & r
Definition
Object.C:4
REveBoxSet.hxx
REveElement.hxx
REveManager.hxx
REveScene.hxx
d
#define d(i)
Definition
RSha256.hxx:102
a
#define a(i)
Definition
RSha256.hxx:99
Int_t
int Int_t
Definition
RtypesCore.h:45
kFALSE
const Bool_t kFALSE
Definition
RtypesCore.h:101
Bool_t
bool Bool_t
Definition
RtypesCore.h:63
Color_t
short Color_t
Definition
RtypesCore.h:92
Float_t
float Float_t
Definition
RtypesCore.h:57
kTRUE
const Bool_t kTRUE
Definition
RtypesCore.h:100
kRed
@ kRed
Definition
Rtypes.h:66
kCyan
@ kCyan
Definition
Rtypes.h:66
q
float * q
Definition
THbookFile.cxx:89
TRandom.h
REveBoxSet
Collection of 3D primitives (fixed-size boxes, boxes of different sizes, or arbitrary sexto-epipeds,...
REveFrameBox
Description of a 2D or 3D frame that can be used to visually group a set of objects.
REveRGBAPalette
A generic, speed-optimised mapping from value to RGBA color supporting different wrapping and range t...
REveTrans
REveTrans is a 4x4 transformation matrix for homogeneous coordinates stored internally in a column-ma...
ROOT::Experimental::REveElement::AddElement
virtual void AddElement(REveElement *el)
Add el to the list of children.
Definition
REveElement.cxx:848
ROOT::Experimental::REveManager::GetEventScene
REveScene * GetEventScene() const
Definition
REveManager.hxx:182
ROOT::Experimental::REveManager::Show
void Show(const RWebDisplayArgs &args="")
Show eve manager in specified browser.
Definition
REveManager.cxx:1046
TRandom
This is the base class for the ROOT Random number generators.
Definition
TRandom.h:27
eveMng
ROOT::Experimental::REveManager * eveMng
Definition
collection_proxies.C:58
RND_BOX
#define RND_BOX(x)
y
Double_t y[n]
Definition
legend1.C:17
x
Double_t x[n]
Definition
legend1.C:17
ROOT::Experimental
Definition
RDirectory.hxx:30
Author
Matevz Tadel
Definition in file
boxset.C
.
tutorials
eve
boxset.C
ROOT v6-26 - Reference Guide Generated on Mon Sep 11 2023 21:03:20 (GVA Time) using Doxygen 1.9.8