Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4ModelingParameters Class Reference

#include <G4ModelingParameters.hh>

Classes

class  PVNameCopyNo
 
class  VisAttributesModifier
 

Public Types

enum  DrawingStyle { wf , hlr , hsr , hlhsr }
 
enum  VisAttributesSignifier {
  VASVisibility , VASDaughtersInvisible , VASColour , VASLineStyle ,
  VASLineWidth , VASForceWireframe , VASForceSolid , VASForceAuxEdgeVisible ,
  VASForceLineSegmentsPerCircle
}
 
typedef std::vector< PVNameCopyNoPVNameCopyNoPath
 
typedef PVNameCopyNoPath::const_iterator PVNameCopyNoPathConstIterator
 

Public Member Functions

 G4ModelingParameters ()
 
 G4ModelingParameters (const G4VisAttributes *pDefaultVisAttributes, DrawingStyle drawingStyle, G4bool isCulling, G4bool isCullingInvisible, G4bool isDensityCulling, G4double visibleDensity, G4bool isCullingCovered, G4int noOfSides)
 
 ~G4ModelingParameters ()
 
G4bool operator!= (const G4ModelingParameters &) const
 
G4bool IsWarning () const
 
const G4VisAttributesGetDefaultVisAttributes () const
 
DrawingStyle GetDrawingStyle () const
 
G4bool IsCulling () const
 
G4bool IsCullingInvisible () const
 
G4bool IsDensityCulling () const
 
G4double GetVisibleDensity () const
 
G4bool IsCullingCovered () const
 
G4bool IsExplode () const
 
G4double GetExplodeFactor () const
 
const G4Point3DGetExplodeCentre () const
 
G4int GetNoOfSides () const
 
G4VSolidGetSectionSolid () const
 
G4VSolidGetCutawaySolid () const
 
const G4EventGetEvent () const
 
const std::vector< VisAttributesModifier > & GetVisAttributesModifiers () const
 
void SetWarning (G4bool)
 
void SetDefaultVisAttributes (const G4VisAttributes *pDefaultVisAttributes)
 
void SetDrawingStyle (DrawingStyle)
 
void SetCulling (G4bool)
 
void SetCullingInvisible (G4bool)
 
void SetDensityCulling (G4bool)
 
void SetVisibleDensity (G4double)
 
void SetCullingCovered (G4bool)
 
void SetExplodeFactor (G4double explodeFactor)
 
void SetExplodeCentre (const G4Point3D &explodeCentre)
 
G4int SetNoOfSides (G4int)
 
void SetSectionSolid (G4VSolid *pSectionSolid)
 
void SetCutawaySolid (G4VSolid *pCutawaySolid)
 
void SetEvent (const G4Event *pEvent)
 
void SetVisAttributesModifiers (const std::vector< VisAttributesModifier >)
 

Static Public Member Functions

static G4bool PVNameCopyNoPathNotEqual (const PVNameCopyNoPath &, const PVNameCopyNoPath &)
 
static G4bool VAMSNotEqual (const std::vector< VisAttributesModifier > &, const std::vector< VisAttributesModifier > &)
 

Friends

std::ostream & operator<< (std::ostream &os, const G4ModelingParameters &)
 
std::ostream & operator<< (std::ostream &os, const PVNameCopyNoPath &)
 
std::ostream & operator<< (std::ostream &os, const std::vector< VisAttributesModifier > &)
 

Detailed Description

Definition at line 52 of file G4ModelingParameters.hh.

Member Typedef Documentation

◆ PVNameCopyNoPath

Definition at line 87 of file G4ModelingParameters.hh.

◆ PVNameCopyNoPathConstIterator

typedef PVNameCopyNoPath::const_iterator G4ModelingParameters::PVNameCopyNoPathConstIterator

Definition at line 88 of file G4ModelingParameters.hh.

Member Enumeration Documentation

◆ DrawingStyle

Enumerator
wf 
hlr 
hsr 
hlhsr 

Definition at line 57 of file G4ModelingParameters.hh.

57 {
58 wf, // Draw edges - no hidden line removal (wireframe).
59 hlr, // Draw edges - hidden lines removed.
60 hsr, // Draw surfaces - hidden surfaces removed.
61 hlhsr // Draw surfaces and edges - hidden removed.
62 };

◆ VisAttributesSignifier

Enumerator
VASVisibility 
VASDaughtersInvisible 
VASColour 
VASLineStyle 
VASLineWidth 
VASForceWireframe 
VASForceSolid 
VASForceAuxEdgeVisible 
VASForceLineSegmentsPerCircle 

