Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TVirtualGeoPainter.h
Go to the documentation of this file.
1// @(#)root/geom:$Id$
2// Author: Andrei Gheata 11/01/02
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, 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 ROOT_TVirtualGeoPainter
13#define ROOT_TVirtualGeoPainter
14
15#include "TObject.h"
16
17class TGeoVolume;
18class TGeoNode;
19class TGeoShape;
20class TGeoMatrix;
21class TGeoHMatrix;
22class TGeoManager;
24class TParticle;
25class TObjArray;
26class TH2F;
27class TStopwatch;
28class TGeoBatemanSol;
30class TGeoPolygon;
31
33
34protected:
35 static TVirtualGeoPainter *fgGeoPainter; // Pointer to class painter
36
37public:
40 kGeoVisDefault = 0, // default visualization - everything visible 3 levels down
41 kGeoVisLeaves = 1, // only last leaves are visible
42 kGeoVisOnly = 2, // only current volume is drawn
43 kGeoVisBranch = 3, // only a given branch is drawn
44 kGeoVisChanged = 4 // visibility changed
45 };
47 kGeoNoBomb = 0, // default - no bomb
48 kGeoBombXYZ = 1, // explode view in cartesian coordinates
49 kGeoBombCyl = 2, // explode view in cylindrical coordinates (R, Z)
50 kGeoBombSph = 3 // explode view in spherical coordinates (R)
51 };
52
53public:
55 ~TVirtualGeoPainter() override;
56
57 virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys) = 0;
58 virtual TVirtualGeoTrack *AddTrack(Int_t id, Int_t pdgcode, TObject *particle) = 0;
59 virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset = kFALSE) = 0;
60 virtual void BombTranslation(const Double_t *tr, Double_t *bombtr) = 0;
61 virtual void CheckPoint(Double_t x = 0, Double_t y = 0, Double_t z = 0, Option_t *option = "", Double_t safety = 0.) = 0;
62 virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option) = 0;
63 virtual void CheckBoundaryErrors(Int_t ntracks = 1000000, Double_t radius = -1.) = 0;
64 virtual void CheckBoundaryReference(Int_t icheck = -1) = 0;
65 virtual void CheckGeometryFull(Bool_t checkoverlaps = kTRUE, Bool_t checkcrossings = kTRUE, Int_t nrays = 10000,
66 const Double_t *vertex = nullptr) = 0;
67 virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const = 0;
68 virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp = 0.1, Option_t *option = "") const = 0;
69 virtual Int_t CountVisibleNodes() = 0;
70 virtual void DefaultAngles() = 0;
71 virtual void DefaultColors() = 0;
73 virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option = "") = 0;
74 virtual void DrawShape(TGeoShape *shape, Option_t *option = "") = 0;
75 virtual void DrawOnly(Option_t *option = "") = 0;
76 virtual void DrawOverlap(void *ovlp, Option_t *option = "") = 0;
77 virtual void DrawCurrentPoint(Int_t color) = 0;
78 virtual void DrawPanel() = 0;
79 virtual void DrawPath(const char *path, Option_t *option = "") = 0;
80 virtual void DrawPolygon(const TGeoPolygon *poly) = 0;
81 virtual void DrawVolume(TGeoVolume *vol, Option_t *option = "") = 0;
82 virtual void EditGeometry(Option_t *option = "") = 0;
83 virtual void EstimateCameraMove(Double_t /*tmin*/, Double_t /*tmax*/, Double_t *, Double_t *) {}
84 virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py) = 0;
85 virtual void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py) = 0;
86 virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py) = 0;
87 virtual Int_t GetColor(Int_t base, Float_t light) const = 0;
88 virtual Int_t GetNsegments() const = 0;
89 virtual void GetBombFactors(Double_t &bombx, Double_t &bomby, Double_t &bombz, Double_t &bombr) const = 0;
90 virtual Int_t GetBombMode() const = 0;
91 virtual const char *GetDrawPath() const = 0;
92 virtual TGeoVolume *GetDrawnVolume() const = 0;
93 virtual TGeoVolume *GetTopVolume() const = 0;
94 virtual void GetViewAngles(Double_t & /*longitude*/, Double_t & /*latitude*/, Double_t & /*psi*/) {}
95 virtual Int_t GetVisLevel() const = 0;
96 virtual Int_t GetVisOption() const = 0;
97 virtual const char *GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const = 0;
98 virtual void GrabFocus(Int_t nfr = 0, Double_t dlong = 0, Double_t dlat = 0, Double_t dpsi = 0) = 0;
99 virtual Double_t *GetViewBox() = 0;
100 virtual Bool_t IsPaintingShape() const = 0;
101 virtual Bool_t IsRaytracing() const = 0;
102 virtual Bool_t IsExplodedView() const = 0;
103 virtual TH2F *LegoPlot(Int_t ntheta = 60, Double_t themin = 0., Double_t themax = 180., Int_t nphi = 90,
104 Double_t phimin = 0., Double_t phimax = 360., Double_t rmin = 0., Double_t rmax = 9999999,
105 Option_t *option = "") = 0;
106 virtual void ModifiedPad(Bool_t update = kFALSE) const = 0;
107 virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch = nullptr,
108 Bool_t last = kFALSE, Bool_t refresh = kFALSE, const char *msg = "") = 0;
109 void Paint(Option_t *option = "") override = 0;
110 virtual void PaintNode(TGeoNode *node, Option_t *option = "", TGeoMatrix *global = nullptr) = 0;
111 virtual void PaintShape(TGeoShape *shape, Option_t *option = "") = 0;
112 virtual void PaintOverlap(void *ovlp, Option_t *option = "") = 0;
113 virtual void PrintOverlaps() const = 0;
114 virtual void PaintVolume(TGeoVolume *vol, Option_t *option = "", TGeoMatrix *global = nullptr) = 0;
115 virtual void RandomPoints(const TGeoVolume *vol, Int_t npoints, Option_t *option = "") = 0;
116 virtual void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol,
117 Bool_t check_norm) = 0;
118 virtual void Raytrace(Option_t *option = "") = 0;
119 virtual TGeoNode *SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path) = 0;
120 virtual void
121 SetBombFactors(Double_t bombx = 1.3, Double_t bomby = 1.3, Double_t bombz = 1.3, Double_t bombr = 1.3) = 0;
122 virtual void SetClippingShape(TGeoShape *shape) = 0;
123 virtual void SetExplodedView(Int_t iopt = 0) = 0;
124 virtual void SetGeoManager(TGeoManager *geom) = 0;
125 virtual void SetIteratorPlugin(TGeoIteratorPlugin *plugin) = 0;
126 virtual void SetCheckedNode(TGeoNode *node) = 0;
127 virtual void SetNsegments(Int_t nseg = 20) = 0;
128 virtual void SetNmeshPoints(Int_t npoints) = 0;
129 virtual void SetRaytracing(Bool_t flag = kTRUE) = 0;
131 static void SetPainter(const TVirtualGeoPainter *painter);
132 virtual void SetTopVisible(Bool_t vis = kTRUE) = 0;
133 virtual void SetTopVolume(TGeoVolume *vol) = 0;
134 virtual void SetVisLevel(Int_t level = 3) = 0;
135 virtual void SetVisOption(Int_t option = 0) = 0;
136 virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const = 0;
137 virtual void Test(Int_t npoints, Option_t *option) = 0;
138 virtual void TestOverlaps(const char *path) = 0;
139 virtual Bool_t TestVoxels(TGeoVolume *vol) = 0;
140 virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr) = 0;
141 virtual Double_t Weight(Double_t precision, Option_t *option = "v") = 0;
142
143 ClassDefOverride(TVirtualGeoPainter, 0) // Abstract interface for geometry painters
144};
145
146#endif
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
long long Long64_t
Definition RtypesCore.h:69
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:346
Option_t Option_t option
Matrix class used for computing global transformations Should NOT be used for node definition.
Definition TGeoMatrix.h:458
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
Geometrical transformation package.
Definition TGeoMatrix.h:38
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Definition TGeoNode.h:39
An arbitrary polygon defined by vertices.
Definition TGeoPolygon.h:19
Base abstract class for all shapes.
Definition TGeoShape.h:25
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
2-D histogram with a float per channel (see TH1 documentation)
Definition TH2.h:307
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
Description of the dynamic properties of a particle.
Definition TParticle.h:26
Stopwatch class.
Definition TStopwatch.h:28
Abstract class for geometry painters.
virtual TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path)=0
virtual const char * GetDrawPath() const =0
virtual void SetTopVisible(Bool_t vis=kTRUE)=0
virtual Int_t GetVisLevel() const =0
virtual Bool_t IsPaintingShape() const =0
virtual void SetTopVolume(TGeoVolume *vol)=0
virtual void PaintOverlap(void *ovlp, Option_t *option="")=0
virtual void Raytrace(Option_t *option="")=0
virtual Double_t Weight(Double_t precision, Option_t *option="v")=0
virtual void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=nullptr)=0
virtual void SetVisLevel(Int_t level=3)=0
virtual void SetGeoManager(TGeoManager *geom)=0
virtual void DrawPath(const char *path, Option_t *option="")=0
virtual void DrawShape(TGeoShape *shape, Option_t *option="")=0
virtual void ModifiedPad(Bool_t update=kFALSE) const =0
virtual void SetCheckedNode(TGeoNode *node)=0
virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys)=0
virtual void DrawOverlap(void *ovlp, Option_t *option="")=0
virtual TGeoVolume * GetTopVolume() const =0
virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=nullptr, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="")=0
virtual void GetViewAngles(Double_t &, Double_t &, Double_t &)
virtual TVirtualGeoTrack * AddTrack(Int_t id, Int_t pdgcode, TObject *particle)=0
virtual void SetExplodedView(Int_t iopt=0)=0
virtual void DrawOnly(Option_t *option="")=0
virtual Bool_t IsRaytracing() const =0
virtual void DrawVolume(TGeoVolume *vol, Option_t *option="")=0
virtual void DrawCurrentPoint(Int_t color)=0
virtual Int_t GetBombMode() const =0
virtual void DefaultColors()=0
~TVirtualGeoPainter() override
Geometry painter default destructor.
virtual void SetClippingShape(TGeoShape *shape)=0
virtual void TestOverlaps(const char *path)=0
virtual void PrintOverlaps() const =0
virtual Int_t GetNsegments() const =0
virtual void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0)=0
virtual TH2F * LegoPlot(Int_t ntheta=60, Double_t themin=0., Double_t themax=180., Int_t nphi=90, Double_t phimin=0., Double_t phimax=360., Double_t rmin=0., Double_t rmax=9999999, Option_t *option="")=0
virtual void Test(Int_t npoints, Option_t *option)=0
virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="") const =0
static TVirtualGeoPainter * fgGeoPainter
virtual void SetIteratorPlugin(TGeoIteratorPlugin *plugin)=0
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
virtual void PaintShape(TGeoShape *shape, Option_t *option="")=0
virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE)=0
virtual void DrawPolygon(const TGeoPolygon *poly)=0
virtual Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py)=0
virtual void SetVisOption(Int_t option=0)=0
virtual Double_t * GetViewBox()=0
virtual void EstimateCameraMove(Double_t, Double_t, Double_t *, Double_t *)
static void SetPainter(const TVirtualGeoPainter *painter)
Static function to set an alternative histogram painter.
static TVirtualGeoPainter * GeoPainter()
Static function returning a pointer to the geometry painter.
void Paint(Option_t *option="") override=0
This method must be overridden if a class wants to paint itself.
virtual void CheckBoundaryReference(Int_t icheck=-1)=0
virtual void SetNsegments(Int_t nseg=20)=0
virtual void RandomRays(Int_t nrays, Double_t startx, Double_t starty, Double_t startz, const char *target_vol, Bool_t check_norm)=0
virtual Bool_t TestVoxels(TGeoVolume *vol)=0
virtual Int_t GetColor(Int_t base, Float_t light) const =0
virtual Bool_t IsExplodedView() const =0
virtual TGeoVolume * GetDrawnVolume() const =0
virtual void PaintVolume(TGeoVolume *vol, Option_t *option="", TGeoMatrix *global=nullptr)=0
virtual void DrawPanel()=0
virtual void RandomPoints(const TGeoVolume *vol, Int_t npoints, Option_t *option="")=0
virtual Int_t CountVisibleNodes()=0
virtual const char * GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const =0
virtual void DefaultAngles()=0
virtual void SetRaytracing(Bool_t flag=kTRUE)=0
virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py)=0
virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py)=0
virtual Int_t GetVisOption() const =0
virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const =0
virtual void SetNmeshPoints(Int_t npoints)=0
virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr)=0
virtual void EditGeometry(Option_t *option="")=0
virtual void GetBombFactors(Double_t &bombx, Double_t &bomby, Double_t &bombz, Double_t &bombr) const =0
virtual void PaintNode(TGeoNode *node, Option_t *option="", TGeoMatrix *global=nullptr)=0
virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="", Double_t safety=0.)=0
virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const =0
virtual void BombTranslation(const Double_t *tr, Double_t *bombtr)=0
virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)=0
virtual void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py)=0
virtual void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3, Double_t bombr=1.3)=0
virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)=0
Base class for user-defined tracks attached to a geometry.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17