10#include <ROOT/REveGeoShape.hxx>
11#include <ROOT/REveTrans.hxx>
12#include <ROOT/REveScene.hxx>
13#include <ROOT/REveViewer.hxx>
14#include <ROOT/REveElement.hxx>
15#include <ROOT/REveManager.hxx>
24 auto gss =
n->GetVolume()->GetShape();
25 auto b1s =
new REX::REveGeoShape(
n->GetName());
27 b1s->RefMainTrans().SetFrom(trans.Array());
29 b1s->SetMainColor(
kCyan);
30 holder->AddElement(b1s);
44 REX::REveTrans ctrans;
45 ctrans.SetFrom(trans.Array());
52 t(1,1) = rm[0]; t(1,2) = rm[1]; t(1,3) = rm[2];
53 t(2,1) = rm[3]; t(2,2) = rm[4]; t(2,3) = rm[5];
54 t(3,1) = rm[6]; t(3,2) = rm[7]; t(3,3) = rm[8];
55 t(1,4) = tv[0]; t(2,4) = tv[1]; t(3,4) = tv[2];
59 std::string mn = material->
GetName();
71 istringstream
f(path);
73 while (getline(
f,
s,
'/'))
82 auto eveMng = REX::REveManager::Create();
86 auto geoManager =
eveMng->GetGeometry(
"http://root.cern.ch/files/cms.root");
91 auto holder =
new REX::REveElement(
"Tracker");
92 eveMng->GetGlobalScene()->AddElement(holder);
95 std::string material =
"TOB_Silicon";
101 auto holder =
new REX::REveElement(
"MUON");
102 eveMng->GetGlobalScene()->AddElement(holder);
106 std::string material =
"M_B_Air";
107 REX::REveTrans trans;
110 auto bv =
n->GetVolume();
111 for (
int i = 1; i < 5; ++i ) {
112 auto n = bv->FindNode(
Form(
"MBXC_%d",i));
113 auto gss =
n->GetVolume()->GetShape();
114 auto b1s =
new REX::REveGeoShape(
Form(
"Arc %d", i));
115 b1s->InitMainTrans();
116 const double* move =
n->GetMatrix()->GetTranslation();
117 b1s->RefMainTrans().SetFrom( *(
n->GetMatrix()));
119 b1s->SetMainColor(
kBlue);
120 holder->AddElement(b1s);
char * Form(const char *fmt,...)
static Bool_t SetCacheFileDir(ROOT::Internal::TStringView cacheDir, Bool_t operateDisconnected=kTRUE, Bool_t forceCacheread=kFALSE)
Base class describing materials.
Geometrical transformation package.
virtual const Double_t * GetTranslation() const =0
virtual const Double_t * GetRotationMatrix() const =0
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
TGeoVolume * GetVolume() const
Int_t GetNdaughters() const
TGeoNode * GetDaughter(Int_t ind) const
Int_t FindNode(const TGeoNode *node, Int_t level)
Search for a node within the branch of this one.
TGeoNode * FindNode(const char *name) const
search a daughter inside the list of nodes
virtual const char * GetName() const
Returns name of object.
REX::REveManager * eveMng
TGeoNode * getNodeFromPath(TGeoNode *top, std::string path)
void makeEveGeoShape(TGeoNode *n, REX::REveTrans &trans, REX::REveElement *holder)
void filterChildNodes(TGeoNode *pn, REX::REveTrans &trans, REX::REveElement *holder, std::string mat, int maxlevel, int level)
static constexpr double s