Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4Scene.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// Scene John Allison 19th July 1996.
30//
31// Class Description:
32//
33// Defines the viewable scene.
34
35#ifndef G4SCENE_HH
36#define G4SCENE_HH
37
38#include "globals.hh"
39#include "G4ios.hh"
40
42
43#include "G4VisExtent.hh"
44#include "G4Point3D.hh"
45#include "G4VModel.hh"
46#include <vector>
47
48class G4Scene {
49
50public: // With description
51
52 friend std::ostream& operator << (std::ostream& os, const G4Scene& d);
53
54 enum {UNLIMITED = -1};
55
56 G4Scene (const G4String& name = "scene-with-unspecified-name");
57 ~G4Scene ();
58
59 // Makes use of default (compiler generated) copy constructor and
60 // assignment operator.
61
63 G4bool operator != (const G4Scene&) const;
64
65 //////////////////////////////////////////////////////
66 // Get functions...
67
68 const G4String& GetName () const;
69
70 G4bool IsEmpty () const;
71
72 struct Model {
73 Model(G4VModel* pModel): fActive(true), fpModel(pModel) {}
76 };
77
78 const std::vector<Model>& GetRunDurationModelList () const;
79 // Contains models which are expected to last for the duration of
80 // the run, for example geometry volumes.
81
82 const std::vector<Model>& GetEndOfEventModelList () const;
83 // Contains models which are described at the end of event when the
84 // scene is current.
85
86 const std::vector<Model>& GetEndOfRunModelList () const;
87 // Contains models which are described at the end of event when the
88 // scene is current.
89
90 const G4VisExtent& GetExtent () const;
91 // Overall extent of all objects in the scene.
92
94 // Usually centre of extent. See G4ViewParameters for definition.
95
97 // If true, the visualization manager will request viewer to refresh
98 // "transient" objects, such as hits, at end of event. Otherwise
99 // they will be accumulated.
100
102 // If RefreshAtEndOfEvent is false, events of the current run are
103 // kept up to this maximum number. A negative value means all
104 // events of current run are kept. The events are available for
105 // viewing at the end of run, but are deleted just before the start
106 // of the next run.
107
109 // If true, the visualization manager will request viewer to refresh
110 // "transient" objects, such as hits, at end of run. Otherwise
111 // they will be accumulated.
112
113 //////////////////////////////////////////////
114 // Add and Set functions...
115
116 G4bool AddRunDurationModel (G4VModel*, G4bool warn = false);
117 // Adds models of type which are expected to last for the duration
118 // of the run, for example geometry volumes.
119 // Returns false if model is already in the list.
120 // Prints warnings if warn is true.
121
122 G4bool AddWorldIfEmpty (G4bool warn = false);
123 // In some situations, if the user asks for a drawing and has not
124 // yet set any run duration models it makes sense to put the "world"
125 // in there by default.
126 // Returns false if model is already in the list.
127 // Prints warnings if warn is true.
128
129 G4bool AddEndOfEventModel (G4VModel*, G4bool warn = false);
130 // Adds models of type which are described at the end of event when
131 // the scene is current.
132 // Returns false if model is already in the list.
133 // Prints warnings if warn is true.
134
135 G4bool AddEndOfRunModel (G4VModel*, G4bool warn = false);
136 // Adds models of type which are described at the end of run when
137 // the scene is current.
138 // Returns false if model is already in the list.
139 // Prints warnings if warn is true.
140
141 void SetName (const G4String&);
142 // Use with care. User normally sets scene name by vis commands.
143
144 std::vector<Model>& SetRunDurationModelList ();
145 // Allows you to change the model list - do with care!
146
147 std::vector<Model>& SetEndOfEventModelList ();
148 // Allows you to change the model list - do with care!
149
150 std::vector<Model>& SetEndOfRunModelList ();
151 // Allows you to change the model list - do with care!
152
154 // If set true, the visualization manager will request viewer to
155 // refresh "transient" objects, such as hits, at end of event.
156 // Otherwise they will be accumulated.
157
159 // If RefreshAtEndOfEvent is false, events of the current run are
160 // kept up to this maximum number. A negative value means all
161 // events of current run are kept. The events are available for
162 // viewing at the end of run, but are deleted just before the start
163 // of the next run.
164
166 // If set true, the visualization manager will request viewer to
167 // refresh "transient" objects, such as hits, at end of run.
168 // Otherwise they will be accumulated.
169
170 //////////////////////////////////////////////
171 // Other functions...
172
173 void CalculateExtent();
174 // (Re-)calculates the extent from the extents of its models.
175
176private:
177 G4String fName;
178 std::vector<Model> fRunDurationModelList;
179 std::vector<Model> fEndOfEventModelList;
180 std::vector<Model> fEndOfRunModelList;
181 G4VisExtent fExtent;
182 G4Point3D fStandardTargetPoint;
183 G4bool fRefreshAtEndOfEvent;
184 G4bool fRefreshAtEndOfRun;
185 G4int fMaxNumberOfKeptEvents;
186};
187
188#include "G4Scene.icc"
189
190#endif
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
std::vector< Model > & SetEndOfRunModelList()
void CalculateExtent()
Definition: G4Scene.cc:64
const std::vector< Model > & GetEndOfRunModelList() const
G4bool AddRunDurationModel(G4VModel *, G4bool warn=false)
Definition: G4Scene.cc:160
G4bool AddWorldIfEmpty(G4bool warn=false)
Definition: G4Scene.cc:124
const std::vector< Model > & GetRunDurationModelList() const
G4bool GetRefreshAtEndOfEvent() const
void SetRefreshAtEndOfEvent(G4bool)
const G4VisExtent & GetExtent() const
G4bool operator!=(const G4Scene &) const
Definition: G4Scene.cc:283
const G4Point3D & GetStandardTargetPoint() const
friend std::ostream & operator<<(std::ostream &os, const G4Scene &d)
Definition: G4Scene.cc:226
G4bool AddEndOfRunModel(G4VModel *, G4bool warn=false)
Definition: G4Scene.cc:205
void SetName(const G4String &)
@ UNLIMITED
Definition: G4Scene.hh:54
const G4String & GetName() const
G4bool operator==(const G4Scene &) const
const std::vector< Model > & GetEndOfEventModelList() const
std::vector< Model > & SetRunDurationModelList()
std::vector< Model > & SetEndOfEventModelList()
void SetRefreshAtEndOfRun(G4bool)
~G4Scene()
Definition: G4Scene.cc:50
void SetMaxNumberOfKeptEvents(G4int)
G4bool GetRefreshAtEndOfRun() const
G4bool AddEndOfEventModel(G4VModel *, G4bool warn=false)
Definition: G4Scene.cc:184
G4bool IsEmpty() const
G4int GetMaxNumberOfKeptEvents() const
G4bool fActive
Definition: G4Scene.hh:74
G4VModel * fpModel
Definition: G4Scene.hh:75
Model(G4VModel *pModel)
Definition: G4Scene.hh:73