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 // ------------------------------------------- 27 // -------------------------------------------------------------- 28 // GEANT 4 - Brachytherapy exa 28 // GEANT 4 - Brachytherapy example 29 // ------------------------------------------- 29 // -------------------------------------------------------------- 30 // 30 // 31 // Code developed by: 31 // Code developed by: 32 // D. Cutajar, A. Le 32 // D. Cutajar, A. Le 33 // 33 // 34 // **************************************** 34 // ******************************************** 35 // * 35 // * * 36 // * BrachyDetectorConstructionOncura6711. 36 // * BrachyDetectorConstructionOncura6711.cc * 37 // * 37 // * * 38 // **************************************** 38 // ******************************************** 39 // 39 // 40 // 40 // 41 // 41 // 42 #include "BrachyDetectorConstructionOncura6711 42 #include "BrachyDetectorConstructionOncura6711.hh" 43 #include "globals.hh" 43 #include "globals.hh" 44 #include "G4SystemOfUnits.hh" 44 #include "G4SystemOfUnits.hh" 45 #include "G4Sphere.hh" 45 #include "G4Sphere.hh" 46 #include "G4RunManager.hh" 46 #include "G4RunManager.hh" 47 #include "G4Box.hh" 47 #include "G4Box.hh" 48 #include "G4Tubs.hh" 48 #include "G4Tubs.hh" 49 #include "G4LogicalVolume.hh" 49 #include "G4LogicalVolume.hh" 50 #include "G4ThreeVector.hh" 50 #include "G4ThreeVector.hh" 51 #include "G4PVPlacement.hh" 51 #include "G4PVPlacement.hh" 52 #include "G4Transform3D.hh" 52 #include "G4Transform3D.hh" 53 #include "G4RotationMatrix.hh" 53 #include "G4RotationMatrix.hh" 54 #include "G4TransportationManager.hh" 54 #include "G4TransportationManager.hh" 55 #include "G4NistManager.hh" 55 #include "G4NistManager.hh" 56 #include "G4VisAttributes.hh" 56 #include "G4VisAttributes.hh" 57 #include "G4Colour.hh" 57 #include "G4Colour.hh" 58 58 59 BrachyDetectorConstructionOncura6711::BrachyDe 59 BrachyDetectorConstructionOncura6711::BrachyDetectorConstructionOncura6711() 60 : 60 : 61 fOncuraCapsule(nullptr), fOncuraCapsuleLog( 61 fOncuraCapsule(nullptr), fOncuraCapsuleLog(nullptr), 62 fOncuraCapsulePhys(nullptr), 62 fOncuraCapsulePhys(nullptr), 63 fOncuraCapsuleTip1(nullptr), fOncuraCapsule 63 fOncuraCapsuleTip1(nullptr), fOncuraCapsuleTip1Log(nullptr), 64 fOncuraCapsuleTip1Phys(nullptr), 64 fOncuraCapsuleTip1Phys(nullptr), 65 fOncuraCapsuleTip2(nullptr), fOncuraCapsule 65 fOncuraCapsuleTip2(nullptr), fOncuraCapsuleTip2Log(nullptr), 66 fOncuraCapsuleTip2Phys(nullptr), 66 fOncuraCapsuleTip2Phys(nullptr), 67 fOncuraAirGap(nullptr), fOncuraAirGapLog(nu 67 fOncuraAirGap(nullptr), fOncuraAirGapLog(nullptr), 68 fOncuraAirGapPhys(nullptr), 68 fOncuraAirGapPhys(nullptr), 69 fOncuraSilverCore(nullptr), fOncuraSilverCo 69 fOncuraSilverCore(nullptr), fOncuraSilverCoreLog(nullptr), 70 fOncuraSilverCorePhys(nullptr), 70 fOncuraSilverCorePhys(nullptr), 71 fOncuraCapsuleShellVisAtt(nullptr), fOncura 71 fOncuraCapsuleShellVisAtt(nullptr), fOncuraCapsuleTipVisAtt(nullptr), 72 fOncuraSilverCoreVisAtt(nullptr) 72 fOncuraSilverCoreVisAtt(nullptr) 73 {} 73 {} 74 74 75 void BrachyDetectorConstructionOncura6711::Con 75 void BrachyDetectorConstructionOncura6711::ConstructOncura6711(G4VPhysicalVolume* mother) 76 { 76 { 77 G4Colour red (1.0, 0.0, 0.0) ; 77 G4Colour red (1.0, 0.0, 0.0) ; 78 G4Colour magenta (1.0, 0.0, 1.0) ; 78 G4Colour magenta (1.0, 0.0, 1.0) ; 79 79 80 G4NistManager* nist = G4NistManager::Instance( 80 G4NistManager* nist = G4NistManager::Instance(); 81 G4Material* titanium = nist -> FindOrBuildMate 81 G4Material* titanium = nist -> FindOrBuildMaterial("G4_Ti"); 82 G4Material* air = nist -> FindOrBuildMaterial( 82 G4Material* air = nist -> FindOrBuildMaterial("G4_AIR"); 83 G4Material* silver = nist -> FindOrBuildMateri 83 G4Material* silver = nist -> FindOrBuildMaterial("G4_Ag"); 84 84 85 //Capsule shell 85 //Capsule shell 86 fOncuraCapsule = new G4Tubs("OncuraCapsule",0, 86 fOncuraCapsule = new G4Tubs("OncuraCapsule",0,0.4*mm,1.875*mm,0.*deg,360.*deg); 87 fOncuraCapsuleLog = new G4LogicalVolume(fOncur 87 fOncuraCapsuleLog = new G4LogicalVolume(fOncuraCapsule,titanium,"OncuraCapsuleLog", nullptr,nullptr,nullptr); 88 fOncuraCapsulePhys = new G4PVPlacement(nullptr 88 fOncuraCapsulePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 89 "OncuraCapsulePhys", fOncura 89 "OncuraCapsulePhys", fOncuraCapsuleLog, 90 mother, false, 0, true); 90 mother, false, 0, true); 91 91 92 //Capsule tips 92 //Capsule tips 93 fOncuraCapsuleTip1 = new G4Sphere("OncuraCapsu 93 fOncuraCapsuleTip1 = new G4Sphere("OncuraCapsuleTip1", 0, 0.4*mm, 0., 360*deg, 0., 90*deg); 94 fOncuraCapsuleTip1Log = new G4LogicalVolume(fO 94 fOncuraCapsuleTip1Log = new G4LogicalVolume(fOncuraCapsuleTip1, titanium, "OncuraCapsuleTip1Log",nullptr,nullptr,nullptr); 95 fOncuraCapsuleTip1Phys = new G4PVPlacement(nul 95 fOncuraCapsuleTip1Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,1.875*mm), 96 "OncuraCapsuleTip1Phys", fOncu 96 "OncuraCapsuleTip1Phys", fOncuraCapsuleTip1Log, 97 mother, false, 97 mother, false, 98 0, true); 98 0, true); 99 99 100 fOncuraCapsuleTip2 = new G4Sphere("OncuraCapsu 100 fOncuraCapsuleTip2 = new G4Sphere("OncuraCapsuleTip2", 0, 0.4*mm, 0., 360*deg, 90*deg, 90*deg); 101 fOncuraCapsuleTip2Log = new G4LogicalVolume(fO 101 fOncuraCapsuleTip2Log = new G4LogicalVolume(fOncuraCapsuleTip2, titanium, "OncuraCapsuleTip2Log", nullptr,nullptr,nullptr); 102 fOncuraCapsuleTip2Phys = new G4PVPlacement(nul 102 fOncuraCapsuleTip2Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,-1.875*mm), 103 "OncuraCapsuleTip2Phys", fOncu 103 "OncuraCapsuleTip2Phys", fOncuraCapsuleTip2Log, 104 mother, false, 104 mother, false, 105 0, true); 105 0, true); 106 106 107 //Air gap 107 //Air gap 108 fOncuraAirGap = new G4Tubs("OncuraAirGap",0,0. 108 fOncuraAirGap = new G4Tubs("OncuraAirGap",0,0.33*mm,1.825*mm,0.*deg,360.*deg); 109 fOncuraAirGapLog = new G4LogicalVolume(fOncura 109 fOncuraAirGapLog = new G4LogicalVolume(fOncuraAirGap, air, "OncuraAirGapLog"); 110 fOncuraAirGapPhys = new G4PVPlacement(nullptr, 110 fOncuraAirGapPhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 111 "OncuraAirGapP 111 "OncuraAirGapPhys", fOncuraAirGapLog, 112 fOncuraCapsule 112 fOncuraCapsulePhys, false, 113 0, true); 113 0, true); 114 114 115 //Silver core 115 //Silver core 116 fOncuraSilverCore = new G4Tubs("OncuraSilverCo 116 fOncuraSilverCore = new G4Tubs("OncuraSilverCore",0,0.25*mm,1.4*mm,0.*deg,360.*deg); 117 fOncuraSilverCoreLog = new G4LogicalVolume(fOn 117 fOncuraSilverCoreLog = new G4LogicalVolume(fOncuraSilverCore, silver, "silverCoreLog"); 118 fOncuraSilverCorePhys = new G4PVPlacement(null 118 fOncuraSilverCorePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 119 "OncuraSilverCorePhys", fOncur 119 "OncuraSilverCorePhys", fOncuraSilverCoreLog, 120 fOncuraAirGapP 120 fOncuraAirGapPhys, false, 121 0, true); 121 0, true); 122 122 123 fOncuraCapsuleShellVisAtt = new G4VisAttribute 123 fOncuraCapsuleShellVisAtt = new G4VisAttributes(red); 124 fOncuraCapsuleShellVisAtt -> SetVisibility(tru 124 fOncuraCapsuleShellVisAtt -> SetVisibility(true); 125 fOncuraCapsuleShellVisAtt -> SetForceWireframe 125 fOncuraCapsuleShellVisAtt -> SetForceWireframe(true); 126 fOncuraCapsuleLog -> SetVisAttributes(fOncuraC 126 fOncuraCapsuleLog -> SetVisAttributes(fOncuraCapsuleShellVisAtt); 127 127 128 fOncuraCapsuleTipVisAtt = new G4VisAttributes( 128 fOncuraCapsuleTipVisAtt = new G4VisAttributes(red); 129 fOncuraCapsuleTipVisAtt -> SetVisibility(true) 129 fOncuraCapsuleTipVisAtt -> SetVisibility(true); 130 fOncuraCapsuleTipVisAtt -> SetForceSolid(true) 130 fOncuraCapsuleTipVisAtt -> SetForceSolid(true); 131 fOncuraCapsuleTip1Log -> SetVisAttributes(fOnc 131 fOncuraCapsuleTip1Log -> SetVisAttributes(fOncuraCapsuleTipVisAtt); 132 fOncuraCapsuleTip2Log -> SetVisAttributes(fOnc 132 fOncuraCapsuleTip2Log -> SetVisAttributes(fOncuraCapsuleTipVisAtt); 133 133 134 fOncuraSilverCoreVisAtt = new G4VisAttributes( 134 fOncuraSilverCoreVisAtt = new G4VisAttributes(magenta); 135 fOncuraSilverCoreVisAtt -> SetVisibility(true) 135 fOncuraSilverCoreVisAtt -> SetVisibility(true); 136 fOncuraSilverCoreVisAtt -> SetForceSolid(true) 136 fOncuraSilverCoreVisAtt -> SetForceSolid(true); 137 fOncuraSilverCoreLog -> SetVisAttributes(fOncu 137 fOncuraSilverCoreLog -> SetVisAttributes(fOncuraSilverCoreVisAtt); 138 } 138 } 139 139 140 void BrachyDetectorConstructionOncura6711::Cle 140 void BrachyDetectorConstructionOncura6711::CleanOncura6711() 141 { 141 { 142 delete fOncuraSilverCoreVisAtt; 142 delete fOncuraSilverCoreVisAtt; 143 fOncuraSilverCoreVisAtt = nullptr; 143 fOncuraSilverCoreVisAtt = nullptr; 144 144 145 delete fOncuraCapsuleTipVisAtt; 145 delete fOncuraCapsuleTipVisAtt; 146 fOncuraCapsuleTipVisAtt = nullptr; 146 fOncuraCapsuleTipVisAtt = nullptr; 147 147 148 delete fOncuraCapsuleShellVisAtt; 148 delete fOncuraCapsuleShellVisAtt; 149 fOncuraCapsuleShellVisAtt = nullptr; 149 fOncuraCapsuleShellVisAtt = nullptr; 150 150 151 delete fOncuraSilverCorePhys; 151 delete fOncuraSilverCorePhys; 152 fOncuraSilverCorePhys = nullptr; 152 fOncuraSilverCorePhys = nullptr; 153 153 154 delete fOncuraSilverCoreLog; 154 delete fOncuraSilverCoreLog; 155 fOncuraSilverCoreLog = nullptr; 155 fOncuraSilverCoreLog = nullptr; 156 156 157 delete fOncuraSilverCore; 157 delete fOncuraSilverCore; 158 fOncuraSilverCore = nullptr; 158 fOncuraSilverCore = nullptr; 159 159 160 delete fOncuraAirGapPhys; 160 delete fOncuraAirGapPhys; 161 fOncuraAirGapPhys = nullptr; 161 fOncuraAirGapPhys = nullptr; 162 162 163 delete fOncuraAirGapLog; 163 delete fOncuraAirGapLog; 164 fOncuraAirGapLog = nullptr; 164 fOncuraAirGapLog = nullptr; 165 165 166 delete fOncuraAirGap; 166 delete fOncuraAirGap; 167 fOncuraAirGap = nullptr; 167 fOncuraAirGap = nullptr; 168 168 169 delete fOncuraCapsuleTip2Phys; 169 delete fOncuraCapsuleTip2Phys; 170 fOncuraCapsuleTip2Phys = nullptr; 170 fOncuraCapsuleTip2Phys = nullptr; 171 171 172 delete fOncuraCapsuleTip2Log; 172 delete fOncuraCapsuleTip2Log; 173 fOncuraCapsuleTip2Log = nullptr; 173 fOncuraCapsuleTip2Log = nullptr; 174 174 175 delete fOncuraCapsuleTip2; 175 delete fOncuraCapsuleTip2; 176 fOncuraCapsuleTip2 = nullptr; 176 fOncuraCapsuleTip2 = nullptr; 177 177 178 delete fOncuraCapsuleTip1Phys; 178 delete fOncuraCapsuleTip1Phys; 179 fOncuraCapsuleTip1Phys = nullptr; 179 fOncuraCapsuleTip1Phys = nullptr; 180 180 181 delete fOncuraCapsuleTip1Log; 181 delete fOncuraCapsuleTip1Log; 182 fOncuraCapsuleTip1Log = nullptr; 182 fOncuraCapsuleTip1Log = nullptr; 183 183 184 delete fOncuraCapsuleTip1; 184 delete fOncuraCapsuleTip1; 185 fOncuraCapsuleTip1 = nullptr; 185 fOncuraCapsuleTip1 = nullptr; 186 186 187 delete fOncuraCapsulePhys; 187 delete fOncuraCapsulePhys; 188 fOncuraCapsulePhys = nullptr; 188 fOncuraCapsulePhys = nullptr; 189 189 190 delete fOncuraCapsuleLog; 190 delete fOncuraCapsuleLog; 191 fOncuraCapsuleLog = nullptr; 191 fOncuraCapsuleLog = nullptr; 192 192 193 delete fOncuraCapsule; 193 delete fOncuraCapsule; 194 fOncuraCapsule = nullptr; 194 fOncuraCapsule = nullptr; 195 195 196 G4RunManager::GetRunManager() -> GeometryHasB 196 G4RunManager::GetRunManager() -> GeometryHasBeenModified(); 197 } 197 } 198 198