11 #ifndef ROOT_TVirtualGeoPainter
12 #define ROOT_TVirtualGeoPainter
22 class TVirtualGeoTrack;
28 class TGeoIteratorPlugin;
31 class TVirtualGeoPainter :
public TObject {
34 static TVirtualGeoPainter *fgGeoPainter;
55 TVirtualGeoPainter(TGeoManager *manager);
56 virtual ~TVirtualGeoPainter();
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 , Double_t , 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 &, Double_t &, Double_t &) {;}
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;
142 ClassDef(TVirtualGeoPainter,0)