Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::RGeomDescription Class Reference

Definition at line 158 of file RGeomData.hxx.

Classes

class  ShapeDescr
 

Public Member Functions

 RGeomDescription ()=default
 
void Build (TGeoManager *mgr, const std::string &volname="")
 Collect information about geometry hierarchy into flat list like it done in JSROOT ClonedNodes.createClones.
 
void Build (TGeoVolume *vol)
 Collect information about geometry from single volume like it done in JSROOT ClonedNodes.createClones.
 
bool ChangeConfiguration (const std::string &json)
 Change configuration by client Returns true if any parameter was really changed.
 
bool ChangeNodeVisibility (int nodeid, bool selected)
 Change visibility for specified element Returns true if changes was performed.
 
void ClearDrawData ()
 Clear raw data. Will be rebuild when next connection will be established.
 
int FindNodeId (const std::vector< int > &stack)
 Returns nodeid for given stack array, returns -1 in case of failure.
 
const std::string & GetDrawJson () const
 
std::string GetDrawOptions () const
 Returns draw options, used for JSROOT TGeoPainter.
 
int GetJsonComp () const
 Returns JSON compression level for data transfer.
 
int GetMaxVisFaces () const
 Returns maximal visible number of faces, ignored when non-positive.
 
int GetMaxVisNodes () const
 Returns maximal visible number of nodes, ignored when non-positive.
 
int GetNSegments () const
 Return of segments for cylindrical shapes, if 0 - default value will be used.
 
int GetNumNodes () const
 Number of unique nodes in the geometry.
 
bool GetTopVisible () const
 Returns draw options, used for JSROOT TGeoPainter.
 
int GetVisLevel () const
 Returns maximal visible level.
 
bool HasDrawData () const
 
bool IsBuild () const
 
int IsBuildShapes () const
 Returns true if binary 3D model build already by C++ server (default)
 
bool IsPreferredOffline () const
 Is offline operations preferred.
 
bool IsPrincipalEndNode (int nodeid)
 return true when node used in main geometry drawing and does not have childs for such nodes one could provide optimize toggling of visibility flags
 
std::vector< intMakeIdsByStack (const std::vector< int > &stack)
 Produce list of node ids for given stack If found nodes preselected - use their ids.
 
std::unique_ptr< RGeomNodeInfoMakeNodeInfo (const std::vector< std::string > &path)
 Change visibility for specified element Returns true if changes was performed.
 
std::vector< std::string > MakePathByStack (const std::vector< int > &stack)
 Returns path string for provided stack.
 
std::vector< intMakeStackByIds (const std::vector< int > &ids)
 Creates stack for given array of ids, first element always should be 0.
 
std::vector< intMakeStackByPath (const std::vector< std::string > &path)
 Produce stack based on string path Used to highlight geo volumes by browser hover event.
 
std::string ProcessBrowserRequest (const std::string &req="")
 Find description object for requested shape If not exists - will be created.
 
void ProduceDrawData ()
 Collect all information required to draw geometry on the client This includes list of each visible nodes, meshes and matrixes.
 
bool ProduceDrawingFor (int nodeid, std::string &json, bool check_volume=false)
 Produce shape rendering data for given stack All nodes, which are referencing same shape will be transferred Returns true if new render information provided.
 
std::string ProduceJson ()
 Produce JSON string which can be directly used with build function from JSROOT to create three.js model of configured geometry.
 
std::string ProduceModifyReply (int nodeid)
 Return string with only part of nodes description which were modified Checks also volume.
 
int SearchVisibles (const std::string &find, std::string &hjson, std::string &json)
 Search visible nodes for provided name If number of found elements less than 100, create description and shapes for them Returns number of match elements.
 
void SetBuildShapes (int lvl=1)
 Instruct to build binary 3D model already on the server (true) or send TGeoShape as is to client, which can build model itself.
 
void SetDrawOptions (const std::string &opt="")
 Set draw options as string for JSROOT TGeoPainter.
 
void SetJsonComp (int comp=0)
 Set JSON compression level for data transfer.
 
void SetMaxVisFaces (int cnt)
 Set maximal number of faces which should be selected for drawing.
 
void SetMaxVisNodes (int cnt)
 Set maximal number of nodes which should be selected for drawing.
 
void SetNSegments (int n=0)
 Set number of segments for cylindrical shapes, if 0 - default value will be used.
 
void SetPreferredOffline (bool on)
 Set preference of offline operations.
 
void SetTopVisible (bool on=true)
 Set draw options as string for JSROOT TGeoPainter.
 
void SetVisLevel (int lvl=3)
 Set maximal visible level.
 

