Logo ROOT   6.21/01
Reference Guide
REveGeoShape.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Author: Matevz Tadel 2007, 1018
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT7_REveGeoShape
13 #define ROOT7_REveGeoShape
14 
15 #include <ROOT/REveShape.hxx>
16 
17 class TGeoShape;
18 class TGeoHMatrix;
19 class TGeoCompositeShape;
20 class TBuffer3D;
21 
22 namespace ROOT {
23 namespace Experimental {
24 
25 class REveGeoShapeExtract;
26 
27 // ==========================================================================================
28 // REveGeoShape
29 // Wrapper for TGeoShape with absolute positioning and color attributes allowing display of extracted
30 // TGeoShape's (without an active TGeoManager) and simplified geometries (needed for NLT projections).
31 // ==========================================================================================
32 
33 class REveGeoShape : public REveShape,
34  public REveProjectable
35 {
36 private:
37  REveGeoShape(const REveGeoShape &) = delete;
38  REveGeoShape &operator=(const REveGeoShape &) = delete;
39 
40 protected:
42  TGeoShape *fShape{nullptr};
43  TGeoCompositeShape *fCompositeShape{nullptr}; //! Temporary holder (if passed shape is composite shape).
44 
46 
49 
51 
52 public:
53  REveGeoShape(const std::string &name = "REveGeoShape", const std::string &title = "");
54  virtual ~REveGeoShape();
55 
56  Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override;
57  void BuildRenderData() override;
58 
59  Int_t GetNSegments() const { return fNSegments; }
60  TGeoShape *GetShape() const { return fShape; }
61  void SetNSegments(Int_t s);
62  void SetShape(TGeoShape *s);
63 
64  void ComputeBBox() override;
65 
66  void SaveExtract(const char *file, const char *name);
67  void WriteExtract(const char *name);
68 
69  static REveGeoShape *ImportShapeExtract(REveGeoShapeExtract *gse, REveElement *parent = nullptr);
70 
71  // GeoProjectable
72  virtual std::unique_ptr<TBuffer3D> MakeBuffer3D();
73  TClass *ProjectedClass(const REveProjection *p) const override;
74 
75  static TGeoManager *GetGeoManager();
77 };
78 
79 //------------------------------------------------------------------------------
80 
81 // ==========================================================================================
82 // REveGeoShapeProjected
83 // ==========================================================================================
84 
86 private:
89 
90 protected:
91  std::unique_ptr<TBuffer3D> fBuff; //! 3d buffer
92 
93  void SetDepthLocal(Float_t d) override;
94 
95 public:
97  virtual ~REveGeoShapeProjected();
98 
99  void SetProjection(REveProjectionManager *proj, REveProjectable *model) override;
100  void UpdateProjection() override;
101  REveElement *GetProjectedAsElement() override { return this; }
102 
103  void ComputeBBox() override;
104 };
105 
106 } // namespace Experimental
107 } // namespace ROOT
108 
109 #endif
void SetShape(TGeoShape *s)
Set TGeoShape shown by this object.
virtual ~REveGeoShape()
Destructor.
REveGeoShapeProjected & operator=(const REveGeoShapeProjected &)=delete
static TGeoManager * fgGeoManager
Temporary holder (if passed shape is composite shape).
The manager class for any TGeo geometry.
Definition: TGeoManager.h:42
void WriteExtract(const char *name)
Write the shape tree as REveGeoShapeExtract to current directory.
Returns the available number of logical cores.
Definition: StringConv.hxx:21
float Float_t
Definition: RtypesCore.h:53
static TGeoHMatrix * GetGeoHMatrixIdentity()
Return static identity matrix in homogeneous representation.
REveGeoShape & operator=(const REveGeoShape &)=delete
Matrix class used for computing global transformations Should NOT be used for node definition...
Definition: TGeoMatrix.h:420
int Int_t
Definition: RtypesCore.h:41
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Fill core part of JSON representation.
void SetNSegments(Int_t s)
Set number of segments.
REveGeoShapeExtract * DumpShapeTree(REveGeoShape *geon, REveGeoShapeExtract *parent=nullptr)
Export this shape and its descendants into a geoshape-extract.
TGeoCompositeShape * fCompositeShape
REveElement * GetProjectedAsElement() override
Returns this projected dynamic-casted to REveElement.
REveGeoShape(const REveGeoShape &)=delete
void SetProjection(REveProjectionManager *proj, REveProjectable *model) override
This is virtual method from base-class REveProjected.
static constexpr double s
REveProjection Base for specific classes that implement non-linear projections.
TGeoShape * MakePolyShape()
Create derived REveGeoShape form a TGeoCompositeShape.
Class handling Boolean composition of shapes.
virtual std::unique_ptr< TBuffer3D > MakeBuffer3D()
Create a TBuffer3D suitable for presentation of the shape.
static TGeoManager * GetGeoManager()
Return static geo-manager that is used internally to make shapes lead a happy life.
void SetDepthLocal(Float_t d) override
3d buffer
Base abstract class for all shapes.
Definition: TGeoShape.h:25
TClass * ProjectedClass(const REveProjection *p) const override
Return class for projected objects:
void BuildRenderData() override
Crates 3D point array for rendering.
REveProjectionManager Manager class for steering of projections and managing projected objects...
void ComputeBBox() override
Override of virtual method from TAttBBox.
Generic 3D primitive description class.
Definition: TBuffer3D.h:17
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
#define d(i)
Definition: RSha256.hxx:102
std::unique_ptr< TBuffer3D > fBuff
void SaveExtract(const char *file, const char *name)
Save the shape tree as REveGeoShapeExtract.
static REveGeoShape * ImportShapeExtract(REveGeoShapeExtract *gse, REveElement *parent=nullptr)
Import a shape extract &#39;gse&#39; under element &#39;parent&#39;.
void UpdateProjection() override
This is virtual method from base-class REveProjected.
Definition: file.py:1
static REveGeoShape * SubImportShapeExtract(REveGeoShapeExtract *gse, REveElement *parent)
Recursive version for importing a shape extract tree.
char name[80]
Definition: TGX11.cxx:109
void ComputeBBox() override
Compute bounding-box.