Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
G4VSceneHandler Class Referenceabstract

#include <G4VSceneHandler.hh>

Inheritance diagram for G4VSceneHandler:
G4VGraphicsScene G4DAWNFILESceneHandler G4GMocrenFileSceneHandler G4HepRepFileSceneHandler G4HepRepSceneHandler G4RayTracerSceneHandler G4VRML1FileSceneHandler G4VRML2FileSceneHandler G4VTreeSceneHandler G4XXXFileSceneHandler G4XXXSceneHandler G4XXXSGSceneHandler G4XXXStoredSceneHandler

Public Types

enum  MarkerSizeType { world, screen }
 

Public Member Functions

 G4VSceneHandler (G4VGraphicsSystem &system, G4int id, const G4String &name="")
 
virtual ~G4VSceneHandler ()
 
virtual void PreAddSolid (const G4Transform3D &objectTransformation, const G4VisAttributes &)
 
virtual void PostAddSolid ()
 
virtual void AddSolid (const G4Box &)
 
virtual void AddSolid (const G4Cons &)
 
virtual void AddSolid (const G4Tubs &)
 
virtual void AddSolid (const G4Trd &)
 
virtual void AddSolid (const G4Trap &)
 
virtual void AddSolid (const G4Sphere &)
 
virtual void AddSolid (const G4Para &)
 
virtual void AddSolid (const G4Torus &)
 
virtual void AddSolid (const G4Polycone &)
 
virtual void AddSolid (const G4Polyhedra &)
 
virtual void AddSolid (const G4VSolid &)
 
virtual void AddCompound (const G4VTrajectory &)
 
virtual void AddCompound (const G4VHit &)
 
virtual void AddCompound (const G4VDigi &)
 
virtual void AddCompound (const G4THitsMap< G4double > &)
 
virtual void BeginModeling ()
 
virtual void EndModeling ()
 
virtual void BeginPrimitives (const G4Transform3D &objectTransformation)
 
virtual void EndPrimitives ()
 
virtual void BeginPrimitives2D (const G4Transform3D &objectTransformation)
 
virtual void EndPrimitives2D ()
 
virtual void AddPrimitive (const G4Polyline &)=0
 
virtual void AddPrimitive (const G4Scale &)
 
virtual void AddPrimitive (const G4Text &)=0
 
virtual void AddPrimitive (const G4Circle &)=0
 
virtual void AddPrimitive (const G4Square &)=0
 
virtual void AddPrimitive (const G4Polymarker &)
 
virtual void AddPrimitive (const G4Polyhedron &)=0
 
virtual const G4VisExtentGetExtent () const
 
const G4StringGetName () const
 
G4int GetSceneHandlerId () const
 
G4int GetViewCount () const
 
G4VGraphicsSystemGetGraphicsSystem () const
 
G4SceneGetScene () const
 
const G4ViewerListGetViewerList () const
 
G4VModelGetModel () const
 
G4VViewerGetCurrentViewer () const
 
G4bool GetMarkForClearingTransientStore () const
 
G4bool IsReadyForTransients () const
 
G4bool GetTransientsDrawnThisEvent () const
 
G4bool GetTransientsDrawnThisRun () const
 
const G4Transform3DGetObjectTransformation () const
 
void SetName (const G4String &)
 
void SetCurrentViewer (G4VViewer *)
 
virtual void SetScene (G4Scene *)
 
G4ViewerListSetViewerList ()
 
void SetModel (G4VModel *)
 
void SetMarkForClearingTransientStore (G4bool)
 
void SetTransientsDrawnThisEvent (G4bool)
 
void SetTransientsDrawnThisRun (G4bool)
 
void SetObjectTransformation (const G4Transform3D &)
 
const G4ColourGetColour (const G4Visible &)
 
const G4ColourGetColor (const G4Visible &)
 
const G4ColourGetTextColour (const G4Text &)
 
const G4ColourGetTextColor (const G4Text &)
 
G4double GetLineWidth (const G4VisAttributes *)
 
G4ViewParameters::DrawingStyle GetDrawingStyle (const G4VisAttributes *)
 
G4bool GetAuxEdgeVisible (const G4VisAttributes *)
 
G4int GetNoOfSides (const G4VisAttributes *)
 
G4double GetMarkerSize (const G4VMarker &, MarkerSizeType &)
 
G4double GetMarkerDiameter (const G4VMarker &, MarkerSizeType &)
 
G4double GetMarkerRadius (const G4VMarker &, MarkerSizeType &)
 
G4ModelingParametersCreateModelingParameters ()
 
void DrawEvent (const G4Event *)
 
void DrawEndOfRunModels ()
 
G4int IncrementViewCount ()
 
virtual void ClearStore ()
 
virtual void ClearTransientStore ()
 
void AddViewerToList (G4VViewer *pView)
 
void RemoveViewerFromList (G4VViewer *pView)
 
- Public Member Functions inherited from G4VGraphicsScene
 G4VGraphicsScene ()
 
virtual ~G4VGraphicsScene ()
 

Protected Member Functions

virtual void ProcessScene ()
 
virtual void RequestPrimitives (const G4VSolid &solid)
 
virtual G4VSolidCreateSectionSolid ()
 
virtual G4VSolidCreateCutawaySolid ()
 
void LoadAtts (const G4Visible &, G4AttHolder *)
 

Protected Attributes

G4VGraphicsSystemfSystem
 
const G4int fSceneHandlerId
 
G4String fName
 
G4int fViewCount
 
G4ViewerList fViewerList
 
G4VViewerfpViewer
 
G4ScenefpScene
 
G4bool fMarkForClearingTransientStore
 
G4bool fReadyForTransients
 
G4bool fTransientsDrawnThisEvent
 
G4bool fTransientsDrawnThisRun
 
G4bool fProcessingSolid
 
G4bool fProcessing2D
 
G4VModelfpModel
 
G4Transform3D fObjectTransformation
 
G4int fNestingDepth
 
const G4VisAttributesfpVisAttribs
 
const G4Transform3D fIdentityTransformation
 

Friends

class G4VViewer
 
std::ostream & operator<< (std::ostream &os, const G4VSceneHandler &s)
 

Detailed Description

Definition at line 61 of file G4VSceneHandler.hh.

Member Enumeration Documentation

Enumerator
world 
screen 

Definition at line 68 of file G4VSceneHandler.hh.

Constructor & Destructor Documentation

G4VSceneHandler::G4VSceneHandler ( G4VGraphicsSystem system,
G4int  id,
const G4String name = "" 
)

Definition at line 87 of file G4VSceneHandler.cc.

References fName, fpScene, fSceneHandlerId, fSystem, fTransientsDrawnThisEvent, fTransientsDrawnThisRun, G4VGraphicsSystem::GetName(), G4VisManager::GetTransientsDrawnThisEvent(), and G4VisManager::GetTransientsDrawnThisRun().

87  :
88  fSystem (system),
89  fSceneHandlerId (id),
90  fViewCount (0),
91  fpViewer (0),
92  fpScene (0),
93  fMarkForClearingTransientStore (true), // Ready for first
94  // ClearTransientStoreIfMarked(),
95  // e.g., at end of run (see
96  // G4VisManager.cc).
97  fReadyForTransients (true), // Only false while processing scene.
98  fProcessingSolid (false),
99  fProcessing2D (false),
100  fpModel (0),
101  fNestingDepth (0),
102  fpVisAttribs (0)
103 {
104  G4VisManager* pVMan = G4VisManager::GetInstance ();
105  fpScene = pVMan -> GetCurrentScene ();
106  if (name == "") {
107  std::ostringstream ost;
108  ost << fSystem.GetName () << '-' << fSceneHandlerId;
109  fName = ost.str();
110  }
111  else {
112  fName = name;
113  }
116 }
G4bool GetTransientsDrawnThisRun() const
G4VViewer * fpViewer
const XML_Char * name
const G4int fSceneHandlerId
G4bool GetTransientsDrawnThisEvent() const
const G4VisAttributes * fpVisAttribs
const G4String & GetName() const
G4bool fMarkForClearingTransientStore
G4bool fTransientsDrawnThisEvent
G4bool fTransientsDrawnThisRun
G4VGraphicsSystem & fSystem
G4VSceneHandler::~G4VSceneHandler ( )
virtual

