-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Expand file tree
/
Copy patheveGeoBrowser.C
More file actions
67 lines (54 loc) · 1.72 KB
/
Copy patheveGeoBrowser.C
File metadata and controls
67 lines (54 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/// \file
/// \ingroup tutorial_eve_7
///
/// \macro_code
///
/// \author Alja Mrak-Tadel
#include <ROOT/REveGeoTopNode.hxx>
#include <ROOT/REveGeoPolyShape.hxx>
#include <ROOT/REveManager.hxx>
#include <set>
#include <vector>
#include <iostream>
using namespace ROOT::Experimental;
const Double_t kR_min = 240;
const Double_t kR_max = 250;
const Double_t kZ_d = 300;
void makeJets(int N_Jets, REveElement *jetHolder)
{
TRandom &r = *gRandom;
for (int i = 0; i < N_Jets; i++) {
auto jet = new REveJetCone(Form("Jet_%d", i));
jet->SetCylinder(2 * kR_max, 2 * kZ_d);
jet->AddEllipticCone(r.Uniform(-0.5, 0.5), r.Uniform(0, TMath::TwoPi()), 0.1, 0.2);
jet->SetFillColor(kPink - 8);
jet->SetLineColor(kViolet - 7);
jetHolder->AddElement(jet);
}
}
void eveGeoBrowser()
{
auto eveMng = REveManager::Create();
// eveMng->AllowMultipleRemoteConnections(false, false);
TFile::SetCacheFileDir(".");
// initialize RGeomDesc from TGeoNode
auto data = new REveGeoTopNodeData("http://xrd-cache-1.t2.ucsd.edu/alja/mail/geo/cmsSimGeo2026.root");
data->InitPath("/tracker:Tracker_1");
data->RefDescription().SetVisLevel(2);
// make geoTable
auto scene = eveMng->SpawnNewScene("GeoSceneTable");
auto view = eveMng->SpawnNewViewer("GeoTable");
view->AddScene(scene);
scene->AddElement(data);
// 3D EveViz representation
auto geoViz = new REveGeoTopNodeViz();
geoViz->SetGeoData(data);
data->AddNiece(geoViz);
geoViz->SetPickable(true);
// add jets for BBox issues
eveMng->GetEventScene()->AddElement(geoViz);
REveElement *jetHolder = new REveElement("Jets");
eveMng->GetEventScene()->AddElement(jetHolder);
makeJets(7, jetHolder);
eveMng->Show();
}