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 // GEANT 4 - Brachytherapy exa 29 // ------------------------------------------- 30 // 31 // Code developed by: S.Guatelli 32 // 33 /// *************************************** 34 // * * 35 // * BrachyDetectorConstructionI.cc 36 // * * 37 // **************************************** 38 // 39 // 40 #include "BrachyDetectorConstructionI.hh" 41 #include "globals.hh" 42 #include "G4SystemOfUnits.hh" 43 #include "G4CSGSolid.hh" 44 #include "G4Sphere.hh" 45 #include "G4MaterialPropertyVector.hh" 46 #include "G4RunManager.hh" 47 #include "G4Box.hh" 48 #include "G4Tubs.hh" 49 #include "G4LogicalVolume.hh" 50 #include "G4ThreeVector.hh" 51 #include "G4PVPlacement.hh" 52 #include "G4Transform3D.hh" 53 #include "G4RotationMatrix.hh" 54 #include "G4TransportationManager.hh" 55 #include "G4VisAttributes.hh" 56 #include "G4Colour.hh" 57 #include "G4NistManager.hh" 58 59 BrachyDetectorConstructionI::BrachyDetectorCon 60 fDefaultTub(nullptr), fCapsule(nullptr), fCaps 61 fCapsuleLog(nullptr), fCapsuleTipLog(nullptr), 62 fCapsulePhys(nullptr),fCapsuleTipPhys1(nullptr 63 fSimpleIodineVisAtt(nullptr), fSimpleCapsuleVi 64 {} 65 66 void BrachyDetectorConstructionI::ConstructIod 67 { 68 // Model of the Bebig Isoseed I-125 brachy s 69 G4NistManager* nist = G4NistManager::Instanc 70 G4Material* titanium = nist -> FindOrBuildMa 71 G4Material* iodine = nist -> FindOrBuildMate 72 G4Material* air = nist -> FindOrBuildMateria 73 74 G4Colour red (1.0, 0.0, 0.0) ; 75 G4Colour magenta (1.0, 0.0, 1.0) ; 76 G4Colour lblue (0.0, 0.0, .75); 77 78 // Air tub 79 fDefaultTub = new G4Tubs("DefaultTub",0.*mm, 80 fDefaultTubLog = new G4LogicalVolume(fDefaul 81 fDefaultTubPhys = new G4PVPlacement(nullptr, 82 G4ThreeV 83 "default 84 fDefault 85 mother, 86 false, 87 0, true) 88 // Capsule main body ... 89 fCapsule = new G4Tubs("fCapsule", 0.35*mm,0. 90 fCapsuleLog = new G4LogicalVolume(fCapsule,t 91 fCapsulePhys = new G4PVPlacement(nullptr, 92 G4ThreeVecto 93 "fCapsulePhy 94 fCapsuleLog, 95 fDefaultTubP 96 false, 97 0, true); 98 // fCapsule tips 99 fCapsuleTip = new G4Sphere("fCapsuleTip", 100 0.*mm, 101 0.40*mm, 102 0.*deg, 103 360.*deg, 104 0.*deg, 105 90.*deg); 106 107 fCapsuleTipLog = new G4LogicalVolume(fCapsul 108 fCapsuleTipPhys1 = new G4PVPlacement(nullptr 109 G4ThreeV 110 "Iodinef 111 fCapsule 112 mother, 113 false, 114 0, true) 115 116 auto rotateMatrix = new G4RotationMatrix(); 117 rotateMatrix -> rotateX(180.0*deg); 118 fCapsuleTipPhys2 = new G4PVPlacement(rotateM 119 G4ThreeV 120 "Iodinef 121 fCapsule 122 mother, 123 false, 124 0, true) 125 126 // Radiactive core ... 127 fIodineCore = new G4Tubs("ICore",0.085*mm,0. 128 fIodineCoreLog = new G4LogicalVolume(fIodine 129 fIodineCorePhys = new G4PVPlacement(nullptr, 130 G4ThreeVe 131 "IodineCo 132 fIodineCo 133 fDefaultT 134 false, 135 0, true); 136 137 // Visual attributes ... 138 139 fSimpleIodineVisAtt = new G4VisAttributes(ma 140 fSimpleIodineVisAtt -> SetVisibility(true); 141 fSimpleIodineVisAtt -> SetForceSolid(true); 142 fIodineCoreLog -> SetVisAttributes(fSimpleIo 143 144 fSimpleCapsuleVisAtt = new G4VisAttributes(r 145 fSimpleCapsuleVisAtt -> SetVisibility(true); 146 fSimpleCapsuleVisAtt -> SetForceWireframe(tr 147 fCapsuleLog -> SetVisAttributes( fSimpleCaps 148 149 fSimpleCapsuleTipVisAtt = new G4VisAttribute 150 fSimpleCapsuleTipVisAtt -> SetVisibility(tru 151 fSimpleCapsuleTipVisAtt -> SetForceSolid(tru 152 fCapsuleTipLog -> SetVisAttributes(fSimpleCa 153 } 154 155 void BrachyDetectorConstructionI::CleanIodine( 156 { 157 delete fSimpleIodineVisAtt; fSimpleIodineVisAt 158 delete fSimpleCapsuleVisAtt; fSimpleCapsuleVis 159 delete fSimpleCapsuleTipVisAtt; fSimpleCapsule 160 delete fCapsuleTipPhys1; fCapsuleTipPhys1 = nu 161 delete fCapsuleTipPhys2; fCapsuleTipPhys2 = nu 162 delete fIodineCorePhys; fIodineCorePhys = null 163 delete fCapsulePhys; fCapsulePhys = nullptr; 164 delete fDefaultTubPhys; fDefaultTubPhys = null 165 delete fDefaultTubLog; fDefaultTubLog = nullpt 166 delete fCapsuleLog; fCapsuleLog = nullptr; 167 delete fCapsuleTipLog; fCapsuleTipLog = nullpt 168 delete fIodineCoreLog; fIodineCoreLog = nullpt 169 delete fDefaultTub; fDefaultTub = nullptr; 170 delete fCapsule; fCapsule = nullptr; 171 delete fCapsuleTip; fCapsuleTip = nullptr; 172 delete fIodineCore; fIodineCore = nullptr; 173 174 G4RunManager::GetRunManager() -> GeometryHasBe 175 } 176