Definition at line 118 of file G4VSceneHandler.cc.

References fViewerList.

118  {
119  G4VViewer* last;
120  while( ! fViewerList.empty() ) {
121  last = fViewerList.back();
122  fViewerList.pop_back();
123  delete last;
124  }
125 }
G4ViewerList fViewerList

Member Function Documentation

void G4VSceneHandler::AddCompound ( const G4VTrajectory traj)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4HepRepSceneHandler, G4HepRepFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4RayTracerSceneHandler.

Definition at line 267 of file G4VSceneHandler.cc.

References G4VTrajectory::DrawTrajectory(), FatalException, fpModel, and G4Exception().

Referenced by G4VRML1FileSceneHandler::AddCompound(), G4VRML2FileSceneHandler::AddCompound(), G4HepRepFileSceneHandler::AddCompound(), G4HepRepSceneHandler::AddCompound(), G4DAWNFILESceneHandler::AddCompound(), and G4GMocrenFileSceneHandler::AddCompound().

267  {
268  G4TrajectoriesModel* trajectoriesModel =
269  dynamic_cast<G4TrajectoriesModel*>(fpModel);
270  if (trajectoriesModel)
271  traj.DrawTrajectory();
272  else {
274  ("G4VSceneHandler::AddCompound(const G4VTrajectory&)",
275  "visman0105", FatalException, "Not a G4TrajectoriesModel.");
276  }
277 }
virtual void DrawTrajectory() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void G4VSceneHandler::AddCompound ( const G4VHit hit)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4HepRepSceneHandler, G4HepRepFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4RayTracerSceneHandler.

Definition at line 279 of file G4VSceneHandler.cc.

279  {
280  // Cast away const because Draw is non-const!!!!
281  const_cast<G4VHit&>(hit).Draw();
282 }
Definition: G4VHit.hh:48
void G4VSceneHandler::AddCompound ( const G4VDigi digi)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4HepRepFileSceneHandler, G4HepRepSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4RayTracerSceneHandler.

Definition at line 284 of file G4VSceneHandler.cc.

284  {
285  // Cast away const because Draw is non-const!!!!
286  const_cast<G4VDigi&>(digi).Draw();
287 }
void G4VSceneHandler::AddCompound ( const G4THitsMap< G4double > &  hits)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4HepRepSceneHandler, G4HepRepFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4RayTracerSceneHandler.

Definition at line 289 of file G4VSceneHandler.cc.

References G4VScoringMesh::DrawMesh(), G4String::first(), G4cout, G4endl, G4ScoringManager::GetMesh(), G4ScoringManager::GetNumberOfMesh(), G4VScoringMesh::GetScoreMap(), G4ScoringManager::GetScoringManagerIfExist(), and G4VScoringMesh::IsActive().

289  {
290  //G4cout << "AddCompound: hits: " << &hits << G4endl;
291  G4bool scoreMapHits = false;
293  if (scoringManager) {
294  size_t nMeshes = scoringManager->GetNumberOfMesh();
295  for (size_t iMesh = 0; iMesh < nMeshes; ++iMesh) {
296  G4VScoringMesh* mesh = scoringManager->GetMesh(iMesh);
297  if (mesh && mesh->IsActive()) {
298  MeshScoreMap scoreMap = mesh->GetScoreMap();
299  for(MeshScoreMap::const_iterator i = scoreMap.begin();
300  i != scoreMap.end(); ++i) {
301  const G4String& scoreMapName = i->first;
302  const G4THitsMap<G4double>* foundHits = i->second;
303  if (foundHits == &hits) {
304  G4DefaultLinearColorMap colorMap("G4VSceneHandlerColorMap");
305  scoreMapHits = true;
306  mesh->DrawMesh(scoreMapName, &colorMap);
307  }
308  }
309  }
310  }
311  }
312  if (scoreMapHits) {
313  static G4bool first = true;
314  if (first) {
315  first = false;
316  G4cout <<
317  "Scoring map drawn with default parameters."
318  "\n To get gMocren file for gMocren browser:"
319  "\n /vis/open gMocrenFile"
320  "\n /vis/viewer/flush"
321  "\n Many other options available with /score/draw... commands."
322  "\n You might want to \"/vis/viewer/set/autoRefresh false\"."
323  << G4endl;
324  }
325  } else { // Not score map hits. Just call DrawAllHits.
326  // Cast away const because DrawAllHits is non-const!!!!
327  const_cast<G4THitsMap<G4double>&>(hits).DrawAllHits();
328  }
329 }
void DrawMesh(const G4String &psName, G4VScoreColorMap *colorMap, G4int axflg=111)
std::map< G4String, G4THitsMap< G4double > * > MeshScoreMap
G4int first(char) const
G4GLOB_DLL std::ostream G4cout
static G4ScoringManager * GetScoringManagerIfExist()
bool G4bool
Definition: G4Types.hh:79
MeshScoreMap GetScoreMap() const
#define G4endl
Definition: G4ios.hh:61
G4bool IsActive() const
size_t GetNumberOfMesh() const
G4VScoringMesh * GetMesh(G4int i) const
virtual void G4VSceneHandler::AddPrimitive ( const G4Polyline )
pure virtual
void G4VSceneHandler::AddPrimitive ( const G4Scale scale)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4XXXSGSceneHandler, G4HepRepFileSceneHandler, G4HepRepSceneHandler, G4XXXStoredSceneHandler, G4XXXFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4VTreeSceneHandler, G4XXXSceneHandler, and G4RayTracerSceneHandler.

Definition at line 335 of file G4VSceneHandler.cc.

References AddPrimitive(), fpModel, fpScene, G4Scale::GetAnnotation(), G4Scale::GetAutoPlacing(), G4Scale::GetDirection(), G4Scene::GetExtent(), G4Scale::GetLength(), G4VModel::GetTransformation(), G4Visible::GetVisAttributes(), G4VisExtent::GetXmax(), G4Scale::GetXmid(), G4VisExtent::GetXmin(), G4VisExtent::GetYmax(), G4Scale::GetYmid(), G4VisExtent::GetYmin(), G4VisExtent::GetZmax(), G4Scale::GetZmid(), G4VisExtent::GetZmin(), python.hepunit::halfpi, G4VMarker::SetScreenSize(), G4Visible::SetVisAttributes(), G4Polyline::transform(), G4Scale::x, G4Scale::y, and G4Scale::z.

