Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4HumanPhantomConstruction Class Reference

#include <G4HumanPhantomConstruction.hh>

Inheritance diagram for G4HumanPhantomConstruction:
G4VUserDetectorConstruction

Public Member Functions

 G4HumanPhantomConstruction ()
 
 ~G4HumanPhantomConstruction ()
 
G4VPhysicalVolumeConstruct ()
 
void SetBodyPartSensitivity (G4String, G4bool)
 
void SetPhantomSex (G4String)
 
void SetPhantomModel (G4String)
 
void ConstructSDandField ()
 
- Public Member Functions inherited from G4VUserDetectorConstruction
 G4VUserDetectorConstruction ()
 
virtual ~G4VUserDetectorConstruction ()
 
virtual void CloneSD ()
 
virtual void CloneF ()
 
void RegisterParallelWorld (G4VUserParallelWorld *)
 
G4int ConstructParallelGeometries ()
 
void ConstructParallelSD ()
 
G4int GetNumberOfParallelWorld () const
 
G4VUserParallelWorldGetParallelWorld (G4int i) const
 

Additional Inherited Members

- Protected Member Functions inherited from G4VUserDetectorConstruction
void SetSensitiveDetector (const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
 
void SetSensitiveDetector (G4LogicalVolume *logVol, G4VSensitiveDetector *aSD)
 

Detailed Description

Definition at line 45 of file G4HumanPhantomConstruction.hh.

Constructor & Destructor Documentation

G4HumanPhantomConstruction::G4HumanPhantomConstruction ( )

Definition at line 58 of file G4HumanPhantomConstruction.cc.

G4HumanPhantomConstruction::~G4HumanPhantomConstruction ( )

Definition at line 64 of file G4HumanPhantomConstruction.cc.

65 {
66  delete material;
67  delete messenger;
68 }

Member Function Documentation

G4VPhysicalVolume * G4HumanPhantomConstruction::Construct ( void  )
virtual

Implements G4VUserDetectorConstruction.

Definition at line 70 of file G4HumanPhantomConstruction.cc.

References G4BasePhantomBuilder::BuildBrain(), G4BasePhantomBuilder::BuildHead(), G4BasePhantomBuilder::BuildLeftAdrenal(), G4BasePhantomBuilder::BuildLeftArmBone(), G4BasePhantomBuilder::BuildLeftBreast(), G4BasePhantomBuilder::BuildLeftClavicle(), G4BasePhantomBuilder::BuildLeftKidney(), G4BasePhantomBuilder::BuildLeftLeg(), G4BasePhantomBuilder::BuildLeftLegBone(), G4BasePhantomBuilder::BuildLeftOvary(), G4BasePhantomBuilder::BuildLeftScapula(), G4BasePhantomBuilder::BuildLowerLargeIntestine(), G4BasePhantomBuilder::BuildMiddleLowerSpine(), G4BasePhantomBuilder::BuildPancreas(), G4BasePhantomBuilder::BuildPelvis(), G4BasePhantomBuilder::BuildRibCage(), G4BasePhantomBuilder::BuildRightAdrenal(), G4BasePhantomBuilder::BuildRightArmBone(), G4BasePhantomBuilder::BuildRightBreast(), G4BasePhantomBuilder::BuildRightClavicle(), G4BasePhantomBuilder::BuildRightKidney(), G4BasePhantomBuilder::BuildRightLeg(), G4BasePhantomBuilder::BuildRightLegBone(), G4BasePhantomBuilder::BuildRightOvary(), G4BasePhantomBuilder::BuildRightScapula(), G4BasePhantomBuilder::BuildSkull(), G4BasePhantomBuilder::BuildSmallIntestine(), G4BasePhantomBuilder::BuildSpleen(), G4BasePhantomBuilder::BuildStomach(), G4BasePhantomBuilder::BuildThymus(), G4BasePhantomBuilder::BuildTrunk(), G4BasePhantomBuilder::BuildUpperLargeIntestine(), G4BasePhantomBuilder::BuildUpperSpine(), G4BasePhantomBuilder::BuildUrinaryBladder(), G4BasePhantomBuilder::BuildUterus(), G4BasePhantomBuilder::BuildVoxelLeftBreast(), G4BasePhantomBuilder::BuildVoxelRightBreast(), G4cout, G4endl, G4BasePhantomBuilder::GetPhantom(), G4BasePhantomBuilder::SetModel(), and G4BasePhantomBuilder::SetMotherVolume().

71 {
72  material -> DefineMaterials();
73 
74 
75 
76  G4BasePhantomBuilder* builder = 0;
77 
78  if (model == "MIRDHead" || model == "ORNLHead")
79  {
80  G4cout << "HeadBuilder instantiated" << G4endl;
81  builder = new G4PhantomHeadBuilder;
82  if (model == "MIRDHead") builder->SetModel("MIRD");
83  else if (model == "ORNLHead") builder->SetModel("ORNLMale");
84  }
85  else
86  {
87  if (sex =="Female")
88  {
89  if (model == "MIX") builder = new G4CustomFemaleBuilder;
90  else {builder = new G4FemaleBuilder;}
91  builder->SetModel(model);
92  G4cout <<model << " "<< sex << G4endl;
93  }
94  else if (sex == "Male")
95  {
96  builder = new G4MaleBuilder;
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);}
104  }
105  }
106 
107  builder->SetMotherVolume(ConstructWorld());
108 
109  // the argument indicates the sensitivity of the volume
110 
111  builder->BuildHead("black", false, sensitivities["Head"]);
112  builder->BuildSkull("orange", false,sensitivities["Skull"]);
113  builder->BuildBrain("yellow", true,sensitivities["Brain"]);
114 
115  if (model != "MIRDHead" && model != "ORNLHead")
116  {
117  // builder->SetModel(model);
118  builder->BuildTrunk("yellow", false, sensitivities["Trunk"]);
119 
120  builder->BuildLeftLeg("yellow", false,sensitivities["LeftLeg"]);
121  builder->BuildRightLeg("yellow", false,sensitivities["RightLeg"]);
122 
123  builder->BuildLeftArmBone("grey", true,sensitivities["LeftArmBone"]);
124  builder->BuildRightArmBone("grey", true, sensitivities["RightArmBone"]);
125 
126  builder->BuildLeftLegBone("grey", true,sensitivities["LeftLegBone"]);
127  builder ->BuildRightLegBone("grey", true,sensitivities["RightLegBone"]);
128 
129  builder->BuildUpperSpine("yellow", true,sensitivities["UpperSpine"]);
130 
131  if (model == "MIRD" || model == "MIX")
132  {
133  builder->BuildLeftScapula("grey", true, sensitivities["LeftScapula"]);
134  builder->BuildRightScapula("grey", true, sensitivities["RightScapula"]);
135  builder->BuildLeftAdrenal("yellow", true, sensitivities["LeftAdrenal"]);
136  builder->BuildRightAdrenal("yellow", true, sensitivities["RightAdrenal"]);
137  builder->BuildThymus("orange", true,sensitivities["Thymus"]);
138  builder->BuildLeftClavicle("grey", true,sensitivities["LeftClavicle"]);
139  builder->BuildRightClavicle("grey", true,sensitivities["RightClavicle"]);
140  builder->BuildSmallIntestine("orange", true,sensitivities["SmallIntestine"]);
141  builder->BuildRibCage("grey", true,sensitivities["RibCage"]);
142  }
143 
144  builder->BuildMiddleLowerSpine("yellow", true,sensitivities["MiddleLowerSpine"]);
145 
146  builder->BuildPelvis("grey", true,sensitivities["Pelvis"]);
147 
148  builder->BuildStomach("orange", true,sensitivities["Stomach"]);
149  builder->BuildUpperLargeIntestine("lightBlue", true,sensitivities["UpperLargeIntestine"]);
150  builder->BuildLowerLargeIntestine("lightBlue", true,sensitivities["LowerLargeIntestine"]);
151 
152  builder->BuildSpleen("green", true,sensitivities["Spleen"]);
153  builder->BuildPancreas("purple", true,sensitivities["Pancreas"]);
154  //builder->BuildLiver("orange", true,sensitivities["Liver"]);
155 
156  builder->BuildLeftKidney("green", true,sensitivities["LeftKidney"]);
157  builder->BuildRightKidney("green", true,sensitivities["RightKidney"]);
158  builder->BuildUrinaryBladder("green", true,sensitivities["UrinaryBladder"]);
159 
160  //builder->BuildHeart("red", true,sensitivities["Hearth"]);// to do MIRD
161  // builder->BuildLeftLung("blue", true,sensitivities["LeftLung"]);
162  //builder->BuildRightLung("blue", true,sensitivities["RightLung"]);
163  // builder->BuildThyroid("orange", true,sensitivities["Thyroid"]);
164 
165  if(sex=="Female"){
166 
167  builder->BuildLeftOvary("purple", true,sensitivities["LeftOvary"]);
168  builder->BuildRightOvary("purple", true,sensitivities["RightOvary"]);
169  builder->BuildUterus("purple", true,sensitivities["Uterus"]);
170 
171  if (model == "ORNLFemale" || model == "MIRD")
172  {
173  builder->BuildLeftBreast("purple", true,sensitivities["LeftBreast"]);
174  builder->BuildRightBreast("purple", true,sensitivities["RightBreast"]);
175  }
176  else if (model == "MIX")
177  {
178  builder->BuildVoxelLeftBreast("purple",false, sensitivities["LeftBreast"]);
179  builder->BuildVoxelRightBreast("purple", false, sensitivities["RightBreast"]);
180  }
181  }
182 
183  if(sex=="Male"){
184 
185  if (model == "MIRD"){
186  builder -> BuildMaleGenitalia("yellow",false,sensitivities["MaleGenitalia"]);
187  builder -> BuildLeftTeste("purple",true,sensitivities["LeftTeste"]);
188  builder -> BuildRightTeste("purple",true,sensitivities["RightTeste"]);
189  }
190  else G4cout << "ORNL does not have model for male genitalia and testes yet" << G4endl;
191  }
192 
193  }
194  G4VPhysicalVolume* result=builder->GetPhantom();
195  delete builder;
196  return result;
197 }
virtual void SetMotherVolume(G4VPhysicalVolume *)
virtual void BuildVoxelRightBreast(const G4String &, G4bool, G4bool)
virtual void BuildLeftOvary(const G4String &, G4bool, G4bool)
virtual G4VPhysicalVolume * GetPhantom()
virtual void BuildBrain(const G4String &, G4bool, G4bool)
virtual void BuildMiddleLowerSpine(const G4String &, G4bool, G4bool)
virtual void BuildUrinaryBladder(const G4String &, G4bool, G4bool)
virtual void BuildLeftScapula(const G4String &, G4bool, G4bool)
virtual void BuildSpleen(const G4String &, G4bool, G4bool)
virtual void BuildPelvis(const G4String &, G4bool, G4bool)
virtual void SetModel(G4String)
virtual void BuildSkull(const G4String &, G4bool, G4bool)
virtual void BuildRightOvary(const G4String &, G4bool, G4bool)
virtual void BuildPancreas(const G4String &, G4bool, G4bool)
virtual void BuildLeftAdrenal(const G4String &, G4bool, G4bool)
G4GLOB_DLL std::ostream G4cout
virtual void BuildRibCage(const G4String &, G4bool, G4bool)
virtual void BuildRightKidney(const G4String &, G4bool, G4bool)
virtual void BuildUpperLargeIntestine(const G4String &, G4bool, G4bool)
virtual void BuildStomach(const G4String &, G4bool, G4bool)
const XML_Char XML_Content * model
virtual void BuildLeftKidney(const G4String &, G4bool, G4bool)
virtual void BuildLowerLargeIntestine(const G4String &, G4bool, G4bool)
virtual void BuildLeftBreast(const G4String &, G4bool, G4bool)
virtual void BuildLeftClavicle(const G4String &, G4bool, G4bool)
virtual void BuildUpperSpine(const G4String &, G4bool, G4bool)
virtual void BuildVoxelLeftBreast(const G4String &, G4bool, G4bool)
virtual void BuildRightArmBone(const G4String &, G4bool, G4bool)
virtual void BuildThymus(const G4String &, G4bool, G4bool)
virtual void BuildRightLegBone(const G4String &, G4bool, G4bool)
#define G4endl
Definition: G4ios.hh:61
virtual void BuildRightAdrenal(const G4String &, G4bool, G4bool)
virtual void BuildRightClavicle(const G4String &, G4bool, G4bool)
virtual void BuildTrunk(const G4String &, G4bool, G4bool)
virtual void BuildLeftLegBone(const G4String &, G4bool, G4bool)
virtual void BuildRightBreast(const G4String &, G4bool, G4bool)
virtual void BuildLeftLeg(const G4String &, G4bool, G4bool)
virtual void BuildRightScapula(const G4String &, G4bool, G4bool)
virtual void BuildUterus(const G4String &, G4bool, G4bool)
virtual void BuildLeftArmBone(const G4String &, G4bool, G4bool)
virtual void BuildHead(const G4String &, G4bool, G4bool)
virtual void BuildRightLeg(const G4String &, G4bool, G4bool)
virtual void BuildSmallIntestine(const G4String &, G4bool, G4bool)
void G4HumanPhantomConstruction::ConstructSDandField ( )
virtual