Private Member Functions

void BuildDescription (TGeoNode *topnode, TGeoVolume *topvolume)
 Build geometry description.
 
void ClearDescription ()
 Clear geometry description.
 
void CollectNodes (RGeomDrawing &drawing)
 Collect nodes which are used in visibles.
 
void CopyMaterialProperties (TGeoVolume *vol, RGeomNode &node)
 Copy material properties.
 
ShapeDescrFindShapeDescr (TGeoShape *shape)
 Find description object for requested shape If not exists - will be created.
 
TGeoVolumeGetVolume (int nodeid)
 Get volume for specified nodeid If specific volume was configured, it will be returned for nodeid==0.
 
std::string MakeDrawingJson (RGeomDrawing &drawing, bool has_shapes=false)
 Produce JSON for the drawing If TGeoShape appears in the drawing, one has to keep typeinfo But in this case one can exclude several classes which are not interesting, but appears very often.
 
ShapeDescrMakeShapeDescr (TGeoShape *shape)
 Find description object and create render information.
 
int MarkVisible (bool on_screen=false)
 Set visibility flag for each nodes.
 
void PackMatrix (std::vector< float > &arr, TGeoMatrix *matr)
 Pack matrix into vector, which can be send to client Following sizes can be used for vector: 0 - Identity matrix 3 - Translation 4 - Scale (last element always 1) 9 - Rotation 16 - Full size.
 
void ProduceIdShifts ()
 Count total number of visible childs under each node.
 
void ResetRndrInfos ()
 Reset shape info, which used to pack binary data.
 
int ScanNodes (bool only_visible, int maxlvl, RGeomScanFunc_t func)
 Iterate over all nodes and call function for visible.
 

Private Attributes

int fActualLevel {0}
 ! level can be reduced when selecting nodes
 
RGeomConfig fCfg
 ! configuration parameter editable from GUI
 
std::vector< RGeomNodefDesc
 converted description, send to client
 
int fDrawIdCut {0}
 ! sortid used for selection of most-significant nodes
 
std::string fDrawJson
 ! JSON with main nodes drawn by client
 
TGeoVolumefDrawVolume {nullptr}
 ! select volume independent from TGeoMaanger
 
int fJsonComp {0}
 ! default JSON compression
 
std::vector< TGeoNode * > fNodes
 ! flat list of all nodes
 
bool fPreferredOffline {false}
 ! indicates that full description should be provided to client
 
std::vector< ShapeDescrfShapes
 ! shapes with created descriptions
 
std::vector< intfSortMap
 ! nodes in order large -> smaller volume
 

Friends

class RGeomBrowserIter
 

#include <ROOT/RGeomData.hxx>

Constructor & Destructor Documentation

◆ RGeomDescription()

ROOT::Experimental::RGeomDescription::RGeomDescription ( )
default

Member Function Documentation

◆ Build() [1/2]

void RGeomDescription::Build ( TGeoManager mgr,
const std::string &  volname = "" 
)

Collect information about geometry hierarchy into flat list like it done in JSROOT ClonedNodes.createClones.

Definition at line 313 of file RGeomData.cxx.

◆ Build() [2/2]

void RGeomDescription::Build ( TGeoVolume vol)

Collect information about geometry from single volume like it done in JSROOT ClonedNodes.createClones.

Definition at line 350 of file RGeomData.cxx.

◆ BuildDescription()

void RGeomDescription::BuildDescription ( TGeoNode topnode,
TGeoVolume topvolume 
)
private

Build geometry description.

Definition at line 377 of file RGeomData.cxx.

◆ ChangeConfiguration()

bool RGeomDescription::ChangeConfiguration ( const std::string &  json)

Change configuration by client Returns true if any parameter was really changed.

Definition at line 1488 of file RGeomData.cxx.

◆ ChangeNodeVisibility()

bool RGeomDescription::ChangeNodeVisibility ( int  nodeid,
bool  selected 
)

Change visibility for specified element Returns true if changes was performed.

Definition at line 1415 of file RGeomData.cxx.

◆ ClearDescription()

void RGeomDescription::ClearDescription ( )
private

Clear geometry description.

Definition at line 364 of file RGeomData.cxx.

◆ ClearDrawData()

void RGeomDescription::ClearDrawData ( )

Clear raw data. Will be rebuild when next connection will be established.

Definition at line 1001 of file RGeomData.cxx.

◆ CollectNodes()

void RGeomDescription::CollectNodes ( RGeomDrawing drawing)
private

Collect nodes which are used in visibles.

Definition at line 583 of file RGeomData.cxx.

