Definition at line 210 of file RGeomData.hxx.
Classes | |
class | ShapeDescr |
Public Member Functions | |
RGeomDescription ()=default | |
void | AddSignalHandler (const void *handler, RGeomSignalFunc_t func) |
Add signal handler. | |
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 (const std::vector< std::string > &path, bool on) |
Change visibility for specified element Returns true if changes was performed. | |
bool | ClearAllPhysVisibility () |
Reset all custom visibility settings. | |
void | ClearCache () |
Clear cached data, need to be clear when connection broken. | |
void | ClearDrawData () |
Clear raw data. Will be rebuild when next connection will be established. | |
bool | ClearPhysNodeVisibility (const std::vector< std::string > &path) |
Reset custom visibility of physical node by path. | |
int | FindNodeId (const std::vector< int > &stack) |
Returns nodeid for given stack array, returns -1 in case of failure. | |
std::string | GetActiveItem () const |
std::vector< int > | GetClickedItem () const |
std::string | GetDrawJson () const |
std::string | GetDrawOptions () const |
Returns draw options, used for JSROOT TGeoPainter. | |
std::vector< int > | GetHighlightedItem () const |
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. | |
TVirtualMutex * | GetMutex () const |
Return currently used mutex. | |
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. | |
std::string | GetSearch () const |
std::string | GetSearchJson () const |
const std::vector< int > & | GetSelectedStack () const |
Get top node path. | |
bool | GetTopVisible () const |
Returns draw options, used for JSROOT TGeoPainter. | |
int | GetVisLevel () const |
Returns maximal visible level. | |
bool | HasDrawData () const |
Check if there is draw data available. | |
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 | |
void | IssueSignal (const void *handler, const std::string &kind) |
Issue signal, which distributed on all handlers - excluding source handler. | |
std::vector< int > | MakeIdsByStack (const std::vector< int > &stack) |
Produce list of node ids for given stack If found nodes preselected - use their ids. | |
std::unique_ptr< RGeomNodeInfo > | MakeNodeInfo (const std::vector< int > &stack) |
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< int > | MakeStackByIds (const std::vector< int > &ids) |
Creates stack for given array of ids, first element always should be 0. | |
std::vector< int > | MakeStackByPath (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 (bool all_nodes=false) |
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. | |
void | ProduceSearchData () |
Produces search data if necessary. | |
void | RemoveSignalHandler (const void *handler) |
Remove signal handler. | |
void | SavePrimitive (std::ostream &fs, const std::string &name) |
Save geometry configuration as C++ macro. | |
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. | |
bool | SelectTop (const std::vector< std::string > &path) |
Select top node by path Used by the client to change active node Returns true if selected node was changed. | |
bool | SetActiveItem (const std::string &itemname) |
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. | |
bool | SetClickedItem (const std::vector< int > &stack) |
void | SetDrawOptions (const std::string &opt="") |
Set draw options as string for JSROOT TGeoPainter. | |
bool | SetHighlightedItem (const std::vector< int > &stack) |
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 | SetMutex (TVirtualMutex *mutex) |
Set mutex, it must be recursive one. | |
void | SetNSegments (int n=0) |
Set number of segments for cylindrical shapes, if 0 - default value will be used. | |
bool | SetPhysNodeVisibility (const std::string &path, bool on=true) |
Set visibility of physical node by itemname itemname in string with path like "/TOP_1/SUB_2/NODE_3". | |
bool | SetPhysNodeVisibility (const std::vector< std::string > &path, bool on=true) |
Set visibility of physical node by path It overrules TGeo visibility flags - but only for specific physical node. | |
void | SetPreferredOffline (bool on) |
Set preference of offline operations. | |
bool | SetSearch (const std::string &query, const std::string &json) |
Change search query and belongs to it json string Returns true if any parameter was really changed. | |
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, bool all_nodes=false) |
Collect nodes which are used in visibles. | |
void | CopyMaterialProperties (TGeoVolume *vol, RGeomNode &node) |
Copy material properties. | |
int | CountShapeFaces (TGeoShape *shape) |
Count number of faces for the shape. | |
ShapeDescr & | FindShapeDescr (TGeoShape *shape) |
Find description object for requested shape If not exists - will be created. | |
int | GetUsedNSegments (int min=20) |
Returns really used number of cylindrical segments. | |
TGeoVolume * | GetVolume (int nodeid) |
Get volume for specified nodeid If specific volume was configured, it will be returned for nodeid==0. | |
int | IsPhysNodeVisible (const std::vector< int > &stack) |
Check if there special settings for specified physical node returns -1 if nothing is found. | |
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. | |
ShapeDescr & | MakeShapeDescr (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 | |
std::string | fActiveItemName |
! name of item which should be activated in hierarchy | |
int | fActualLevel {0} |
! level can be reduced when selecting nodes | |
RGeomConfig | fCfg |
! configuration parameter editable from GUI | |
std::vector< int > | fClickedStack |
! clicked element by stack | |
std::vector< RGeomNode > | fDesc |
! 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 | |
TGeoVolume * | fDrawVolume {nullptr} |
! select volume independent from TGeoManager | |
std::vector< int > | fHighlightedStack |
! highlighted element by stack | |
int | fJsonComp {0} |
! default JSON compression | |
TVirtualMutex * | fMutex {nullptr} |
! external mutex used to protect all data | |
std::vector< TGeoNode * > | fNodes |
! flat list of all nodes | |
bool | fPreferredOffline {false} |
! indicates that full description should be provided to client | |
std::string | fSearch |
! search string in hierarchy | |
std::string | fSearchJson |
! drawing json for search | |
std::vector< int > | fSelectedStack |
! selected branch of geometry by stack | |
std::vector< ShapeDescr > | fShapes |
! shapes with created descriptions | |
std::vector< std::pair< const void *, RGeomSignalFunc_t > > | fSignals |
! registered signals | |
std::vector< int > | fSortMap |
! nodes in order large -> smaller volume | |
std::vector< RGeomNodeVisibility > | fVisibility |
! custom visibility flags for physical nodes | |
Friends | |
class | RGeomBrowserIter |
#include <ROOT/RGeomData.hxx>
|
default |
void RGeomDescription::AddSignalHandler | ( | const void * | handler, |
RGeomSignalFunc_t | func | ||
) |
Add signal handler.
Definition at line 312 of file RGeomData.cxx.
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 425 of file RGeomData.cxx.
void RGeomDescription::Build | ( | TGeoVolume * | vol | ) |
Collect information about geometry from single volume like it done in JSROOT ClonedNodes.createClones.
Definition at line 460 of file RGeomData.cxx.
|
private |
Build geometry description.
Definition at line 494 of file RGeomData.cxx.
bool RGeomDescription::ChangeConfiguration | ( | const std::string & | json | ) |
Change configuration by client Returns true if any parameter was really changed.
Definition at line 2105 of file RGeomData.cxx.
Change visibility for specified element Returns true if changes was performed.
Definition at line 1850 of file RGeomData.cxx.
bool RGeomDescription::ClearAllPhysVisibility | ( | ) |
Reset all custom visibility settings.
Definition at line 2089 of file RGeomData.cxx.
void RGeomDescription::ClearCache | ( | ) |
Clear cached data, need to be clear when connection broken.
Definition at line 1381 of file RGeomData.cxx.
|
private |
Clear geometry description.
Definition at line 478 of file RGeomData.cxx.
void RGeomDescription::ClearDrawData | ( | ) |
Clear raw data. Will be rebuild when next connection will be established.
Definition at line 1370 of file RGeomData.cxx.
bool RGeomDescription::ClearPhysNodeVisibility | ( | const std::vector< std::string > & | path | ) |
Reset custom visibility of physical node by path.
Definition at line 2065 of file RGeomData.cxx.
|
private |
Collect nodes which are used in visibles.
Definition at line 721 of file RGeomData.cxx.
|
private |
Copy material properties.
Definition at line 1159 of file RGeomData.cxx.
Count number of faces for the shape.
Definition at line 937 of file RGeomData.cxx.
Returns nodeid for given stack array, returns -1 in case of failure.
Definition at line 1602 of file RGeomData.cxx.
|
private |
Find description object for requested shape If not exists - will be created.
Definition at line 857 of file RGeomData.cxx.
|
inline |
Definition at line 443 of file RGeomData.hxx.
|
inline |
Definition at line 429 of file RGeomData.hxx.
|
inline |
Definition at line 384 of file RGeomData.hxx.
|
inline |
Returns draw options, used for JSROOT TGeoPainter.
Definition at line 349 of file RGeomData.hxx.
|
inline |
Definition at line 415 of file RGeomData.hxx.
|
inline |
Returns JSON compression level for data transfer.
Definition at line 354 of file RGeomData.hxx.
|
inline |
Returns maximal visible number of faces, ignored when non-positive.
Definition at line 324 of file RGeomData.hxx.
|
inline |
Returns maximal visible number of nodes, ignored when non-positive.
Definition at line 319 of file RGeomData.hxx.
|
inline |
Return currently used mutex.
Definition at line 314 of file RGeomData.hxx.
|
inline |
Return of segments for cylindrical shapes, if 0 - default value will be used.
Definition at line 344 of file RGeomData.hxx.
|
inline |
Number of unique nodes in the geometry.
Definition at line 371 of file RGeomData.hxx.
|
inline |
Definition at line 385 of file RGeomData.hxx.
|
inline |
Definition at line 386 of file RGeomData.hxx.
|
inline |
Get top node path.
Definition at line 364 of file RGeomData.hxx.
|
inline |
Returns draw options, used for JSROOT TGeoPainter.
Definition at line 334 of file RGeomData.hxx.
Returns really used number of cylindrical segments.
Definition at line 922 of file RGeomData.cxx.
|
inline |
Returns maximal visible level.
Definition at line 329 of file RGeomData.hxx.
|
private |
Get volume for specified nodeid If specific volume was configured, it will be returned for nodeid==0.
Definition at line 583 of file RGeomData.cxx.
bool RGeomDescription::HasDrawData | ( | ) | const |
Check if there is draw data available.
Definition at line 1331 of file RGeomData.cxx.
|
inline |
Definition at line 373 of file RGeomData.hxx.
|
inline |
Returns true if binary 3D model build already by C++ server (default)
Definition at line 339 of file RGeomData.hxx.
Check if there special settings for specified physical node returns -1 if nothing is found.
Definition at line 2043 of file RGeomData.cxx.
|
inline |
Is offline operations preferred.
After get full description, client can do most operations without extra requests
Definition at line 361 of file RGeomData.hxx.
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 1394 of file RGeomData.cxx.
void RGeomDescription::IssueSignal | ( | const void * | handler, |
const std::string & | kind | ||
) |
Issue signal, which distributed on all handlers - excluding source handler.
Definition at line 293 of file RGeomData.cxx.
|
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 1826 of file RGeomData.cxx.
Produce list of node ids for given stack If found nodes preselected - use their ids.
Definition at line 1683 of file RGeomData.cxx.
std::unique_ptr< RGeomNodeInfo > RGeomDescription::MakeNodeInfo | ( | const std::vector< int > & | stack | ) |
Change visibility for specified element Returns true if changes was performed.
Definition at line 1899 of file RGeomData.cxx.
std::vector< std::string > RGeomDescription::MakePathByStack | ( | const std::vector< int > & | stack | ) |
Returns path string for provided stack.
Definition at line 1716 of file RGeomData.cxx.
|
private |
Find description object and create render information.
Definition at line 1070 of file RGeomData.cxx.
Creates stack for given array of ids, first element always should be 0.
Definition at line 1621 of file RGeomData.cxx.
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 1665 of file RGeomData.cxx.
Set visibility flag for each nodes.
Definition at line 594 of file RGeomData.cxx.
|
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 341 of file RGeomData.cxx.
std::string RGeomDescription::ProcessBrowserRequest | ( | const std::string & | req = "" | ) |
Find description object for requested shape If not exists - will be created.
Definition at line 767 of file RGeomData.cxx.
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 1358 of file RGeomData.cxx.
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 1757 of file RGeomData.cxx.
|
private |
Count total number of visible childs under each node.
Definition at line 629 of file RGeomData.cxx.
std::string RGeomDescription::ProduceJson | ( | bool | all_nodes = false | ) |
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 If
all_nodes | is true, all existing nodes will be provided, which allows to create complete nodes hierarchy on client side |
Example of usage:
void geom() { auto f = TFile::Open("file_name.root"); auto vol = f->Get<TGeoVolume>("object_name"); ROOT::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. Also see example in tutorials/visualisation/webgui/geom/ folder
Definition at line 1230 of file RGeomData.cxx.
std::string RGeomDescription::ProduceModifyReply | ( | int | nodeid | ) |
Return string with only part of nodes description which were modified Checks also volume.
Definition at line 1734 of file RGeomData.cxx.
void RGeomDescription::ProduceSearchData | ( | ) |
Produces search data if necessary.
Definition at line 1340 of file RGeomData.cxx.
void RGeomDescription::RemoveSignalHandler | ( | const void * | handler | ) |
Remove signal handler.
Definition at line 321 of file RGeomData.cxx.
|
private |
Reset shape info, which used to pack binary data.
Definition at line 1201 of file RGeomData.cxx.
void RGeomDescription::SavePrimitive | ( | std::ostream & | fs, |
const std::string & | name | ||
) |
Save geometry configuration as C++ macro.
Definition at line 2143 of file RGeomData.cxx.
|
private |
Iterate over all nodes and call function for visible.
Definition at line 653 of file RGeomData.cxx.
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 1411 of file RGeomData.cxx.
bool RGeomDescription::SelectTop | ( | const std::vector< std::string > & | path | ) |
Select top node by path Used by the client to change active node Returns true if selected node was changed.
Definition at line 1946 of file RGeomData.cxx.
|
inline |
Definition at line 435 of file RGeomData.hxx.
|
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 337 of file RGeomData.hxx.
Definition at line 421 of file RGeomData.hxx.
|
inline |
Set draw options as string for JSROOT TGeoPainter.
Definition at line 347 of file RGeomData.hxx.
Definition at line 407 of file RGeomData.hxx.
|
inline |
Set JSON compression level for data transfer.
Definition at line 352 of file RGeomData.hxx.
|
inline |
Set maximal number of faces which should be selected for drawing.
Definition at line 322 of file RGeomData.hxx.
|
inline |
Set maximal number of nodes which should be selected for drawing.
Definition at line 317 of file RGeomData.hxx.
|
inline |
Set mutex, it must be recursive one.
Definition at line 312 of file RGeomData.hxx.
|
inline |
Set number of segments for cylindrical shapes, if 0 - default value will be used.
Definition at line 342 of file RGeomData.hxx.
Set visibility of physical node by itemname itemname in string with path like "/TOP_1/SUB_2/NODE_3".
Definition at line 2016 of file RGeomData.cxx.
bool RGeomDescription::SetPhysNodeVisibility | ( | const std::vector< std::string > & | path, |
bool | on = true |
||
) |
Set visibility of physical node by path It overrules TGeo visibility flags - but only for specific physical node.
Definition at line 1970 of file RGeomData.cxx.
|
inline |
Set preference of offline operations.
Server provides more info to client from the begin on to avoid communication
Definition at line 358 of file RGeomData.hxx.
bool RGeomDescription::SetSearch | ( | const std::string & | query, |
const std::string & | json | ||
) |
Change search query and belongs to it json string Returns true if any parameter was really changed.
Definition at line 2130 of file RGeomData.cxx.
|
inline |
Set draw options as string for JSROOT TGeoPainter.
Definition at line 332 of file RGeomData.hxx.
|
inline |
Set maximal visible level.
Definition at line 327 of file RGeomData.hxx.
|
friend |
Definition at line 212 of file RGeomData.hxx.
|
private |
! name of item which should be activated in hierarchy
Definition at line 262 of file RGeomData.hxx.
|
private |
! level can be reduced when selecting nodes
Definition at line 259 of file RGeomData.hxx.
|
private |
! configuration parameter editable from GUI
Definition at line 264 of file RGeomData.hxx.
|
private |
! clicked element by stack
Definition at line 250 of file RGeomData.hxx.
|
private |
! converted description, send to client
Definition at line 243 of file RGeomData.hxx.
|
private |
! sortid used for selection of most-significant nodes
Definition at line 258 of file RGeomData.hxx.
|
private |
! JSON with main nodes drawn by client
Definition at line 257 of file RGeomData.hxx.
|
private |
! select volume independent from TGeoManager
Definition at line 246 of file RGeomData.hxx.
|
private |
! highlighted element by stack
Definition at line 249 of file RGeomData.hxx.
|
private |
! default JSON compression
Definition at line 261 of file RGeomData.hxx.
|
private |
! external mutex used to protect all data
Definition at line 266 of file RGeomData.hxx.
|
private |
! flat list of all nodes
Definition at line 242 of file RGeomData.hxx.
|
private |
! indicates that full description should be provided to client
Definition at line 260 of file RGeomData.hxx.
|
private |
! search string in hierarchy
Definition at line 255 of file RGeomData.hxx.
|
private |
! drawing json for search
Definition at line 256 of file RGeomData.hxx.
|
private |
! selected branch of geometry by stack
Definition at line 247 of file RGeomData.hxx.
|
private |
! shapes with created descriptions
Definition at line 253 of file RGeomData.hxx.
|
private |
! registered signals
Definition at line 268 of file RGeomData.hxx.
|
private |
! nodes in order large -> smaller volume
Definition at line 252 of file RGeomData.hxx.
|
private |
! custom visibility flags for physical nodes
Definition at line 244 of file RGeomData.hxx.