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 // Previous authors: G. Guerrieri, S. Guatelli << 26 // Authors: S. Guatelli , M. G. Pia, INFN Genova and F. Ambroglini INFN Perugia, Italy 27 // Authors (since 2007): S. Guatelli, Universi << 27 // 28 // 28 // 29 29 30 #include <map> 30 #include <map> 31 31 32 #include "globals.hh" 32 #include "globals.hh" 33 33 34 #include "G4HumanPhantomConstruction.hh" 34 #include "G4HumanPhantomConstruction.hh" 35 35 36 #include "G4SystemOfUnits.hh" 36 #include "G4SystemOfUnits.hh" 37 #include "G4HumanPhantomSD.hh" 37 #include "G4HumanPhantomSD.hh" 38 #include "G4SDManager.hh" 38 #include "G4SDManager.hh" 39 39 40 //#include "G4VBodyFactory.hh" 40 //#include "G4VBodyFactory.hh" 41 //#include "G4MIRDBodyFactory.hh" 41 //#include "G4MIRDBodyFactory.hh" 42 //#include "G4ORNLBodyFactory.hh" 42 //#include "G4ORNLBodyFactory.hh" 43 43 44 #include "G4PhantomBuilder.hh" 44 #include "G4PhantomBuilder.hh" 45 #include "G4FemaleBuilder.hh" 45 #include "G4FemaleBuilder.hh" 46 #include "G4MaleBuilder.hh" 46 #include "G4MaleBuilder.hh" 47 #include "G4PhantomHeadBuilder.hh" 47 #include "G4PhantomHeadBuilder.hh" >> 48 #include "G4CustomFemaleBuilder.hh" 48 #include "G4RunManager.hh" 49 #include "G4RunManager.hh" 49 #include "G4HumanPhantomMaterial.hh" 50 #include "G4HumanPhantomMaterial.hh" 50 #include "G4Box.hh" 51 #include "G4Box.hh" 51 #include "G4LogicalVolume.hh" 52 #include "G4LogicalVolume.hh" 52 #include "G4VPhysicalVolume.hh" 53 #include "G4VPhysicalVolume.hh" 53 #include "G4VisAttributes.hh" 54 #include "G4VisAttributes.hh" 54 #include "G4Colour.hh" 55 #include "G4Colour.hh" 55 #include "G4PVPlacement.hh" 56 #include "G4PVPlacement.hh" 56 57 57 G4HumanPhantomConstruction::G4HumanPhantomCons 58 G4HumanPhantomConstruction::G4HumanPhantomConstruction() 58 { 59 { 59 fMessenger = new G4HumanPhantomMessenger(thi << 60 messenger = new G4HumanPhantomMessenger(this); 60 fMaterial = new G4HumanPhantomMaterial(); << 61 material = new G4HumanPhantomMaterial(); 61 } 62 } 62 63 63 G4HumanPhantomConstruction::~G4HumanPhantomCon 64 G4HumanPhantomConstruction::~G4HumanPhantomConstruction() 64 { 65 { 65 delete fMaterial; << 66 delete material; 66 delete fMessenger; << 67 delete messenger; 67 } 68 } 68 69 69 G4VPhysicalVolume* G4HumanPhantomConstruction: 70 G4VPhysicalVolume* G4HumanPhantomConstruction::Construct() 70 { 71 { 71 fMaterial -> DefineMaterials(); << 72 material -> DefineMaterials(); 72 73 73 G4BasePhantomBuilder* builder = nullptr; << 74 >> 75 >> 76 G4BasePhantomBuilder* builder = 0; 74 77 75 if (fModel == "MIRDHead" || fModel == "ORNLH << 78 if (model == "MIRDHead" || model == "ORNLHead") 76 { 79 { 77 G4cout << "HeadBuilder instantiated" << 80 G4cout << "HeadBuilder instantiated" << G4endl; 78 builder = new G4PhantomHeadBuilder; 81 builder = new G4PhantomHeadBuilder; 79 if (fModel == "MIRDHead") builder->SetM << 82 if (model == "MIRDHead") builder->SetModel("MIRD"); 80 else if (fModel == "ORNLHead") builder- << 83 else if (model == "ORNLHead") builder->SetModel("ORNLMale"); 81 } 84 } 82 else 85 else 83 { 86 { 84 if (fSex =="Female") << 87 if (sex =="Female") 85 { 88 { 86 builder = new G4FemaleBuilder; << 89 if (model == "MIX") builder = new G4CustomFemaleBuilder; 87 builder->SetModel(fModel); << 90 else {builder = new G4FemaleBuilder;} 88 G4cout << fModel << " "<< fSex << G4endl; << 91 builder->SetModel(model); >> 92 G4cout <<model << " "<< sex << G4endl; 89 } 93 } 90 else if (fSex == "Male") << 94 else if (sex == "Male") 91 { 95 { 92 builder = new G4MaleBuilder; 96 builder = new G4MaleBuilder; 93 builder->SetModel(fModel); << 97 builder->SetModel(model); >> 98 if (model == "MIX") >> 99 { >> 100 G4cout<< "Custom Male is not available!!! MIRD model is selected !" >> 101 << G4endl; >> 102 model = "MIRD"; >> 103 builder->SetModel(model);} 94 } 104 } 95 } 105 } 96 106 97 builder->SetMotherVolume(ConstructWorld()); 107 builder->SetMotherVolume(ConstructWorld()); 98 108 99 // the argument indicates the sensitivity of 109 // the argument indicates the sensitivity of the volume 100 110 101 builder->BuildHead("black", false, fSensitiv << 111 builder->BuildHead("black", false, sensitivities["Head"]); 102 builder->BuildSkull("orange", false, fSensit << 112 builder->BuildSkull("orange", false,sensitivities["Skull"]); 103 builder->BuildBrain("yellow", true, fSensiti << 113 builder->BuildBrain("yellow", true,sensitivities["Brain"]); 104 114 105 if (fModel != "MIRDHead" && fModel != "ORNLH << 115 if (model != "MIRDHead" && model != "ORNLHead") 106 { 116 { 107 // builder->SetModel(model); 117 // builder->SetModel(model); 108 builder->BuildTrunk("yellow", false, fSe << 118 builder->BuildTrunk("yellow", false, sensitivities["Trunk"]); 109 119 110 builder->BuildLeftLeg("yellow", false, f << 120 builder->BuildLeftLeg("yellow", false,sensitivities["LeftLeg"]); 111 builder->BuildRightLeg("yellow", false, << 121 builder->BuildRightLeg("yellow", false,sensitivities["RightLeg"]); 112 122 113 builder->BuildLeftArmBone("grey", true, << 123 builder->BuildLeftArmBone("grey", true,sensitivities["LeftArmBone"]); 114 builder->BuildRightArmBone("grey", true, << 124 builder->BuildRightArmBone("grey", true, sensitivities["RightArmBone"]); 115 125 116 builder->BuildLeftLegBone("grey", true, << 126 builder->BuildLeftLegBone("grey", true,sensitivities["LeftLegBone"]); 117 builder ->BuildRightLegBone("grey", true << 127 builder ->BuildRightLegBone("grey", true,sensitivities["RightLegBone"]); 118 128 119 builder->BuildUpperSpine("yellow", true, << 129 builder->BuildUpperSpine("yellow", true,sensitivities["UpperSpine"]); 120 130 121 if (fModel == "MIRD") << 131 if (model == "MIRD" || model == "MIX") 122 { 132 { 123 builder->BuildLeftScapula("grey", true, fS << 133 builder->BuildLeftScapula("grey", true, sensitivities["LeftScapula"]); 124 builder->BuildRightScapula("grey", true, f << 134 builder->BuildRightScapula("grey", true, sensitivities["RightScapula"]); 125 builder->BuildLeftAdrenal("yellow", true, << 135 builder->BuildLeftAdrenal("yellow", true, sensitivities["LeftAdrenal"]); 126 builder->BuildRightAdrenal("yellow", true, << 136 builder->BuildRightAdrenal("yellow", true, sensitivities["RightAdrenal"]); 127 builder->BuildThymus("orange", true, fSens << 137 builder->BuildThymus("orange", true,sensitivities["Thymus"]); 128 builder->BuildLeftClavicle("grey", true, f << 138 builder->BuildLeftClavicle("grey", true,sensitivities["LeftClavicle"]); 129 builder->BuildRightClavicle("grey", true, << 139 builder->BuildRightClavicle("grey", true,sensitivities["RightClavicle"]); 130 builder->BuildSmallIntestine("orange", tru << 140 builder->BuildSmallIntestine("orange", true,sensitivities["SmallIntestine"]); 131 builder->BuildRibCage("grey", true, fSensi << 141 builder->BuildRibCage("grey", true,sensitivities["RibCage"]); 132 } 142 } 133 143 134 builder->BuildMiddleLowerSpine("yellow", << 144 builder->BuildMiddleLowerSpine("yellow", true,sensitivities["MiddleLowerSpine"]); 135 145 136 builder->BuildPelvis("grey", true, fSens << 146 builder->BuildPelvis("grey", true,sensitivities["Pelvis"]); 137 147 138 builder->BuildStomach("orange", true, fS << 148 builder->BuildStomach("orange", true,sensitivities["Stomach"]); 139 builder->BuildUpperLargeIntestine("light << 149 builder->BuildUpperLargeIntestine("lightBlue", true,sensitivities["UpperLargeIntestine"]); 140 builder->BuildLowerLargeIntestine("light << 150 builder->BuildLowerLargeIntestine("lightBlue", true,sensitivities["LowerLargeIntestine"]); 141 builder->BuildSpleen("green", true, fSen << 151 142 builder->BuildPancreas("purple", true, f << 152 builder->BuildSpleen("green", true,sensitivities["Spleen"]); >> 153 builder->BuildPancreas("purple", true,sensitivities["Pancreas"]); 143 //builder->BuildLiver("orange", true,sen 154 //builder->BuildLiver("orange", true,sensitivities["Liver"]); 144 155 145 builder->BuildLeftKidney("green", true, << 156 builder->BuildLeftKidney("green", true,sensitivities["LeftKidney"]); 146 builder->BuildRightKidney("green", true, << 157 builder->BuildRightKidney("green", true,sensitivities["RightKidney"]); 147 builder->BuildUrinaryBladder("green", tr << 158 builder->BuildUrinaryBladder("green", true,sensitivities["UrinaryBladder"]); 148 159 149 //builder->BuildHeart("red", true,fSensi << 160 //builder->BuildHeart("red", true,sensitivities["Hearth"]);// to do MIRD 150 // builder->BuildLeftLung("blue", true, f << 161 // builder->BuildLeftLung("blue", true,sensitivities["LeftLung"]); 151 //builder->BuildRightLung("blue", true, << 162 //builder->BuildRightLung("blue", true,sensitivities["RightLung"]); 152 // builder->BuildThyroid("orange", true, << 163 // builder->BuildThyroid("orange", true,sensitivities["Thyroid"]); 153 << 164 154 if(fSex=="Female"){ << 165 if(sex=="Female"){ 155 << 166 156 builder->BuildLeftOvary("purple", true, fSen << 167 builder->BuildLeftOvary("purple", true,sensitivities["LeftOvary"]); 157 builder->BuildRightOvary("purple", true, fSe << 168 builder->BuildRightOvary("purple", true,sensitivities["RightOvary"]); 158 builder->BuildUterus("purple", true, fSensit << 169 builder->BuildUterus("purple", true,sensitivities["Uterus"]); 159 170 160 if (fModel == "ORNLFemale" || fModel == "MIR << 171 if (model == "ORNLFemale" || model == "MIRD") 161 { 172 { 162 builder->BuildLeftBreast("purple", true, << 173 builder->BuildLeftBreast("purple", true,sensitivities["LeftBreast"]); 163 builder->BuildRightBreast("purple", true << 174 builder->BuildRightBreast("purple", true,sensitivities["RightBreast"]); 164 } 175 } >> 176 else if (model == "MIX") >> 177 { >> 178 builder->BuildVoxelLeftBreast("purple",false, sensitivities["LeftBreast"]); >> 179 builder->BuildVoxelRightBreast("purple", false, sensitivities["RightBreast"]); >> 180 } 165 } 181 } 166 182 167 if(fSex=="Male"){ << 183 if(sex=="Male"){ 168 184 169 if (fModel == "MIRD"){ << 185 if (model == "MIRD"){ 170 builder -> BuildMaleGenitalia("yellow",fal << 186 builder -> BuildMaleGenitalia("yellow",false,sensitivities["MaleGenitalia"]); 171 builder -> BuildLeftTeste("purple",true, f << 187 builder -> BuildLeftTeste("purple",true,sensitivities["LeftTeste"]); 172 builder -> BuildRightTeste("purple",true, << 188 builder -> BuildRightTeste("purple",true,sensitivities["RightTeste"]); 173 } 189 } 174 else G4cout << "ORNL does not have model fo 190 else G4cout << "ORNL does not have model for male genitalia and testes yet" << G4endl; 175 } 191 } 176 192 177 } 193 } 178 G4VPhysicalVolume* result=builder->GetPhanto 194 G4VPhysicalVolume* result=builder->GetPhantom(); 179 delete builder; 195 delete builder; 180 return result; 196 return result; 181 } 197 } 182 198 183 void G4HumanPhantomConstruction::SetBodyPartS 199 void G4HumanPhantomConstruction::SetBodyPartSensitivity(G4String, G4bool) 184 { 200 { 185 G4cout << "This method is not currently work 201 G4cout << "This method is not currently working !!!!" << G4endl; 186 } 202 } 187 203 188 G4VPhysicalVolume* G4HumanPhantomConstruction: 204 G4VPhysicalVolume* G4HumanPhantomConstruction::ConstructWorld() 189 { 205 { 190 G4Material* air = fMaterial -> GetMaterial(" << 206 G4Material* air = material -> GetMaterial("Air"); 191 207 192 // World Volume 208 // World Volume 193 // G4double worldSize = 1.*m ; 209 // G4double worldSize = 1.*m ; 194 G4double worldSize = 1.5 *m ; 210 G4double worldSize = 1.5 *m ; 195 G4Box* world = new G4Box("world", worldSize, 211 G4Box* world = new G4Box("world", worldSize, worldSize, worldSize); 196 212 197 auto* logicWorld = new G4LogicalVolume(world << 213 G4LogicalVolume* logicWorld = new G4LogicalVolume(world, 198 air, << 214 air, 199 "logicalWorld", nullptr, nul << 215 "logicalWorld", 0, 0,0); 200 216 201 G4VPhysicalVolume* motherVolume = new G4PVPl << 217 G4VPhysicalVolume* motherVolume = new G4PVPlacement(0,G4ThreeVector(), 202 "physicalWorld", 218 "physicalWorld", 203 logicWorld, 219 logicWorld, 204 nullptr, << 220 0, 205 false, 221 false, 206 0); 222 0); 207 223 208 // Visualization Attributes 224 // Visualization Attributes 209 auto* WorldVisAtt = new G4VisAttributes(G4Co << 225 G4VisAttributes* WorldVisAtt = new G4VisAttributes(G4Colour(0.94,0.5,0.5)); 210 226 211 WorldVisAtt->SetForceSolid(false); 227 WorldVisAtt->SetForceSolid(false); 212 logicWorld->SetVisAttributes(G4VisAttributes 228 logicWorld->SetVisAttributes(G4VisAttributes::GetInvisible()); 213 229 214 return motherVolume; 230 return motherVolume; 215 } 231 } 216 232 217 void G4HumanPhantomConstruction::SetPhantomSex 233 void G4HumanPhantomConstruction::SetPhantomSex(G4String newSex) 218 { 234 { 219 fSex=newSex; << 235 sex=newSex; 220 236 221 if (fSex == "Male") << 237 if (sex == "Male") 222 { 238 { 223 G4cout << ">> Male Phantom will be built 239 G4cout << ">> Male Phantom will be built." << G4endl; 224 } 240 } 225 if (fSex == "Female") << 241 if (sex == "Female") 226 { 242 { 227 G4cout << ">> Female Phantom will be bui 243 G4cout << ">> Female Phantom will be built." << G4endl; 228 } 244 } 229 if ((fSex != "Female") && (fSex != "Male")) << 245 if ((sex != "Female") && (sex != "Male")) 230 G4cout << fSex << " can not be defined!" < << 246 G4cout << sex << " can not be defined!" << G4endl; 231 } 247 } 232 248 233 void G4HumanPhantomConstruction::SetPhantomMod 249 void G4HumanPhantomConstruction::SetPhantomModel(G4String newModel) 234 { 250 { 235 fModel = newModel; << 251 model = newModel; 236 252 237 if (fModel == "MIRD") << 253 if (model == "MIRD") 238 { 254 { 239 G4cout<<" >> Phantom " << fModel << " wi << 255 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; 240 } 256 } 241 if (fModel == "ORNLFemale") << 257 if (model == "ORNLFemale") 242 { 258 { 243 G4cout<<" >> Phantom " << fModel << " wi << 259 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; 244 } 260 } 245 261 246 if (fModel == "ORNLMale") << 262 if (model == "ORNLMale") 247 { 263 { 248 G4cout<<" >> Phantom " << fModel << " wi << 264 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; 249 } 265 } 250 266 251 if (fModel == "MIRDHead") << 267 if (model == "MIX") 252 { 268 { 253 G4cout<<" >> Phantom " << fModel << " wi << 269 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; >> 270 } >> 271 if (model == "MIRDHead") >> 272 { >> 273 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; 254 } 274 } 255 275 256 if (fModel == "ORNLHead") << 276 if (model == "ORNLHead") 257 { 277 { 258 G4cout<<" >> Phantom " << fModel << " wi << 278 G4cout<<" >> Phantom " << model << " will be built."<<G4endl; 259 } 279 } 260 } 280 } 261 281 262 void G4HumanPhantomConstruction::ConstructSDan 282 void G4HumanPhantomConstruction::ConstructSDandField() 263 { 283 { 264 auto* SD = new G4HumanPhantomSD("SD", "Huma << 284 G4HumanPhantomSD* SD = new G4HumanPhantomSD("SD", "HumanPhantomCollection"); 265 G4SDManager::GetSDMpointer()->AddNewDetecto 285 G4SDManager::GetSDMpointer()->AddNewDetector(SD); 266 << 286 if (model != "ORNLMale" && model != "ORNLFemale" && model!= "ORNLHead") 267 if (fModel != "ORNLMale" && fModel != "ORNLFem << 268 { 287 { 269 SetSensitiveDetector("logicalHead",SD); 288 SetSensitiveDetector("logicalHead",SD); 270 SetSensitiveDetector("logicalSkull",SD); 289 SetSensitiveDetector("logicalSkull",SD); 271 SetSensitiveDetector("logicalBrain",SD); 290 SetSensitiveDetector("logicalBrain",SD); 272 if (fModel != "MIRDHead") << 291 if (model != "MIRDHead") 273 { 292 { 274 SetSensitiveDetector("logicalTrunk",SD); 293 SetSensitiveDetector("logicalTrunk",SD); 275 SetSensitiveDetector("logicalLeftLeg",SD 294 SetSensitiveDetector("logicalLeftLeg",SD); 276 SetSensitiveDetector("logicalRightLeg",S 295 SetSensitiveDetector("logicalRightLeg",SD); 277 SetSensitiveDetector("logicalLeftArmBone 296 SetSensitiveDetector("logicalLeftArmBone",SD); 278 SetSensitiveDetector("logicalRightArmBon 297 SetSensitiveDetector("logicalRightArmBone",SD); 279 SetSensitiveDetector("logicalLeftLegBone 298 SetSensitiveDetector("logicalLeftLegBone",SD); 280 SetSensitiveDetector("logicalRightLegBon 299 SetSensitiveDetector("logicalRightLegBone",SD); 281 SetSensitiveDetector("logicalUpperSpine" 300 SetSensitiveDetector("logicalUpperSpine",SD); 282 SetSensitiveDetector("logicalLeftScapula 301 SetSensitiveDetector("logicalLeftScapula",SD); 283 SetSensitiveDetector("logicalRightScapul 302 SetSensitiveDetector("logicalRightScapula",SD); 284 SetSensitiveDetector("logicalLeftAdrenal 303 SetSensitiveDetector("logicalLeftAdrenal",SD); 285 SetSensitiveDetector("logicalRightAdrena << 304 SetSensitiveDetector("logicalRightAdrenal",SD); SetSensitiveDetector("logicalThymus",SD); SetSensitiveDetector("logicalLeftClavicle",SD); 286 SetSensitiveDetector("logicalThymus",SD) << 287 SetSensitiveDetector("logicalLeftClavicl << 288 SetSensitiveDetector("logicalRightClavic 305 SetSensitiveDetector("logicalRightClavicle",SD); 289 SetSensitiveDetector("logicalSmallIntest 306 SetSensitiveDetector("logicalSmallIntestine",SD); 290 SetSensitiveDetector("logicalRibCage",SD << 307 SetSensitiveDetector("logicalRibCage",SD); SetSensitiveDetector("logicalMiddleLowerSpine",SD); 291 SetSensitiveDetector("logicalMiddleLower << 292 SetSensitiveDetector("logicalStomach",SD 308 SetSensitiveDetector("logicalStomach",SD); 293 SetSensitiveDetector("logicalUpperLargeI 309 SetSensitiveDetector("logicalUpperLargeIntestine",SD); 294 SetSensitiveDetector("logicalLowerLargeI 310 SetSensitiveDetector("logicalLowerLargeIntestine",SD); 295 SetSensitiveDetector("logicalSpleen",SD) 311 SetSensitiveDetector("logicalSpleen",SD); 296 SetSensitiveDetector("logicalPancreas",S 312 SetSensitiveDetector("logicalPancreas",SD); 297 SetSensitiveDetector("logicalLeftKidney" 313 SetSensitiveDetector("logicalLeftKidney",SD); 298 SetSensitiveDetector("logicalRightKidney 314 SetSensitiveDetector("logicalRightKidney",SD); 299 SetSensitiveDetector("logicalUrinaryBlad 315 SetSensitiveDetector("logicalUrinaryBladder",SD); 300 316 301 if(fSex=="Female"){ << 317 if(sex=="Female"){ >> 318 302 SetSensitiveDetector("logicalLeftOvary",SD); 319 SetSensitiveDetector("logicalLeftOvary",SD); 303 SetSensitiveDetector("logicalRightOvar 320 SetSensitiveDetector("logicalRightOvary",SD); 304 SetSensitiveDetector("logicalUterus",S 321 SetSensitiveDetector("logicalUterus",SD); 305 SetSensitiveDetector("logicalLeftBreas 322 SetSensitiveDetector("logicalLeftBreast",SD); 306 SetSensitiveDetector("logicalRightBrea 323 SetSensitiveDetector("logicalRightBreast",SD); 307 } 324 } 308 else if(fSex=="Male"){ << 325 >> 326 if(sex=="Male"){ >> 327 >> 328 309 SetSensitiveDetector("logicalMaleGenitalia 329 SetSensitiveDetector("logicalMaleGenitalia",SD); 310 SetSensitiveDetector("logicalLeftTes 330 SetSensitiveDetector("logicalLeftTeste",SD); 311 SetSensitiveDetector("logicalRightTeste",S 331 SetSensitiveDetector("logicalRightTeste",SD); 312 } 332 } >> 333 313 } 334 } 314 }else 335 }else 315 { 336 { 316 SetSensitiveDetector("HeadVolume",SD); 337 SetSensitiveDetector("HeadVolume",SD); 317 SetSensitiveDetector("SkullVolume",SD); 338 SetSensitiveDetector("SkullVolume",SD); 318 SetSensitiveDetector("BrainVolume",SD); 339 SetSensitiveDetector("BrainVolume",SD); >> 340 G4cout << "Work in progress!!!! " << G4endl; 319 G4cout <<"ORNL model!!!! Head is sensitive o 341 G4cout <<"ORNL model!!!! Head is sensitive only!!!" << G4endl; 320 } << 342 } >> 343 >> 344 321 } 345 } 322 346