◆ CopyMaterialProperties()

void RGeomDescription::CopyMaterialProperties ( TGeoVolume vol,
RGeomNode node 
)
private

Copy material properties.

Definition at line 838 of file RGeomData.cxx.

◆ FindNodeId()

int RGeomDescription::FindNodeId ( const std::vector< int > &  stack)

Returns nodeid for given stack array, returns -1 in case of failure.

Definition at line 1191 of file RGeomData.cxx.

◆ FindShapeDescr()

RGeomDescription::ShapeDescr & RGeomDescription::FindShapeDescr ( TGeoShape shape)
private

Find description object for requested shape If not exists - will be created.

Definition at line 686 of file RGeomData.cxx.

◆ GetDrawJson()

const std::string & ROOT::Experimental::RGeomDescription::GetDrawJson ( ) const
inline

Definition at line 277 of file RGeomData.hxx.

◆ GetDrawOptions()

std::string ROOT::Experimental::RGeomDescription::GetDrawOptions ( ) const
inline

Returns draw options, used for JSROOT TGeoPainter.

Definition at line 311 of file RGeomData.hxx.

◆ GetJsonComp()

int ROOT::Experimental::RGeomDescription::GetJsonComp ( ) const
inline

Returns JSON compression level for data transfer.

Definition at line 306 of file RGeomData.hxx.

◆ GetMaxVisFaces()

int ROOT::Experimental::RGeomDescription::GetMaxVisFaces ( ) const
inline

Returns maximal visible number of faces, ignored when non-positive.

Definition at line 253 of file RGeomData.hxx.

◆ GetMaxVisNodes()

int ROOT::Experimental::RGeomDescription::GetMaxVisNodes ( ) const
inline

Returns maximal visible number of nodes, ignored when non-positive.

Definition at line 247 of file RGeomData.hxx.

◆ GetNSegments()

int ROOT::Experimental::RGeomDescription::GetNSegments ( ) const
inline

Return of segments for cylindrical shapes, if 0 - default value will be used.

Definition at line 301 of file RGeomData.hxx.

◆ GetNumNodes()

int ROOT::Experimental::RGeomDescription::GetNumNodes ( ) const
inline

Number of unique nodes in the geometry.

Definition at line 239 of file RGeomData.hxx.

◆ GetTopVisible()

bool ROOT::Experimental::RGeomDescription::GetTopVisible ( ) const
inline

Returns draw options, used for JSROOT TGeoPainter.

Definition at line 316 of file RGeomData.hxx.

◆ GetVisLevel()

int ROOT::Experimental::RGeomDescription::GetVisLevel ( ) const
inline

Returns maximal visible level.

Definition at line 259 of file RGeomData.hxx.

◆ GetVolume()

TGeoVolume * RGeomDescription::GetVolume ( int  nodeid)
private

Get volume for specified nodeid If specific volume was configured, it will be returned for nodeid==0.

Definition at line 465 of file RGeomData.cxx.

◆ HasDrawData()

bool ROOT::Experimental::RGeomDescription::HasDrawData ( ) const
inline

Definition at line 275 of file RGeomData.hxx.

◆ IsBuild()

bool ROOT::Experimental::RGeomDescription::IsBuild ( ) const
inline

Definition at line 241 of file RGeomData.hxx.

◆ IsBuildShapes()

int ROOT::Experimental::RGeomDescription::IsBuildShapes ( ) const
inline

Returns true if binary 3D model build already by C++ server (default)

Definition at line 321 of file RGeomData.hxx.

◆ IsPreferredOffline()

bool ROOT::Experimental::RGeomDescription::IsPreferredOffline ( ) const
inline

Is offline operations preferred.

After get full description, client can do most operations without extra requests

Definition at line 267 of file RGeomData.hxx.

◆ IsPrincipalEndNode()

bool RGeomDescription::IsPrincipalEndNode ( int  nodeid)

return true when node used in main geometry drawing and does not have childs for such nodes one could provide optimize toggling of visibility flags

Definition at line 1010 of file RGeomData.cxx.

◆ MakeDrawingJson()

std::string RGeomDescription::MakeDrawingJson ( RGeomDrawing drawing,
bool  has_shapes = false 
)
private

Produce JSON for the drawing If TGeoShape appears in the drawing, one has to keep typeinfo But in this case one can exclude several classes which are not interesting, but appears very often.

Definition at line 1391 of file RGeomData.cxx.

◆ MakeIdsByStack()

std::vector< int > RGeomDescription::MakeIdsByStack ( const std::vector< int > &  stack)

Produce list of node ids for given stack If found nodes preselected - use their ids.

