Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4VisCommandsGeometry.cc
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// $Id$
28
29// /vis/geometry commands - John Allison 31st January 2006
30
32
33#include "G4UIcmdWithAString.hh"
34#include "G4VisManager.hh"
36#include "G4UImanager.hh"
37
38std::map<G4LogicalVolume*, const G4VisAttributes*>
40
42{
43 // Delete all vis atts that were "new". Do something like "restore"
44 // without the "rebuild".
45}
46
47////////////// /vis/geometry/list ///////////////////////////////////////
48
50{
51 G4bool omitable;
52 fpCommand = new G4UIcmdWithAString("/vis/geometry/list", this);
53 fpCommand -> SetGuidance("Lists vis attributes of logical volume(s).");
54 fpCommand -> SetGuidance("\"all\" lists all logical volumes.");
55 fpCommand -> SetParameterName("logical-volume-name", omitable = true);
56 fpCommand -> SetDefaultValue("all");
57}
58
60{
61 delete fpCommand;
62}
63
65{
66 return "";
67}
68
70{
72 G4bool found = false;
73 for (size_t iLV = 0; iLV < pLVStore->size(); iLV++ ) {
74 G4LogicalVolume*pLV = (*pLVStore)[iLV];
75 const G4String& logVolName = pLV->GetName();
76 if (newValue == "all" || logVolName == newValue) {
77 const G4VisAttributes* visAtts = pLV->GetVisAttributes();
78 G4cout << "\nLogical Volume \"" << pLV->GetName()
79 << "\": vis attributes:\n" << *visAtts
80 << G4endl;
81 }
82 if (logVolName == newValue) found = true;
83 }
84 if (newValue != "all" && !found) {
86 G4cout << "ERROR: Logical volume \"" << newValue
87 << "\" not found in logical volume store." << G4endl;
88 }
89 return;
90 }
91}
92
93////////////// /vis/geometry/restore ///////////////////////////////////////
94
96{
97 G4bool omitable;
98 fpCommand = new G4UIcmdWithAString("/vis/geometry/restore", this);
99 fpCommand -> SetGuidance("Restores vis attributes of logical volume(s).");
100 fpCommand -> SetParameterName("logical-volume-name", omitable = true);
101 fpCommand -> SetDefaultValue("all");
102}
103
105{
106 delete fpCommand;
107}
108
110{
111 return "";
112}
113
115{
118 size_t nLV = pLVStore->size();
119 size_t iLV;
120 G4LogicalVolume* pLV = 0;
121 G4bool found = false;
122 for (iLV = 0; iLV < nLV; iLV++ ) {
123 pLV = (*pLVStore)[iLV];
124 const G4String& logVolName = pLV->GetName();
125 if (logVolName == newValue) found = true;
126 if (newValue == "all" || logVolName == newValue) {
127 VisAttsMapIterator i = fVisAttsMap.find(pLV);
128 if (i != fVisAttsMap.end()) {
129 const G4VisAttributes* newVisAtts = pLV->GetVisAttributes();
130 const G4VisAttributes* oldVisAtts = i->second;
131 pLV->SetVisAttributes(oldVisAtts);
132 if (verbosity >= G4VisManager::confirmations) {
133 G4cout << "\nLogical Volume \"" << pLV->GetName()
134 << "\": re-setting vis attributes:\nwas: " << *newVisAtts
135 << "\nnow: " << *oldVisAtts
136 << G4endl;
137 }
138 }
139 }
140 }
141 if (newValue != "all" && !found) {
142 if (verbosity >= G4VisManager::errors) {
143 G4cout << "ERROR: Logical volume \"" << newValue
144 << "\" not found in logical volume store." << G4endl;
145 }
146 return;
147 }
149 G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/rebuild");
150 }
151}
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4LogicalVolumeStore * GetInstance()
const G4VisAttributes * GetVisAttributes() const
G4String GetName() const
void SetVisAttributes(const G4VisAttributes *pVA)
G4int ApplyCommand(const char *aCommand)
Definition: G4UImanager.cc:369
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:51
static std::map< G4LogicalVolume *, const G4VisAttributes * > fVisAttsMap
std::map< G4LogicalVolume *, constG4VisAttributes * >::const_iterator VisAttsMapIterator
static G4VisManager * fpVisManager
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4String GetCurrentValue(G4UIcommand *command)
void SetNewValue(G4UIcommand *command, G4String newValue)
G4VViewer * GetCurrentViewer() const
static Verbosity GetVerbosity()