335  {
336 
337  const G4double margin(0.01);
338  // Fractional margin - ensures scale is comfortably inside viewing
339  // volume.
340  const G4double oneMinusMargin (1. - margin);
341 
342  const G4VisExtent& sceneExtent = fpScene->GetExtent();
343 
344  // Useful constants...
345  const G4double length(scale.GetLength());
346  const G4double halfLength(length / 2.);
347  const G4double tickLength(length / 20.);
348  const G4double piBy2(halfpi);
349 
350  // Get size of scene...
351  const G4double xmin = sceneExtent.GetXmin();
352  const G4double xmax = sceneExtent.GetXmax();
353  const G4double ymin = sceneExtent.GetYmin();
354  const G4double ymax = sceneExtent.GetYmax();
355  const G4double zmin = sceneExtent.GetZmin();
356  const G4double zmax = sceneExtent.GetZmax();
357 
358  // Create (empty) polylines having the same vis attributes...
359  G4Polyline scaleLine, tick11, tick12, tick21, tick22;
360  G4VisAttributes visAtts(*scale.GetVisAttributes()); // Long enough life.
361  scaleLine.SetVisAttributes(&visAtts);
362  tick11.SetVisAttributes(&visAtts);
363  tick12.SetVisAttributes(&visAtts);
364  tick21.SetVisAttributes(&visAtts);
365  tick22.SetVisAttributes(&visAtts);
366 
367  // Add points to the polylines to represent an scale parallel to the
368  // x-axis centred on the origin...
369  G4Point3D r1(G4Point3D(-halfLength, 0., 0.));
370  G4Point3D r2(G4Point3D( halfLength, 0., 0.));
371  scaleLine.push_back(r1);
372  scaleLine.push_back(r2);
373  G4Point3D ticky(0., tickLength, 0.);
374  G4Point3D tickz(0., 0., tickLength);
375  tick11.push_back(r1 + ticky);
376  tick11.push_back(r1 - ticky);
377  tick12.push_back(r1 + tickz);
378  tick12.push_back(r1 - tickz);
379  tick21.push_back(r2 + ticky);
380  tick21.push_back(r2 - ticky);
381  tick22.push_back(r2 + tickz);
382  tick22.push_back(r2 - tickz);
383  G4Point3D textPosition(0., tickLength, 0.);
384 
385  // Transform appropriately...
386 
387  G4Transform3D transformation;
388  if (scale.GetAutoPlacing()) {
389  G4Transform3D rotation;
390  switch (scale.GetDirection()) {
391  case G4Scale::x:
392  break;
393  case G4Scale::y:
394  rotation = G4RotateZ3D(piBy2);
395  break;
396  case G4Scale::z:
397  rotation = G4RotateY3D(piBy2);
398  break;
399  }
400  G4double sxmid(scale.GetXmid());
401  G4double symid(scale.GetYmid());
402  G4double szmid(scale.GetZmid());
403  sxmid = xmin + oneMinusMargin * (xmax - xmin);
404  symid = ymin + margin * (ymax - ymin);
405  szmid = zmin + oneMinusMargin * (zmax - zmin);
406  switch (scale.GetDirection()) {
407  case G4Scale::x:
408  sxmid -= halfLength;
409  break;
410  case G4Scale::y:
411  symid += halfLength;
412  break;
413  case G4Scale::z:
414  szmid -= halfLength;
415  break;
416  }
417  G4Translate3D translation(sxmid, symid, szmid);
418  transformation = translation * rotation;
419  } else {
420  if (fpModel) transformation = fpModel->GetTransformation();
421  }
422 
423  // Draw...
424  // We would like to call BeginPrimitives(transformation) here but
425  // calling BeginPrimitives from within an AddPrimitive is not
426  // allowed! So we have to do our own transformation...
427  AddPrimitive(scaleLine.transform(transformation));
428  AddPrimitive(tick11.transform(transformation));
429  AddPrimitive(tick12.transform(transformation));
430  AddPrimitive(tick21.transform(transformation));
431  AddPrimitive(tick22.transform(transformation));
432  G4Text text(scale.GetAnnotation(),textPosition.transform(transformation));
433  text.SetScreenSize(12.);
434  AddPrimitive(text);
435 }
Direction GetDirection() const
Definition: G4Text.hh:73
G4double GetZmid() const
G4bool GetAutoPlacing() const
HepGeom::RotateY3D G4RotateY3D
G4double GetXmin() const
Definition: G4VisExtent.hh:89
G4double GetYmid() const
G4double GetXmax() const
Definition: G4VisExtent.hh:90
const G4Transform3D & GetTransformation() const
HepGeom::Point3D< G4double > G4Point3D
Definition: G4Point3D.hh:35
const G4VisAttributes * GetVisAttributes() const
virtual void AddPrimitive(const G4Polyline &)=0
HepGeom::RotateZ3D G4RotateZ3D
G4double GetXmid() const
const G4VisExtent & GetExtent() const
G4double GetYmax() const
Definition: G4VisExtent.hh:92
G4double GetZmax() const
Definition: G4VisExtent.hh:94
void SetVisAttributes(const G4VisAttributes *)
Definition: G4Visible.cc:80
G4double GetLength() const
G4double GetZmin() const
Definition: G4VisExtent.hh:93
G4double GetYmin() const
Definition: G4VisExtent.hh:91
double G4double
Definition: G4Types.hh:76
const G4String & GetAnnotation() const
G4Polyline & transform(const G4Transform3D &)
Definition: G4Polyline.cc:38
void SetScreenSize(G4double)
virtual void G4VSceneHandler::AddPrimitive ( const G4Text )
pure virtual
virtual void G4VSceneHandler::AddPrimitive ( const G4Circle )
pure virtual
virtual void G4VSceneHandler::AddPrimitive ( const G4Square )
pure virtual
void G4VSceneHandler::AddPrimitive ( const G4Polymarker polymarker)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4XXXSGSceneHandler, G4HepRepFileSceneHandler, G4HepRepSceneHandler, G4XXXStoredSceneHandler, G4XXXFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4VTreeSceneHandler, G4XXXSceneHandler, and G4RayTracerSceneHandler.

Definition at line 437 of file G4VSceneHandler.cc.

References AddPrimitive(), G4Polymarker::circles, G4Polymarker::dots, G4Polymarker::GetMarkerType(), G4VMarker::SetPosition(), G4VMarker::SetScreenSize(), G4VMarker::SetWorldSize(), and G4Polymarker::squares.

437  {
438  switch (polymarker.GetMarkerType()) {
439  default:
440  case G4Polymarker::dots:
441  {
442  for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
443  G4Circle dot (polymarker);
444  dot.SetPosition (polymarker[iPoint]);
445  dot.SetWorldSize (0.);
446  dot.SetScreenSize (0.1); // Very small circle.
447  AddPrimitive (dot);
448  }
449  }
450  break;
452  {
453  for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
454  G4Circle circle (polymarker);
455  circle.SetPosition (polymarker[iPoint]);
456  AddPrimitive (circle);
457  }
458  }
459  break;
461  {
462  for (size_t iPoint = 0; iPoint < polymarker.size (); iPoint++) {
463  G4Square square (polymarker);
464  square.SetPosition (polymarker[iPoint]);
465  AddPrimitive (square);
466  }
467  }
468  break;
469  }
470 }
MarkerType GetMarkerType() const
virtual void AddPrimitive(const G4Polyline &)=0
virtual void G4VSceneHandler::AddPrimitive ( const G4Polyhedron )
pure virtual
void G4VSceneHandler::AddSolid ( const G4Box box)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4GMocrenFileSceneHandler, G4DAWNFILESceneHandler, G4XXXSGSceneHandler, G4HepRepSceneHandler, G4HepRepFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, G4RayTracerSceneHandler, G4XXXStoredSceneHandler, and G4XXXFileSceneHandler.

Definition at line 212 of file G4VSceneHandler.cc.

References RequestPrimitives().

Referenced by G4XXXFileSceneHandler::AddSolid(), G4XXXStoredSceneHandler::AddSolid(), G4VRML1FileSceneHandler::AddSolid(), G4VRML2FileSceneHandler::AddSolid(), G4HepRepFileSceneHandler::AddSolid(), G4HepRepSceneHandler::AddSolid(), G4XXXSGSceneHandler::AddSolid(), G4DAWNFILESceneHandler::AddSolid(), and G4GMocrenFileSceneHandler::AddSolid().

212  {
213  RequestPrimitives (box);
214 // If your graphics system is sophisticated enough to handle a
215 // particular solid shape as a primitive, in your derived class write a
216 // function to override this. (Note: some compilers warn that your
217 // function "hides" this one. That's OK.)
218 // Your function might look like this...
219 // void G4MyScene::AddSolid (const G4Box& box) {
220 // Get parameters of appropriate object, e.g.:
221 // G4double dx = box.GetXHalfLength ();
222 // G4double dy = box.GetYHalfLength ();
223 // G4double dz = box.GetZHalfLength ();
224 // and Draw or Store in your display List.
225 }
virtual void RequestPrimitives(const G4VSolid &solid)
void G4VSceneHandler::AddSolid ( const G4Cons cons)
virtual
void G4VSceneHandler::AddSolid ( const G4Tubs tubs)
virtual
void G4VSceneHandler::AddSolid ( const G4Trd trd)
virtual
void G4VSceneHandler::AddSolid ( const G4Trap trap)
virtual
void G4VSceneHandler::AddSolid ( const G4Sphere sphere)
virtual
void G4VSceneHandler::AddSolid ( const G4Para para)
virtual
void G4VSceneHandler::AddSolid ( const G4Torus torus)
virtual
void G4VSceneHandler::AddSolid ( const G4Polycone polycone)
virtual
void G4VSceneHandler::AddSolid ( const G4Polyhedra polyhedra)
virtual
void G4VSceneHandler::AddSolid ( const G4VSolid solid)
virtual
void G4VSceneHandler::AddViewerToList ( G4VViewer pView)

Definition at line 331 of file G4VSceneHandler.cc.

References fViewerList.