Definition at line 66 of file G4ModelingParameters.hh.

Constructor & Destructor Documentation

◆ G4ModelingParameters() [1/2]

G4ModelingParameters::G4ModelingParameters ( )

Definition at line 43 of file G4ModelingParameters.cc.

43 :
44 fWarning (true),
45 fpDefaultVisAttributes (0),
46 fDrawingStyle (wf),
47 fCulling (false),
48 fCullInvisible (false),
49 fDensityCulling (false),
50 fVisibleDensity (0.01 * g / cm3),
51 fCullCovered (false),
52 fExplodeFactor (1.),
53 fNoOfSides (24),
54 fpSectionSolid (0),
55 fpCutawaySolid (0),
56 fpEvent (0)
57{}

◆ G4ModelingParameters() [2/2]

G4ModelingParameters::G4ModelingParameters ( const G4VisAttributes pDefaultVisAttributes,
G4ModelingParameters::DrawingStyle  drawingStyle,
G4bool  isCulling,
G4bool  isCullingInvisible,
G4bool  isDensityCulling,
G4double  visibleDensity,
G4bool  isCullingCovered,
G4int  noOfSides 
)

Definition at line 59 of file G4ModelingParameters.cc.

68 :
69 fWarning (true),
70 fpDefaultVisAttributes (pDefaultVisAttributes),
71 fDrawingStyle (drawingStyle),
72 fCulling (isCulling),
73 fCullInvisible (isCullingInvisible),
74 fDensityCulling (isDensityCulling),
75 fVisibleDensity (visibleDensity),
76 fCullCovered (isCullingCovered),
77 fExplodeFactor (1.),
78 fNoOfSides (noOfSides),
79 fpSectionSolid (0),
80 fpCutawaySolid (0),
81 fpEvent (0)
82{}

◆ ~G4ModelingParameters()

G4ModelingParameters::~G4ModelingParameters ( )

Definition at line 84 of file G4ModelingParameters.cc.

85{
86 delete fpSectionSolid;
87 delete fpCutawaySolid;
88}

Member Function Documentation

◆ GetCutawaySolid()

G4VSolid * G4ModelingParameters::GetCutawaySolid ( ) const

◆ GetDefaultVisAttributes()

const G4VisAttributes * G4ModelingParameters::GetDefaultVisAttributes ( ) const

◆ GetDrawingStyle()

DrawingStyle G4ModelingParameters::GetDrawingStyle ( ) const

◆ GetEvent()

◆ GetExplodeCentre()

const G4Point3D & G4ModelingParameters::GetExplodeCentre ( ) const

◆ GetExplodeFactor()

G4double G4ModelingParameters::GetExplodeFactor ( ) const

◆ GetNoOfSides()

G4int G4ModelingParameters::GetNoOfSides ( ) const

◆ GetSectionSolid()

G4VSolid * G4ModelingParameters::GetSectionSolid ( ) const

◆ GetVisAttributesModifiers()

const std::vector< VisAttributesModifier > & G4ModelingParameters::GetVisAttributesModifiers ( ) const

◆ GetVisibleDensity()

G4double G4ModelingParameters::GetVisibleDensity ( ) const

◆ IsCulling()

G4bool G4ModelingParameters::IsCulling ( ) const

◆ IsCullingCovered()

G4bool G4ModelingParameters::IsCullingCovered ( ) const

◆ IsCullingInvisible()

G4bool G4ModelingParameters::IsCullingInvisible ( ) const

◆ IsDensityCulling()

G4bool G4ModelingParameters::IsDensityCulling ( ) const

◆ IsExplode()

G4bool G4ModelingParameters::IsExplode ( ) const

◆ IsWarning()

G4bool G4ModelingParameters::IsWarning ( ) const

◆ operator!=()

G4bool G4ModelingParameters::operator!= ( const G4ModelingParameters mp) const

Definition at line 224 of file G4ModelingParameters.cc.