Reimplemented from G4VUserDetectorConstruction.

Definition at line 282 of file G4HumanPhantomConstruction.cc.

References G4cout, G4endl, and G4VUserDetectorConstruction::SetSensitiveDetector().

283 {
284  G4HumanPhantomSD* SD = new G4HumanPhantomSD("SD", "HumanPhantomCollection");
285 
286 if (model != "ORNLMale" && model != "ORNLFemale" && model!= "ORNLHead")
287 {
288  SetSensitiveDetector("logicalHead",SD);
289  SetSensitiveDetector("logicalSkull",SD);
290  SetSensitiveDetector("logicalBrain",SD);
291  if (model != "MIRDHead")
292  {
293  SetSensitiveDetector("logicalTrunk",SD);
294  SetSensitiveDetector("logicalLeftLeg",SD);
295  SetSensitiveDetector("logicalRightLeg",SD);
296  SetSensitiveDetector("logicalLeftArmBone",SD);
297  SetSensitiveDetector("logicalRightArmBone",SD);
298  SetSensitiveDetector("logicalLeftLegBone",SD);
299  SetSensitiveDetector("logicalRightLegBone",SD);
300  SetSensitiveDetector("logicalUpperSpine",SD);
301  SetSensitiveDetector("logicalLeftScapula",SD);
302  SetSensitiveDetector("logicalRightScapula",SD);
303  SetSensitiveDetector("logicalLeftAdrenal",SD);
304  SetSensitiveDetector("logicalRightAdrenal",SD); SetSensitiveDetector("logicalThymus",SD); SetSensitiveDetector("logicalLeftClavicle",SD);
305  SetSensitiveDetector("logicalRightClavicle",SD);
306  SetSensitiveDetector("logicalSmallIntestine",SD);
307  SetSensitiveDetector("logicalRibCage",SD); SetSensitiveDetector("logicalMiddleLowerSpine",SD);
308  SetSensitiveDetector("logicalStomach",SD);
309  SetSensitiveDetector("logicalUpperLargeIntestine",SD);
310  SetSensitiveDetector("logicalLowerLargeIntestine",SD);
311  SetSensitiveDetector("logicalSpleen",SD);
312  SetSensitiveDetector("logicalPancreas",SD);
313  SetSensitiveDetector("logicalLeftKidney",SD);
314  SetSensitiveDetector("logicalRightKidney",SD);
315  SetSensitiveDetector("logicalUrinaryBladder",SD);
316 
317  if(sex=="Female"){
318 
319  SetSensitiveDetector("logicalLeftOvary",SD);
320  SetSensitiveDetector("logicalRightOvary",SD);
321  SetSensitiveDetector("logicalUterus",SD);
322  SetSensitiveDetector("logicalLeftBreast",SD);
323  SetSensitiveDetector("logicalRightBreast",SD);
324  }
325 
326  if(sex=="Male"){
327 
328 
329  SetSensitiveDetector("logicalMaleGenitalia",SD);
330  SetSensitiveDetector("logicalLeftTeste",SD);
331  SetSensitiveDetector("logicalRightTeste",SD);
332  }
333 
334  }
335  }else
336  {
337  SetSensitiveDetector("HeadVolume",SD);
338  SetSensitiveDetector("SkullVolume",SD);
339  SetSensitiveDetector("BrainVolume",SD);
340  G4cout << "Work in progress!!!! " << G4endl;
341  G4cout <<"ORNL model!!!! Head is sensitive only!!!" << G4endl;
342 }
343 
344 
345 }
G4GLOB_DLL std::ostream G4cout
const XML_Char XML_Content * model
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
#define G4endl
Definition: G4ios.hh:61
void G4HumanPhantomConstruction::SetBodyPartSensitivity ( G4String  ,
G4bool   
)

