Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VSceneHandler.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28//
29// John Allison 19th July 1996.
30//
31// Class description
32//
33// Abstract interface class for graphics scene handlers.
34// Inherits from G4VGraphicsScene, in the intercoms category, which is
35// a minimal abstract interface for the GEANT4 kernel.
36
37#ifndef G4VSCENEHANDLER_HH
38#define G4VSCENEHANDLER_HH
39
40#include "globals.hh"
41
42#include "G4VGraphicsScene.hh"
43#include "G4ViewerList.hh"
44#include "G4ViewParameters.hh"
45#include "G4THitsMap.hh"
46#include "G4PseudoScene.hh"
47
48#include <map>
49
50class G4Scene;
52class G4AttHolder;
53
55
56 friend class G4VViewer;
57 friend std::ostream& operator << (std::ostream& os, const G4VSceneHandler& s);
58
59public: // With description
60
62
64 G4int id,
65 const G4String& name = "");
66
67 virtual ~G4VSceneHandler ();
68
69 ///////////////////////////////////////////////////////////////////
70 // Methods for adding raw GEANT4 objects to the scene handler. They
71 // must always be called in the triplet PreAddSolid, AddSolid and
72 // PostAddSolid. The transformation and visualization attributes
73 // must be set by the call to PreAddSolid. If your graphics system
74 // is sophisticated enough to handle a particular solid shape as a
75 // primitive, in your derived class write a function to override one
76 // or more of the following. See the implementation of
77 // G4VSceneHandler::AddSolid (const G4Box& box) for more
78 // suggestions. If not, please implement the base class invocation.
79
80 virtual void PreAddSolid (const G4Transform3D& objectTransformation,
81 const G4VisAttributes&);
82 // objectTransformation is the transformation in the world
83 // coordinate system of the object about to be added, and visAttribs
84 // is its visualization attributes.
85 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
86 // void MyXXXSceneHandler::PreAddSolid
87 // (const G4Transform3D& objectTransformation,
88 // const G4VisAttributes& visAttribs) {
89 // G4VSceneHandler::PreAddSolid (objectTransformation, visAttribs);
90 // ...
91 // }
92
93 virtual void PostAddSolid ();
94 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
95 // void MyXXXSceneHandler::PostAddSolid () {
96 // ...
97 // G4VSceneHandler::PostAddSolid ();
98 // }
99
100 // From geometry/solids/CSG
101 virtual void AddSolid (const G4Box&);
102 virtual void AddSolid (const G4Cons&);
103 virtual void AddSolid (const G4Orb&);
104 virtual void AddSolid (const G4Para&);
105 virtual void AddSolid (const G4Sphere&);
106 virtual void AddSolid (const G4Torus&);
107 virtual void AddSolid (const G4Trap&);
108 virtual void AddSolid (const G4Trd&);
109 virtual void AddSolid (const G4Tubs&);
110
111 // From geometry/solids/specific
112 virtual void AddSolid (const G4Ellipsoid&);
113 virtual void AddSolid (const G4Polycone&);
114 virtual void AddSolid (const G4Polyhedra&);
115 virtual void AddSolid (const G4TessellatedSolid&);
116
117 // For solids not above.
118 virtual void AddSolid (const G4VSolid&);
119
120 ///////////////////////////////////////////////////////////////////
121 // Methods for adding "compound" GEANT4 objects to the scene
122 // handler. These methods may either (a) invoke "user code" that
123 // uses the "user interface", G4VVisManager (see, for example,
124 // G4VSceneHandler, which for trajectories uses
125 // G4VTrajectory::DrawTrajectory, via G4TrajectoriesModel in the
126 // Modeling Category) or (b) invoke AddPrimitives below (between
127 // calls to Begin/EndPrimitives) or (c) use graphics-system-specific
128 // code or (d) any combination of the above.
129
130 virtual void AddCompound (const G4VTrajectory&);
131 virtual void AddCompound (const G4VHit&);
132 virtual void AddCompound (const G4VDigi&);
133 virtual void AddCompound (const G4THitsMap<G4double>&);
134 virtual void AddCompound (const G4THitsMap<G4StatDouble>&);
135 virtual void AddCompound (const G4Mesh&);
136
137 //////////////////////////////////////////////////////////////
138 // Functions for adding primitives.
139
140 virtual void BeginModeling ();
141 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
142 // void MyXXXSceneHandler::BeginModeling () {
143 // G4VSceneHandler::BeginModeling ();
144 // ...
145 // }
146
147 virtual void EndModeling ();
148 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
149 // void MyXXXSceneHandler::EndModeling () {
150 // ...
151 // G4VSceneHandler::EndModeling ();
152 // }
153
154 virtual void BeginPrimitives
155 (const G4Transform3D& objectTransformation = G4Transform3D());
156 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
157 // void MyXXXSceneHandler::BeginPrimitives
158 // (const G4Transform3D& objectTransformation) {
159 // G4VSceneHandler::BeginPrimitives (objectTransformation);
160 // ...
161 // }
162
163 virtual void EndPrimitives ();
164 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
165 // void MyXXXSceneHandler::EndPrimitives () {
166 // ...
167 // G4VSceneHandler::EndPrimitives ();
168 // }
169
170 virtual void BeginPrimitives2D
171 (const G4Transform3D& objectTransformation = G4Transform3D());
172 // The x,y coordinates of the primitives passed to AddPrimitive are
173 // intrepreted as screen coordinates, -1 < x,y < 1. The
174 // z-coordinate is ignored.
175 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
176 // void MyXXXSceneHandler::BeginPrimitives2D
177 // (const G4Transform3D& objectTransformation) {
178 // G4VSceneHandler::BeginPrimitives2D (objectTransformation);
179 // ...
180 // }
181
182 virtual void EndPrimitives2D ();
183 // IMPORTANT: invoke this from your polymorphic versions, e.g.:
184 // void MyXXXSceneHandler::EndPrimitives2D () {
185 // ...
186 // G4VSceneHandler::EndPrimitives2D ();
187 // }
188
189 virtual void AddPrimitive (const G4Polyline&) = 0;
190 virtual void AddPrimitive (const G4Text&) = 0;
191 virtual void AddPrimitive (const G4Circle&) = 0;
192 virtual void AddPrimitive (const G4Square&) = 0;
193 virtual void AddPrimitive (const G4Polymarker&);
194 virtual void AddPrimitive (const G4Polyhedron&) = 0;
195 virtual void AddPrimitive (const G4Plotter&);
196
197 // Other virtual functions
198 virtual const G4VisExtent& GetExtent() const;
199
200 //////////////////////////////////////////////////////////////
201 // Access functions.
202 const G4String& GetName () const;
206 G4Scene* GetScene () const;
215 void SetName (const G4String&);
217 virtual void SetScene (G4Scene*);
218 G4ViewerList& SetViewerList (); // Non-const so you can change.
221 // Sets flag which will cause transient store to be cleared at the
222 // next call to BeginPrimitives(). Maintained by vis manager.
226 // Maintained by vis manager.
227
228 //////////////////////////////////////////////////////////////
229 // Public utility functions.
230
231 const G4Colour& GetColour (); // To be deprecated?
233 // Returns colour - checks fpVisAttribs and gets applicable colour.
234 // Assumes fpVisAttribs point to the G4VisAttributes of the current object.
235 // If the pointer is null, the colour is obtained from the default view
236 // parameters of the current viewer.
237
238 const G4Colour& GetColour (const G4Visible&);
239 const G4Colour& GetColor (const G4Visible&);
240 // Returns colour, or viewer default colour.
241 // Makes no assumptions about the validity of data member fpVisAttribs.
242 // If the G4Visible has no vis attributes, i.e., the pointer is null,
243 // the colour is obtained from the default view parameters of the
244 // current viewer.
245
246 const G4Colour& GetTextColour (const G4Text&);
247 const G4Colour& GetTextColor (const G4Text&);
248 // Returns colour of G4Text object, or default text colour.
249
251 // Returns line width of G4VisAttributes multiplied by GlobalLineWidthScale.
252
254 // Returns drawing style from current view parameters, unless the user
255 // has forced through the vis attributes, thereby over-riding the
256 // current view parameter.
257
259 // Returns no of cloud points from current view parameters, unless the user
260 // has forced through the vis attributes, thereby over-riding the
261 // current view parameter.
262
264 // Returns auxiliary edge visibility from current view parameters,
265 // unless the user has forced through the vis attributes, thereby
266 // over-riding the current view parameter.
267
269 // Returns no. of sides (lines segments per circle) from current
270 // view parameters, unless the user has forced through the vis
271 // attributes, thereby over-riding the current view parameter.
272
274 // Returns applicable marker size (diameter) and type (in second
275 // argument). Uses global default marker if marker sizes are not
276 // set. Multiplies by GlobalMarkerScale.
277
279 // Alias for GetMarkerSize.
280
282 // GetMarkerSize / 2.
283
285 // Only the scene handler and view know what the Modeling Parameters should
286 // be. For historical reasons, the GEANT4 Visualization Environment
287 // maintains its own Scene Data and View Parameters, which must be
288 // converted, when needed, to Modeling Parameters.
289
290 void DrawEvent(const G4Event*);
291 // Checks scene's end-of-event model list and draws trajectories,
292 // hits, etc.
293
294 void DrawEndOfRunModels();
295 // Draws end-of-run models.
296
297 //////////////////////////////////////////////////////////////
298 // Administration functions.
299
300 template <class T> void AddSolidT (const T& solid);
301 template <class T> void AddSolidWithAuxiliaryEdges (const T& solid);
302
304
305 virtual void ClearStore ();
306 // Clears graphics database (display lists) if any.
307
308 virtual void ClearTransientStore ();
309 // Clears transient part of graphics database (display lists) if any.
310
311 void AddViewerToList (G4VViewer* pView); // Add view to view List.
312 void RemoveViewerFromList (G4VViewer* pView); // Remove view from view List.
313
314protected:
315
316 //////////////////////////////////////////////////////////////
317 // Core routine for looping over models, redrawing stored events, etc.
318 // Overload with care (see, for example,
319 // G4OpenGLScenehandler::ProcessScene).
320 virtual void ProcessScene ();
321
322 //////////////////////////////////////////////////////////////
323 // As above, but transients only. For example, at end of run, in "Idle"
324 // state, you might wish to re-draw the trajectories with a different
325 // time window.
326 virtual void ProcessTransients ();
327
328 //////////////////////////////////////////////////////////////
329 // Default routine used by default AddSolid ().
330 virtual void RequestPrimitives (const G4VSolid& solid);
331
332 //////////////////////////////////////////////////////////////
333 // Other internal routines...
334
337 // Generic clipping using the BooleanProcessor in graphics_reps is
338 // implemented in this class. Subclasses that implement their own
339 // clipping should provide an override that returns zero.
340
341 void LoadAtts(const G4Visible&, G4AttHolder*);
342 // Load G4AttValues and G4AttDefs associated with the G4Visible
343 // object onto the G4AttHolder object. It checks fpModel, and also
344 // loads the G4AttValues and G4AttDefs from G4PhysicalVolumeModel,
345 // G4VTrajectory, G4VTrajectoryPoint, G4VHit or G4VDigi, as
346 // appropriate. The G4AttHolder object is an object of a class that
347 // publicly inherits G4AttHolder - see, e.g., SoG4Polyhedron in the
348 // Open Inventor driver. G4AttHolder deletes G4AttValues in its
349 // destructor to ensure proper clean-up of G4AttValues.
350
351 //////////////////////////////////////////////////////////////
352 // Special mesh rendering utilities...
353
355 NameAndVisAtts(const G4String& name = "",const G4VisAttributes& visAtts = G4VisAttributes())
356 : fName(name),fVisAtts(visAtts) {}
359 };
360
362 public:
364 (G4PhysicalVolumeModel* pvModel // input
365 , const G4Mesh* pMesh // input...the following are outputs by reference
366 , std::multimap<const G4Material*,const G4ThreeVector>& positionByMaterial
367 , std::map<const G4Material*,NameAndVisAtts>& nameAndVisAttsByMaterial)
368 : fpPVModel(pvModel)
369 , fpMesh(pMesh)
370 , fPositionByMaterial(positionByMaterial)
371 , fNameAndVisAttsByMaterial(nameAndVisAttsByMaterial)
372 {}
373 private:
374 using G4PseudoScene::AddSolid; // except for...
375 void AddSolid(const G4Box&) override;
376 void ProcessVolume(const G4VSolid&) override {
377 // Do nothing if uninteresting solids found, e.g., the container if not marked invisible.
378 }
379 G4PhysicalVolumeModel* fpPVModel;
380 const G4Mesh* fpMesh;
381 std::multimap<const G4Material*,const G4ThreeVector>& fPositionByMaterial;
382 std::map<const G4Material*,NameAndVisAtts>& fNameAndVisAttsByMaterial;
383 };
384
386 public:
388 (G4PhysicalVolumeModel* pvModel // input
389 , const G4Mesh* pMesh // input...the following are outputs by reference
390 , std::multimap<const G4Material*,std::vector<G4ThreeVector>>& verticesByMaterial
391 , std::map<const G4Material*,NameAndVisAtts>& nameAndVisAttsByMaterial)
392 : fpPVModel(pvModel)
393 , fpMesh(pMesh)
394 , fVerticesByMaterial(verticesByMaterial)
395 , fNameAndVisAttsByMaterial(nameAndVisAttsByMaterial)
396 {}
397 private:
398 using G4PseudoScene::AddSolid; // except for...
399 void AddSolid(const G4VSolid& solid) override;
400 void ProcessVolume(const G4VSolid&) override {
401 // Do nothing if uninteresting solids found, e.g., the container if not marked invisible.
402 }
403 G4PhysicalVolumeModel* fpPVModel;
404 const G4Mesh* fpMesh;
405 std::multimap<const G4Material*,std::vector<G4ThreeVector>>& fVerticesByMaterial;
406 std::map<const G4Material*,NameAndVisAtts>& fNameAndVisAttsByMaterial;
407 };
408
409 void StandardSpecialMeshRendering(const G4Mesh&);
410 // Standard way of special mesh rendering.
411 // MySceneHandler::AddCompound(const G4Mesh& mesh) may use this if
412 // appropriate or implement its own special mesh rendereing.
413
414 void Draw3DRectMeshAsDots(const G4Mesh&);
415 // For a rectangular 3-D mesh, draw as coloured dots by colour and material,
416 // one dot randomly placed in each visible mesh cell.
417
418 void Draw3DRectMeshAsSurfaces(const G4Mesh&);
419 // For a rectangular 3-D mesh, draw as surfaces by colour and material
420 // with inner shared faces removed.
421
422 void DrawTetMeshAsDots(const G4Mesh&);
423 // For a tetrahedron mesh, draw as coloured dots by colour and material,
424 // one dot randomly placed in each visible mesh cell.
425
426 void DrawTetMeshAsSurfaces(const G4Mesh&);
427 // For a tetrahedron mesh, draw as surfaces by colour and material
428 // with inner shared faces removed.
429
431 G4double halfX,
432 G4double halfY,
433 G4double halfZ) const;
434 // Sample a random point inside the box
435
436 G4ThreeVector GetPointInTet(const std::vector<G4ThreeVector>& vertices) const;
437 // Sample a random point inside the tetrahedron
438
439 //////////////////////////////////////////////////////////////
440 // Data members
441
442 G4VGraphicsSystem& fSystem; // Graphics system.
443 const G4int fSceneHandlerId; // Id of this instance.
445 G4int fViewCount; // To determine view ids.
447 G4VViewer* fpViewer; // Current viewer.
448 G4Scene* fpScene; // Scene for this scene handler.
450 G4bool fReadyForTransients; // I.e., not processing the
451 // run-duration part of scene.
452 G4bool fTransientsDrawnThisEvent; // Maintained by vis
454 G4bool fProcessingSolid; // True if within Pre/PostAddSolid.
455 G4bool fProcessing2D; // True for 2D.
456 G4VModel* fpModel; // Current model.
457 G4Transform3D fObjectTransformation; // Current accumulated
458 // object transformation.
459 G4int fNestingDepth; // For Begin/EndPrimitives.
460 const G4VisAttributes* fpVisAttribs; // Working vis attributes.
462 std::map<G4VPhysicalVolume*,G4String> fProblematicVolumes;
463
464private:
465
467 G4VSceneHandler& operator = (const G4VSceneHandler&);
468};
469
470#include "G4VSceneHandler.icc"
471
472#endif
CLHEP::Hep3Vector G4ThreeVector
HepGeom::Transform3D G4Transform3D
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
G4Box is a cuboid of given half lengths dx,dy,dz. The Box is centred on the origin with sides paralle...
Definition G4Box.hh:58
G4Cons is, in the general case, a Phi segment of a cone, with half-length fDz, inner and outer radii ...
Definition G4Cons.hh:85
G4DisplacedSolid is a solid that has been shifted from its original frame of reference to a new one....
G4Ellipsoid is an ellipsoidal solid, optionally cut at a given Z.
G4Orb represents a full sphere.
Definition G4Orb.hh:59
G4Para represents a parallelepiped, essentially a box with half lengths dx,dy,dz 'skewed' so that the...
Definition G4Para.hh:86
G4Polycone represents a composed closed shape (PCON) made of cones and cylinders, along the Z axis wi...
Definition G4Polycone.hh:82
G4Polyhedra represents a composed closed polyhedra (PGON) made of planar sizes along the Z axis,...
void AddSolid(const G4Box &solid)
G4PseudoScene()=default
G4Sphere is, in the general case, a section of a spherical shell, between specified phi and theta ang...
Definition G4Sphere.hh:89
G4TessellatedSolid is a solid defined by a number of facets. It is important that the supplied facets...
G4Torus represents a torus or torus segment with curved sides parallel to the z-axis....
Definition G4Torus.hh:102
G4Trap is a general trapezoid: the faces perpendicular to the Z planes are trapezia,...
Definition G4Trap.hh:116
G4Trd is a trapezoid with the X and Y dimensions varying along Z.
Definition G4Trd.hh:65
G4Tubs is a tube or tube segment with curved sides parallel to the Z-axis. The tube has a specified h...
Definition G4Tubs.hh:85
PseudoSceneFor3DRectMeshPositions(G4PhysicalVolumeModel *pvModel, const G4Mesh *pMesh, std::multimap< const G4Material *, const G4ThreeVector > &positionByMaterial, std::map< const G4Material *, NameAndVisAtts > &nameAndVisAttsByMaterial)
PseudoSceneForTetVertices(G4PhysicalVolumeModel *pvModel, const G4Mesh *pMesh, std::multimap< const G4Material *, std::vector< G4ThreeVector > > &verticesByMaterial, std::map< const G4Material *, NameAndVisAtts > &nameAndVisAttsByMaterial)
virtual void BeginModeling()
G4int GetNumberOfCloudPoints(const G4VisAttributes *) const
const G4Colour & GetColor(const G4Visible &)
friend std::ostream & operator<<(std::ostream &os, const G4VSceneHandler &s)
G4int GetNoOfSides(const G4VisAttributes *)
virtual void AddPrimitive(const G4Polyhedron &)=0
void DrawTetMeshAsSurfaces(const G4Mesh &)
virtual void ClearTransientStore()
G4bool GetTransientsDrawnThisEvent() const
void SetTransientsDrawnThisRun(G4bool)
void LoadAtts(const G4Visible &, G4AttHolder *)
void DrawEvent(const G4Event *)
G4ModelingParameters * CreateModelingParameters()
const G4Colour & GetTextColour(const G4Text &)
void SetMarkForClearingTransientStore(G4bool)
const G4Colour & GetTextColor(const G4Text &)
G4VModel * GetModel() const
const G4Colour & GetColour()
G4VGraphicsSystem * GetGraphicsSystem() const
void Draw3DRectMeshAsDots(const G4Mesh &)
virtual void AddPrimitive(const G4Circle &)=0
G4double GetMarkerRadius(const G4VMarker &, MarkerSizeType &)
const G4ViewerList & GetViewerList() const
void AddSolidT(const T &solid)
G4bool IsReadyForTransients() const
G4Scene * GetScene() const
G4Transform3D fObjectTransformation
virtual void EndPrimitives()
G4bool fTransientsDrawnThisEvent
G4VViewer * GetCurrentViewer() const
void AddSolidWithAuxiliaryEdges(const T &solid)
G4int IncrementViewCount()
virtual G4DisplacedSolid * CreateSectionSolid()
friend class G4VViewer
virtual void AddPrimitive(const G4Text &)=0
G4ViewerList & SetViewerList()
virtual void EndModeling()
std::map< G4VPhysicalVolume *, G4String > fProblematicVolumes
const G4int fSceneHandlerId
void SetName(const G4String &)
virtual const G4VisExtent & GetExtent() const
G4int GetSceneHandlerId() const
G4ViewerList fViewerList
virtual void ProcessScene()
G4double GetMarkerSize(const G4VMarker &, MarkerSizeType &)
void SetObjectTransformation(const G4Transform3D &)
virtual void ProcessTransients()
void SetModel(G4VModel *)
virtual void PreAddSolid(const G4Transform3D &objectTransformation, const G4VisAttributes &)
G4VSceneHandler(G4VGraphicsSystem &system, G4int id, const G4String &name="")
virtual void PostAddSolid()
const G4String & GetName() const
void AddViewerToList(G4VViewer *pView)
void SetTransientsDrawnThisEvent(G4bool)
virtual void EndPrimitives2D()
virtual void SetScene(G4Scene *)
G4bool fMarkForClearingTransientStore
const G4Transform3D & GetObjectTransformation() const
const G4VisAttributes * fpVisAttribs
virtual void BeginPrimitives2D(const G4Transform3D &objectTransformation=G4Transform3D())
G4ThreeVector GetPointInBox(const G4ThreeVector &pos, G4double halfX, G4double halfY, G4double halfZ) const
virtual void RequestPrimitives(const G4VSolid &solid)
G4double GetMarkerDiameter(const G4VMarker &, MarkerSizeType &)
virtual void AddPrimitive(const G4Square &)=0
const G4Colour & GetColor()
G4ViewParameters::DrawingStyle GetDrawingStyle(const G4VisAttributes *)
G4bool GetTransientsDrawnThisRun() const
void RemoveViewerFromList(G4VViewer *pView)
virtual G4DisplacedSolid * CreateCutawaySolid()
void DrawTetMeshAsDots(const G4Mesh &)
virtual void BeginPrimitives(const G4Transform3D &objectTransformation=G4Transform3D())
G4double GetLineWidth(const G4VisAttributes *)
G4ThreeVector GetPointInTet(const std::vector< G4ThreeVector > &vertices) const
G4int GetViewCount() const
G4VGraphicsSystem & fSystem
virtual void AddSolid(const G4Box &)
virtual void ClearStore()
void Draw3DRectMeshAsSurfaces(const G4Mesh &)
void SetCurrentViewer(G4VViewer *)
virtual void AddCompound(const G4VTrajectory &)
virtual ~G4VSceneHandler()
virtual void AddPrimitive(const G4Polyline &)=0
const G4Transform3D fIdentityTransformation
G4bool GetMarkForClearingTransientStore() const
G4bool GetAuxEdgeVisible(const G4VisAttributes *)
void StandardSpecialMeshRendering(const G4Mesh &)
G4VSolid is an abstract base class for solids, physical shapes that can be tracked through....
Definition G4VSolid.hh:80
NameAndVisAtts(const G4String &name="", const G4VisAttributes &visAtts=G4VisAttributes())