225 {
226
227 if (
228 (fWarning != mp.fWarning) ||
229 (*fpDefaultVisAttributes != *mp.fpDefaultVisAttributes) ||
230 (fCulling != mp.fCulling) ||
231 (fCullInvisible != mp.fCullInvisible) ||
232 (fDensityCulling != mp.fDensityCulling) ||
233 (fCullCovered != mp.fCullCovered) ||
234 (fExplodeFactor != mp.fExplodeFactor) ||
235 (fExplodeCentre != mp.fExplodeCentre) ||
236 (fNoOfSides != mp.fNoOfSides) ||
237 (fpSectionSolid != mp.fpSectionSolid) ||
238 (fpCutawaySolid != mp.fpCutawaySolid) ||
239 (fpEvent != mp.fpEvent)
240 )
241 return true;
242
243 if (fDensityCulling &&
244 (fVisibleDensity != mp.fVisibleDensity)) return true;
245
246 if (VAMSNotEqual(fVisAttributesModifiers, mp.fVisAttributesModifiers))
247 return true;
248
249 return false;
250}
static G4bool VAMSNotEqual(const std::vector< VisAttributesModifier > &, const std::vector< VisAttributesModifier > &)

◆ PVNameCopyNoPathNotEqual()

G4bool G4ModelingParameters::PVNameCopyNoPathNotEqual ( const PVNameCopyNoPath path1,
const PVNameCopyNoPath path2 
)
static

Definition at line 252 of file G4ModelingParameters.cc.

255{
256 if (path1.size() != path2.size()) return true;
257 if (path1.empty()) return false;
259 for (i1 = path1.begin(), i2 = path2.begin();
260 i1 != path1.end();
261 ++i1, ++i2) {
262 if (i1->GetName() != i2->GetName()) return true;
263 if (i1->GetCopyNo() != i2->GetCopyNo()) return true;
264 }
265 return false;
266}
PVNameCopyNoPath::const_iterator PVNameCopyNoPathConstIterator

Referenced by VAMSNotEqual().

◆ SetCulling()

void G4ModelingParameters::SetCulling ( G4bool  )

◆ SetCullingCovered()

void G4ModelingParameters::SetCullingCovered ( G4bool  )

◆ SetCullingInvisible()

void G4ModelingParameters::SetCullingInvisible ( G4bool  )

◆ SetCutawaySolid()

void G4ModelingParameters::SetCutawaySolid ( G4VSolid pCutawaySolid)

Definition at line 146 of file G4ModelingParameters.cc.

147 {
148 delete fpCutawaySolid;
149 fpCutawaySolid = pCutawaySolid;
150}

Referenced by G4VSceneHandler::CreateModelingParameters().

◆ SetDefaultVisAttributes()

void G4ModelingParameters::SetDefaultVisAttributes ( const G4VisAttributes pDefaultVisAttributes)

◆ SetDensityCulling()

void G4ModelingParameters::SetDensityCulling ( G4bool  )

◆ SetDrawingStyle()

void G4ModelingParameters::SetDrawingStyle ( DrawingStyle  )

◆ SetEvent()

void G4ModelingParameters::SetEvent ( const G4Event pEvent)

◆ SetExplodeCentre()

void G4ModelingParameters::SetExplodeCentre ( const G4Point3D explodeCentre)

◆ SetExplodeFactor()

void G4ModelingParameters::SetExplodeFactor ( G4double  explodeFactor)

◆ SetNoOfSides()

G4int G4ModelingParameters::SetNoOfSides ( G4int  nSides)

Definition at line 127 of file G4ModelingParameters.cc.

127 {
128 const G4int nSidesMin = 12;
129 if (nSides < nSidesMin) {
130 nSides = nSidesMin;
131 if (fWarning)
132 G4cout << "G4ModelingParameters::SetNoOfSides: attempt to set the"
133 "\nnumber of sides per circle < " << nSidesMin
134 << "; forced to" << nSides << G4endl;
135 }
136 fNoOfSides = nSides;
137 return fNoOfSides;
138}
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout

◆ SetSectionSolid()

void G4ModelingParameters::SetSectionSolid ( G4VSolid pSectionSolid)

Definition at line 140 of file G4ModelingParameters.cc.

141 {
142 delete fpSectionSolid;
143 fpSectionSolid = pSectionSolid;
144}

Referenced by G4VSceneHandler::CreateModelingParameters().

◆ SetVisAttributesModifiers()

void G4ModelingParameters::SetVisAttributesModifiers ( const std::vector< VisAttributesModifier )

◆ SetVisibleDensity()

void G4ModelingParameters::SetVisibleDensity ( G4double  visibleDensity)

Definition at line 110 of file G4ModelingParameters.cc.

110 {
111 const G4double reasonableMaximum = 10.0 * g / cm3;
112 if (visibleDensity < 0 && fWarning) {
113 G4cout << "G4ModelingParameters::SetVisibleDensity: attempt to set negative "
114 "density - ignored." << G4endl;
115 }
116 else {
117 if (fVisibleDensity > reasonableMaximum && fWarning) {
118 G4cout << "G4ModelingParameters::SetVisibleDensity: density > "
119 << reasonableMaximum
120 << " g / cm3 - did you mean this?"
121 << G4endl;
122 }
123 fVisibleDensity = visibleDensity;
124 }
125}
double G4double
Definition: G4Types.hh:64

◆ SetWarning()

void G4ModelingParameters::SetWarning ( G4bool  )

◆ VAMSNotEqual()

G4bool G4ModelingParameters::VAMSNotEqual ( const std::vector< VisAttributesModifier > &  vams1,
const std::vector< VisAttributesModifier > &  vams2 
)
static

Definition at line 268 of file G4ModelingParameters.cc.

271{
272 if (vams1.size() != vams2.size()) return true;
273 if (vams1.empty()) return false;
274 std::vector<VisAttributesModifier>::const_iterator i1, i2;
275 for (i1 = vams1.begin(), i2 = vams2.begin();
276 i1 != vams1.end();
277 ++i1, ++i2) {
278 const PVNameCopyNoPath& vam1Path = i1->GetPVNameCopyNoPath();
279 const PVNameCopyNoPath& vam2Path = i2->GetPVNameCopyNoPath();
280 if (PVNameCopyNoPathNotEqual(vam1Path,vam2Path)) return true;
281 if (i1->GetVisAttributesSignifier() != i2->GetVisAttributesSignifier())
282 return true;
283 const G4VisAttributes& vam1VisAtts = i1->GetVisAttributes();
284 const G4VisAttributes& vam2VisAtts = i2->GetVisAttributes();
285 const G4Colour& c1 = vam1VisAtts.GetColour();
286 const G4Colour& c2 = vam2VisAtts.GetColour();
287 switch (i1->GetVisAttributesSignifier()) {
289 if (vam1VisAtts.IsVisible() != vam2VisAtts.IsVisible())
290 return true;
291 break;
293 if (vam1VisAtts.IsDaughtersInvisible() !=
294 vam2VisAtts.IsDaughtersInvisible())
295 return true;
296 break;
298 if (c1 != c2)
299 return true;
300 break;
302 if (vam1VisAtts.GetLineStyle() != vam2VisAtts.GetLineStyle())
303 return true;
304 break;
306 if (vam1VisAtts.GetLineWidth() != vam2VisAtts.GetLineWidth())
307 return true;
308 break;
310 if (vam1VisAtts.GetForcedDrawingStyle() !=
311 vam2VisAtts.GetForcedDrawingStyle())
312 return true;
313 break;
315 if (vam1VisAtts.GetForcedDrawingStyle() !=
316 vam2VisAtts.GetForcedDrawingStyle())
317 return true;
318 break;
320 if (vam1VisAtts.IsForceAuxEdgeVisible() !=
321 vam2VisAtts.IsForceAuxEdgeVisible())
322 return true;
323 break;
325 if (vam1VisAtts.GetForcedLineSegmentsPerCircle() !=
326 vam2VisAtts.GetForcedLineSegmentsPerCircle())
327 return true;
328 break;
329 }
330 }
331 return false;
332}
std::vector< PVNameCopyNo > PVNameCopyNoPath
static G4bool PVNameCopyNoPathNotEqual(const PVNameCopyNoPath &, const PVNameCopyNoPath &)
G4double GetLineWidth() const
G4bool IsDaughtersInvisible() const
G4int GetForcedLineSegmentsPerCircle() const
LineStyle GetLineStyle() const
const G4Colour & GetColour() const
G4bool IsVisible() const
G4bool IsForceAuxEdgeVisible() const
ForcedDrawingStyle GetForcedDrawingStyle() const

Referenced by operator!=(), and G4ViewParameters::operator!=().

Friends And Related Function Documentation

◆ operator<< [1/3]

std::ostream & operator<< ( std::ostream &  os,
const G4ModelingParameters mp 
)
friend

Definition at line 152 of file G4ModelingParameters.cc.

153{
154 os << "Modeling parameters (warning ";
155 if (mp.fWarning) os << "true";
156 else os << "false";
157 os << "):";
158
159 const G4VisAttributes* va = mp.fpDefaultVisAttributes;
160 os << "\n Default vis. attributes: ";
161 if (va) os << *va;
162 else os << "none";
163
164 os << "\n Current requested drawing style: ";
165 switch (mp.fDrawingStyle) {
167 os << "wireframe"; break;
169 os << "hidden line removal (hlr)"; break;
171 os << "surface (hsr)"; break;
173 os << "surface and edges (hlhsr)"; break;
174 default: os << "unrecognised"; break;
175 }
176
177 os << "\n Culling: ";
178 if (mp.fCulling) os << "on";
179 else os << "off";
180
181 os << "\n Culling invisible objects: ";
182 if (mp.fCullInvisible) os << "on";
183 else os << "off";
184
185 os << "\n Density culling: ";
186 if (mp.fDensityCulling) {
187 os << "on - invisible if density less than "
188 << mp.fVisibleDensity / (1. * g / cm3) << " g cm^-3";
189 }
190 else os << "off";
191
192 os << "\n Culling daughters covered by opaque mothers: ";
193 if (mp.fCullCovered) os << "on";
194 else os << "off";
195
196 os << "\n Explode factor: " << mp.fExplodeFactor
197 << " about centre: " << mp.fExplodeCentre;
198
199 os << "\n No. of sides used in circle polygon approximation: "
200 << mp.fNoOfSides;
201
202 os << "\n Section (DCUT) shape (G4VSolid) pointer: ";
203 if (!mp.fpSectionSolid) os << "non-";
204 os << "null";
205
206 os << "\n Cutaway (DCUT) shape (G4VSolid) pointer: ";
207 if (!mp.fpCutawaySolid) os << "non-";
208 os << "null";
209
210 os << "\n Event pointer: " << mp.fpEvent;
211
212 os << "\n Vis attributes modifiers: ";
213 const std::vector<G4ModelingParameters::VisAttributesModifier>& vams =
214 mp.fVisAttributesModifiers;
215 if (vams.empty()) {
216 os << "None";
217 } else {
218 os << vams;
219 }
220
221 return os;
222}

◆ operator<< [2/3]

std::ostream & operator<< ( std::ostream &  os,
const PVNameCopyNoPath path 
)
friend

Definition at line 334 of file G4ModelingParameters.cc.

336{
337// os << "Touchable path: physical-volume-name:copy-number pairs:\n ";
339 for (i = path.begin(); i != path.end(); ++i) {
340 if (i != path.begin()) {
341 os << ", ";
342 }
343 os << i->GetName() << ':' << i->GetCopyNo();
344 }
345 return os;
346}

◆ operator<< [3/3]

std::ostream & operator<< ( std::ostream &  os,
const std::vector< VisAttributesModifier > &  vams 
)
friend

Definition at line 348 of file G4ModelingParameters.cc.

351{
352 std::vector<G4ModelingParameters::VisAttributesModifier>::const_iterator
353 iModifier;
354 for (iModifier = vams.begin();
355 iModifier != vams.end();
356 ++iModifier) {
358 iModifier->GetPVNameCopyNoPath();
359 os << '\n' << vamPath;
360 const G4VisAttributes& vamVisAtts = iModifier->GetVisAttributes();
361 const G4Colour& c = vamVisAtts.GetColour();
362 switch (iModifier->GetVisAttributesSignifier()) {
364 os << " visibility ";
365 if (vamVisAtts.IsVisible()) {
366 os << "true";
367 } else {
368 os << "false";
369 }
370 break;
372 os << " daughtersInvisible ";
373 if (vamVisAtts.IsDaughtersInvisible()) {
374 os << "true";
375 } else {
376 os << "false";
377 }
378 break;
380 os << " colour " << c;
381 break;
383 os << " lineStyle ";
384 switch (vamVisAtts.GetLineStyle()) {
386 os << "unbroken";
387 break;
389 os << "dashed";
390 break;
392 os << "dotted";
393 }
394 break;
396 os << " lineWidth "
397 << vamVisAtts.GetLineWidth();
398 break;
401 os << " forceWireframe ";
402 if (vamVisAtts.IsForceDrawingStyle()) {
403 os << "true";
404 } else {
405 os << "false";
406 }
407 }
408 break;
410 if (vamVisAtts.GetForcedDrawingStyle() == G4VisAttributes::solid) {
411 os << " forceSolid ";
412 if (vamVisAtts.IsForceDrawingStyle()) {
413 os << "true";
414 } else {
415 os << "false";
416 }
417 }
418 break;
420 os << " forceAuxEdgeVisible ";
421 if (vamVisAtts.IsForceAuxEdgeVisible()) {
422 os << "true";
423 } else {
424 os << "false";
425 }
426 break;
428 os << " lineSegmentsPerCircle "
429 << vamVisAtts.GetForcedLineSegmentsPerCircle();
430 break;
431 }
432 }
433
434 return os;
435}
G4bool IsForceDrawingStyle() const

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