331  {
332  fViewerList.push_back (pViewer);
333 }
G4ViewerList fViewerList
void G4VSceneHandler::BeginModeling ( )
virtual
void G4VSceneHandler::BeginPrimitives ( const G4Transform3D objectTransformation)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4XXXSGSceneHandler, G4HepRepSceneHandler, G4XXXStoredSceneHandler, G4GMocrenFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4DAWNFILESceneHandler.

Definition at line 153 of file G4VSceneHandler.cc.

References FatalException, and G4Exception().

Referenced by G4GMocrenFileSceneHandler::BeginPrimitives(), G4XXXStoredSceneHandler::BeginPrimitives(), G4HepRepSceneHandler::BeginPrimitives(), G4XXXSGSceneHandler::BeginPrimitives(), and RequestPrimitives().

153  {
154  //static G4int count = 0;
155  //G4cout << "G4VSceneHandler::BeginPrimitives: " << count++ << G4endl;
156  fNestingDepth++;
157  if (fNestingDepth > 1)
159  ("G4VSceneHandler::BeginPrimitives",
160  "visman0101", FatalException,
161  "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
162  fObjectTransformation = objectTransformation;
163 }
G4Transform3D fObjectTransformation
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void G4VSceneHandler::BeginPrimitives2D ( const G4Transform3D objectTransformation)
virtual

Implements G4VGraphicsScene.

Reimplemented in G4HepRepFileSceneHandler.

Definition at line 177 of file G4VSceneHandler.cc.

References FatalException, and G4Exception().

Referenced by G4HepRepFileSceneHandler::BeginPrimitives2D().

177  {
178  fNestingDepth++;
179  if (fNestingDepth > 1)
181  ("G4VSceneHandler::BeginPrimitives2D",
182  "visman0103", FatalException,
183  "Nesting detected. It is illegal to nest Begin/EndPrimitives.");
184  fObjectTransformation = objectTransformation;
185  fProcessing2D = true;
186 }
G4Transform3D fObjectTransformation
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
void G4VSceneHandler::ClearStore ( )
virtual

Reimplemented in G4XXXSGSceneHandler, and G4XXXStoredSceneHandler.

Definition at line 208 of file G4VSceneHandler.cc.

Referenced by G4VViewer::ProcessView().

208 {}
void G4VSceneHandler::ClearTransientStore ( )
virtual
G4VSolid * G4VSceneHandler::CreateCutawaySolid ( )
protectedvirtual

Definition at line 756 of file G4VSceneHandler.cc.

Referenced by CreateModelingParameters().

757 {
758  return 0;
759 }
G4ModelingParameters * G4VSceneHandler::CreateModelingParameters ( )

Definition at line 672 of file G4VSceneHandler.cc.

References CreateCutawaySolid(), CreateSectionSolid(), fpViewer, G4ViewParameters::GetDefaultVisAttributes(), G4ViewParameters::GetDrawingStyle(), G4ViewParameters::GetExplodeCentre(), G4ViewParameters::GetExplodeFactor(), G4ViewParameters::GetNoOfSides(), G4VisManager::GetVerbosity(), G4ViewParameters::GetVisAttributesModifiers(), G4ViewParameters::GetVisibleDensity(), G4ModelingParameters::hlhsr, G4ViewParameters::hlhsr, G4ModelingParameters::hlr, G4ViewParameters::hlr, G4ModelingParameters::hsr, G4ViewParameters::hsr, G4ViewParameters::IsCulling(), G4ViewParameters::IsCullingCovered(), G4ViewParameters::IsCullingInvisible(), G4ViewParameters::IsCutaway(), G4ViewParameters::IsDensityCulling(), G4ViewParameters::IsSection(), G4ModelingParameters::SetCutawaySolid(), G4ModelingParameters::SetExplodeCentre(), G4ModelingParameters::SetExplodeFactor(), G4ModelingParameters::SetSectionSolid(), G4ModelingParameters::SetVisAttributesModifiers(), G4ModelingParameters::SetWarning(), G4VisManager::warnings, G4ModelingParameters::wf, and G4ViewParameters::wireframe.

Referenced by DrawEndOfRunModels(), DrawEvent(), and ProcessScene().

673 {
674  // Create modeling parameters from View Parameters...
675  const G4ViewParameters& vp = fpViewer -> GetViewParameters ();
676 
677  // Convert drawing styles...
678  G4ModelingParameters::DrawingStyle modelDrawingStyle =
680  switch (vp.GetDrawingStyle ()) {
681  default:
683  modelDrawingStyle = G4ModelingParameters::wf;
684  break;
686  modelDrawingStyle = G4ModelingParameters::hlr;
687  break;
689  modelDrawingStyle = G4ModelingParameters::hsr;
690  break;
692  modelDrawingStyle = G4ModelingParameters::hlhsr;
693  break;
694  }
695 
696  // Decide if covered daughters are really to be culled...
697  G4bool reallyCullCovered =
698  vp.IsCullingCovered() // Culling daughters depends also on...
699  && !vp.IsSection () // Sections (DCUT) not requested.
700  && !vp.IsCutaway () // Cutaways not requested.
701  ;
702 
703  G4ModelingParameters* pModelingParams = new G4ModelingParameters
705  modelDrawingStyle,
706  vp.IsCulling (),
707  vp.IsCullingInvisible (),
708  vp.IsDensityCulling (),
709  vp.GetVisibleDensity (),
710  reallyCullCovered,
711  vp.GetNoOfSides ()
712  );
713 
714  pModelingParams->SetWarning
716 
717  pModelingParams->SetExplodeFactor(vp.GetExplodeFactor());
718  pModelingParams->SetExplodeCentre(vp.GetExplodeCentre());
719 
720  pModelingParams->SetSectionSolid(CreateSectionSolid());
721  pModelingParams->SetCutawaySolid(CreateCutawaySolid());
722  // The polyhedron objects are deleted in the modeling parameters destructor.
723 
725 
726  return pModelingParams;
727 }
virtual G4VSolid * CreateSectionSolid()
G4double GetVisibleDensity() const
const G4Point3D & GetExplodeCentre() const
G4bool IsCullingInvisible() const
G4VViewer * fpViewer
G4double GetExplodeFactor() const
G4bool IsDensityCulling() const
virtual G4VSolid * CreateCutawaySolid()
void SetCutawaySolid(G4VSolid *pCutawaySolid)
const std::vector< G4ModelingParameters::VisAttributesModifier > & GetVisAttributesModifiers() const
bool G4bool
Definition: G4Types.hh:79
G4bool IsCullingCovered() const
void SetSectionSolid(G4VSolid *pSectionSolid)
G4bool IsSection() const
void SetVisAttributesModifiers(const std::vector< VisAttributesModifier > &)
G4bool IsCutaway() const
G4int GetNoOfSides() const
void SetWarning(G4bool)
static Verbosity GetVerbosity()
DrawingStyle GetDrawingStyle() const
void SetExplodeFactor(G4double explodeFactor)
const G4VisAttributes * GetDefaultVisAttributes() const
void SetExplodeCentre(const G4Point3D &explodeCentre)
G4bool IsCulling() const
G4VSolid * G4VSceneHandler::CreateSectionSolid ( )
protectedvirtual

Definition at line 729 of file G4VSceneHandler.cc.

References test::a, HepGeom::Plane3D< T >::a(), test::b, HepGeom::Plane3D< T >::b(), test::c, HepGeom::Plane3D< T >::c(), HepGeom::Plane3D< T >::d(), HepGeom::BasicVector3D< T >::dot(), fpScene, fpViewer, G4Scene::GetExtent(), G4VisExtent::GetExtentCentre(), G4VisExtent::GetExtentRadius(), G4ViewParameters::GetSectionPlane(), G4VViewer::GetViewParameters(), G4ViewParameters::IsSection(), HepGeom::BasicVector3D< T >::mag(), and G4InuclParticleNames::sp.

Referenced by CreateModelingParameters().

