Geant4 Cross Reference |
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 // $Id: G4VisCommandsGeometry.cc 66870 2013-01-14 23:38:59Z adotti $ 27 28 28 // /vis/geometry commands - John Allison 31st 29 // /vis/geometry commands - John Allison 31st January 2006 29 30 30 #include "G4VisCommandsGeometry.hh" 31 #include "G4VisCommandsGeometry.hh" 31 32 32 #include "G4UIcmdWithAString.hh" 33 #include "G4UIcmdWithAString.hh" 33 #include "G4VisManager.hh" 34 #include "G4VisManager.hh" 34 #include "G4LogicalVolumeStore.hh" 35 #include "G4LogicalVolumeStore.hh" 35 #include "G4UImanager.hh" 36 #include "G4UImanager.hh" 36 37 37 #define G4warn G4cout << 38 << 39 std::map<G4LogicalVolume*, const G4VisAttribut 38 std::map<G4LogicalVolume*, const G4VisAttributes*> 40 G4VVisCommandGeometry::fVisAttsMap; 39 G4VVisCommandGeometry::fVisAttsMap; 41 40 42 G4VVisCommandGeometry::~G4VVisCommandGeometry( 41 G4VVisCommandGeometry::~G4VVisCommandGeometry() 43 { 42 { 44 // Delete all vis atts that were "new". Do 43 // Delete all vis atts that were "new". Do something like "restore" 45 // without the "rebuild". 44 // without the "rebuild". 46 } 45 } 47 46 48 ////////////// /vis/geometry/list //////////// 47 ////////////// /vis/geometry/list /////////////////////////////////////// 49 48 50 G4VisCommandGeometryList::G4VisCommandGeometry 49 G4VisCommandGeometryList::G4VisCommandGeometryList() 51 { 50 { 52 G4bool omitable; 51 G4bool omitable; 53 fpCommand = new G4UIcmdWithAString("/vis/geo 52 fpCommand = new G4UIcmdWithAString("/vis/geometry/list", this); 54 fpCommand -> SetGuidance("Lists vis attribut 53 fpCommand -> SetGuidance("Lists vis attributes of logical volume(s)."); 55 fpCommand -> SetGuidance("\"all\" lists all 54 fpCommand -> SetGuidance("\"all\" lists all logical volumes."); 56 fpCommand -> SetParameterName("logical-volum 55 fpCommand -> SetParameterName("logical-volume-name", omitable = true); 57 fpCommand -> SetDefaultValue("all"); 56 fpCommand -> SetDefaultValue("all"); 58 } 57 } 59 58 60 G4VisCommandGeometryList::~G4VisCommandGeometr 59 G4VisCommandGeometryList::~G4VisCommandGeometryList() 61 { 60 { 62 delete fpCommand; 61 delete fpCommand; 63 } 62 } 64 63 65 G4String G4VisCommandGeometryList::GetCurrentV 64 G4String G4VisCommandGeometryList::GetCurrentValue(G4UIcommand*) 66 { 65 { 67 return ""; 66 return ""; 68 } 67 } 69 68 70 void G4VisCommandGeometryList::SetNewValue(G4U 69 void G4VisCommandGeometryList::SetNewValue(G4UIcommand*, G4String newValue) 71 { 70 { 72 G4LogicalVolumeStore *pLVStore = G4LogicalVo 71 G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance(); 73 G4bool found = false; 72 G4bool found = false; 74 for (size_t iLV = 0; iLV < pLVStore->size(); 73 for (size_t iLV = 0; iLV < pLVStore->size(); iLV++ ) { 75 G4LogicalVolume*pLV = (*pLVStore)[iLV]; 74 G4LogicalVolume*pLV = (*pLVStore)[iLV]; 76 const G4String& logVolName = pLV->GetName( 75 const G4String& logVolName = pLV->GetName(); 77 if (newValue == "all" || logVolName == new 76 if (newValue == "all" || logVolName == newValue) { 78 const G4VisAttributes* visAtts = pLV->Ge 77 const G4VisAttributes* visAtts = pLV->GetVisAttributes(); 79 G4cout << "\nLogical Volume \"" << pLV-> << 78 G4cout << "\nLogical Volume \"" << pLV->GetName() 80 if (visAtts) { << 79 << "\": vis attributes:\n" << *visAtts 81 G4cout << '\n' << *visAtts; << 80 << G4endl; 82 } else { << 83 G4cout << " no vis attributes"; << 84 } << 85 G4cout << G4endl; << 86 } 81 } 87 if (logVolName == newValue) found = true; 82 if (logVolName == newValue) found = true; 88 } 83 } 89 if (newValue != "all" && !found) { 84 if (newValue != "all" && !found) { 90 if (fpVisManager->GetVerbosity() >= G4VisM 85 if (fpVisManager->GetVerbosity() >= G4VisManager::errors) { 91 G4warn << "ERROR: Logical volume \"" << << 86 G4cout << "ERROR: Logical volume \"" << newValue 92 << "\" not found in logical volume stor 87 << "\" not found in logical volume store." << G4endl; 93 } 88 } 94 return; 89 return; 95 } 90 } 96 } 91 } 97 92 98 ////////////// /vis/geometry/restore ///////// 93 ////////////// /vis/geometry/restore /////////////////////////////////////// 99 94 100 G4VisCommandGeometryRestore::G4VisCommandGeome 95 G4VisCommandGeometryRestore::G4VisCommandGeometryRestore() 101 { 96 { 102 G4bool omitable; 97 G4bool omitable; 103 fpCommand = new G4UIcmdWithAString("/vis/geo 98 fpCommand = new G4UIcmdWithAString("/vis/geometry/restore", this); 104 fpCommand -> SetGuidance("Restores vis attri 99 fpCommand -> SetGuidance("Restores vis attributes of logical volume(s)."); 105 fpCommand -> SetParameterName("logical-volum 100 fpCommand -> SetParameterName("logical-volume-name", omitable = true); 106 fpCommand -> SetDefaultValue("all"); 101 fpCommand -> SetDefaultValue("all"); 107 } 102 } 108 103 109 G4VisCommandGeometryRestore::~G4VisCommandGeom 104 G4VisCommandGeometryRestore::~G4VisCommandGeometryRestore() 110 { 105 { 111 delete fpCommand; 106 delete fpCommand; 112 } 107 } 113 108 114 G4String G4VisCommandGeometryRestore::GetCurre 109 G4String G4VisCommandGeometryRestore::GetCurrentValue(G4UIcommand*) 115 { 110 { 116 return ""; 111 return ""; 117 } 112 } 118 113 119 void G4VisCommandGeometryRestore::SetNewValue( 114 void G4VisCommandGeometryRestore::SetNewValue(G4UIcommand*, G4String newValue) 120 { 115 { 121 G4VisManager::Verbosity verbosity = fpVisMan 116 G4VisManager::Verbosity verbosity = fpVisManager->GetVerbosity(); 122 G4LogicalVolumeStore *pLVStore = G4LogicalVo 117 G4LogicalVolumeStore *pLVStore = G4LogicalVolumeStore::GetInstance(); 123 size_t nLV = pLVStore->size(); 118 size_t nLV = pLVStore->size(); 124 size_t iLV; 119 size_t iLV; 125 G4LogicalVolume* pLV = 0; 120 G4LogicalVolume* pLV = 0; 126 G4bool found = false; 121 G4bool found = false; 127 for (iLV = 0; iLV < nLV; iLV++ ) { 122 for (iLV = 0; iLV < nLV; iLV++ ) { 128 pLV = (*pLVStore)[iLV]; 123 pLV = (*pLVStore)[iLV]; 129 const G4String& logVolName = pLV->GetName( 124 const G4String& logVolName = pLV->GetName(); 130 if (logVolName == newValue) found = true; 125 if (logVolName == newValue) found = true; 131 if (newValue == "all" || logVolName == new 126 if (newValue == "all" || logVolName == newValue) { 132 VisAttsMapIterator i = fVisAttsMap.find( 127 VisAttsMapIterator i = fVisAttsMap.find(pLV); 133 if (i != fVisAttsMap.end()) { 128 if (i != fVisAttsMap.end()) { 134 const G4VisAttributes* newVisAtts = pLV->Get 129 const G4VisAttributes* newVisAtts = pLV->GetVisAttributes(); 135 const G4VisAttributes* oldVisAtts = i->secon 130 const G4VisAttributes* oldVisAtts = i->second; 136 pLV->SetVisAttributes(oldVisAtts); 131 pLV->SetVisAttributes(oldVisAtts); 137 if (verbosity >= G4VisManager::confirmations 132 if (verbosity >= G4VisManager::confirmations) { 138 G4cout << "\nLogical Volume \"" << pLV->Ge 133 G4cout << "\nLogical Volume \"" << pLV->GetName() 139 << "\": re-setting vis attributes:\nwas: 134 << "\": re-setting vis attributes:\nwas: " << *newVisAtts 140 << "\nnow: " << *oldVisAtts 135 << "\nnow: " << *oldVisAtts 141 << G4endl; 136 << G4endl; 142 } 137 } 143 } 138 } 144 } 139 } 145 } 140 } 146 if (newValue != "all" && !found) { 141 if (newValue != "all" && !found) { 147 if (verbosity >= G4VisManager::errors) { 142 if (verbosity >= G4VisManager::errors) { 148 G4warn << "ERROR: Logical volume \"" << << 143 G4cout << "ERROR: Logical volume \"" << newValue 149 << "\" not found in logical volume stor 144 << "\" not found in logical volume store." << G4endl; 150 } 145 } 151 return; 146 return; 152 } 147 } 153 if (fpVisManager->GetCurrentViewer()) { 148 if (fpVisManager->GetCurrentViewer()) { 154 G4UImanager::GetUIpointer()->ApplyCommand( 149 G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/rebuild"); 155 } 150 } 156 } 151 } 157 152