Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/visualization/management/src/G4VisCommandsGeometrySet.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /visualization/management/src/G4VisCommandsGeometrySet.cc (Version 11.3.0) and /visualization/management/src/G4VisCommandsGeometrySet.cc (Version 11.2.2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //                                                 26 //
 27                                                    27 
 28 // /vis/geometry commands - John Allison  31st     28 // /vis/geometry commands - John Allison  31st January 2006
 29                                                    29 
 30 #include "G4VisCommandsGeometrySet.hh"             30 #include "G4VisCommandsGeometrySet.hh"
 31                                                    31 
 32 #include "G4UIcommand.hh"                          32 #include "G4UIcommand.hh"
 33 #include "G4VisManager.hh"                         33 #include "G4VisManager.hh"
 34 #include "G4LogicalVolumeStore.hh"                 34 #include "G4LogicalVolumeStore.hh"
 35 #include "G4UImanager.hh"                          35 #include "G4UImanager.hh"
 36                                                    36 
 37 #include <sstream>                                 37 #include <sstream>
 38                                                    38 
 39 #define G4warn G4cout                              39 #define G4warn G4cout
 40                                                    40 
 41 void G4VVisCommandGeometrySet::Set                 41 void G4VVisCommandGeometrySet::Set
 42 (const G4String& requestedName,                <<  42 (G4String requestedName,
 43  const G4VVisCommandGeometrySetFunction& setFu     43  const G4VVisCommandGeometrySetFunction& setFunction,
 44  G4int requestedDepth)                             44  G4int requestedDepth)
 45 {                                                  45 {
 46   G4VisManager::Verbosity verbosity = fpVisMan     46   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
 47   G4LogicalVolumeStore* pLVStore = G4LogicalVo     47   G4LogicalVolumeStore* pLVStore = G4LogicalVolumeStore::GetInstance();
 48   G4bool found = false;                            48   G4bool found = false;
 49   for (std::size_t iLV = 0; iLV < pLVStore->si     49   for (std::size_t iLV = 0; iLV < pLVStore->size(); ++iLV ) {
 50     G4LogicalVolume* pLV = (*pLVStore)[iLV];       50     G4LogicalVolume* pLV = (*pLVStore)[iLV];
 51     const G4String& logVolName = pLV->GetName(     51     const G4String& logVolName = pLV->GetName();
 52     if (logVolName == requestedName) found = t     52     if (logVolName == requestedName) found = true;
 53     if (requestedName == "all" || logVolName =     53     if (requestedName == "all" || logVolName == requestedName) {
 54       SetLVVisAtts(pLV, setFunction, 0, reques     54       SetLVVisAtts(pLV, setFunction, 0, requestedDepth);
 55     }                                              55     }
 56   }                                                56   }
 57   if (requestedName != "all" && !found) {          57   if (requestedName != "all" && !found) {
 58     if (verbosity >= G4VisManager::errors) {       58     if (verbosity >= G4VisManager::errors) {
 59       G4warn << "ERROR: Logical volume \"" <<      59       G4warn << "ERROR: Logical volume \"" << requestedName
 60        << "\" not found in logical volume stor     60        << "\" not found in logical volume store." << G4endl;
 61     }                                              61     }
 62     return;                                        62     return;
 63   }                                                63   }
 64   // Recalculate extent of any physical volume     64   // Recalculate extent of any physical volume model in run duration lists
 65   for (const auto& scene : fpVisManager->GetSc     65   for (const auto& scene : fpVisManager->GetSceneList()) {
 66     const auto& runDurationModelList = scene->     66     const auto& runDurationModelList = scene->GetRunDurationModelList();
 67     for (const auto& sceneModel : runDurationM     67     for (const auto& sceneModel : runDurationModelList) {
 68       auto model = sceneModel.fpModel;             68       auto model = sceneModel.fpModel;
 69       auto pvModel = dynamic_cast<G4PhysicalVo     69       auto pvModel = dynamic_cast<G4PhysicalVolumeModel*>(model);
 70       if (pvModel) pvModel->CalculateExtent();     70       if (pvModel) pvModel->CalculateExtent();
 71     }                                              71     }
 72     // And re-calculate the scene's extent         72     // And re-calculate the scene's extent
 73     scene->CalculateExtent();                      73     scene->CalculateExtent();
 74   }                                                74   }
 75   if (fpVisManager->GetCurrentViewer()) {          75   if (fpVisManager->GetCurrentViewer()) {
 76     G4UImanager::GetUIpointer()->ApplyCommand(     76     G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers");
 77   }                                                77   }
 78 }                                                  78 }
 79                                                    79 
 80 void G4VVisCommandGeometrySet::SetLVVisAtts        80 void G4VVisCommandGeometrySet::SetLVVisAtts
 81 (G4LogicalVolume* pLV,                             81 (G4LogicalVolume* pLV,
 82  const G4VVisCommandGeometrySetFunction& setFu     82  const G4VVisCommandGeometrySetFunction& setFunction,
 83  G4int depth, G4int requestedDepth)                83  G4int depth, G4int requestedDepth)
 84 {                                                  84 {
 85   G4VisManager::Verbosity verbosity = fpVisMan     85   G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity();
 86   const G4VisAttributes* oldVisAtts = pLV->Get     86   const G4VisAttributes* oldVisAtts = pLV->GetVisAttributes();
 87   fVisAttsMap.insert(std::make_pair(pLV,oldVis     87   fVisAttsMap.insert(std::make_pair(pLV,oldVisAtts));  // Store old vis atts.
 88   G4VisAttributes* newVisAtts = new G4VisAttri     88   G4VisAttributes* newVisAtts = new G4VisAttributes;   // Memory leak!
 89   if (oldVisAtts) {                                89   if (oldVisAtts) {
 90     *newVisAtts = *oldVisAtts;                     90     *newVisAtts = *oldVisAtts;
 91   }                                                91   }
 92   setFunction(newVisAtts);  // Sets whatever a     92   setFunction(newVisAtts);  // Sets whatever attribute determined by
 93           // function object.                      93           // function object.
 94   pLV->SetVisAttributes(newVisAtts);               94   pLV->SetVisAttributes(newVisAtts);
 95   if (verbosity >= G4VisManager::confirmations     95   if (verbosity >= G4VisManager::confirmations) {
 96     G4cout << "\nLogical Volume \"" << pLV->Ge     96     G4cout << "\nLogical Volume \"" << pLV->GetName()
 97      << "\": setting vis attributes:";             97      << "\": setting vis attributes:";
 98     if (oldVisAtts) {                              98     if (oldVisAtts) {
 99       G4cout << "\nwas: " << *oldVisAtts;          99       G4cout << "\nwas: " << *oldVisAtts;
100     } else {                                      100     } else {
101       G4cout << "\n(no old attributes)";          101       G4cout << "\n(no old attributes)";
102     }                                             102     }
103     G4cout << "\nnow: " << *newVisAtts            103     G4cout << "\nnow: " << *newVisAtts
104      << G4endl;                                   104      << G4endl;
105   }                                               105   }
106   if (requestedDepth < 0 || depth < requestedD    106   if (requestedDepth < 0 || depth < requestedDepth) {
107     G4int nDaughters = (G4int)pLV->GetNoDaught    107     G4int nDaughters = (G4int)pLV->GetNoDaughters();
108     for (G4int i = 0; i < nDaughters; ++i) {      108     for (G4int i = 0; i < nDaughters; ++i) {
109       SetLVVisAtts(pLV->GetDaughter(i)->GetLog    109       SetLVVisAtts(pLV->GetDaughter(i)->GetLogicalVolume(),
110        setFunction, ++depth, requestedDepth);     110        setFunction, ++depth, requestedDepth);
111     }                                             111     }
112   }                                               112   }
113 }                                                 113 }
114                                                   114 
115 ////////////// /vis/geometry/set/colour //////    115 ////////////// /vis/geometry/set/colour ///////////////////////////////////////
116                                                   116 
117 G4VisCommandGeometrySetColour::G4VisCommandGeo    117 G4VisCommandGeometrySetColour::G4VisCommandGeometrySetColour()
118 {                                                 118 {
119   G4bool omitable;                                119   G4bool omitable;
120   fpCommand = new G4UIcommand("/vis/geometry/s    120   fpCommand = new G4UIcommand("/vis/geometry/set/colour", this);
121   fpCommand->SetGuidance("Sets colour of logic    121   fpCommand->SetGuidance("Sets colour of logical volume(s).");
122   fpCommand->SetGuidance("\"all\" sets all log    122   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
123   fpCommand->SetGuidance                          123   fpCommand->SetGuidance
124     ("Optionally propagates down hierarchy to     124     ("Optionally propagates down hierarchy to given depth.");
125   G4UIparameter* parameter;                       125   G4UIparameter* parameter;
126   parameter = new G4UIparameter ("logical-volu    126   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
127   parameter->SetDefaultValue("all");              127   parameter->SetDefaultValue("all");
128   fpCommand->SetParameter(parameter);             128   fpCommand->SetParameter(parameter);
129   parameter = new G4UIparameter("depth", 'd',     129   parameter = new G4UIparameter("depth", 'd', omitable = true);
130   parameter->SetDefaultValue(0);                  130   parameter->SetDefaultValue(0);
131   parameter->SetGuidance                          131   parameter->SetGuidance
132     ("Depth of propagation (-1 means unlimited    132     ("Depth of propagation (-1 means unlimited depth).");
133   fpCommand->SetParameter(parameter);             133   fpCommand->SetParameter(parameter);
134   parameter = new G4UIparameter("red", 's', om    134   parameter = new G4UIparameter("red", 's', omitable = true);
135   parameter->SetDefaultValue("1.");               135   parameter->SetDefaultValue("1.");
136   parameter->SetGuidance                          136   parameter->SetGuidance
137     ("Red component or a string, e.g., \"blue\    137     ("Red component or a string, e.g., \"blue\", in which case succeeding colour components are ignored.");
138   fpCommand->SetParameter(parameter);             138   fpCommand->SetParameter(parameter);
139   parameter = new G4UIparameter("green", 'd',     139   parameter = new G4UIparameter("green", 'd', omitable = true);
140   parameter->SetDefaultValue(1.);                 140   parameter->SetDefaultValue(1.);
141   fpCommand->SetParameter(parameter);             141   fpCommand->SetParameter(parameter);
142   parameter = new G4UIparameter("blue", 'd', o    142   parameter = new G4UIparameter("blue", 'd', omitable = true);
143   parameter->SetDefaultValue(1.);                 143   parameter->SetDefaultValue(1.);
144   fpCommand->SetParameter(parameter);             144   fpCommand->SetParameter(parameter);
145   parameter = new G4UIparameter("opacity", 'd'    145   parameter = new G4UIparameter("opacity", 'd', omitable = true);
146   parameter->SetDefaultValue(1.);                 146   parameter->SetDefaultValue(1.);
147   fpCommand->SetParameter(parameter);             147   fpCommand->SetParameter(parameter);
148 }                                                 148 }
149                                                   149 
150 G4VisCommandGeometrySetColour::~G4VisCommandGe    150 G4VisCommandGeometrySetColour::~G4VisCommandGeometrySetColour()
151 {                                                 151 {
152   delete fpCommand;                               152   delete fpCommand;
153 }                                                 153 }
154                                                   154 
155 G4String G4VisCommandGeometrySetColour::GetCur    155 G4String G4VisCommandGeometrySetColour::GetCurrentValue(G4UIcommand*)
156 {                                                 156 {
157   return "";                                      157   return "";
158 }                                                 158 }
159                                                   159 
160 void G4VisCommandGeometrySetColour::SetNewValu    160 void G4VisCommandGeometrySetColour::SetNewValue
161 (G4UIcommand*, G4String newValue)                 161 (G4UIcommand*, G4String newValue)
162 {                                                 162 {
163   G4String name, redOrString;                     163   G4String name, redOrString;
164   G4int requestedDepth;                           164   G4int requestedDepth;
165   G4double green, blue, opacity;                  165   G4double green, blue, opacity;
166   std::istringstream iss(newValue);               166   std::istringstream iss(newValue);
167   iss >> name >> requestedDepth >> redOrString    167   iss >> name >> requestedDepth >> redOrString >> green >> blue >> opacity;
168   G4Colour colour(1,1,1,1);  // Default white     168   G4Colour colour(1,1,1,1);  // Default white and opaque.
169   ConvertToColour(colour, redOrString, green,     169   ConvertToColour(colour, redOrString, green, blue, opacity);
170   G4VisCommandGeometrySetColourFunction setCol    170   G4VisCommandGeometrySetColourFunction setColour(colour);
171   Set(name, setColour, requestedDepth);           171   Set(name, setColour, requestedDepth);
172 }                                                 172 }
173                                                   173 
174 ////////////// /vis/geometry/set/daughtersInvi    174 ////////////// /vis/geometry/set/daughtersInvisible //////////////////////
175                                                   175 
176 G4VisCommandGeometrySetDaughtersInvisible::G4V    176 G4VisCommandGeometrySetDaughtersInvisible::G4VisCommandGeometrySetDaughtersInvisible()
177 {                                                 177 {
178   G4bool omitable;                                178   G4bool omitable;
179   fpCommand = new G4UIcommand("/vis/geometry/s    179   fpCommand = new G4UIcommand("/vis/geometry/set/daughtersInvisible", this);
180   fpCommand->SetGuidance("Makes daughters of l    180   fpCommand->SetGuidance("Makes daughters of logical volume(s) invisible.");
181   fpCommand->SetGuidance("\"all\" sets all log    181   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
182   fpCommand->SetGuidance                          182   fpCommand->SetGuidance
183     ("Optionally propagates down hierarchy to     183     ("Optionally propagates down hierarchy to given depth.");
184   G4UIparameter* parameter;                       184   G4UIparameter* parameter;
185   parameter = new G4UIparameter ("logical-volu    185   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
186   parameter->SetDefaultValue("all");              186   parameter->SetDefaultValue("all");
187   fpCommand->SetParameter(parameter);             187   fpCommand->SetParameter(parameter);
188   parameter = new G4UIparameter("depth", 'd',     188   parameter = new G4UIparameter("depth", 'd', omitable = true);
189   parameter->SetDefaultValue(0);                  189   parameter->SetDefaultValue(0);
190   parameter->SetGuidance                          190   parameter->SetGuidance
191     ("Depth of propagation (-1 means unlimited    191     ("Depth of propagation (-1 means unlimited depth).");
192   fpCommand->SetParameter(parameter);             192   fpCommand->SetParameter(parameter);
193   parameter = new G4UIparameter("daughtersInvi    193   parameter = new G4UIparameter("daughtersInvisible", 'b', omitable = true);
194   parameter->SetDefaultValue(true);               194   parameter->SetDefaultValue(true);
195   fpCommand->SetParameter(parameter);             195   fpCommand->SetParameter(parameter);
196 }                                                 196 }
197                                                   197 
198 G4VisCommandGeometrySetDaughtersInvisible::~G4    198 G4VisCommandGeometrySetDaughtersInvisible::~G4VisCommandGeometrySetDaughtersInvisible()
199 {                                                 199 {
200   delete fpCommand;                               200   delete fpCommand;
201 }                                                 201 }
202                                                   202 
203 G4String                                          203 G4String
204 G4VisCommandGeometrySetDaughtersInvisible::Get    204 G4VisCommandGeometrySetDaughtersInvisible::GetCurrentValue(G4UIcommand*)
205 {                                                 205 {
206   return "";                                      206   return "";
207 }                                                 207 }
208                                                   208 
209 void G4VisCommandGeometrySetDaughtersInvisible    209 void G4VisCommandGeometrySetDaughtersInvisible::SetNewValue
210 (G4UIcommand*, G4String newValue)                 210 (G4UIcommand*, G4String newValue)
211 {                                                 211 {
212   G4String name;                                  212   G4String name;
213   G4int requestedDepth;                           213   G4int requestedDepth;
214   G4String daughtersInvisibleString;              214   G4String daughtersInvisibleString;
215   std::istringstream iss(newValue);               215   std::istringstream iss(newValue);
216   iss >> name >> requestedDepth >> daughtersIn    216   iss >> name >> requestedDepth >> daughtersInvisibleString;
217   G4bool daughtersInvisible =                     217   G4bool daughtersInvisible =
218     G4UIcommand::ConvertToBool(daughtersInvisi    218     G4UIcommand::ConvertToBool(daughtersInvisibleString);
219                                                   219 
220   if (requestedDepth !=0) {                       220   if (requestedDepth !=0) {
221     requestedDepth = 0;                           221     requestedDepth = 0;
222     if (fpVisManager->GetVerbosity() >= G4VisM    222     if (fpVisManager->GetVerbosity() >= G4VisManager::warnings) {
223       G4warn << "Recursive application suppres    223       G4warn << "Recursive application suppressed for this attribute."
224        << G4endl;                                 224        << G4endl;
225     }                                             225     }
226   }                                               226   }
227                                                   227 
228   G4VisCommandGeometrySetDaughtersInvisibleFun    228   G4VisCommandGeometrySetDaughtersInvisibleFunction
229     setDaughtersInvisible(daughtersInvisible);    229     setDaughtersInvisible(daughtersInvisible);
230   Set(name, setDaughtersInvisible, requestedDe    230   Set(name, setDaughtersInvisible, requestedDepth);
231                                                   231 
232   G4VViewer* pViewer = fpVisManager->GetCurren    232   G4VViewer* pViewer = fpVisManager->GetCurrentViewer();
233   if (pViewer) {                                  233   if (pViewer) {
234     const G4ViewParameters& viewParams = pView    234     const G4ViewParameters& viewParams = pViewer->GetViewParameters();
235     if (fpVisManager->GetVerbosity() >= G4VisM    235     if (fpVisManager->GetVerbosity() >= G4VisManager::warnings) {
236       if (!viewParams.IsCulling()) {              236       if (!viewParams.IsCulling()) {
237   G4warn <<                                       237   G4warn <<
238     "Culling must be on - \"/vis/viewer/set/cu    238     "Culling must be on - \"/vis/viewer/set/culling global true\" - to see effect."
239          << G4endl;                               239          << G4endl;
240       }                                           240       }
241     }                                             241     }
242   }                                               242   }
243 }                                                 243 }
244                                                   244 
245 ////////////// /vis/geometry/set/forceAuxEdgeV    245 ////////////// /vis/geometry/set/forceAuxEdgeVisible /////////////////////////
246                                                   246 
247 G4VisCommandGeometrySetForceAuxEdgeVisible::G4    247 G4VisCommandGeometrySetForceAuxEdgeVisible::G4VisCommandGeometrySetForceAuxEdgeVisible()
248 {                                                 248 {
249   G4bool omitable;                                249   G4bool omitable;
250   fpCommand = new G4UIcommand("/vis/geometry/s    250   fpCommand = new G4UIcommand("/vis/geometry/set/forceAuxEdgeVisible", this);
251   fpCommand->SetGuidance                          251   fpCommand->SetGuidance
252     ("Forces auxiliary (soft) edges of logical    252     ("Forces auxiliary (soft) edges of logical volume(s) to be visible,"
253     "\nregardless of the view parameters.");      253     "\nregardless of the view parameters.");
254   fpCommand->SetGuidance("\"all\" sets all log    254   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
255   fpCommand->SetGuidance                          255   fpCommand->SetGuidance
256     ("Optionally propagates down hierarchy to     256     ("Optionally propagates down hierarchy to given depth.");
257   G4UIparameter* parameter;                       257   G4UIparameter* parameter;
258   parameter = new G4UIparameter ("logical-volu    258   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
259   parameter->SetDefaultValue("all");              259   parameter->SetDefaultValue("all");
260   fpCommand->SetParameter(parameter);             260   fpCommand->SetParameter(parameter);
261   parameter = new G4UIparameter("depth", 'd',     261   parameter = new G4UIparameter("depth", 'd', omitable = true);
262   parameter->SetDefaultValue(0);                  262   parameter->SetDefaultValue(0);
263   parameter->SetGuidance                          263   parameter->SetGuidance
264     ("Depth of propagation (-1 means unlimited    264     ("Depth of propagation (-1 means unlimited depth).");
265   fpCommand->SetParameter(parameter);             265   fpCommand->SetParameter(parameter);
266   parameter = new G4UIparameter("forceAuxEdgeV    266   parameter = new G4UIparameter("forceAuxEdgeVisible", 'b', omitable = true);
267   parameter->SetDefaultValue(true);               267   parameter->SetDefaultValue(true);
268   fpCommand->SetParameter(parameter);             268   fpCommand->SetParameter(parameter);
269 }                                                 269 }
270                                                   270 
271 G4VisCommandGeometrySetForceAuxEdgeVisible::~G    271 G4VisCommandGeometrySetForceAuxEdgeVisible::~G4VisCommandGeometrySetForceAuxEdgeVisible()
272 {                                                 272 {
273   delete fpCommand;                               273   delete fpCommand;
274 }                                                 274 }
275                                                   275 
276 G4String                                          276 G4String
277 G4VisCommandGeometrySetForceAuxEdgeVisible::Ge    277 G4VisCommandGeometrySetForceAuxEdgeVisible::GetCurrentValue(G4UIcommand*)
278 {                                                 278 {
279   return "";                                      279   return "";
280 }                                                 280 }
281                                                   281 
282 void G4VisCommandGeometrySetForceAuxEdgeVisibl    282 void G4VisCommandGeometrySetForceAuxEdgeVisible::SetNewValue
283 (G4UIcommand*, G4String newValue)                 283 (G4UIcommand*, G4String newValue)
284 {                                                 284 {
285   G4String name;                                  285   G4String name;
286   G4int requestedDepth;                           286   G4int requestedDepth;
287   G4String forceAuxEdgeVisibleString;             287   G4String forceAuxEdgeVisibleString;
288   std::istringstream iss(newValue);               288   std::istringstream iss(newValue);
289   iss >> name >> requestedDepth >> forceAuxEdg    289   iss >> name >> requestedDepth >> forceAuxEdgeVisibleString;
290   G4bool forceAuxEdgeVisible =                    290   G4bool forceAuxEdgeVisible =
291     G4UIcommand::ConvertToBool(forceAuxEdgeVis    291     G4UIcommand::ConvertToBool(forceAuxEdgeVisibleString);;
292                                                   292 
293   G4VisCommandGeometrySetForceAuxEdgeVisibleFu    293   G4VisCommandGeometrySetForceAuxEdgeVisibleFunction
294     setForceAuxEdgeVisible(forceAuxEdgeVisible    294     setForceAuxEdgeVisible(forceAuxEdgeVisible);
295   Set(name, setForceAuxEdgeVisible, requestedD    295   Set(name, setForceAuxEdgeVisible, requestedDepth);
296 }                                                 296 }
297                                                   297 
298 ////////////// /vis/geometry/set/forceCloud //    298 ////////////// /vis/geometry/set/forceCloud /////////////////////////
299                                                   299 
300 G4VisCommandGeometrySetForceCloud::G4VisComman    300 G4VisCommandGeometrySetForceCloud::G4VisCommandGeometrySetForceCloud()
301 {                                                 301 {
302   G4bool omitable;                                302   G4bool omitable;
303   fpCommand = new G4UIcommand("/vis/geometry/s    303   fpCommand = new G4UIcommand("/vis/geometry/set/forceCloud", this);
304   fpCommand->SetGuidance                          304   fpCommand->SetGuidance
305   ("Forces logical volume(s) always to be draw    305   ("Forces logical volume(s) always to be drawn as a cloud of points,"
306    "\nregardless of the view parameters.");       306    "\nregardless of the view parameters.");
307   fpCommand->SetGuidance("\"all\" sets all log    307   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
308   fpCommand->SetGuidance                          308   fpCommand->SetGuidance
309     ("Optionally propagates down hierarchy to     309     ("Optionally propagates down hierarchy to given depth.");
310   G4UIparameter* parameter;                       310   G4UIparameter* parameter;
311   parameter = new G4UIparameter ("logical-volu    311   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
312   parameter->SetDefaultValue("all");              312   parameter->SetDefaultValue("all");
313   fpCommand->SetParameter(parameter);             313   fpCommand->SetParameter(parameter);
314   parameter = new G4UIparameter("depth", 'd',     314   parameter = new G4UIparameter("depth", 'd', omitable = true);
315   parameter->SetDefaultValue(0);                  315   parameter->SetDefaultValue(0);
316   parameter->SetGuidance                          316   parameter->SetGuidance
317     ("Depth of propagation (-1 means unlimited    317     ("Depth of propagation (-1 means unlimited depth).");
318   fpCommand->SetParameter(parameter);             318   fpCommand->SetParameter(parameter);
319   parameter = new G4UIparameter("forceCloud",     319   parameter = new G4UIparameter("forceCloud", 'b', omitable = true);
320   parameter->SetDefaultValue(true);               320   parameter->SetDefaultValue(true);
321   fpCommand->SetParameter(parameter);             321   fpCommand->SetParameter(parameter);
322   parameter = new G4UIparameter("nPoints", 'd'    322   parameter = new G4UIparameter("nPoints", 'd', omitable = true);
323   parameter->SetGuidance                          323   parameter->SetGuidance
324     ("<= 0 means under control of viewer.");      324     ("<= 0 means under control of viewer.");
325   parameter->SetDefaultValue(0);                  325   parameter->SetDefaultValue(0);
326   fpCommand->SetParameter(parameter);             326   fpCommand->SetParameter(parameter);
327 }                                                 327 }
328                                                   328 
329 G4VisCommandGeometrySetForceCloud::~G4VisComma    329 G4VisCommandGeometrySetForceCloud::~G4VisCommandGeometrySetForceCloud()
330 {                                                 330 {
331   delete fpCommand;                               331   delete fpCommand;
332 }                                                 332 }
333                                                   333 
334 G4String                                          334 G4String
335 G4VisCommandGeometrySetForceCloud::GetCurrentV    335 G4VisCommandGeometrySetForceCloud::GetCurrentValue(G4UIcommand*)
336 {                                                 336 {
337   return "";                                      337   return "";
338 }                                                 338 }
339                                                   339 
340 void G4VisCommandGeometrySetForceCloud::SetNew    340 void G4VisCommandGeometrySetForceCloud::SetNewValue
341 (G4UIcommand*, G4String newValue)                 341 (G4UIcommand*, G4String newValue)
342 {                                                 342 {
343   G4String name, forceCloudString;                343   G4String name, forceCloudString;
344   G4int requestedDepth, nPoints;                  344   G4int requestedDepth, nPoints;
345   std::istringstream iss(newValue);               345   std::istringstream iss(newValue);
346   iss >> name >> requestedDepth >> forceCloudS    346   iss >> name >> requestedDepth >> forceCloudString >> nPoints;
347   G4bool forceCloud = G4UIcommand::ConvertToBo    347   G4bool forceCloud = G4UIcommand::ConvertToBool(forceCloudString);;
348                                                   348 
349   G4VisCommandGeometrySetForceCloudFunction se    349   G4VisCommandGeometrySetForceCloudFunction setForceCloud(forceCloud,nPoints);
350   Set(name, setForceCloud, requestedDepth);       350   Set(name, setForceCloud, requestedDepth);
351 }                                                 351 }
352                                                   352 
353 ////////////// /vis/geometry/set/forceLineSegm    353 ////////////// /vis/geometry/set/forceLineSegmentsPerCircle /////////////////////////
354                                                   354 
355 G4VisCommandGeometrySetForceLineSegmentsPerCir    355 G4VisCommandGeometrySetForceLineSegmentsPerCircle::G4VisCommandGeometrySetForceLineSegmentsPerCircle()
356 {                                                 356 {
357   G4bool omitable;                                357   G4bool omitable;
358   fpCommand = new G4UIcommand("/vis/geometry/s    358   fpCommand = new G4UIcommand("/vis/geometry/set/forceLineSegmentsPerCircle", this);
359   fpCommand->SetGuidance                          359   fpCommand->SetGuidance
360     ("Forces number of line segments per circl    360     ("Forces number of line segments per circle, the precision with which a"
361      "\ncurved line or surface is represented     361      "\ncurved line or surface is represented by a polygon or polyhedron,"
362      "\nregardless of the view parameters.");     362      "\nregardless of the view parameters.");
363   fpCommand->SetGuidance("\"all\" sets all log    363   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
364   fpCommand->SetGuidance                          364   fpCommand->SetGuidance
365     ("Optionally propagates down hierarchy to     365     ("Optionally propagates down hierarchy to given depth.");
366   G4UIparameter* parameter;                       366   G4UIparameter* parameter;
367   parameter = new G4UIparameter ("logical-volu    367   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
368   parameter->SetDefaultValue("all");              368   parameter->SetDefaultValue("all");
369   fpCommand->SetParameter(parameter);             369   fpCommand->SetParameter(parameter);
370   parameter = new G4UIparameter("depth", 'd',     370   parameter = new G4UIparameter("depth", 'd', omitable = true);
371   parameter->SetDefaultValue(0);                  371   parameter->SetDefaultValue(0);
372   parameter->SetGuidance                          372   parameter->SetGuidance
373     ("Depth of propagation (-1 means unlimited    373     ("Depth of propagation (-1 means unlimited depth).");
374   fpCommand->SetParameter(parameter);             374   fpCommand->SetParameter(parameter);
375   parameter = new G4UIparameter("lineSegmentsP    375   parameter = new G4UIparameter("lineSegmentsPerCircle", 'd', omitable = true);
376   parameter->SetGuidance                          376   parameter->SetGuidance
377     ("<= 0 means not forced, i.e., under contr    377     ("<= 0 means not forced, i.e., under control of viewer.");
378   parameter->SetDefaultValue(0);                  378   parameter->SetDefaultValue(0);
379   fpCommand->SetParameter(parameter);             379   fpCommand->SetParameter(parameter);
380 }                                                 380 }
381                                                   381 
382 G4VisCommandGeometrySetForceLineSegmentsPerCir    382 G4VisCommandGeometrySetForceLineSegmentsPerCircle::~G4VisCommandGeometrySetForceLineSegmentsPerCircle()
383 {                                                 383 {
384   delete fpCommand;                               384   delete fpCommand;
385 }                                                 385 }
386                                                   386 
387 G4String                                          387 G4String
388 G4VisCommandGeometrySetForceLineSegmentsPerCir    388 G4VisCommandGeometrySetForceLineSegmentsPerCircle::GetCurrentValue(G4UIcommand*)
389 {                                                 389 {
390   return "";                                      390   return "";
391 }                                                 391 }
392                                                   392 
393 void G4VisCommandGeometrySetForceLineSegmentsP    393 void G4VisCommandGeometrySetForceLineSegmentsPerCircle::SetNewValue
394 (G4UIcommand*, G4String newValue)                 394 (G4UIcommand*, G4String newValue)
395 {                                                 395 {
396   G4String name;                                  396   G4String name;
397   G4int requestedDepth;                           397   G4int requestedDepth;
398   G4int lineSegmentsPerCircle;                    398   G4int lineSegmentsPerCircle;
399   std::istringstream iss(newValue);               399   std::istringstream iss(newValue);
400   iss >> name >> requestedDepth >> lineSegment    400   iss >> name >> requestedDepth >> lineSegmentsPerCircle;
401                                                   401 
402   G4VisCommandGeometrySetForceLineSegmentsPerC    402   G4VisCommandGeometrySetForceLineSegmentsPerCircleFunction
403   setForceLineSegmentsPerCircle(lineSegmentsPe    403   setForceLineSegmentsPerCircle(lineSegmentsPerCircle);
404   Set(name, setForceLineSegmentsPerCircle, req    404   Set(name, setForceLineSegmentsPerCircle, requestedDepth);
405 }                                                 405 }
406                                                   406 
407 ////////////// /vis/geometry/set/forceSolid //    407 ////////////// /vis/geometry/set/forceSolid /////////////////////////
408                                                   408 
409 G4VisCommandGeometrySetForceSolid::G4VisComman    409 G4VisCommandGeometrySetForceSolid::G4VisCommandGeometrySetForceSolid()
410 {                                                 410 {
411   G4bool omitable;                                411   G4bool omitable;
412   fpCommand = new G4UIcommand("/vis/geometry/s    412   fpCommand = new G4UIcommand("/vis/geometry/set/forceSolid", this);
413   fpCommand->SetGuidance                          413   fpCommand->SetGuidance
414    ("Forces logical volume(s) always to be dra    414    ("Forces logical volume(s) always to be drawn solid (surface drawing),"
415     "\nregardless of the view parameters.");      415     "\nregardless of the view parameters.");
416   fpCommand->SetGuidance("\"all\" sets all log    416   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
417   fpCommand->SetGuidance                          417   fpCommand->SetGuidance
418     ("Optionally propagates down hierarchy to     418     ("Optionally propagates down hierarchy to given depth.");
419   G4UIparameter* parameter;                       419   G4UIparameter* parameter;
420   parameter = new G4UIparameter ("logical-volu    420   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
421   parameter->SetDefaultValue("all");              421   parameter->SetDefaultValue("all");
422   fpCommand->SetParameter(parameter);             422   fpCommand->SetParameter(parameter);
423   parameter = new G4UIparameter("depth", 'd',     423   parameter = new G4UIparameter("depth", 'd', omitable = true);
424   parameter->SetDefaultValue(0);                  424   parameter->SetDefaultValue(0);
425   parameter->SetGuidance                          425   parameter->SetGuidance
426     ("Depth of propagation (-1 means unlimited    426     ("Depth of propagation (-1 means unlimited depth).");
427   fpCommand->SetParameter(parameter);             427   fpCommand->SetParameter(parameter);
428   parameter = new G4UIparameter("force", 'b',     428   parameter = new G4UIparameter("force", 'b', omitable = true);
429   parameter->SetDefaultValue(true);               429   parameter->SetDefaultValue(true);
430   fpCommand->SetParameter(parameter);             430   fpCommand->SetParameter(parameter);
431 }                                                 431 }
432                                                   432 
433 G4VisCommandGeometrySetForceSolid::~G4VisComma    433 G4VisCommandGeometrySetForceSolid::~G4VisCommandGeometrySetForceSolid()
434 {                                                 434 {
435   delete fpCommand;                               435   delete fpCommand;
436 }                                                 436 }
437                                                   437 
438 G4String                                          438 G4String
439 G4VisCommandGeometrySetForceSolid::GetCurrentV    439 G4VisCommandGeometrySetForceSolid::GetCurrentValue(G4UIcommand*)
440 {                                                 440 {
441   return "";                                      441   return "";
442 }                                                 442 }
443                                                   443 
444 void G4VisCommandGeometrySetForceSolid::SetNew    444 void G4VisCommandGeometrySetForceSolid::SetNewValue
445 (G4UIcommand*, G4String newValue)                 445 (G4UIcommand*, G4String newValue)
446 {                                                 446 {
447   G4String name;                                  447   G4String name;
448   G4int requestedDepth;                           448   G4int requestedDepth;
449   G4String forceString;                           449   G4String forceString;
450   std::istringstream iss(newValue);               450   std::istringstream iss(newValue);
451   iss >> name >> requestedDepth >> forceString    451   iss >> name >> requestedDepth >> forceString;
452   G4bool force = G4UIcommand::ConvertToBool(fo    452   G4bool force = G4UIcommand::ConvertToBool(forceString);
453                                                   453 
454   G4VisCommandGeometrySetForceSolidFunction se    454   G4VisCommandGeometrySetForceSolidFunction setForceSolid(force);
455   Set(name, setForceSolid, requestedDepth);       455   Set(name, setForceSolid, requestedDepth);
456 }                                                 456 }
457                                                   457 
458 ////////////// /vis/geometry/set/forceWirefram    458 ////////////// /vis/geometry/set/forceWireframe /////////////////////////
459                                                   459 
460 G4VisCommandGeometrySetForceWireframe::G4VisCo    460 G4VisCommandGeometrySetForceWireframe::G4VisCommandGeometrySetForceWireframe()
461 {                                                 461 {
462   G4bool omitable;                                462   G4bool omitable;
463   fpCommand = new G4UIcommand("/vis/geometry/s    463   fpCommand = new G4UIcommand("/vis/geometry/set/forceWireframe", this);
464   fpCommand->SetGuidance                          464   fpCommand->SetGuidance
465    ("Forces logical volume(s) always to be dra    465    ("Forces logical volume(s) always to be drawn as wireframe,"
466     "\nregardless of the view parameters.");      466     "\nregardless of the view parameters.");
467   fpCommand->SetGuidance("\"all\" sets all log    467   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
468   fpCommand->SetGuidance                          468   fpCommand->SetGuidance
469     ("Optionally propagates down hierarchy to     469     ("Optionally propagates down hierarchy to given depth.");
470   G4UIparameter* parameter;                       470   G4UIparameter* parameter;
471   parameter = new G4UIparameter ("logical-volu    471   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
472   parameter->SetDefaultValue("all");              472   parameter->SetDefaultValue("all");
473   fpCommand->SetParameter(parameter);             473   fpCommand->SetParameter(parameter);
474   parameter = new G4UIparameter("depth", 'd',     474   parameter = new G4UIparameter("depth", 'd', omitable = true);
475   parameter->SetDefaultValue(0);                  475   parameter->SetDefaultValue(0);
476   parameter->SetGuidance                          476   parameter->SetGuidance
477     ("Depth of propagation (-1 means unlimited    477     ("Depth of propagation (-1 means unlimited depth).");
478   fpCommand->SetParameter(parameter);             478   fpCommand->SetParameter(parameter);
479   parameter = new G4UIparameter("forceWirefram    479   parameter = new G4UIparameter("forceWireframe", 'b', omitable = true);
480   parameter->SetDefaultValue(true);               480   parameter->SetDefaultValue(true);
481   fpCommand->SetParameter(parameter);             481   fpCommand->SetParameter(parameter);
482 }                                                 482 }
483                                                   483 
484 G4VisCommandGeometrySetForceWireframe::~G4VisC    484 G4VisCommandGeometrySetForceWireframe::~G4VisCommandGeometrySetForceWireframe()
485 {                                                 485 {
486   delete fpCommand;                               486   delete fpCommand;
487 }                                                 487 }
488                                                   488 
489 G4String                                          489 G4String
490 G4VisCommandGeometrySetForceWireframe::GetCurr    490 G4VisCommandGeometrySetForceWireframe::GetCurrentValue(G4UIcommand*)
491 {                                                 491 {
492   return "";                                      492   return "";
493 }                                                 493 }
494                                                   494 
495 void G4VisCommandGeometrySetForceWireframe::Se    495 void G4VisCommandGeometrySetForceWireframe::SetNewValue
496 (G4UIcommand*, G4String newValue)                 496 (G4UIcommand*, G4String newValue)
497 {                                                 497 {
498   G4String name;                                  498   G4String name;
499   G4int requestedDepth;                           499   G4int requestedDepth;
500   G4String forceWireframeString;                  500   G4String forceWireframeString;
501   std::istringstream iss(newValue);               501   std::istringstream iss(newValue);
502   iss >> name >> requestedDepth >> forceWirefr    502   iss >> name >> requestedDepth >> forceWireframeString;
503   G4bool forceWireframe = G4UIcommand::Convert    503   G4bool forceWireframe = G4UIcommand::ConvertToBool(forceWireframeString);
504                                                   504 
505   G4VisCommandGeometrySetForceWireframeFunctio    505   G4VisCommandGeometrySetForceWireframeFunction
506     setForceWireframe(forceWireframe);            506     setForceWireframe(forceWireframe);
507   Set(name, setForceWireframe, requestedDepth)    507   Set(name, setForceWireframe, requestedDepth);
508 }                                                 508 }
509                                                   509 
510 ////////////// /vis/geometry/set/lineStyle ///    510 ////////////// /vis/geometry/set/lineStyle /////////////////////////////////
511                                                   511 
512 G4VisCommandGeometrySetLineStyle::G4VisCommand    512 G4VisCommandGeometrySetLineStyle::G4VisCommandGeometrySetLineStyle()
513 {                                                 513 {
514   G4bool omitable;                                514   G4bool omitable;
515   fpCommand = new G4UIcommand("/vis/geometry/s    515   fpCommand = new G4UIcommand("/vis/geometry/set/lineStyle", this);
516   fpCommand->SetGuidance("Sets line style of l    516   fpCommand->SetGuidance("Sets line style of logical volume(s) drawing.");
517   fpCommand->SetGuidance("\"all\" sets all log    517   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
518   fpCommand->SetGuidance                          518   fpCommand->SetGuidance
519     ("Optionally propagates down hierarchy to     519     ("Optionally propagates down hierarchy to given depth.");
520   G4UIparameter* parameter;                       520   G4UIparameter* parameter;
521   parameter = new G4UIparameter ("logical-volu    521   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
522   parameter->SetDefaultValue("all");              522   parameter->SetDefaultValue("all");
523   fpCommand->SetParameter(parameter);             523   fpCommand->SetParameter(parameter);
524   parameter = new G4UIparameter("depth", 'd',     524   parameter = new G4UIparameter("depth", 'd', omitable = true);
525   parameter->SetDefaultValue(0);                  525   parameter->SetDefaultValue(0);
526   parameter->SetGuidance                          526   parameter->SetGuidance
527     ("Depth of propagation (-1 means unlimited    527     ("Depth of propagation (-1 means unlimited depth).");
528   fpCommand->SetParameter(parameter);             528   fpCommand->SetParameter(parameter);
529   parameter = new G4UIparameter("lineStyle", '    529   parameter = new G4UIparameter("lineStyle", 's', omitable = true);
530   parameter->SetParameterCandidates("unbroken     530   parameter->SetParameterCandidates("unbroken dashed dotted");
531   parameter->SetDefaultValue("unbroken");         531   parameter->SetDefaultValue("unbroken");
532   fpCommand->SetParameter(parameter);             532   fpCommand->SetParameter(parameter);
533 }                                                 533 }
534                                                   534 
535 G4VisCommandGeometrySetLineStyle::~G4VisComman    535 G4VisCommandGeometrySetLineStyle::~G4VisCommandGeometrySetLineStyle()
536 {                                                 536 {
537   delete fpCommand;                               537   delete fpCommand;
538 }                                                 538 }
539                                                   539 
540 G4String                                          540 G4String
541 G4VisCommandGeometrySetLineStyle::GetCurrentVa    541 G4VisCommandGeometrySetLineStyle::GetCurrentValue(G4UIcommand*)
542 {                                                 542 {
543   return "";                                      543   return "";
544 }                                                 544 }
545                                                   545 
546 void G4VisCommandGeometrySetLineStyle::SetNewV    546 void G4VisCommandGeometrySetLineStyle::SetNewValue
547 (G4UIcommand*, G4String newValue)                 547 (G4UIcommand*, G4String newValue)
548 {                                                 548 {
549   G4String name, lineStyleString;                 549   G4String name, lineStyleString;
550   G4int requestedDepth;                           550   G4int requestedDepth;
551   std::istringstream iss(newValue);               551   std::istringstream iss(newValue);
552   iss >> name >> requestedDepth >> lineStyleSt    552   iss >> name >> requestedDepth >> lineStyleString;
553   G4VisAttributes::LineStyle lineStyle = G4Vis    553   G4VisAttributes::LineStyle lineStyle = G4VisAttributes::unbroken;
554   if (lineStyleString == "unbroken") lineStyle    554   if (lineStyleString == "unbroken") lineStyle = G4VisAttributes::unbroken;
555   if (lineStyleString == "dashed") lineStyle =    555   if (lineStyleString == "dashed") lineStyle = G4VisAttributes::dashed;
556   if (lineStyleString == "dotted") lineStyle =    556   if (lineStyleString == "dotted") lineStyle = G4VisAttributes::dotted;
557                                                   557 
558   G4VisCommandGeometrySetLineStyleFunction set    558   G4VisCommandGeometrySetLineStyleFunction setLineStyle(lineStyle);
559   Set(name, setLineStyle, requestedDepth);        559   Set(name, setLineStyle, requestedDepth);
560 }                                                 560 }
561                                                   561 
562 ////////////// /vis/geometry/set/lineWidth ///    562 ////////////// /vis/geometry/set/lineWidth /////////////////////////////////
563                                                   563 
564 G4VisCommandGeometrySetLineWidth::G4VisCommand    564 G4VisCommandGeometrySetLineWidth::G4VisCommandGeometrySetLineWidth()
565 {                                                 565 {
566   G4bool omitable;                                566   G4bool omitable;
567   fpCommand = new G4UIcommand("/vis/geometry/s    567   fpCommand = new G4UIcommand("/vis/geometry/set/lineWidth", this);
568   fpCommand->SetGuidance("Sets line width of l    568   fpCommand->SetGuidance("Sets line width of logical volume(s) drawing.");
569   fpCommand->SetGuidance("\"all\" sets all log    569   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
570   fpCommand->SetGuidance                          570   fpCommand->SetGuidance
571     ("Optionally propagates down hierarchy to     571     ("Optionally propagates down hierarchy to given depth.");
572   G4UIparameter* parameter;                       572   G4UIparameter* parameter;
573   parameter = new G4UIparameter ("logical-volu    573   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
574   parameter->SetDefaultValue("all");              574   parameter->SetDefaultValue("all");
575   fpCommand->SetParameter(parameter);             575   fpCommand->SetParameter(parameter);
576   parameter = new G4UIparameter("depth", 'd',     576   parameter = new G4UIparameter("depth", 'd', omitable = true);
577   parameter->SetDefaultValue(0);                  577   parameter->SetDefaultValue(0);
578   parameter->SetGuidance                          578   parameter->SetGuidance
579     ("Depth of propagation (-1 means unlimited    579     ("Depth of propagation (-1 means unlimited depth).");
580   fpCommand->SetParameter(parameter);             580   fpCommand->SetParameter(parameter);
581   parameter = new G4UIparameter("lineWidth", '    581   parameter = new G4UIparameter("lineWidth", 'd', omitable = true);
582   parameter->SetDefaultValue(1.);                 582   parameter->SetDefaultValue(1.);
583   fpCommand->SetParameter(parameter);             583   fpCommand->SetParameter(parameter);
584 }                                                 584 }
585                                                   585 
586 G4VisCommandGeometrySetLineWidth::~G4VisComman    586 G4VisCommandGeometrySetLineWidth::~G4VisCommandGeometrySetLineWidth()
587 {                                                 587 {
588   delete fpCommand;                               588   delete fpCommand;
589 }                                                 589 }
590                                                   590 
591 G4String                                          591 G4String
592 G4VisCommandGeometrySetLineWidth::GetCurrentVa    592 G4VisCommandGeometrySetLineWidth::GetCurrentValue(G4UIcommand*)
593 {                                                 593 {
594   return "";                                      594   return "";
595 }                                                 595 }
596                                                   596 
597 void G4VisCommandGeometrySetLineWidth::SetNewV    597 void G4VisCommandGeometrySetLineWidth::SetNewValue
598 (G4UIcommand*, G4String newValue)                 598 (G4UIcommand*, G4String newValue)
599 {                                                 599 {
600   G4String name;                                  600   G4String name;
601   G4int requestedDepth;                           601   G4int requestedDepth;
602   G4double lineWidth;                             602   G4double lineWidth;
603   std::istringstream iss(newValue);               603   std::istringstream iss(newValue);
604   iss >> name >> requestedDepth >> lineWidth;     604   iss >> name >> requestedDepth >> lineWidth;
605                                                   605 
606   G4VisCommandGeometrySetLineWidthFunction set    606   G4VisCommandGeometrySetLineWidthFunction setLineWidth(lineWidth);
607   Set(name, setLineWidth, requestedDepth);        607   Set(name, setLineWidth, requestedDepth);
608 }                                                 608 }
609                                                   609 
610 ////////////// /vis/geometry/set/visibility //    610 ////////////// /vis/geometry/set/visibility ///////////////////////////////////////
611                                                   611 
612 G4VisCommandGeometrySetVisibility::G4VisComman    612 G4VisCommandGeometrySetVisibility::G4VisCommandGeometrySetVisibility()
613 {                                                 613 {
614   G4bool omitable;                                614   G4bool omitable;
615   fpCommand = new G4UIcommand("/vis/geometry/s    615   fpCommand = new G4UIcommand("/vis/geometry/set/visibility", this);
616   fpCommand->SetGuidance("Sets visibility of l    616   fpCommand->SetGuidance("Sets visibility of logical volume(s).");
617   fpCommand->SetGuidance("\"all\" sets all log    617   fpCommand->SetGuidance("\"all\" sets all logical volumes.");
618   fpCommand->SetGuidance                          618   fpCommand->SetGuidance
619     ("Optionally propagates down hierarchy to     619     ("Optionally propagates down hierarchy to given depth.");
620   G4UIparameter* parameter;                       620   G4UIparameter* parameter;
621   parameter = new G4UIparameter ("logical-volu    621   parameter = new G4UIparameter ("logical-volume-name", 's', omitable = true);
622   parameter->SetDefaultValue("all");              622   parameter->SetDefaultValue("all");
623   fpCommand->SetParameter(parameter);             623   fpCommand->SetParameter(parameter);
624   parameter = new G4UIparameter("depth", 'd',     624   parameter = new G4UIparameter("depth", 'd', omitable = true);
625   parameter->SetDefaultValue(0);                  625   parameter->SetDefaultValue(0);
626   parameter->SetGuidance                          626   parameter->SetGuidance
627     ("Depth of propagation (-1 means unlimited    627     ("Depth of propagation (-1 means unlimited depth).");
628   fpCommand->SetParameter(parameter);             628   fpCommand->SetParameter(parameter);
629   parameter = new G4UIparameter("visibility",     629   parameter = new G4UIparameter("visibility", 'b', omitable = true);
630   parameter->SetDefaultValue(true);               630   parameter->SetDefaultValue(true);
631   fpCommand->SetParameter(parameter);             631   fpCommand->SetParameter(parameter);
632 }                                                 632 }
633                                                   633 
634 G4VisCommandGeometrySetVisibility::~G4VisComma    634 G4VisCommandGeometrySetVisibility::~G4VisCommandGeometrySetVisibility()
635 {                                                 635 {
636   delete fpCommand;                               636   delete fpCommand;
637 }                                                 637 }
638                                                   638 
639 G4String G4VisCommandGeometrySetVisibility::Ge    639 G4String G4VisCommandGeometrySetVisibility::GetCurrentValue(G4UIcommand*)
640 {                                                 640 {
641   return "";                                      641   return "";
642 }                                                 642 }
643                                                   643 
644 void G4VisCommandGeometrySetVisibility::SetNew    644 void G4VisCommandGeometrySetVisibility::SetNewValue
645 (G4UIcommand*, G4String newValue)                 645 (G4UIcommand*, G4String newValue)
646 {                                                 646 {
647   G4String name;                                  647   G4String name;
648   G4int requestedDepth;                           648   G4int requestedDepth;
649   G4String visibilityString;                      649   G4String visibilityString;
650   std::istringstream iss(newValue);               650   std::istringstream iss(newValue);
651   iss >> name >> requestedDepth >> visibilityS    651   iss >> name >> requestedDepth >> visibilityString;
652   G4bool visibility = G4UIcommand::ConvertToBo    652   G4bool visibility = G4UIcommand::ConvertToBool(visibilityString);
653                                                   653 
654   G4VisCommandGeometrySetVisibilityFunction se    654   G4VisCommandGeometrySetVisibilityFunction setVisibility(visibility);
655   Set(name, setVisibility, requestedDepth);       655   Set(name, setVisibility, requestedDepth);
656                                                   656 
657   G4VViewer* pViewer = fpVisManager->GetCurren    657   G4VViewer* pViewer = fpVisManager->GetCurrentViewer();
658   if (pViewer) {                                  658   if (pViewer) {
659     const G4ViewParameters& viewParams = pView    659     const G4ViewParameters& viewParams = pViewer->GetViewParameters();
660     if (fpVisManager->GetVerbosity() >= G4VisM    660     if (fpVisManager->GetVerbosity() >= G4VisManager::warnings) {
661       if (!viewParams.IsCulling() ||              661       if (!viewParams.IsCulling() ||
662     !viewParams.IsCullingInvisible()) {           662     !viewParams.IsCullingInvisible()) {
663   G4warn <<                                       663   G4warn <<
664     "Culling must be on - \"/vis/viewer/set/cu    664     "Culling must be on - \"/vis/viewer/set/culling global true\" and"
665     "\n  \"/vis/viewer/set/culling invisible t    665     "\n  \"/vis/viewer/set/culling invisible true\" - to see effect."
666          << G4endl;                               666          << G4endl;
667       }                                           667       }
668     }                                             668     }
669   }                                               669   }
670 }                                                 670 }
671                                                   671 
672 void G4VisCommandGeometrySetVisibility::SetNew    672 void G4VisCommandGeometrySetVisibility::SetNewValueOnLV
673 (G4LogicalVolume* pLV, G4int requestedDepth,G4    673 (G4LogicalVolume* pLV, G4int requestedDepth,G4bool visibility)
674 {                                                 674 {
675   if (!pLV) return;                               675   if (!pLV) return;
676   G4VisCommandGeometrySetVisibilityFunction se    676   G4VisCommandGeometrySetVisibilityFunction setVisibility(visibility);
677   SetLVVisAtts(pLV, setVisibility, 0, requeste    677   SetLVVisAtts(pLV, setVisibility, 0, requestedDepth);
678                                                   678 
679   G4VViewer* pViewer = fpVisManager->GetCurren    679   G4VViewer* pViewer = fpVisManager->GetCurrentViewer();
680   if (pViewer) {                                  680   if (pViewer) {
681     G4UImanager::GetUIpointer()->ApplyCommand(    681     G4UImanager::GetUIpointer()->ApplyCommand("/vis/scene/notifyHandlers");
682     const G4ViewParameters& viewParams = pView    682     const G4ViewParameters& viewParams = pViewer->GetViewParameters();
683     if (fpVisManager->GetVerbosity() >= G4VisM    683     if (fpVisManager->GetVerbosity() >= G4VisManager::warnings) {
684       if (!viewParams.IsCulling() ||              684       if (!viewParams.IsCulling() ||
685     !viewParams.IsCullingInvisible()) {           685     !viewParams.IsCullingInvisible()) {
686   G4warn <<                                       686   G4warn <<
687     "Culling must be on - \"/vis/viewer/set/cu    687     "Culling must be on - \"/vis/viewer/set/culling global true\" and"
688     "\n  \"/vis/viewer/set/culling invisible t    688     "\n  \"/vis/viewer/set/culling invisible true\" - to see effect."
689          << G4endl;                               689          << G4endl;
690       }                                           690       }
691     }                                             691     }
692   }                                               692   }
693 }                                                 693 }
694                                                   694