730 {
731  G4VSolid* sectioner = 0;
733  if (vp.IsSection () ) {
735  G4double safe = radius + fpScene->GetExtent().GetExtentCentre().mag();
736  G4VSolid* sectionBox =
737  new G4Box("_sectioner", safe, safe, 1.e-5 * radius); // Thin in z-plane.
738  const G4Plane3D& sp = vp.GetSectionPlane ();
739  G4double a = sp.a();
740  G4double b = sp.b();
741  G4double c = sp.c();
742  G4double d = sp.d();
743  G4Transform3D transform = G4TranslateZ3D(-d);
744  const G4Normal3D normal(a,b,c);
745  if (normal != G4Normal3D(0,0,1)) {
746  const G4double angle = std::acos(normal.dot(G4Normal3D(0,0,1)));
747  const G4Vector3D axis = G4Normal3D(0,0,1).cross(normal);
748  transform = G4Rotate3D(angle, axis) * transform;
749  }
750  sectioner = new G4DisplacedSolid
751  ("_displaced_sectioning_box", sectionBox, transform);
752  }
753  return sectioner;
754 }
T c() const
Definition: Plane3D.h:83
Definition: G4Box.hh:63
G4VViewer * fpViewer
const G4ViewParameters & GetViewParameters() const
const G4Point3D & GetExtentCentre() const
Definition: G4VisExtent.cc:63
T d() const
Definition: Plane3D.h:86
G4double GetExtentRadius() const
Definition: G4VisExtent.cc:73
const G4VisExtent & GetExtent() const
G4bool IsSection() const
HepGeom::Rotate3D G4Rotate3D
T a() const
Definition: Plane3D.h:77
const G4Plane3D & GetSectionPlane() const
double G4double
Definition: G4Types.hh:76
T b() const
Definition: Plane3D.h:80
HepGeom::TranslateZ3D G4TranslateZ3D
HepGeom::Normal3D< G4double > G4Normal3D
Definition: G4Normal3D.hh:35
void G4VSceneHandler::DrawEndOfRunModels ( )

Definition at line 650 of file G4VSceneHandler.cc.

References CreateModelingParameters(), fpScene, G4ModelingParameters::SetEvent(), and SetModel().

Referenced by ProcessScene().

651 {
652  const std::vector<G4Scene::Model>& EORModelList =
653  fpScene -> GetEndOfRunModelList ();
654  size_t nModels = EORModelList.size();
655  if (nModels) {
657  pMP->SetEvent(0);
658  for (size_t i = 0; i < nModels; i++) {
659  if (EORModelList[i].fActive) {
660  G4VModel* pModel = EORModelList[i].fpModel;
661  pModel -> SetModelingParameters(pMP);
662  SetModel (pModel);
663  pModel -> DescribeYourselfTo (*this);
664  pModel -> SetModelingParameters(0);
665  }
666  }
667  delete pMP;
668  SetModel (0);
669  }
670 }
G4ModelingParameters * CreateModelingParameters()
void SetEvent(const G4Event *pEvent)
void SetModel(G4VModel *)
void G4VSceneHandler::DrawEvent ( const G4Event event)

Definition at line 628 of file G4VSceneHandler.cc.

References CreateModelingParameters(), fpScene, G4ModelingParameters::SetEvent(), and SetModel().

Referenced by ProcessScene().

629 {
630  const std::vector<G4Scene::Model>& EOEModelList =
631  fpScene -> GetEndOfEventModelList ();
632  size_t nModels = EOEModelList.size();
633  if (nModels) {
635  pMP->SetEvent(event);
636  for (size_t i = 0; i < nModels; i++) {
637  if (EOEModelList[i].fActive) {
638  G4VModel* pModel = EOEModelList[i].fpModel;
639  pModel -> SetModelingParameters(pMP);
640  SetModel (pModel);
641  pModel -> DescribeYourselfTo (*this);
642  pModel -> SetModelingParameters(0);
643  }
644  }
645  delete pMP;
646  SetModel (0);
647  }
648 }
G4ModelingParameters * CreateModelingParameters()
void SetEvent(const G4Event *pEvent)
void SetModel(G4VModel *)
void G4VSceneHandler::EndModeling ( )
virtual
void G4VSceneHandler::EndPrimitives ( )
virtual

Implements G4VGraphicsScene.

Reimplemented in G4XXXSGSceneHandler, G4HepRepSceneHandler, G4XXXStoredSceneHandler, G4GMocrenFileSceneHandler, G4VRML1FileSceneHandler, G4VRML2FileSceneHandler, and G4DAWNFILESceneHandler.

Definition at line 165 of file G4VSceneHandler.cc.

References FatalException, fNestingDepth, fReadyForTransients, fTransientsDrawnThisEvent, fTransientsDrawnThisRun, and G4Exception().

Referenced by G4GMocrenFileSceneHandler::EndPrimitives(), G4XXXStoredSceneHandler::EndPrimitives(), G4HepRepSceneHandler::EndPrimitives(), G4XXXSGSceneHandler::EndPrimitives(), and RequestPrimitives().

