/// \file /// \ingroup tutorial_eve /// Demonstrates usage of TEveBoxSet class. /// /// \image html eve_boxset.png /// \macro_code /// /// \author Matevz Tadel #include "TEveManager.h" #include "TRandom.h" #include "TEveRGBAPaletteOverlay.h" #include "TEveFrameBox.h" #include "TEveBoxSet.h" #include "TEveBrowser.h" #include "TEveViewer.h" #include "TEveEventManager.h" #include "TGFrame.h" #include "TGButton.h" #include "TStyle.h" #include "TStyle.h" #include "TSystem.h" #include "TGLViewer.h" #include "TEveTrans.h" #include using namespace std; TEveRGBAPalette *pal = 0; TEveRGBAPaletteOverlay *palletteOverlay = 0; void make_gui(); void load_event(); class EvNavHandler { public: void Fwd() { load_event(); } void Bck() { load_event(); } }; void boxset(Float_t x=0, Float_t y=0, Float_t z=0, Int_t num=100, Bool_t registerSet=kTRUE) { TEveManager::Create(); make_gui(); load_event(); //gStyle->SetPalette( kGreenBrownTerrain,0); gStyle->SetPalette( kBlackBody,0); pal = new TEveRGBAPalette(0, 130); palletteOverlay = new TEveRGBAPaletteOverlay(pal, 0.55, 0.1, 0.4, 0.05); palletteOverlay->RefAxis().SetTitle(" PMT Hit Time "); palletteOverlay->RefAxis().SetTitleOffset(2.0); auto v = gEve->GetDefaultGLViewer(); v->AddOverlayElement(palletteOverlay); pal->SetupColorArray(); pal->IncRefCount(); return ; } void load_event(){ // gEve->GetViewers()->DeleteAnnotations(); TEveEventManager* CurrentEvent =gEve->GetCurrentEvent(); cout<<" Destroy elements "<FindChild("BoxSet"); if(child) { cout<<" Removing child called Boxset"<RemoveElement(child); } else cout<<" no child called BoxSet"<SetAABoxCenterHalfSize(0, 0, 0, 12, 12, 12); frm->SetFrameColor(kCyan); frm->SetBackColorRGBA(120,120,120,20); frm->SetDrawBack(kTRUE); auto q = new TEveBoxSet("BoxSet"); q->SetPalette(pal); q->SetFrame(frm); q->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64); int num=100; float x=0; float y=0; float z=0; Bool_t registerSet=kTRUE; for (Int_t i=0; iAddBox(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(); TEveTrans& 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) { gEve->AddElement(q); gEve->Redraw3D(kTRUE); } } //_______________ void make_gui() { TEveBrowser* browser = gEve->GetBrowser(); browser->StartEmbedding(TRootBrowser::kLeft); TGMainFrame* frmMain = new TGMainFrame(gClient->GetRoot(), 1000, 600); frmMain->SetWindowName("HyperK Event Display"); frmMain->SetCleanup(kDeepCleanup); TGCanvas* fCanvasWindow = new TGCanvas(frmMain, 400, 240); TGCompositeFrame* fFrame = new TGCompositeFrame(fCanvasWindow->GetViewPort(), 10, 10, kVerticalFrame); fFrame->SetLayoutManager(new TGVerticalLayout(fFrame)); fCanvasWindow->SetContainer(fFrame); fFrame->SetCleanup(kDeepCleanup); EvNavHandler *fh = new EvNavHandler; TGGroupFrame* Group; { Group = new TGGroupFrame(fCanvasWindow->GetContainer(),"Event Navigation"); TGHorizontalFrame* hf = new TGHorizontalFrame(Group); { TString icondir( Form("%s/icons/", gSystem->Getenv("ROOTSYS")) ); TGPictureButton* b = 0; // EvNavHandler *fh = new EvNavHandler; b = new TGPictureButton(hf, gClient->GetPicture(icondir+"GoBack.gif")); hf->AddFrame(b); b->Connect("Clicked()", "EvNavHandler", fh, "Bck()"); b = new TGPictureButton(hf, gClient->GetPicture(icondir+"GoForward.gif")); hf->AddFrame(b); b->Connect("Clicked()", "EvNavHandler", fh, "Fwd()"); } Group->AddFrame(hf); fCanvasWindow->AddFrame(Group); fCanvasWindow->AddFrame(Group); frmMain->AddFrame(fCanvasWindow,new TGLayoutHints(kLHintsExpandX | kLHintsExpandY, 0, 0, 2, 2)); frmMain->MapSubwindows(); frmMain->Resize(); frmMain->MapWindow(); browser->StopEmbedding(); browser->SetTabTitle("Event Control", 0); } }