Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ToolsSGSceneHandler.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// John Allison 6th October 2020
27
28#ifndef G4TOOLSSGSCENEHANDLER_HH
29#define G4TOOLSSGSCENEHANDLER_HH
30
31#include "G4VSceneHandler.hh"
32
33#include "G4VVisCommand.hh"
34
35#include <vector>
36
37#include <tools/sg/separator>
38
39namespace tools {namespace sg {class base_freetype;}}
40namespace tools {namespace sg {class plots;}}
41
42class G4ToolsSGNode;
43
45 typedef G4VSceneHandler parent;
46public:
47 virtual void AddPrimitive(const G4Polyline&);
48 virtual void AddPrimitive(const G4Text&);
49 virtual void AddPrimitive(const G4Circle&);
50 virtual void AddPrimitive(const G4Square&);
51 virtual void AddPrimitive(const G4Polymarker&);
52 virtual void AddPrimitive(const G4Polyhedron&);
53 virtual void AddPrimitive(const G4Plotter&);
54
56 virtual void AddCompound(const G4Mesh&);
57
58 virtual void ClearStore ();
59 virtual void ClearTransientStore ();
60
62 virtual ~G4ToolsSGSceneHandler();
63
64 tools::sg::separator& GetTransient2DObjects() {return fpTransient2DObjects;}
65 tools::sg::separator& GetPersistent2DObjects() {return fpPersistent2DObjects;}
66 tools::sg::separator& GetTransient3DObjects() {return fpTransient3DObjects;}
67 tools::sg::separator& GetPersistent3DObjects() {return fpPersistent3DObjects;}
68
69 void TouchPlotters(tools::sg::node&);
70
71protected:
74
75protected:
76 void CreateSG();
77 void EstablishBaseNodes();
78 tools::sg::separator* GetOrCreateNode(); // For next solid or primitive
79
80 void SetPlotterHistograms(tools::sg::plots&);
81
83
84 tools::sg::separator fpTransient2DObjects;
85 tools::sg::separator fpPersistent2DObjects;
86
87 tools::sg::separator fpTransient3DObjects;
88 tools::sg::separator fpPersistent3DObjects;
89
90 std::vector<G4ToolsSGNode*> fpPhysicalVolumeObjects; // Multiple worlds
91
92 tools::sg::base_freetype* fFreetypeNode;
93
94 using Region_h1 = std::pair<unsigned int,int>;
95 using Region_h2 = std::pair<unsigned int,int>;
96 std::vector<Region_h1> fRegionH1s;
97 std::vector<Region_h2> fRegionH2s;
98
99 class Messenger: public G4VVisCommand {
100 public:
101 static void Create() {static Messenger s_messenger;}
102 virtual void SetNewValue(G4UIcommand*,G4String);
103 private:
104 Messenger() {
105 //////////////////////////////////////////////////////////
106 //////////////////////////////////////////////////////////
107 print_plotter_params = new G4UIcommand("/vis/tsg/plotter/printParameters", this);
108 print_plotter_params->SetGuidance("Print available tools::sg::plotter parameters.");
109 }
110 virtual ~Messenger() {
111 delete print_plotter_params;
112 }
113 G4UIcommand* print_plotter_params;
114 };
115
116};
117
118#endif
int G4int
Definition: G4Types.hh:85
Definition: G4Mesh.hh:48
Definition: G4Text.hh:72
virtual void SetNewValue(G4UIcommand *, G4String)
tools::sg::separator & GetTransient3DObjects()
tools::sg::separator & GetTransient2DObjects()
void SetPlotterHistograms(tools::sg::plots &)
tools::sg::base_freetype * fFreetypeNode
virtual void AddCompound(const G4Mesh &)
G4ToolsSGSceneHandler(const G4ToolsSGSceneHandler &)
virtual void AddPrimitive(const G4Polyline &)
std::vector< Region_h1 > fRegionH1s
tools::sg::separator fpPersistent2DObjects
std::pair< unsigned int, int > Region_h2
tools::sg::separator fpTransient3DObjects
tools::sg::separator * GetOrCreateNode()
tools::sg::separator fpTransient2DObjects
tools::sg::separator & GetPersistent3DObjects()
G4ToolsSGSceneHandler & operator=(const G4ToolsSGSceneHandler &)
std::vector< Region_h2 > fRegionH2s
std::vector< G4ToolsSGNode * > fpPhysicalVolumeObjects
void TouchPlotters(tools::sg::node &)
tools::sg::separator & GetPersistent2DObjects()
std::pair< unsigned int, int > Region_h1
tools::sg::separator fpPersistent3DObjects
void SetGuidance(const char *aGuidance)
Definition: G4UIcommand.hh:157
virtual void AddCompound(const G4VTrajectory &)