165  {
166  if (fNestingDepth <= 0)
167  G4Exception("G4VSceneHandler::EndPrimitives",
168  "visman0102", FatalException, "Nesting error.");
169  fNestingDepth--;
170  if (fReadyForTransients) {
173  }
174 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4bool fTransientsDrawnThisEvent
G4bool fTransientsDrawnThisRun
void G4VSceneHandler::EndPrimitives2D ( )
virtual

Implements G4VGraphicsScene.

Reimplemented in G4HepRepFileSceneHandler.

Definition at line 188 of file G4VSceneHandler.cc.

References FatalException, fNestingDepth, fProcessing2D, fReadyForTransients, fTransientsDrawnThisEvent, fTransientsDrawnThisRun, and G4Exception().

Referenced by G4HepRepFileSceneHandler::EndPrimitives2D().

188  {
189  if (fNestingDepth <= 0)
190  G4Exception("G4VSceneHandler::EndPrimitives2D",
191  "visman0104", FatalException, "Nesting error.");
192  fNestingDepth--;
193  if (fReadyForTransients) {
196  }
197  fProcessing2D = false;
198 }
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4bool fTransientsDrawnThisEvent
G4bool fTransientsDrawnThisRun
G4bool G4VSceneHandler::GetAuxEdgeVisible ( const G4VisAttributes pVisAttribs)

Definition at line 882 of file G4VSceneHandler.cc.

References fpViewer, G4VViewer::GetViewParameters(), and G4ViewParameters::IsAuxEdgeVisible().

882  {
883  G4bool isAuxEdgeVisible = fpViewer->GetViewParameters().IsAuxEdgeVisible ();
884  if (pVisAttribs -> IsForceAuxEdgeVisible()) isAuxEdgeVisible = true;
885  return isAuxEdgeVisible;
886 }
G4VViewer * fpViewer
const G4ViewParameters & GetViewParameters() const
G4bool IsAuxEdgeVisible() const
bool G4bool
Definition: G4Types.hh:79
const G4Colour& G4VSceneHandler::GetColor ( const G4Visible )
const G4Colour & G4VSceneHandler::GetColour ( const G4Visible visible)

Definition at line 817 of file G4VSceneHandler.cc.

References fpViewer, and G4Visible::GetVisAttributes().

Referenced by GetTextColour().

817  {
818  // Colour is determined by the applicable vis attributes.
819  const G4Colour& colour = fpViewer ->
820  GetApplicableVisAttributes (visible.GetVisAttributes ()) -> GetColour ();
821  return colour;
822 }
G4VViewer * fpViewer
const G4VisAttributes * GetVisAttributes() const
const G4Colour & GetColour(const G4Visible &)
G4VViewer* G4VSceneHandler::GetCurrentViewer ( ) const
G4ViewParameters::DrawingStyle G4VSceneHandler::GetDrawingStyle ( const G4VisAttributes pVisAttribs)

Definition at line 843 of file G4VSceneHandler.cc.

References G4ViewParameters::hlhsr, G4ViewParameters::hlr, G4ViewParameters::hsr, G4VisAttributes::solid, G4VisAttributes::wireframe, and G4ViewParameters::wireframe.

Referenced by G4XXXSceneHandler::AddPrimitive(), G4XXXFileSceneHandler::AddPrimitive(), G4XXXStoredSceneHandler::AddPrimitive(), and G4XXXSGSceneHandler::AddPrimitive().

843  {
844  // Drawing style is normally determined by the view parameters, but
845  // it can be overriddden by the ForceDrawingStyle flag in the vis
846  // attributes.
849  if (pVisAttribs -> IsForceDrawingStyle ()) {
851  pVisAttribs -> GetForcedDrawingStyle ();
852  // This is complicated because if hidden line and surface removal
853  // has been requested we wish to preserve this sometimes.
854  switch (forcedStyle) {
855  case (G4VisAttributes::solid):
856  switch (style) {
857  case (G4ViewParameters::hlr):
858  style = G4ViewParameters::hlhsr;
859  break;
861  style = G4ViewParameters::hsr;
862  break;
864  case (G4ViewParameters::hsr):
865  default:
866  break;
867  }
868  break;
870  default:
871  // But if forced style is wireframe, do it, because one of its
872  // main uses is in displaying the consituent solids of a Boolean
873  // solid and their surfaces overlap with the resulting Booean
874  // solid, making a mess if hlr is specified.
876  break;
877  }
878  }
879  return style;
880 }
G4VViewer * fpViewer
const G4ViewParameters & GetViewParameters() const
DrawingStyle GetDrawingStyle() const
const G4VisExtent & G4VSceneHandler::GetExtent ( ) const
virtual

Reimplemented from G4VGraphicsScene.

Definition at line 127 of file G4VSceneHandler.cc.

References fpScene, G4Scene::GetExtent(), and G4VisExtent::NullExtent.

128 {
129  if (fpScene) {
130  return fpScene->GetExtent();
131  } else {
133  }
134 }
static const G4VisExtent NullExtent
Definition: G4VisExtent.hh:80
const G4VisExtent & GetExtent() const
G4VGraphicsSystem* G4VSceneHandler::GetGraphicsSystem ( ) const
G4double G4VSceneHandler::GetLineWidth ( const G4VisAttributes pVisAttribs)

Definition at line 833 of file G4VSceneHandler.cc.

References fpViewer, and G4VisAttributes::GetLineWidth().

834 {
835  G4double lineWidth = pVisAttribs->GetLineWidth();
836  if (lineWidth < 1.) lineWidth = 1.;
837  lineWidth *= fpViewer -> GetViewParameters().GetGlobalLineWidthScale();
838  if (lineWidth < 1.) lineWidth = 1.;
839  return lineWidth;
840 }
G4double GetLineWidth() const
G4VViewer * fpViewer
double G4double
Definition: G4Types.hh:76
G4double G4VSceneHandler::GetMarkerDiameter ( const G4VMarker ,
MarkerSizeType  
)
G4double G4VSceneHandler::GetMarkerRadius ( const G4VMarker ,
MarkerSizeType  
)
G4double G4VSceneHandler::GetMarkerSize ( const G4VMarker marker,
G4VSceneHandler::MarkerSizeType markerSizeType 
)

Definition at line 889 of file G4VSceneHandler.cc.

References G4VMarker::GetScreenSize(), and G4VMarker::GetWorldSize().

Referenced by G4XXXSceneHandler::AddPrimitive(), G4XXXFileSceneHandler::AddPrimitive(), G4XXXStoredSceneHandler::AddPrimitive(), G4HepRepFileSceneHandler::AddPrimitive(), and G4XXXSGSceneHandler::AddPrimitive().

891 {
892  G4bool userSpecified = marker.GetWorldSize() || marker.GetScreenSize();
893  const G4VMarker& defaultMarker =
894  fpViewer -> GetViewParameters().GetDefaultMarker();
895  G4double size = userSpecified ?
896  marker.GetWorldSize() : defaultMarker.GetWorldSize();
897  if (size) {
898  // Draw in world coordinates.
899  markerSizeType = world;
900  }
901  else {
902  size = userSpecified ?
903  marker.GetScreenSize() : defaultMarker.GetScreenSize();
904  // Draw in screen coordinates.
905  markerSizeType = screen;
906  }
907  size *= fpViewer -> GetViewParameters().GetGlobalMarkerScale();
908  if (markerSizeType == screen && size < 1.) size = 1.;
909  return size;
910 }
G4double GetWorldSize() const
G4VViewer * fpViewer
G4double GetScreenSize() const
bool G4bool
Definition: G4Types.hh:79
double G4double
Definition: G4Types.hh:76
G4bool G4VSceneHandler::GetMarkForClearingTransientStore ( ) const
G4VModel* G4VSceneHandler::GetModel ( ) const
const G4String& G4VSceneHandler::GetName ( ) const
G4int G4VSceneHandler::GetNoOfSides ( const G4VisAttributes pVisAttribs)

Definition at line 912 of file G4VSceneHandler.cc.

References fpViewer, G4cout, G4endl, G4VisAttributes::GetForcedLineSegmentsPerCircle(), G4ViewParameters::GetNoOfSides(), G4VViewer::GetViewParameters(), and G4VisAttributes::IsForceLineSegmentsPerCircle().

Referenced by RequestPrimitives().

913 {
914  // No. of sides (lines segments per circle) is normally determined
915  // by the view parameters, but it can be overriddden by the
916  // ForceLineSegmentsPerCircle in the vis attributes.
917  G4int lineSegmentsPerCircle = fpViewer->GetViewParameters().GetNoOfSides();
918  if (pVisAttribs) {
919  if (pVisAttribs->IsForceLineSegmentsPerCircle())
920  lineSegmentsPerCircle = pVisAttribs->GetForcedLineSegmentsPerCircle();
921  const G4int nSegmentsMin = 12;
922  if (lineSegmentsPerCircle < nSegmentsMin) {
923  lineSegmentsPerCircle = nSegmentsMin;
924  G4cout <<
925  "G4VSceneHandler::GetNoOfSides: attempt to set the"
926  "\nnumber of line segements per circle < " << nSegmentsMin
927  << "; forced to " << lineSegmentsPerCircle << G4endl;
928  }
929  }
930  return lineSegmentsPerCircle;
931 }
G4VViewer * fpViewer
const G4ViewParameters & GetViewParameters() const
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
G4int GetForcedLineSegmentsPerCircle() const
G4int GetNoOfSides() const
#define G4endl
Definition: G4ios.hh:61
G4bool IsForceLineSegmentsPerCircle() const
const G4Transform3D& G4VSceneHandler::GetObjectTransformation ( ) const
G4Scene* G4VSceneHandler::GetScene ( ) const
G4int G4VSceneHandler::GetSceneHandlerId ( ) const
const G4Colour& G4VSceneHandler::GetTextColor ( const G4Text )
const G4Colour & G4VSceneHandler::GetTextColour ( const G4Text text)

Definition at line 824 of file G4VSceneHandler.cc.

References fpViewer, GetColour(), and G4Visible::GetVisAttributes().

Referenced by G4HepRepFileSceneHandler::AddPrimitive().

824  {
825  const G4VisAttributes* pVA = text.GetVisAttributes ();
826  if (!pVA) {
827  pVA = fpViewer -> GetViewParameters (). GetDefaultTextVisAttributes ();
828  }
829  const G4Colour& colour = pVA -> GetColour ();
830  return colour;
831 }
G4VViewer * fpViewer
const G4VisAttributes * GetVisAttributes() const
const G4Colour & GetColour(const G4Visible &)
G4bool G4VSceneHandler::GetTransientsDrawnThisEvent ( ) const
G4bool G4VSceneHandler::GetTransientsDrawnThisRun ( ) const
G4int G4VSceneHandler::GetViewCount ( ) const
const G4ViewerList& G4VSceneHandler::GetViewerList ( ) const
G4int G4VSceneHandler::IncrementViewCount ( )
G4bool G4VSceneHandler::IsReadyForTransients ( ) const
void G4VSceneHandler::LoadAtts ( const G4Visible visible,
G4AttHolder holder 
)
protected

Definition at line 761 of file G4VSceneHandler.cc.

References G4AttHolder::AddAtts(), G4VHit::CreateAttValues(), G4VTrajectoryPoint::CreateAttValues(), G4VTrajectory::CreateAttValues(), G4VisAttributes::CreateAttValues(), G4TrajectoriesModel::CreateCurrentAttValues(), G4PhysicalVolumeModel::CreateCurrentAttValues(), fpModel, G4VHit::GetAttDefs(), G4TrajectoriesModel::GetAttDefs(), G4VTrajectoryPoint::GetAttDefs(), G4VTrajectory::GetAttDefs(), G4VisAttributes::GetAttDefs(), G4PhysicalVolumeModel::GetAttDefs(), G4HitsModel::GetCurrentHit(), G4TrajectoriesModel::GetCurrentTrajectory(), G4VTrajectory::GetPoint(), G4VTrajectory::GetPointEntries(), and G4Visible::GetVisAttributes().

762 {
763  // Load G4Atts from G4VisAttributes, if any...
764  const G4VisAttributes* va = visible.GetVisAttributes();
765  if (va) {
766  const std::map<G4String,G4AttDef>* vaDefs =
767  va->GetAttDefs();
768  if (vaDefs) {
769  holder->AddAtts(visible.GetVisAttributes()->CreateAttValues(), vaDefs);
770  }
771  }
772 
773  G4PhysicalVolumeModel* pPVModel =
774  dynamic_cast<G4PhysicalVolumeModel*>(fpModel);
775  if (pPVModel) {
776  // Load G4Atts from G4PhysicalVolumeModel...
777  const std::map<G4String,G4AttDef>* pvDefs = pPVModel->GetAttDefs();
778  if (pvDefs) {
779  holder->AddAtts(pPVModel->CreateCurrentAttValues(), pvDefs);
780  }
781  }
782 
783  G4TrajectoriesModel* trajModel = dynamic_cast<G4TrajectoriesModel*>(fpModel);
784  if (trajModel) {
785  // Load G4Atts from trajectory model...
786  const std::map<G4String,G4AttDef>* trajModelDefs = trajModel->GetAttDefs();
787  if (trajModelDefs) {
788  holder->AddAtts(trajModel->CreateCurrentAttValues(), trajModelDefs);
789  }
790  // Load G4Atts from trajectory...
791  const G4VTrajectory* traj = trajModel->GetCurrentTrajectory();
792  const std::map<G4String,G4AttDef>* trajDefs = traj->GetAttDefs();
793  if (trajDefs) {
794  holder->AddAtts(traj->CreateAttValues(), trajDefs);
795  }
796  G4int nPoints = traj->GetPointEntries();
797  for (G4int i = 0; i < nPoints; ++i) {
798  G4VTrajectoryPoint* trajPoint = traj->GetPoint(i);
799  const std::map<G4String,G4AttDef>* pointDefs = trajPoint->GetAttDefs();
800  if (pointDefs) {
801  holder->AddAtts(trajPoint->CreateAttValues(), pointDefs);
802  }
803  }
804  }
805 
806  G4HitsModel* hitsModel = dynamic_cast<G4HitsModel*>(fpModel);
807  if (hitsModel) {
808  // Load G4Atts from hit...
809  const G4VHit* hit = hitsModel->GetCurrentHit();
810  const std::map<G4String,G4AttDef>* hitsDefs = hit->GetAttDefs();
811  if (hitsDefs) {
812  holder->AddAtts(hit->CreateAttValues(), hitsDefs);
813  }
814  }
815 }
void AddAtts(const std::vector< G4AttValue > *values, const std::map< G4String, G4AttDef > *defs)
Definition: G4AttHolder.hh:65
const std::map< G4String, G4AttDef > * GetAttDefs() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual G4VTrajectoryPoint * GetPoint(G4int i) const =0
Definition: G4VHit.hh:48
const G4VisAttributes * GetVisAttributes() const
int G4int
Definition: G4Types.hh:78
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual std::vector< G4AttValue > * CreateAttValues() const
virtual int GetPointEntries() const =0
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
const G4VHit * GetCurrentHit() const
Definition: G4HitsModel.hh:58
const G4VTrajectory * GetCurrentTrajectory() const
virtual std::vector< G4AttValue > * CreateAttValues() const
std::vector< G4AttValue > * CreateCurrentAttValues() const
const std::vector< G4AttValue > * CreateAttValues() const
virtual const std::map< G4String, G4AttDef > * GetAttDefs() const
Definition: G4VHit.hh:60
const std::map< G4String, G4AttDef > * GetAttDefs() const
virtual std::vector< G4AttValue > * CreateAttValues() const
Definition: G4VHit.hh:67
void G4VSceneHandler::PostAddSolid ( )
virtual
void G4VSceneHandler::PreAddSolid ( const G4Transform3D objectTransformation,
const G4VisAttributes visAttribs 
)
virtual
void G4VSceneHandler::ProcessScene ( )
protectedvirtual

Definition at line 507 of file G4VSceneHandler.cc.

References BeginModeling(), G4VisManager::confirmations, CreateModelingParameters(), DrawEndOfRunModels(), DrawEvent(), EndModeling(), fMarkForClearingTransientStore, fpScene, fReadyForTransients, G4cout, G4endl, G4State_GeomClosed, G4State_Idle, G4VVisManager::GetConcreteInstance(), G4RunManager::GetCurrentRun(), G4StateManager::GetCurrentState(), G4Run::GetEventVector(), G4Scene::GetRefreshAtEndOfEvent(), G4Scene::GetRefreshAtEndOfRun(), G4VisManager::GetRequestedEvent(), G4RunManager::GetRunManager(), G4StateManager::GetStateManager(), G4VisManager::GetVerbosity(), G4VisManager::SetEventRefreshing(), SetModel(), and G4VisManager::warnings.

Referenced by G4VViewer::ProcessView().

507  {
508 
509  // Assumes graphics database store has already been cleared if
510  // relevant for the particular scene handler.
511 
512  if (!fpScene) return;
513 
514  G4VisManager* visManager = G4VisManager::GetInstance();
515 
516  if (!visManager->GetConcreteInstance()) return;
517 
518  G4VisManager::Verbosity verbosity = visManager->GetVerbosity();
519 
520  fReadyForTransients = false;
521 
522  // Reset fMarkForClearingTransientStore. (Leaving
523  // fMarkForClearingTransientStore true causes problems with
524  // recomputing transients below.) Restore it again at end...
525  G4bool tmpMarkForClearingTransientStore = fMarkForClearingTransientStore;
527 
528  // Traverse geometry tree and send drawing primitives to window(s).
529 
530  const std::vector<G4Scene::Model>& runDurationModelList =
531  fpScene -> GetRunDurationModelList ();
532 
533  if (runDurationModelList.size ()) {
534  if (verbosity >= G4VisManager::confirmations) {
535  G4cout << "Traversing scene data..." << G4endl;
536  }
537 
538  BeginModeling ();
539 
540  // Create modeling parameters from view parameters...
542 
543  for (size_t i = 0; i < runDurationModelList.size (); i++) {
544  if (runDurationModelList[i].fActive) {
545  G4VModel* pModel = runDurationModelList[i].fpModel;
546  // Note: this is not the place to take action on
547  // pModel->GetTransformation(). The model must take care of
548  // this in pModel->DescribeYourselfTo(*this). See, for example,
549  // G4PhysicalVolumeModel and /vis/scene/add/logo.
550  pModel -> SetModelingParameters (pMP);
551  SetModel (pModel); // Store for use by derived class.
552  pModel -> DescribeYourselfTo (*this);
553  pModel -> SetModelingParameters (0);
554  }
555  }
556 
557  delete pMP;
558  EndModeling ();
559  }
560 
561  fReadyForTransients = true;
562 
563  // Refresh event from end-of-event model list.
564  // Allow only in Idle or GeomClosed state...
566  G4ApplicationState state = stateManager->GetCurrentState();
567  if (state == G4State_Idle || state == G4State_GeomClosed) {
568 
569  visManager->SetEventRefreshing(true);
570 
571  if (visManager->GetRequestedEvent()) {
572  DrawEvent(visManager->GetRequestedEvent());
573 
574  } else {
575 
577  if (runManager) {
578  const G4Run* run = runManager->GetCurrentRun();
579  const std::vector<const G4Event*>* events =
580  run? run->GetEventVector(): 0;
581  size_t nKeptEvents = 0;
582  if (events) nKeptEvents = events->size();
583  if (nKeptEvents) {
584 
586 
587  if (verbosity >= G4VisManager::confirmations) {
588  G4cout << "Refreshing event..." << G4endl;
589  }
590  const G4Event* event = 0;
591  if (events && events->size()) event = events->back();
592  if (event) DrawEvent(event);
593 
594  } else { // Accumulating events.
595 
596  if (verbosity >= G4VisManager::confirmations) {
597  G4cout << "Refreshing events in run..." << G4endl;
598  }
599  for (size_t i = 0; i < nKeptEvents; ++i) {
600  const G4Event* event = (*events)[i];
601  if (event) DrawEvent(event);
602  }
603 
604  if (!fpScene->GetRefreshAtEndOfRun()) {
605  if (verbosity >= G4VisManager::warnings) {
606  G4cout <<
607  "WARNING: Cannot refresh events accumulated over more"
608  "\n than one runs. Refreshed just the last run."
609  << G4endl;
610  }
611  }
612  }
613  }
614  }
615  }
616  visManager->SetEventRefreshing(false);
617  }
618 
619  // Refresh end-of-run model list.
620  // Allow only in Idle or GeomClosed state...
621  if (state == G4State_Idle || state == G4State_GeomClosed) {
623  }
624 
625  fMarkForClearingTransientStore = tmpMarkForClearingTransientStore;
626 }
virtual void BeginModeling()
G4ModelingParameters * CreateModelingParameters()
static G4VVisManager * GetConcreteInstance()
void SetEventRefreshing(G4bool)
const std::vector< const G4Event * > * GetEventVector() const
Definition: G4Run.hh:115
G4bool GetRefreshAtEndOfEvent() const
const G4Run * GetCurrentRun() const
static G4StateManager * GetStateManager()
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
G4bool GetRefreshAtEndOfRun() const
Definition: G4Run.hh:46
virtual void EndModeling()
G4ApplicationState GetCurrentState() const
static G4RunManager * GetRunManager()
Definition: G4RunManager.cc:74
G4bool fMarkForClearingTransientStore
void DrawEvent(const G4Event *)
static Verbosity GetVerbosity()
const G4Event * GetRequestedEvent() const
#define G4endl
Definition: G4ios.hh:61
void SetModel(G4VModel *)
G4ApplicationState
void G4VSceneHandler::RemoveViewerFromList ( G4VViewer pView)

