Logo ROOT  
Reference Guide
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:
39 kGeoVisLevel = 0
40};
42 kGeoVisDefault = 0, // default visualization - everything visible 3 levels down
43 kGeoVisLeaves = 1, // only last leaves are visible
44 kGeoVisOnly = 2, // only current volume is drawn
45 kGeoVisBranch = 3, // only a given branch is drawn
46 kGeoVisChanged = 4 // visibility changed
47};
49 kGeoNoBomb = 0, // default - no bomb
50 kGeoBombXYZ = 1, // explode view in cartesian coordinates
51 kGeoBombCyl = 2, // explode view in cylindrical coordinates (R, Z)
52 kGeoBombSph = 3 // explode view in spherical coordinates (R)
53};
54
55public:
57 virtual ~TVirtualGeoPainter();
58
59 virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys) = 0;
60 virtual TVirtualGeoTrack *AddTrack(Int_t id, Int_t pdgcode, TObject *particle) = 0;
61 virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE) = 0;
62 virtual void BombTranslation(const Double_t *tr, Double_t *bombtr) = 0;
63 virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="") = 0;
64 virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option) = 0;
65 virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.) = 0;
66 virtual void CheckBoundaryReference(Int_t icheck=-1) = 0;
67 virtual void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=nullptr) = 0;
68 virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const = 0;
69 virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="") const = 0;
70 virtual Int_t CountVisibleNodes() = 0;
71 virtual void DefaultAngles() = 0;
72 virtual void DefaultColors() = 0;
74 virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="") = 0;
75 virtual void DrawShape(TGeoShape *shape, Option_t *option="") = 0;
76 virtual void DrawOnly(Option_t *option="") = 0;
77 virtual void DrawOverlap(void *ovlp, Option_t *option="") = 0;
78 virtual void DrawCurrentPoint(Int_t color) = 0;
79 virtual void DrawPanel() = 0;
80 virtual void DrawPath(const char *path, Option_t *option="") = 0;
81 virtual void DrawPolygon(const TGeoPolygon *poly) = 0;
82 virtual void DrawVolume(TGeoVolume *vol, Option_t *option="") = 0;
83 virtual void EditGeometry(Option_t *option="") = 0;
84 virtual void EstimateCameraMove(Double_t /*tmin*/, Double_t /*tmax*/, Double_t *, Double_t * ) {;}
85 virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py) = 0;
86 virtual void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py) = 0;
87 virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py) = 0;
88 virtual Int_t GetColor(Int_t base, Float_t light) const = 0;
89 virtual Int_t GetNsegments() const = 0;
90 virtual void GetBombFactors(Double_t &bombx, Double_t &bomby, Double_t &bombz, Double_t &bombr) const = 0;
91 virtual Int_t GetBombMode() const = 0;
92 virtual const char *GetDrawPath() const = 0;
93 virtual TGeoVolume *GetDrawnVolume() const = 0;
94 virtual TGeoVolume *GetTopVolume() const = 0;
95 virtual void GetViewAngles(Double_t &/*longitude*/, Double_t &/*latitude*/, Double_t &/*psi*/) {;}
96 virtual Int_t GetVisLevel() const = 0;
97 virtual Int_t GetVisOption() const = 0;
98 virtual const char*GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const = 0;
99 virtual void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0) =0;
100 virtual Double_t *GetViewBox() = 0;
101 virtual Bool_t IsPaintingShape() const = 0;
102 virtual Bool_t IsRaytracing() const = 0;
103 virtual Bool_t IsExplodedView() const = 0;
104 virtual TH2F *LegoPlot(Int_t ntheta=60, Double_t themin=0., Double_t themax=180.,
105 Int_t nphi=90, Double_t phimin=0., Double_t phimax=360.,
106 Double_t rmin=0., Double_t rmax=9999999, Option_t *option="") = 0;
107 virtual void ModifiedPad(Bool_t update=kFALSE) const = 0;
108 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;
109 virtual void Paint(Option_t *option="") = 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, Bool_t check_norm) = 0;
117 virtual void Raytrace(Option_t *option="") = 0;
118 virtual TGeoNode *SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char* g3path) = 0;
119 virtual void SetBombFactors(Double_t bombx=1.3, Double_t bomby=1.3, Double_t bombz=1.3,
120 Double_t bombr=1.3) = 0;
121 virtual void SetClippingShape(TGeoShape *shape) = 0;
122 virtual void SetExplodedView(Int_t iopt=0) = 0;
123 virtual void SetGeoManager(TGeoManager *geom) = 0;
124 virtual void SetIteratorPlugin(TGeoIteratorPlugin *plugin) = 0;
125 virtual void SetCheckedNode(TGeoNode *node) = 0;
126 virtual void SetNsegments(Int_t nseg=20) = 0;
127 virtual void SetNmeshPoints(Int_t npoints) = 0;
128 virtual void SetRaytracing(Bool_t flag=kTRUE) = 0;
130 static void SetPainter(const TVirtualGeoPainter *painter);
131 virtual void SetTopVisible(Bool_t vis=kTRUE) = 0;
132 virtual void SetTopVolume(TGeoVolume *vol) = 0;
133 virtual void SetVisLevel(Int_t level=3) = 0;
134 virtual void SetVisOption(Int_t option=0) = 0;
135 virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const = 0;
136 virtual void Test(Int_t npoints, Option_t *option) = 0;
137 virtual void TestOverlaps(const char *path) = 0;
138 virtual Bool_t TestVoxels(TGeoVolume *vol) = 0;
139 virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr) = 0;
140 virtual Double_t Weight(Double_t precision, Option_t *option="v") = 0;
141
142 ClassDef(TVirtualGeoPainter,0) //Abstract interface for geometry painters
143};
144
145#endif
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
const Bool_t kFALSE
Definition: RtypesCore.h:90
double Double_t
Definition: RtypesCore.h:57
long long Long64_t
Definition: RtypesCore.h:71
float Float_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:89
const char Option_t
Definition: RtypesCore.h:64
#define ClassDef(name, id)
Definition: Rtypes.h:322
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
Geometrical transformation package.
Definition: TGeoMatrix.h:41
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Definition: TGeoNode.h:41
An arbitrary polygon defined by vertices.
Definition: TGeoPolygon.h:20
Base abstract class for all shapes.
Definition: TGeoShape.h:26
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:47
2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:251
An array of TObjects.
Definition: TObjArray.h:37
Mother of all ROOT objects.
Definition: TObject.h:37
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 ~TVirtualGeoPainter()
Geometry painter default destructor.
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
virtual void SetClippingShape(TGeoShape *shape)=0
virtual void TestOverlaps(const char *path)=0
virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")=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 Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself.
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.
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 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
TVirtualGeoPainter(TGeoManager *manager)
Geometry painter default constructor.
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
double dist(Rotation3D const &r1, Rotation3D const &r2)
Definition: 3DDistances.cxx:48
REAL * vertex
Definition: triangle.c:512