Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 28 // /vis/geometry commands - John Allison 31st 29 30 #include "G4VisCommandsGeometry.hh" 31 32 #include "G4UIcmdWithAString.hh" 33 #include "G4VisManager.hh" 34 #include "G4LogicalVolumeStore.hh" 35 #include "G4UImanager.hh" 36 37 #define G4warn G4cout 38 39 std::map<G4LogicalVolume*, const G4VisAttribut 40 G4VVisCommandGeometry::fVisAttsMap; 41 42 G4VVisCommandGeometry::~G4VVisCommandGeometry( 43 { 44 // Delete all vis atts that were "new". Do 45 // without the "rebuild". 46 } 47 48 ////////////// /vis/geometry/list //////////// 49 50 G4VisCommandGeometryList::G4VisCommandGeometry 51 { 52 G4bool omitable; 53 fpCommand = new G4UIcmdWithAString("/vis/geo 54 fpCommand -> SetGuidance("Lists vis attribut 55 fpCommand -> SetGuidance("\"all\" lists all 56 fpCommand -> SetParameterName("logical-volum 57 fpCommand -> SetDefaultValue("all"); 58 } 59 60 G4VisCommandGeometryList::~G4VisCommandGeometr 61 { 62 delete fpCommand; 63 } 64 65 G4String G4VisCommandGeometryList::GetCurrentV 66 { 67 return ""; 68 } 69 70 void G4VisCommandGeometryList::SetNewValue(G4U 71 { 72 G4LogicalVolumeStore *pLVStore = G4LogicalVo 73 G4bool found = false; 74 for (size_t iLV = 0; iLV < pLVStore->size(); 75 G4LogicalVolume*pLV = (*pLVStore)[iLV]; 76 const G4String& logVolName = pLV->GetName( 77 if (newValue == "all" || logVolName == new 78 const G4VisAttributes* visAtts = pLV->Ge 79 G4cout << "\nLogical Volume \"" << pLV-> 80 if (visAtts) { 81 G4cout << '\n' << *visAtts; 82 } else { 83 G4cout << " no vis attributes"; 84 } 85 G4cout << G4endl; 86 } 87 if (logVolName == newValue) found = true; 88 } 89 if (newValue != "all" && !found) { 90 if (fpVisManager->GetVerbosity() >= G4VisM 91 G4warn << "ERROR: Logical volume \"" << 92 << "\" not found in logical volume stor 93 } 94 return; 95 } 96 } 97 98 ////////////// /vis/geometry/restore ///////// 99 100 G4VisCommandGeometryRestore::G4VisCommandGeome 101 { 102 G4bool omitable; 103 fpCommand = new G4UIcmdWithAString("/vis/geo 104 fpCommand -> SetGuidance("Restores vis attri 105 fpCommand -> SetParameterName("logical-volum 106 fpCommand -> SetDefaultValue("all"); 107 } 108 109 G4VisCommandGeometryRestore::~G4VisCommandGeom 110 { 111 delete fpCommand; 112 } 113 114 G4String G4VisCommandGeometryRestore::GetCurre 115 { 116 return ""; 117 } 118 119 void G4VisCommandGeometryRestore::SetNewValue( 120 { 121 G4VisManager::Verbosity verbosity = fpVisMan 122 G4LogicalVolumeStore *pLVStore = G4LogicalVo 123 size_t nLV = pLVStore->size(); 124 size_t iLV; 125 G4LogicalVolume* pLV = 0; 126 G4bool found = false; 127 for (iLV = 0; iLV < nLV; iLV++ ) { 128 pLV = (*pLVStore)[iLV]; 129 const G4String& logVolName = pLV->GetName( 130 if (logVolName == newValue) found = true; 131 if (newValue == "all" || logVolName == new 132 VisAttsMapIterator i = fVisAttsMap.find( 133 if (i != fVisAttsMap.end()) { 134 const G4VisAttributes* newVisAtts = pLV->Get 135 const G4VisAttributes* oldVisAtts = i->secon 136 pLV->SetVisAttributes(oldVisAtts); 137 if (verbosity >= G4VisManager::confirmations 138 G4cout << "\nLogical Volume \"" << pLV->Ge 139 << "\": re-setting vis attributes:\nwas: 140 << "\nnow: " << *oldVisAtts 141 << G4endl; 142 } 143 } 144 } 145 } 146 if (newValue != "all" && !found) { 147 if (verbosity >= G4VisManager::errors) { 148 G4warn << "ERROR: Logical volume \"" << 149 << "\" not found in logical volume stor 150 } 151 return; 152 } 153 if (fpVisManager->GetCurrentViewer()) { 154 G4UImanager::GetUIpointer()->ApplyCommand( 155 } 156 } 157