Definition at line 472 of file G4VSceneHandler.cc.

References fViewerList, and G4ViewerList::remove().

Referenced by G4VViewer::~G4VViewer().

472  {
473  fViewerList.remove(pViewer);
474 }
void remove(G4VViewer *)
Definition: G4ViewerList.cc:31
G4ViewerList fViewerList
void G4VSceneHandler::RequestPrimitives ( const G4VSolid solid)
protectedvirtual

Reimplemented in G4ASCIITreeSceneHandler.

Definition at line 485 of file G4VSceneHandler.cc.

References AddPrimitive(), BeginPrimitives(), EndPrimitives(), G4VisManager::errors, fObjectTransformation, fpVisAttribs, G4cout, G4endl, G4VSolid::GetName(), GetNoOfSides(), G4VSolid::GetPolyhedron(), G4VisManager::GetVerbosity(), HepPolyhedron::ResetNumberOfRotationSteps(), and HepPolyhedron::SetNumberOfRotationSteps().

Referenced by AddSolid().

485  {
488  G4Polyhedron* pPolyhedron = solid.GetPolyhedron ();
490  if (pPolyhedron) {
491  pPolyhedron -> SetVisAttributes (fpVisAttribs);
492  AddPrimitive (*pPolyhedron);
493  }
494  else {
496  if (verbosity >= G4VisManager::errors) {
497  G4cout <<
498  "ERROR: G4VSceneHandler::RequestPrimitives"
499  "\n Polyhedron not available for " << solid.GetName () <<
500  ".\n This means it cannot be visualized on most systems."
501  "\n Contact the Visualization Coordinator." << G4endl;
502  }
503  }
504  EndPrimitives ();
505 }
virtual G4Polyhedron * GetPolyhedron() const
Definition: G4VSolid.cc:644
G4String GetName() const
virtual void BeginPrimitives(const G4Transform3D &objectTransformation)
G4Transform3D fObjectTransformation
G4int GetNoOfSides(const G4VisAttributes *)
virtual void AddPrimitive(const G4Polyline &)=0
G4GLOB_DLL std::ostream G4cout
virtual void EndPrimitives()
const G4VisAttributes * fpVisAttribs
static Verbosity GetVerbosity()
#define G4endl
Definition: G4ios.hh:61
static void SetNumberOfRotationSteps(G4int n)
static void ResetNumberOfRotationSteps()
void G4VSceneHandler::SetCurrentViewer ( G4VViewer )
void G4VSceneHandler::SetMarkForClearingTransientStore ( G4bool  )
void G4VSceneHandler::SetModel ( G4VModel )
void G4VSceneHandler::SetName ( const G4String )
void G4VSceneHandler::SetObjectTransformation ( const G4Transform3D )
void G4VSceneHandler::SetScene ( G4Scene pScene)
virtual

Definition at line 476 of file G4VSceneHandler.cc.

References fpScene, and fViewerList.

476  {
477  fpScene = pScene;
478  // Notify all viewers that a kernel visit is required.
480  for (i = fViewerList.begin(); i != fViewerList.end(); i++) {
481  (*i) -> SetNeedKernelVisit (true);
482  }
483 }
G4ViewerList fViewerList
std::vector< G4VViewer * >::iterator G4ViewerListIterator
Definition: G4ViewerList.hh:43
void G4VSceneHandler::SetTransientsDrawnThisEvent ( G4bool  )
void G4VSceneHandler::SetTransientsDrawnThisRun ( G4bool  )
G4ViewerList& G4VSceneHandler::SetViewerList ( )

Friends And Related Function Documentation

friend class G4VViewer
friend

Definition at line 63 of file G4VSceneHandler.hh.

std::ostream& operator<< ( std::ostream &  os,
const G4VSceneHandler s 
)
friend

Definition at line 933 of file G4VSceneHandler.cc.

933  {
934 
935  os << "Scene handler " << sh.fName << " has "
936  << sh.fViewerList.size () << " viewer(s):";
937  for (size_t i = 0; i < sh.fViewerList.size (); i++) {
938  os << "\n " << *(sh.fViewerList [i]);
939  }
940 
941  if (sh.fpScene) {
942  os << "\n " << *sh.fpScene;
943  }
944  else {
945  os << "\n This scene handler currently has no scene.";
946  }
947 
948  return os;
949 }

Field Documentation

const G4Transform3D G4VSceneHandler::fIdentityTransformation
protected

Definition at line 346 of file G4VSceneHandler.hh.

G4bool G4VSceneHandler::fMarkForClearingTransientStore
protected

Definition at line 334 of file G4VSceneHandler.hh.

Referenced by ProcessScene().

G4String G4VSceneHandler::fName
protected

Definition at line 329 of file G4VSceneHandler.hh.

Referenced by G4VSceneHandler(), and operator<<().

G4int G4VSceneHandler::fNestingDepth
protected

Definition at line 344 of file G4VSceneHandler.hh.

Referenced by EndPrimitives(), and EndPrimitives2D().

G4Transform3D G4VSceneHandler::fObjectTransformation
protected
G4VModel* G4VSceneHandler::fpModel
protected
G4bool G4VSceneHandler::fProcessing2D
protected
G4bool G4VSceneHandler::fProcessingSolid
protected
G4Scene* G4VSceneHandler::fpScene
protected
G4VViewer* G4VSceneHandler::fpViewer
protected
const G4VisAttributes* G4VSceneHandler::fpVisAttribs
protected
G4bool G4VSceneHandler::fReadyForTransients
protected

Definition at line 335 of file G4VSceneHandler.hh.

Referenced by EndPrimitives(), EndPrimitives2D(), PostAddSolid(), and ProcessScene().

const G4int G4VSceneHandler::fSceneHandlerId
protected

Definition at line 328 of file G4VSceneHandler.hh.

Referenced by G4VSceneHandler().

G4VGraphicsSystem& G4VSceneHandler::fSystem
protected

Definition at line 327 of file G4VSceneHandler.hh.

Referenced by G4VSceneHandler().

G4bool G4VSceneHandler::fTransientsDrawnThisEvent
protected

Definition at line 337 of file G4VSceneHandler.hh.

Referenced by EndPrimitives(), EndPrimitives2D(), G4VSceneHandler(), and PostAddSolid().

G4bool G4VSceneHandler::fTransientsDrawnThisRun
protected

Definition at line 338 of file G4VSceneHandler.hh.

Referenced by EndPrimitives(), EndPrimitives2D(), G4VSceneHandler(), and PostAddSolid().

G4int G4VSceneHandler::fViewCount
protected

Definition at line 330 of file G4VSceneHandler.hh.

G4ViewerList G4VSceneHandler::fViewerList
protected

The documentation for this class was generated from the following files: