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 << 43 #include "globals.hh" 42 #include "globals.hh" 44 #include "G4SystemOfUnits.hh" 43 #include "G4SystemOfUnits.hh" >> 44 #include "BrachyDetectorConstructionOncura6711.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 "BrachyMaterial.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 fMat = new BrachyMaterial(); >> 75 } >> 76 >> 77 BrachyDetectorConstructionOncura6711::~BrachyDetectorConstructionOncura6711() >> 78 { >> 79 delete fMat; >> 80 } 74 81 75 void BrachyDetectorConstructionOncura6711::Con 82 void BrachyDetectorConstructionOncura6711::ConstructOncura6711(G4VPhysicalVolume* mother) 76 { 83 { 77 G4Colour red (1.0, 0.0, 0.0) ; 84 G4Colour red (1.0, 0.0, 0.0) ; 78 G4Colour magenta (1.0, 0.0, 1.0) ; 85 G4Colour magenta (1.0, 0.0, 1.0) ; 79 86 80 G4NistManager* nist = G4NistManager::Instance( << 87 G4Material* titaniumMat = fMat -> GetMat("titanium"); 81 G4Material* titanium = nist -> FindOrBuildMate << 88 G4Material* airMat = fMat -> GetMat("Air"); 82 G4Material* air = nist -> FindOrBuildMaterial( << 89 G4Material* silverMat = fMat -> GetMat("Silver"); 83 G4Material* silver = nist -> FindOrBuildMateri << 84 90 85 //Capsule shell 91 //Capsule shell 86 fOncuraCapsule = new G4Tubs("OncuraCapsule",0, 92 fOncuraCapsule = new G4Tubs("OncuraCapsule",0,0.4*mm,1.875*mm,0.*deg,360.*deg); 87 fOncuraCapsuleLog = new G4LogicalVolume(fOncur << 93 fOncuraCapsuleLog = new G4LogicalVolume(fOncuraCapsule,titaniumMat,"OncuraCapsuleLog", 0,0,0); 88 fOncuraCapsulePhys = new G4PVPlacement(nullptr 94 fOncuraCapsulePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 89 "OncuraCapsulePhys", fOncura 95 "OncuraCapsulePhys", fOncuraCapsuleLog, 90 mother, false, 0, true); 96 mother, false, 0, true); 91 97 92 //Capsule tips 98 //Capsule tips 93 fOncuraCapsuleTip1 = new G4Sphere("OncuraCapsu 99 fOncuraCapsuleTip1 = new G4Sphere("OncuraCapsuleTip1", 0, 0.4*mm, 0., 360*deg, 0., 90*deg); 94 fOncuraCapsuleTip1Log = new G4LogicalVolume(fO << 100 fOncuraCapsuleTip1Log = new G4LogicalVolume(fOncuraCapsuleTip1, titaniumMat, "OncuraCapsuleTip1Log",0,0,0); 95 fOncuraCapsuleTip1Phys = new G4PVPlacement(nul 101 fOncuraCapsuleTip1Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,1.875*mm), 96 "OncuraCapsuleTip1Phys", fOncu 102 "OncuraCapsuleTip1Phys", fOncuraCapsuleTip1Log, 97 mother, false, 103 mother, false, 98 0, true); 104 0, true); 99 105 100 fOncuraCapsuleTip2 = new G4Sphere("OncuraCapsu 106 fOncuraCapsuleTip2 = new G4Sphere("OncuraCapsuleTip2", 0, 0.4*mm, 0., 360*deg, 90*deg, 90*deg); 101 fOncuraCapsuleTip2Log = new G4LogicalVolume(fO << 107 fOncuraCapsuleTip2Log = new G4LogicalVolume(fOncuraCapsuleTip2, titaniumMat, "OncuraCapsuleTip2Log",0,0,0); 102 fOncuraCapsuleTip2Phys = new G4PVPlacement(nul 108 fOncuraCapsuleTip2Phys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,-1.875*mm), 103 "OncuraCapsuleTip2Phys", fOncu 109 "OncuraCapsuleTip2Phys", fOncuraCapsuleTip2Log, 104 mother, false, 110 mother, false, 105 0, true); 111 0, true); 106 112 107 //Air gap 113 //Air gap 108 fOncuraAirGap = new G4Tubs("OncuraAirGap",0,0. 114 fOncuraAirGap = new G4Tubs("OncuraAirGap",0,0.33*mm,1.825*mm,0.*deg,360.*deg); 109 fOncuraAirGapLog = new G4LogicalVolume(fOncura << 115 fOncuraAirGapLog = new G4LogicalVolume(fOncuraAirGap, airMat, "OncuraAirGapLog"); 110 fOncuraAirGapPhys = new G4PVPlacement(nullptr, 116 fOncuraAirGapPhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 111 "OncuraAirGapP 117 "OncuraAirGapPhys", fOncuraAirGapLog, 112 fOncuraCapsule 118 fOncuraCapsulePhys, false, 113 0, true); 119 0, true); 114 120 115 //Silver core 121 //Silver core 116 fOncuraSilverCore = new G4Tubs("OncuraSilverCo 122 fOncuraSilverCore = new G4Tubs("OncuraSilverCore",0,0.25*mm,1.4*mm,0.*deg,360.*deg); 117 fOncuraSilverCoreLog = new G4LogicalVolume(fOn << 123 fOncuraSilverCoreLog = new G4LogicalVolume(fOncuraSilverCore, silverMat, "silverCoreLog"); 118 fOncuraSilverCorePhys = new G4PVPlacement(null 124 fOncuraSilverCorePhys = new G4PVPlacement(nullptr, G4ThreeVector(0,0,0), 119 "OncuraSilverCorePhys", fOncur 125 "OncuraSilverCorePhys", fOncuraSilverCoreLog, 120 fOncuraAirGapP 126 fOncuraAirGapPhys, false, 121 0, true); 127 0, true); 122 128 123 fOncuraCapsuleShellVisAtt = new G4VisAttribute 129 fOncuraCapsuleShellVisAtt = new G4VisAttributes(red); 124 fOncuraCapsuleShellVisAtt -> SetVisibility(tru 130 fOncuraCapsuleShellVisAtt -> SetVisibility(true); 125 fOncuraCapsuleShellVisAtt -> SetForceWireframe 131 fOncuraCapsuleShellVisAtt -> SetForceWireframe(true); 126 fOncuraCapsuleLog -> SetVisAttributes(fOncuraC 132 fOncuraCapsuleLog -> SetVisAttributes(fOncuraCapsuleShellVisAtt); 127 133 128 fOncuraCapsuleTipVisAtt = new G4VisAttributes( 134 fOncuraCapsuleTipVisAtt = new G4VisAttributes(red); 129 fOncuraCapsuleTipVisAtt -> SetVisibility(true) 135 fOncuraCapsuleTipVisAtt -> SetVisibility(true); 130 fOncuraCapsuleTipVisAtt -> SetForceSolid(true) 136 fOncuraCapsuleTipVisAtt -> SetForceSolid(true); 131 fOncuraCapsuleTip1Log -> SetVisAttributes(fOnc 137 fOncuraCapsuleTip1Log -> SetVisAttributes(fOncuraCapsuleTipVisAtt); 132 fOncuraCapsuleTip2Log -> SetVisAttributes(fOnc 138 fOncuraCapsuleTip2Log -> SetVisAttributes(fOncuraCapsuleTipVisAtt); 133 139 134 fOncuraSilverCoreVisAtt = new G4VisAttributes( 140 fOncuraSilverCoreVisAtt = new G4VisAttributes(magenta); 135 fOncuraSilverCoreVisAtt -> SetVisibility(true) 141 fOncuraSilverCoreVisAtt -> SetVisibility(true); 136 fOncuraSilverCoreVisAtt -> SetForceSolid(true) 142 fOncuraSilverCoreVisAtt -> SetForceSolid(true); 137 fOncuraSilverCoreLog -> SetVisAttributes(fOncu 143 fOncuraSilverCoreLog -> SetVisAttributes(fOncuraSilverCoreVisAtt); 138 } 144 } 139 145 140 void BrachyDetectorConstructionOncura6711::Cle 146 void BrachyDetectorConstructionOncura6711::CleanOncura6711() 141 { 147 { 142 delete fOncuraSilverCoreVisAtt; 148 delete fOncuraSilverCoreVisAtt; 143 fOncuraSilverCoreVisAtt = nullptr; 149 fOncuraSilverCoreVisAtt = nullptr; 144 150 145 delete fOncuraCapsuleTipVisAtt; 151 delete fOncuraCapsuleTipVisAtt; 146 fOncuraCapsuleTipVisAtt = nullptr; 152 fOncuraCapsuleTipVisAtt = nullptr; 147 153 148 delete fOncuraCapsuleShellVisAtt; 154 delete fOncuraCapsuleShellVisAtt; 149 fOncuraCapsuleShellVisAtt = nullptr; 155 fOncuraCapsuleShellVisAtt = nullptr; 150 156 151 delete fOncuraSilverCorePhys; 157 delete fOncuraSilverCorePhys; 152 fOncuraSilverCorePhys = nullptr; 158 fOncuraSilverCorePhys = nullptr; 153 159 154 delete fOncuraSilverCoreLog; 160 delete fOncuraSilverCoreLog; 155 fOncuraSilverCoreLog = nullptr; 161 fOncuraSilverCoreLog = nullptr; 156 162 157 delete fOncuraSilverCore; 163 delete fOncuraSilverCore; 158 fOncuraSilverCore = nullptr; 164 fOncuraSilverCore = nullptr; 159 165 160 delete fOncuraAirGapPhys; 166 delete fOncuraAirGapPhys; 161 fOncuraAirGapPhys = nullptr; 167 fOncuraAirGapPhys = nullptr; 162 168 163 delete fOncuraAirGapLog; 169 delete fOncuraAirGapLog; 164 fOncuraAirGapLog = nullptr; 170 fOncuraAirGapLog = nullptr; 165 171 166 delete fOncuraAirGap; 172 delete fOncuraAirGap; 167 fOncuraAirGap = nullptr; 173 fOncuraAirGap = nullptr; 168 174 169 delete fOncuraCapsuleTip2Phys; 175 delete fOncuraCapsuleTip2Phys; 170 fOncuraCapsuleTip2Phys = nullptr; 176 fOncuraCapsuleTip2Phys = nullptr; 171 177 172 delete fOncuraCapsuleTip2Log; 178 delete fOncuraCapsuleTip2Log; 173 fOncuraCapsuleTip2Log = nullptr; 179 fOncuraCapsuleTip2Log = nullptr; 174 180 175 delete fOncuraCapsuleTip2; 181 delete fOncuraCapsuleTip2; 176 fOncuraCapsuleTip2 = nullptr; 182 fOncuraCapsuleTip2 = nullptr; 177 183 178 delete fOncuraCapsuleTip1Phys; 184 delete fOncuraCapsuleTip1Phys; 179 fOncuraCapsuleTip1Phys = nullptr; 185 fOncuraCapsuleTip1Phys = nullptr; 180 186 181 delete fOncuraCapsuleTip1Log; 187 delete fOncuraCapsuleTip1Log; 182 fOncuraCapsuleTip1Log = nullptr; 188 fOncuraCapsuleTip1Log = nullptr; 183 189 184 delete fOncuraCapsuleTip1; 190 delete fOncuraCapsuleTip1; 185 fOncuraCapsuleTip1 = nullptr; 191 fOncuraCapsuleTip1 = nullptr; 186 192 187 delete fOncuraCapsulePhys; 193 delete fOncuraCapsulePhys; 188 fOncuraCapsulePhys = nullptr; 194 fOncuraCapsulePhys = nullptr; 189 195 190 delete fOncuraCapsuleLog; 196 delete fOncuraCapsuleLog; 191 fOncuraCapsuleLog = nullptr; 197 fOncuraCapsuleLog = nullptr; 192 198 193 delete fOncuraCapsule; 199 delete fOncuraCapsule; 194 fOncuraCapsule = nullptr; 200 fOncuraCapsule = nullptr; 195 201 196 G4RunManager::GetRunManager() -> GeometryHasB 202 G4RunManager::GetRunManager() -> GeometryHasBeenModified(); 197 } 203 } 198 204