Definition at line 1262 of file RGeomData.cxx.

◆ MakeNodeInfo()

std::unique_ptr< RGeomNodeInfo > RGeomDescription::MakeNodeInfo ( const std::vector< std::string > &  path)

Change visibility for specified element Returns true if changes was performed.

Definition at line 1446 of file RGeomData.cxx.

◆ MakePathByStack()

std::vector< std::string > RGeomDescription::MakePathByStack ( const std::vector< int > &  stack)

Returns path string for provided stack.

Definition at line 1290 of file RGeomData.cxx.

◆ MakeShapeDescr()

RGeomDescription::ShapeDescr & RGeomDescription::MakeShapeDescr ( TGeoShape shape)
private

Find description object and create render information.

Definition at line 747 of file RGeomData.cxx.

◆ MakeStackByIds()

std::vector< int > RGeomDescription::MakeStackByIds ( const std::vector< int > &  ids)

Creates stack for given array of ids, first element always should be 0.

Definition at line 1207 of file RGeomData.cxx.

◆ MakeStackByPath()

std::vector< int > RGeomDescription::MakeStackByPath ( const std::vector< std::string > &  path)

Produce stack based on string path Used to highlight geo volumes by browser hover event.

Definition at line 1246 of file RGeomData.cxx.

◆ MarkVisible()

int RGeomDescription::MarkVisible ( bool  on_screen = false)
private

Set visibility flag for each nodes.

Definition at line 475 of file RGeomData.cxx.

◆ PackMatrix()

void RGeomDescription::PackMatrix ( std::vector< float > &  arr,
TGeoMatrix matr 
)
private

Pack matrix into vector, which can be send to client Following sizes can be used for vector: 0 - Identity matrix 3 - Translation 4 - Scale (last element always 1) 9 - Rotation 16 - Full size.

Definition at line 240 of file RGeomData.cxx.

◆ ProcessBrowserRequest()

std::string RGeomDescription::ProcessBrowserRequest ( const std::string &  req = "")

Find description object for requested shape If not exists - will be created.

Definition at line 620 of file RGeomData.cxx.

◆ ProduceDrawData()

void RGeomDescription::ProduceDrawData ( )

Collect all information required to draw geometry on the client This includes list of each visible nodes, meshes and matrixes.

Definition at line 993 of file RGeomData.cxx.

◆ ProduceDrawingFor()

bool RGeomDescription::ProduceDrawingFor ( int  nodeid,
std::string &  json,
bool  check_volume = false 
)

Produce shape rendering data for given stack All nodes, which are referencing same shape will be transferred Returns true if new render information provided.

Definition at line 1328 of file RGeomData.cxx.

◆ ProduceIdShifts()

void RGeomDescription::ProduceIdShifts ( )
private

Count total number of visible childs under each node.

Definition at line 509 of file RGeomData.cxx.

◆ ProduceJson()

std::string RGeomDescription::ProduceJson ( )

Produce JSON string which can be directly used with build function from JSROOT to create three.js model of configured geometry.

Collect all information required to draw geometry on the client This includes list of each visible nodes, meshes and matrixes

Example of usage:

void geom() { auto f = TFile::Open("file_name.root"); auto vol = f->Get<TGeoVolume>("object_name"); ROOT::Experimental::RGeomDescription desc; desc.Build(vol); std::ofstream fout("geom.json"); fout << desc.ProduceJson(); }

In JSROOT one loads data from JSON file and call build function to produce three.js model

Definition at line 898 of file RGeomData.cxx.

◆ ProduceModifyReply()

std::string RGeomDescription::ProduceModifyReply ( int  nodeid)

Return string with only part of nodes description which were modified Checks also volume.

Definition at line 1306 of file RGeomData.cxx.

◆ ResetRndrInfos()

void RGeomDescription::ResetRndrInfos ( )
private

Reset shape info, which used to pack binary data.

Definition at line 871 of file RGeomData.cxx.

◆ ScanNodes()

int RGeomDescription::ScanNodes ( bool  only_visible,
int  maxlvl,
RGeomScanFunc_t  func 
)
private

Iterate over all nodes and call function for visible.

Definition at line 533 of file RGeomData.cxx.

◆ SearchVisibles()

int RGeomDescription::SearchVisibles ( const std::string &  find,
std::string &  hjson,
std::string &  json 
)

Search visible nodes for provided name If number of found elements less than 100, create description and shapes for them Returns number of match elements.

Definition at line 1026 of file RGeomData.cxx.

◆ SetBuildShapes()

void ROOT::Experimental::RGeomDescription::SetBuildShapes ( int  lvl = 1)
inline

Instruct to build binary 3D model already on the server (true) or send TGeoShape as is to client, which can build model itself.

Definition at line 319 of file RGeomData.hxx.

◆ SetDrawOptions()

void ROOT::Experimental::RGeomDescription::SetDrawOptions ( const std::string &  opt = "")
inline

Set draw options as string for JSROOT TGeoPainter.

Definition at line 309 of file RGeomData.hxx.

◆ SetJsonComp()

void ROOT::Experimental::RGeomDescription::SetJsonComp ( int  comp = 0)
inline

Set JSON compression level for data transfer.

Definition at line 304 of file RGeomData.hxx.

◆ SetMaxVisFaces()

void ROOT::Experimental::RGeomDescription::SetMaxVisFaces ( int  cnt)
inline

Set maximal number of faces which should be selected for drawing.

Definition at line 250 of file RGeomData.hxx.

◆ SetMaxVisNodes()

void ROOT::Experimental::RGeomDescription::SetMaxVisNodes ( int  cnt)
inline

Set maximal number of nodes which should be selected for drawing.

Definition at line 244 of file RGeomData.hxx.

◆ SetNSegments()

void ROOT::Experimental::RGeomDescription::SetNSegments ( int  n = 0)
inline

Set number of segments for cylindrical shapes, if 0 - default value will be used.

Definition at line 299 of file RGeomData.hxx.

◆ SetPreferredOffline()

void ROOT::Experimental::RGeomDescription::SetPreferredOffline ( bool  on)
inline

Set preference of offline operations.

Server provides more info to client from the begin on to avoid communication

Definition at line 263 of file RGeomData.hxx.

◆ SetTopVisible()

void ROOT::Experimental::RGeomDescription::SetTopVisible ( bool  on = true)
inline

Set draw options as string for JSROOT TGeoPainter.

Definition at line 314 of file RGeomData.hxx.

◆ SetVisLevel()

void ROOT::Experimental::RGeomDescription::SetVisLevel ( int  lvl = 3)
inline

Set maximal visible level.

Definition at line 256 of file RGeomData.hxx.

Friends And Related Symbol Documentation

◆ RGeomBrowserIter

friend class RGeomBrowserIter
friend

Definition at line 160 of file RGeomData.hxx.

Member Data Documentation

◆ fActualLevel

int ROOT::Experimental::RGeomDescription::fActualLevel {0}
private

! level can be reduced when selecting nodes

Definition at line 199 of file RGeomData.hxx.

◆ fCfg

RGeomConfig ROOT::Experimental::RGeomDescription::fCfg
private

! configuration parameter editable from GUI

Definition at line 203 of file RGeomData.hxx.

◆ fDesc

std::vector<RGeomNode> ROOT::Experimental::RGeomDescription::fDesc
private

converted description, send to client

Definition at line 191 of file RGeomData.hxx.

◆ fDrawIdCut

int ROOT::Experimental::RGeomDescription::fDrawIdCut {0}
private

! sortid used for selection of most-significant nodes

Definition at line 198 of file RGeomData.hxx.

◆ fDrawJson

std::string ROOT::Experimental::RGeomDescription::fDrawJson
private

! JSON with main nodes drawn by client

Definition at line 197 of file RGeomData.hxx.

◆ fDrawVolume

TGeoVolume* ROOT::Experimental::RGeomDescription::fDrawVolume {nullptr}
private

! select volume independent from TGeoMaanger

Definition at line 192 of file RGeomData.hxx.

◆ fJsonComp

int ROOT::Experimental::RGeomDescription::fJsonComp {0}
private

! default JSON compression

Definition at line 201 of file RGeomData.hxx.

◆ fNodes

std::vector<TGeoNode *> ROOT::Experimental::RGeomDescription::fNodes
private

! flat list of all nodes

Definition at line 190 of file RGeomData.hxx.

◆ fPreferredOffline

bool ROOT::Experimental::RGeomDescription::fPreferredOffline {false}
private

! indicates that full description should be provided to client

Definition at line 200 of file RGeomData.hxx.

◆ fShapes

std::vector<ShapeDescr> ROOT::Experimental::RGeomDescription::fShapes
private

! shapes with created descriptions

Definition at line 195 of file RGeomData.hxx.

◆ fSortMap

std::vector<int> ROOT::Experimental::RGeomDescription::fSortMap
private

! nodes in order large -> smaller volume

Definition at line 194 of file RGeomData.hxx.

Libraries for ROOT::Experimental::RGeomDescription:

The documentation for this class was generated from the following files: