Logo ROOT   6.10/09
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 #ifndef ROOT_TVirtualGeoPainter
12 #define ROOT_TVirtualGeoPainter
13 
14 #include "TObject.h"
15 
16 class TGeoVolume;
17 class TGeoNode;
18 class TGeoShape;
19 class TGeoMatrix;
20 class TGeoHMatrix;
21 class TGeoManager;
22 class TVirtualGeoTrack;
23 class TParticle;
24 class TObjArray;
25 class TH2F;
26 class TStopwatch;
27 class TGeoBatemanSol;
28 class TGeoIteratorPlugin;
29 class TGeoPolygon;
30 
31 class TVirtualGeoPainter : public TObject {
32 
33 protected:
34  static TVirtualGeoPainter *fgGeoPainter; //Pointer to class painter
35 
36 public:
39 };
41  kGeoVisDefault = 0, // default visualization - everything visible 3 levels down
42  kGeoVisLeaves = 1, // only last leaves are visible
43  kGeoVisOnly = 2, // only current volume is drawn
44  kGeoVisBranch = 3, // only a given branch is drawn
45  kGeoVisChanged = 4 // visibility changed
46 };
48  kGeoNoBomb = 0, // default - no bomb
49  kGeoBombXYZ = 1, // explode view in cartesian coordinates
50  kGeoBombCyl = 2, // explode view in cylindrical coordinates (R, Z)
51  kGeoBombSph = 3 // explode view in spherical coordinates (R)
52 };
53 
54 public:
56  virtual ~TVirtualGeoPainter();
57 
58  virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys) = 0;
59  virtual TVirtualGeoTrack *AddTrack(Int_t id, Int_t pdgcode, TObject *particle) = 0;
60  virtual void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE) = 0;
61  virtual void BombTranslation(const Double_t *tr, Double_t *bombtr) = 0;
62  virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="") = 0;
63  virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option) = 0;
64  virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.) = 0;
65  virtual void CheckBoundaryReference(Int_t icheck=-1) = 0;
66  virtual void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=NULL) = 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;
72  virtual Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py) = 0;
73  virtual void Draw(Option_t *option="") = 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=0, 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=0) = 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=0) = 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;
129  static TVirtualGeoPainter *GeoPainter();
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
virtual void Draw(Option_t *option="")=0
Default Draw method for all objects.
virtual Int_t GetColor(Int_t base, Float_t light) const =0
virtual void Paint(Option_t *option="")=0
This method must be overridden if a class wants to paint itself.
virtual Int_t GetVisLevel() const =0
double dist(Rotation3D const &r1, Rotation3D const &r2)
Definition: 3DDistances.cxx:48
An array of TObjects.
Definition: TObjArray.h:37
virtual Int_t CountVisibleNodes()=0
virtual Int_t GetVisOption() const =0
virtual void GetViewAngles(Double_t &, Double_t &, Double_t &)
TVirtualGeoPainter(TGeoManager *manager)
Geometry painter default constructor.
The manager class for any TGeo geometry.
Definition: TGeoManager.h:37
long long Long64_t
Definition: RtypesCore.h:69
virtual void EditGeometry(Option_t *option="")=0
virtual void ModifiedPad(Bool_t update=kFALSE) const =0
static TVirtualGeoPainter * GeoPainter()
Static function returning a pointer to the geometry painter.
virtual Double_t * GetViewBox()=0
virtual void ExecuteVolumeEvent(TGeoVolume *volume, Int_t event, Int_t px, Int_t py)=0
virtual const char * GetDrawPath() const =0
float Float_t
Definition: RtypesCore.h:53
virtual TVirtualGeoTrack * AddTrack(Int_t id, Int_t pdgcode, TObject *particle)=0
const char Option_t
Definition: RtypesCore.h:62
Geometrical transformation package.
Definition: TGeoMatrix.h:38
virtual Int_t GetNsegments() const =0
virtual void CheckGeometry(Int_t nrays, Double_t startx, Double_t starty, Double_t startz) const =0
virtual void CheckOverlaps(const TGeoVolume *vol, Double_t ovlp=0.1, Option_t *option="") const =0
static TVirtualGeoPainter * fgGeoPainter
virtual void Test(Int_t npoints, Option_t *option)=0
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:48
Description of the dynamic properties of a particle.
Definition: TParticle.h:26
virtual void CheckShape(TGeoShape *shape, Int_t testNo, Int_t nsamples, Option_t *option)=0
virtual Double_t Weight(Double_t precision, Option_t *option="v")=0
virtual void PrintOverlaps() const =0
An arbitrary polygon defined by vertices.
Definition: TGeoPolygon.h:19
virtual void SetTopVolume(TGeoVolume *vol)=0
virtual Bool_t IsPaintingShape() const =0
Matrix class used for computing global transformations Should NOT be used for node definition...
Definition: TGeoMatrix.h:408
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual void ExecuteManagerEvent(TGeoManager *geom, Int_t event, Int_t px, Int_t py)=0
#define NULL
Definition: RtypesCore.h:88
virtual void RandomPoints(const TGeoVolume *vol, Int_t npoints, Option_t *option="")=0
virtual void DrawPanel()=0
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition: fillpatterns.C:1
virtual void DefaultAngles()=0
virtual Bool_t TestVoxels(TGeoVolume *vol)=0
virtual void DrawOverlap(void *ovlp, Option_t *option="")=0
virtual void PaintNode(TGeoNode *node, Option_t *option="", TGeoMatrix *global=0)=0
virtual void SetClippingShape(TGeoShape *shape)=0
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:297
virtual void GrabFocus(Int_t nfr=0, Double_t dlong=0, Double_t dlat=0, Double_t dpsi=0)=0
virtual void SetNsegments(Int_t nseg=20)=0
virtual Bool_t IsExplodedView() const =0
virtual void SetExplodedView(Int_t iopt=0)=0
virtual void BombTranslation(const Double_t *tr, Double_t *bombtr)=0
virtual void DrawBatemanSol(TGeoBatemanSol *sol, Option_t *option="")=0
virtual void CheckBoundaryReference(Int_t icheck=-1)=0
Base class for user-defined tracks attached to a geometry.
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 DrawCurrentPoint(Int_t color)=0
virtual Int_t DistanceToPrimitiveVol(TGeoVolume *vol, Int_t px, Int_t py)=0
virtual Int_t ShapeDistancetoPrimitive(const TGeoShape *shape, Int_t numpoints, Int_t px, Int_t py) const =0
REAL * vertex
Definition: triangle.c:512
virtual TGeoNode * SamplePoints(Int_t npoints, Double_t &dist, Double_t epsil, const char *g3path)=0
virtual void SetTopVisible(Bool_t vis=kTRUE)=0
virtual void DrawOnly(Option_t *option="")=0
Base abstract class for all shapes.
Definition: TGeoShape.h:25
virtual void SetGeoManager(TGeoManager *geom)=0
virtual void CheckGeometryFull(Bool_t checkoverlaps=kTRUE, Bool_t checkcrossings=kTRUE, Int_t nrays=10000, const Double_t *vertex=NULL)=0
virtual void SetRaytracing(Bool_t flag=kTRUE)=0
tomato 2-D histogram with a float per channel (see TH1 documentation)}
Definition: TH2.h:249
virtual void GetBombFactors(Double_t &bombx, Double_t &bomby, Double_t &bombz, Double_t &bombr) const =0
static void update(gsl_integration_workspace *workspace, double a1, double b1, double area1, double error1, double a2, double b2, double area2, double error2)
virtual void EstimateCameraMove(Double_t, Double_t, Double_t *, Double_t *)
virtual void SetCheckedNode(TGeoNode *node)=0
virtual void DefaultColors()=0
virtual void DrawVolume(TGeoVolume *vol, Option_t *option="")=0
virtual TGeoVolume * GetTopVolume() const =0
const Bool_t kFALSE
Definition: RtypesCore.h:92
virtual void SetVisOption(Int_t option=0)=0
virtual Int_t GetBombMode() const =0
double Double_t
Definition: RtypesCore.h:55
virtual void DrawPath(const char *path, Option_t *option="")=0
virtual void SetVisLevel(Int_t level=3)=0
virtual const char * GetVolumeInfo(const TGeoVolume *volume, Int_t px, Int_t py) const =0
Double_t y[n]
Definition: legend1.C:17
virtual void SetNmeshPoints(Int_t npoints)=0
virtual void SetIteratorPlugin(TGeoIteratorPlugin *plugin)=0
virtual void CheckBoundaryErrors(Int_t ntracks=1000000, Double_t radius=-1.)=0
virtual void DrawPolygon(const TGeoPolygon *poly)=0
Mother of all ROOT objects.
Definition: TObject.h:37
you should not use this method at all Int_t Int_t z
Definition: TRolke.cxx:630
Abstract class for geometry painters.
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Definition: TGeoNode.h:39
static void SetPainter(const TVirtualGeoPainter *painter)
Static function to set an alternative histogram painter.
virtual void DrawShape(TGeoShape *shape, Option_t *option="")=0
virtual void ExecuteShapeEvent(TGeoShape *shape, Int_t event, Int_t px, Int_t py)=0
virtual Bool_t IsRaytracing() const =0
virtual void Raytrace(Option_t *option="")=0
virtual void AddSize3D(Int_t numpoints, Int_t numsegs, Int_t numpolys)=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 void AddTrackPoint(Double_t *point, Double_t *box, Bool_t reset=kFALSE)=0
virtual void UnbombTranslation(const Double_t *tr, Double_t *bombtr)=0
virtual TGeoVolume * GetDrawnVolume() const =0
virtual void OpProgress(const char *opname, Long64_t current, Long64_t size, TStopwatch *watch=0, Bool_t last=kFALSE, Bool_t refresh=kFALSE, const char *msg="")=0
virtual void PaintOverlap(void *ovlp, Option_t *option="")=0
virtual void TestOverlaps(const char *path)=0
virtual void PaintShape(TGeoShape *shape, Option_t *option="")=0
const Bool_t kTRUE
Definition: RtypesCore.h:91
virtual void CheckPoint(Double_t x=0, Double_t y=0, Double_t z=0, Option_t *option="")=0
virtual ~TVirtualGeoPainter()
Geometry painter default destructor.
virtual void PaintVolume(TGeoVolume *vol, Option_t *option="", TGeoMatrix *global=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
Stopwatch class.
Definition: TStopwatch.h:28