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< 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< 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< 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 () |
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. | |
ShapeDescr & | FindShapeDescr (TGeoShape *shape) |
Find description object for requested shape If not exists - will be created. | |
TGeoVolume * | GetVolume (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. | |
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 | |
int | fActualLevel {0} |
! level can be reduced when selecting nodes | |
RGeomConfig | fCfg |
! configuration parameter editable from GUI | |
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 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< ShapeDescr > | fShapes |
! shapes with created descriptions | |
std::vector< int > | fSortMap |
! nodes in order large -> smaller volume | |
Friends | |
class | RGeomBrowserIter |
#include <ROOT/RGeomData.hxx>
|
default |
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.
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.
|
private |
Build geometry description.
Definition at line 377 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 1488 of file RGeomData.cxx.
Change visibility for specified element Returns true if changes was performed.
Definition at line 1415 of file RGeomData.cxx.
|
private |
Clear geometry description.
Definition at line 364 of file RGeomData.cxx.
void RGeomDescription::ClearDrawData | ( | ) |
Clear raw data. Will be rebuild when next connection will be established.
Definition at line 1001 of file RGeomData.cxx.
|
private |
Collect nodes which are used in visibles.
Definition at line 583 of file RGeomData.cxx.
|
private |
Copy material properties.
Definition at line 838 of file RGeomData.cxx.
Returns nodeid for given stack array, returns -1 in case of failure.
Definition at line 1191 of file RGeomData.cxx.
|
private |
Find description object for requested shape If not exists - will be created.
Definition at line 686 of file RGeomData.cxx.
|
inline |
Definition at line 277 of file RGeomData.hxx.
|
inline |
Returns draw options, used for JSROOT TGeoPainter.
Definition at line 311 of file RGeomData.hxx.
|
inline |
Returns JSON compression level for data transfer.
Definition at line 306 of file RGeomData.hxx.
|
inline |
Returns maximal visible number of faces, ignored when non-positive.
Definition at line 253 of file RGeomData.hxx.
|
inline |
Returns maximal visible number of nodes, ignored when non-positive.
Definition at line 247 of file RGeomData.hxx.
|
inline |
Return of segments for cylindrical shapes, if 0 - default value will be used.
Definition at line 301 of file RGeomData.hxx.
|
inline |
Number of unique nodes in the geometry.
Definition at line 239 of file RGeomData.hxx.
|
inline |
Returns draw options, used for JSROOT TGeoPainter.
Definition at line 316 of file RGeomData.hxx.
|
inline |
Returns maximal visible level.
Definition at line 259 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 465 of file RGeomData.cxx.
|
inline |
Definition at line 275 of file RGeomData.hxx.
|
inline |
Definition at line 241 of file RGeomData.hxx.
|
inline |
Returns true if binary 3D model build already by C++ server (default)
Definition at line 321 of file RGeomData.hxx.
|
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.
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.
|
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.
Produce list of node ids for given stack If found nodes preselected - use their ids.
Definition at line 1262 of file RGeomData.cxx.
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.
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.
|
private |
Find description object and create render information.
Definition at line 747 of file RGeomData.cxx.
Creates stack for given array of ids, first element always should be 0.
Definition at line 1207 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 1246 of file RGeomData.cxx.
Set visibility flag for each nodes.
Definition at line 475 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 240 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 620 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 993 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 1328 of file RGeomData.cxx.
|
private |
Count total number of visible childs under each node.
Definition at line 509 of file RGeomData.cxx.
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.
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.
|
private |
Reset shape info, which used to pack binary data.
Definition at line 871 of file RGeomData.cxx.
|
private |
Iterate over all nodes and call function for visible.
Definition at line 533 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 1026 of file RGeomData.cxx.
|
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.
|
inline |
Set draw options as string for JSROOT TGeoPainter.
Definition at line 309 of file RGeomData.hxx.
|
inline |
Set JSON compression level for data transfer.
Definition at line 304 of file RGeomData.hxx.
|
inline |
Set maximal number of faces which should be selected for drawing.
Definition at line 250 of file RGeomData.hxx.
|
inline |
Set maximal number of nodes which should be selected for drawing.
Definition at line 244 of file RGeomData.hxx.
|
inline |
Set number of segments for cylindrical shapes, if 0 - default value will be used.
Definition at line 299 of file RGeomData.hxx.
|
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.
|
inline |
Set draw options as string for JSROOT TGeoPainter.
Definition at line 314 of file RGeomData.hxx.
|
inline |
Set maximal visible level.
Definition at line 256 of file RGeomData.hxx.
|
friend |
Definition at line 160 of file RGeomData.hxx.
|
private |
! level can be reduced when selecting nodes
Definition at line 199 of file RGeomData.hxx.
|
private |
! configuration parameter editable from GUI
Definition at line 203 of file RGeomData.hxx.
|
private |
converted description, send to client
Definition at line 191 of file RGeomData.hxx.
|
private |
! sortid used for selection of most-significant nodes
Definition at line 198 of file RGeomData.hxx.
|
private |
! JSON with main nodes drawn by client
Definition at line 197 of file RGeomData.hxx.
|
private |
! select volume independent from TGeoMaanger
Definition at line 192 of file RGeomData.hxx.
|
private |
! default JSON compression
Definition at line 201 of file RGeomData.hxx.
|
private |
! flat list of all nodes
Definition at line 190 of file RGeomData.hxx.
|
private |
! indicates that full description should be provided to client
Definition at line 200 of file RGeomData.hxx.
|
private |
! shapes with created descriptions
Definition at line 195 of file RGeomData.hxx.
|
private |
! nodes in order large -> smaller volume
Definition at line 194 of file RGeomData.hxx.