Definition at line 199 of file G4HumanPhantomConstruction.cc.

References G4cout, and G4endl.

Referenced by G4HumanPhantomMessenger::AddBodyPart().

200 {
201  G4cout << "This method is not currently working !!!!" << G4endl;
202 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
void G4HumanPhantomConstruction::SetPhantomModel ( G4String  newModel)

Definition at line 249 of file G4HumanPhantomConstruction.cc.

References G4cout, and G4endl.

Referenced by G4HumanPhantomMessenger::SetNewValue().

250 {
251  model = newModel;
252 
253  if (model == "MIRD")
254  {
255  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
256  }
257  if (model == "ORNLFemale")
258  {
259  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
260  }
261 
262  if (model == "ORNLMale")
263  {
264  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
265  }
266 
267  if (model == "MIX")
268  {
269  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
270  }
271  if (model == "MIRDHead")
272  {
273  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
274  }
275 
276  if (model == "ORNLHead")
277  {
278  G4cout<<" >> Phantom " << model << " will be built."<<G4endl;
279  }
280 }
G4GLOB_DLL std::ostream G4cout
const XML_Char XML_Content * model
#define G4endl
Definition: G4ios.hh:61
void G4HumanPhantomConstruction::SetPhantomSex ( G4String  newSex)

Definition at line 233 of file G4HumanPhantomConstruction.cc.

References G4cout, and G4endl.

Referenced by G4HumanPhantomMessenger::SetNewValue().

234 {
235  sex=newSex;
236 
237  if (sex == "Male")
238  {
239  G4cout << ">> Male Phantom will be built." << G4endl;
240  }
241  if (sex == "Female")
242  {
243  G4cout << ">> Female Phantom will be built." << G4endl;
244  }
245  if ((sex != "Female") && (sex != "Male"))
246  G4cout << sex << " can not be defined!" << G4endl;
247 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61

The documentation for this class was generated from the following files: