boxset.C

Go to the documentation of this file.
00001 // @(#)root/eve:$Id$
00002 // Author: Matevz Tadel
00003 
00004 // Demonstrates usage of TEveBoxSet class.
00005 
00006 TEveBoxSet* boxset(Float_t x=0, Float_t y=0, Float_t z=0,
00007                    Int_t num=100, Bool_t register=kTRUE)
00008 {
00009    TEveManager::Create();
00010 
00011    TRandom r(0);
00012    gStyle->SetPalette(1, 0);
00013 
00014    TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130);
00015 
00016    TEveFrameBox* frm = new TEveFrameBox();
00017    frm->SetAABoxCenterHalfSize(0, 0, 0, 12, 12, 12);
00018    frm->SetFrameColor(kCyan);
00019    frm->SetBackColorRGBA(120,120,120,20);
00020    frm->SetDrawBack(kTRUE);
00021 
00022    TEveBoxSet* q = new TEveBoxSet("BoxSet");
00023    q->SetPalette(pal);
00024    q->SetFrame(frm);
00025    q->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
00026    for (Int_t i=0; i<num; ++i) {
00027       q->AddBox(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
00028                 r.Uniform(0.2, 1),  r.Uniform(0.2, 1),  r.Uniform(0.2, 1));
00029       q->DigitValue(r.Uniform(0, 130));
00030    }
00031    q->RefitPlex();
00032 
00033    TEveTrans& t = q->RefMainTrans();
00034    t.SetPos(x, y, z);
00035 
00036    // Uncomment these two lines to get internal highlight / selection.
00037    // q->SetPickable(1);
00038    // q->SetAlwaysSecSelect(1);
00039 
00040    if (register)
00041    {
00042       gEve->AddElement(q);
00043       gEve->Redraw3D(kTRUE);
00044    }
00045 
00046    return q;
00047 }
00048 
00049 TEveBoxSet* boxset_colisval(Float_t x=0, Float_t y=0, Float_t z=0,
00050                             Int_t num=100, Bool_t register=kTRUE)
00051 {
00052    TEveManager::Create();
00053 
00054    TRandom r(0);
00055 
00056    TEveBoxSet* q = new TEveBoxSet("BoxSet");
00057    q->Reset(TEveBoxSet::kBT_AABox, kTRUE, 64);
00058    for (Int_t i=0; i<num; ++i) {
00059       q->AddBox(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
00060                 r.Uniform(0.2, 1),  r.Uniform(0.2, 1),  r.Uniform(0.2, 1));
00061       q->DigitColor(r.Uniform(20, 255), r.Uniform(20, 255),
00062                     r.Uniform(20, 255), r.Uniform(20, 255));
00063    }
00064    q->RefitPlex();
00065 
00066    TEveTrans& t = q->RefMainTrans();
00067    t.SetPos(x, y, z);
00068 
00069    if (register)
00070    {
00071       gEve->AddElement(q);
00072       gEve->Redraw3D(kTRUE);
00073    }
00074 
00075    return q;
00076 }
00077 
00078 TEveBoxSet* boxset_single_color(Float_t x=0, Float_t y=0, Float_t z=0,
00079                                 Int_t num=100, Bool_t register=kTRUE)
00080 {
00081    TEveManager::Create();
00082 
00083    TRandom r(0);
00084 
00085    TEveBoxSet* q = new TEveBoxSet("BoxSet");
00086    q->UseSingleColor();
00087    q->SetMainColor(kCyan-2);
00088    q->SetMainTransparency(50);
00089    q->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
00090    for (Int_t i=0; i<num; ++i) {
00091       q->AddBox(r.Uniform(-10, 10), r.Uniform(-10, 10), r.Uniform(-10, 10),
00092                 r.Uniform(0.2, 1),  r.Uniform(0.2, 1),  r.Uniform(0.2, 1));
00093    }
00094    q->RefitPlex();
00095 
00096    TEveTrans& t = q->RefMainTrans();
00097    t.SetPos(x, y, z);
00098 
00099    if (register)
00100    {
00101       gEve->AddElement(q);
00102       gEve->Redraw3D(kTRUE);
00103    }
00104 
00105    return q;
00106 }
00107 
00108 TEveBoxSet* boxset_freebox(Int_t num=100, Bool_t register=kTRUE)
00109 {
00110    TEveManager::Create();
00111 
00112    TRandom r(0);
00113    gStyle->SetPalette(1, 0);
00114 
00115    TEveRGBAPalette* pal = new TEveRGBAPalette(0, 130);
00116 
00117    TEveBoxSet* q = new TEveBoxSet("BoxSet");
00118    q->SetPalette(pal);
00119    q->Reset(TEveBoxSet::kBT_FreeBox, kFALSE, 64);
00120 
00121 #define RND_BOX(x) r.Uniform(-(x), (x))
00122 
00123    Float_t verts[24];
00124    for (Int_t i=0; i<num; ++i) {
00125       Float_t x = RND_BOX(10);
00126       Float_t y = RND_BOX(10);
00127       Float_t z = RND_BOX(10);
00128       Float_t a = r.Uniform(0.2, 0.5);
00129       Float_t d = 0.05;
00130       Float_t verts[24] = {
00131          x - a + RND_BOX(d), y - a + RND_BOX(d), z - a + RND_BOX(d),
00132          x - a + RND_BOX(d), y + a + RND_BOX(d), z - a + RND_BOX(d),
00133          x + a + RND_BOX(d), y + a + RND_BOX(d), z - a + RND_BOX(d),
00134          x + a + RND_BOX(d), y - a + RND_BOX(d), z - a + RND_BOX(d),
00135          x - a + RND_BOX(d), y - a + RND_BOX(d), z + a + RND_BOX(d),
00136          x - a + RND_BOX(d), y + a + RND_BOX(d), z + a + RND_BOX(d),
00137          x + a + RND_BOX(d), y + a + RND_BOX(d), z + a + RND_BOX(d),
00138          x + a + RND_BOX(d), y - a + RND_BOX(d), z + a + RND_BOX(d) };
00139       q->AddBox(verts);
00140       q->DigitValue(r.Uniform(0, 130));
00141    }
00142    q->RefitPlex();
00143 
00144 #undef RND_BOX
00145 
00146    // Uncomment these two lines to get internal highlight / selection.
00147    // q->SetPickable(1);
00148    // q->SetAlwaysSecSelect(1);
00149 
00150    if (register)
00151    {
00152       gEve->AddElement(q);
00153       gEve->Redraw3D(kTRUE);
00154    }
00155 
00156    return q;
00157 }

Generated on Tue Jul 5 15:43:50 2011 for ROOT_528-00b_version by  doxygen 1.5.1