Logo ROOT  
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
17class TGeoShape;
18class TGeoHMatrix;
20class TBuffer3D;
21
22namespace ROOT {
23namespace Experimental {
24
25class 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
33class REveGeoShape : public REveShape,
34 public REveProjectable
35{
36private:
37 REveGeoShape(const REveGeoShape &) = delete;
39
40protected:
42 TGeoShape *fShape{nullptr};
43 TGeoCompositeShape *fCompositeShape{nullptr}; //! Temporary holder (if passed shape is composite shape).
44
46
49
51
52public:
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
86private:
89
90protected:
91 std::unique_ptr<TBuffer3D> fBuff; //! 3d buffer
92
93 void SetDepthLocal(Float_t d) override;
94
95public:
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
#define d(i)
Definition: RSha256.hxx:102
int Int_t
Definition: RtypesCore.h:43
float Float_t
Definition: RtypesCore.h:55
char name[80]
Definition: TGX11.cxx:109
void ComputeBBox() override
Override of virtual method from TAttBBox.
std::unique_ptr< TBuffer3D > fBuff
void SetProjection(REveProjectionManager *proj, REveProjectable *model) override
This is virtual method from base-class REveProjected.
REveGeoShapeProjected(const REveGeoShapeProjected &)=delete
void UpdateProjection() override
This is virtual method from base-class REveProjected.
REveElement * GetProjectedAsElement() override
Returns this projected dynamic-casted to REveElement.
void SetDepthLocal(Float_t d) override
3d buffer
REveGeoShapeProjected & operator=(const REveGeoShapeProjected &)=delete
static REveGeoShape * ImportShapeExtract(REveGeoShapeExtract *gse, REveElement *parent=nullptr)
Import a shape extract 'gse' under element 'parent'.
TGeoShape * MakePolyShape()
Create derived REveGeoShape form a TGeoCompositeShape.
static TGeoManager * fgGeoManager
Temporary holder (if passed shape is composite shape).
void SetNSegments(Int_t s)
Set number of segments.
void SaveExtract(const char *file, const char *name)
Save the shape tree as REveGeoShapeExtract.
TClass * ProjectedClass(const REveProjection *p) const override
Return class for projected objects:
static REveGeoShape * SubImportShapeExtract(REveGeoShapeExtract *gse, REveElement *parent)
Recursive version for importing a shape extract tree.
Int_t WriteCoreJson(nlohmann::json &j, Int_t rnr_offset) override
Fill core part of JSON representation.
void ComputeBBox() override
Compute bounding-box.
REveGeoShape & operator=(const REveGeoShape &)=delete
void WriteExtract(const char *name)
Write the shape tree as REveGeoShapeExtract to current directory.
void SetShape(TGeoShape *s)
Set TGeoShape shown by this object.
virtual ~REveGeoShape()
Destructor.
virtual std::unique_ptr< TBuffer3D > MakeBuffer3D()
Create a TBuffer3D suitable for presentation of the shape.
void BuildRenderData() override
Crates 3D point array for rendering.
static TGeoHMatrix * GetGeoHMatrixIdentity()
Return static identity matrix in homogeneous representation.
static TGeoManager * GetGeoManager()
Return static geo-manager that is used internally to make shapes lead a happy life.
REveGeoShape(const REveGeoShape &)=delete
TGeoCompositeShape * fCompositeShape
REveGeoShapeExtract * DumpShapeTree(REveGeoShape *geon, REveGeoShapeExtract *parent=nullptr)
Export this shape and its descendants into a geoshape-extract.
REveProjectionManager Manager class for steering of projections and managing projected objects.
REveProjection Base for specific classes that implement non-linear projections.
Generic 3D primitive description class.
Definition: TBuffer3D.h:18
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:80
Class handling Boolean composition of shapes.
Matrix class used for computing global transformations Should NOT be used for node definition.
Definition: TGeoMatrix.h:421
The manager class for any TGeo geometry.
Definition: TGeoManager.h:43
Base abstract class for all shapes.
Definition: TGeoShape.h:26
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
Definition: StringConv.hxx:21
static constexpr double s
Definition: file.py:1
basic_json<> json
default JSON class
Definition: REveElement.hxx:88