Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
SAXSDetectorConstruction Class Reference

Detector construction. More...

#include <Doxymodules_exoticphysics.h>

Inheritance diagram for SAXSDetectorConstruction:
G4VUserDetectorConstruction

Public Member Functions

 SAXSDetectorConstruction ()
 
 ~SAXSDetectorConstruction ()
 
void DefineMaterials ()
 
void SetGeometricalVariables ()
 
virtual G4VPhysicalVolumeConstruct ()
 
G4LogicalVolumeGetSensitiveVolume () const
 
G4LogicalVolumeGetPhantom () const
 
void SetCustomMatFF (const G4String &ffname)
 
void SetCustomMatDensity (G4double csd)
 
void SetCustomMatHmassfract (G4double csHmf)
 
void SetCustomMatCmassfract (G4double csCmf)
 
void SetCustomMatNmassfract (G4double csNmf)
 
void SetCustomMatOmassfract (G4double csOmf)
 
void SetCustomMatNamassfract (G4double csNamf)
 
void SetCustomMatPmassfract (G4double csPmf)
 
void SetCustomMatSmassfract (G4double csSmf)
 
void SetCustomMatClmassfract (G4double csClmf)
 
void SetCustomMatKmassfract (G4double csKmf)
 
void SetCustomMatCamassfract (G4double csCamf)
 
void SetPhantomMaterial (G4int mat)
 
void SetPhantomDiameter (G4double diam)
 
void SetPhantomHeight (G4double ht)
 
void SetPhantomZ (G4double PhZ)
 
void SetComp0 (G4double c0)
 
void SetComp1 (G4double c1)
 
void SetComp2 (G4double c2)
 
void SetComp3 (G4double c3)
 
void SetThetaSetup (G4double theta)
 
void SetSlits (G4bool bslits)
 
void SetSlit1Thickness (G4double sl1th)
 
void SetSlit2Thickness (G4double sl2th)
 
void SetSlit3Thickness (G4double sl3th)
 
void SetSlit4Thickness (G4double sl4th)
 
void SetSlit1SampleDistance (G4double slSampleDist1)
 
void SetSlit2SampleDistance (G4double slSampleDist2)
 
void SetSlit3SampleDistance (G4double slSampleDist3)
 
void SetSlit4SampleDistance (G4double slSampleDist4)
 
void SetSlit1xAperture (G4double aperture1x)
 
void SetSlit2xAperture (G4double aperture2x)
 
void SetSlit3xAperture (G4double aperture3x)
 
void SetSlit4xAperture (G4double aperture4x)
 
void SetSlit1yAperture (G4double aperture1y)
 
void SetSlit2yAperture (G4double aperture2y)
 
void SetSlit3yAperture (G4double aperture3y)
 
void SetSlit4yAperture (G4double aperture4y)
 
void SetDetectorSize (G4double detSize)
 
void SetDetectorThickness (G4double detTh)
 
void SetDetectorSampleDistance (G4double detDist)
 

Protected Attributes

G4LogicalVolumefSensitiveVolume
 

Private Member Functions

virtual void ConstructSDandField ()
 

Private Attributes

SAXSDetectorConstructionMessengerfMessenger
 
G4bool fIWantSlits
 
G4BoxfWorldSolid
 
G4LogicalVolumefWorldLogic
 
G4VPhysicalVolumefWorldPhysical
 
G4LogicalVolumefPhantomLogic
 
G4VPhysicalVolumefPhantomPhysical
 
G4MaterialfPhantomMaterial
 
G4int fPhantomMaterialIndex
 
G4LogicalVolumefSlit1Logic
 
G4LogicalVolumefSlit2Logic
 
G4LogicalVolumefSlit3Logic
 
G4LogicalVolumefSlit4Logic
 
G4VPhysicalVolumefSlit1Physical
 
G4VPhysicalVolumefSlit2Physical
 
G4VPhysicalVolumefSlit3Physical
 
G4VPhysicalVolumefSlit4Physical
 
G4LogicalVolumefDetectorLogic
 
G4VPhysicalVolumefDetectorPhysical
 
G4LogicalVolumefShieldingLogic
 
G4VPhysicalVolumefShieldingPhysical
 
G4LogicalVolumefShieldingBackLogic
 
G4VPhysicalVolumefShieldingBackPhysical
 
G4MaterialfFat
 
G4MaterialfWater
 
G4MaterialfBoneMatrix
 
G4MaterialfMineral
 
G4MaterialfMedMat
 
G4MaterialfPMMA
 
G4MaterialfAdipose
 
G4MaterialfGlandular
 
G4MaterialfBreast5050
 
G4Materialfcarcinoma
 
G4MaterialfLexan
 
G4MaterialfKapton
 
G4MaterialfNylon
 
G4MaterialfPolyethylene
 
G4MaterialfPolystyrene
 
G4MaterialfGrayMatter
 
G4MaterialfWhiteMatter
 
G4MaterialfbeefBlood
 
G4MaterialfFormaline
 
G4MaterialfAcetone
 
G4MaterialfHperoxide
 
G4MaterialfCIRS3070
 
G4MaterialfCIRS5050
 
G4MaterialfCIRS7030
 
G4MaterialfRMI454
 
G4MaterialfBone
 
G4MaterialffatLowX
 
G4MaterialfbonematrixLowX
 
G4MaterialfdryBoneLowX
 
G4Materialfliver
 
G4Materialfkidney
 
G4ExtendedMaterialfCustomMat
 
G4double fCustomMatDensity
 
G4double fCustomMatHmassfract
 
G4double fCustomMatCmassfract
 
G4double fCustomMatNmassfract
 
G4double fCustomMatOmassfract
 
G4double fCustomMatNamassfract
 
G4double fCustomMatPmassfract
 
G4double fCustomMatSmassfract
 
G4double fCustomMatClmassfract
 
G4double fCustomMatKmassfract
 
G4double fCustomMatCamassfract
 
G4String fCustomMatFF
 
G4double fComp0
 
G4double fComp1
 
G4double fComp2
 
G4double fComp3
 
G4MaterialfAir
 
G4MaterialfTungsten
 
G4MaterialfLead
 
G4MaterialfGe
 
G4double fWorldSize
 
G4double fPhantomDiameter
 
G4double fPhantomHeight
 
G4double fPhantomZ
 
G4double fthetaSetup
 
G4double fSlitSize
 
G4double fSlit1Thickness
 
G4double fSlit2Thickness
 
G4double fSlit3Thickness
 
G4double fSlit4Thickness
 
G4double fSlit1SampleDistance
 
G4double fSlit2SampleDistance
 
G4double fSlit3SampleDistance
 
G4double fSlit4SampleDistance
 
G4double fSlit1xAperture
 
G4double fSlit2xAperture
 
G4double fSlit3xAperture
 
G4double fSlit4xAperture
 
G4double fSlit1yAperture
 
G4double fSlit2yAperture
 
G4double fSlit3yAperture
 
G4double fSlit4yAperture
 
G4double fDetectorThickness
 
G4double fDetectorSize
 
G4double fDetectorSampleDistance
 
G4double fShieldingThickness
 

Detailed Description

Detector construction.

Definition at line 64 of file Doxymodules_exoticphysics.h.

Constructor & Destructor Documentation

◆ SAXSDetectorConstruction()

SAXSDetectorConstruction::SAXSDetectorConstruction ( )

Definition at line 88 of file SAXSDetectorConstruction.cc.

88 :
90{
91 G4cout << "### DetectorConstruction Instantiated ###" << G4endl;
92
93 //instantiate the messenger (set methods will be called after construct)
95
96 //set geometrical variables
98
99 //Initialization
101
102 fComp0 = 0.0; //components of the "Medical Material (MedMat)"
103 fComp1 = 1.0; //Through macro I can set one Medical Material only
104 fComp2 = 0.0;
105 fComp3 = 0.0;
106
107 fCustomMatDensity = 1.00; //g/mol
108 fCustomMatHmassfract = 0.1119;
111 fCustomMatOmassfract = 0.8881;
118
119 fCustomMatFF = ""; //MIFF filename for a custom (extended) material
120
122
123 fIWantSlits = false;
124}
DetectorConstruction messenger.
SAXSDetectorConstructionMessenger * fMessenger

◆ ~SAXSDetectorConstruction()

SAXSDetectorConstruction::~SAXSDetectorConstruction ( )

Definition at line 128 of file SAXSDetectorConstruction.cc.

128{}

Member Function Documentation

◆ DefineMaterials()

void SAXSDetectorConstruction::DefineMaterials ( )

Definition at line 132 of file SAXSDetectorConstruction.cc.

133{
134 //Define the NIST manager
135 G4NistManager* NistMan = G4NistManager::Instance();
136
137 //Define the required elements for compounds
138 G4Element* elH = NistMan->FindOrBuildElement("H");
139 G4Element* elC = NistMan->FindOrBuildElement("C");
140 G4Element* elN = NistMan->FindOrBuildElement("N");
141 G4Element* elO = NistMan->FindOrBuildElement("O");
142 G4Element* elNa = NistMan->FindOrBuildElement("Na");
143 G4Element* elP = NistMan->FindOrBuildElement("P");
144 G4Element* elS = NistMan->FindOrBuildElement("S");
145 G4Element* elCl = NistMan->FindOrBuildElement("Cl");
146 G4Element* elK = NistMan->FindOrBuildElement("K");
147 G4Element* elCa = NistMan->FindOrBuildElement("Ca");
148
149 //variable definition
150 G4double d; //density
151 G4int nel; //number of elements
152 G4String matname;
153
154 //Air
155 d = 1.29*mg/cm3;
156 nel = 2;
157 G4double tAir = 293.15 * CLHEP::kelvin; //20° Celsius
158 G4double pAir = 1.*CLHEP::atmosphere; //1 atm
159 fAir = new G4Material("Air", d, nel, kStateGas, tAir, pAir);
160 fAir->AddElement(elN, 0.7);
161 fAir->AddElement(elO, 0.3);
162
163 //Fat (Tartari2002) (FF from Tartari2002)
164 G4double d_Fat = 0.923*g/cm3;
165 nel = 3;
166 matname = "Fat_MI";
167 fFat = new G4Material(matname, d_Fat, nel);
168 fFat->AddElement(elH, 0.119);
169 fFat->AddElement(elC, 0.772);
170 fFat->AddElement(elO, 0.109);
171
172 //Water (FF from Tartari2002)
173 G4double d_Water = 1.*g/cm3;
174 nel = 2;
175 matname = "Water_MI";
176 fWater = new G4Material(matname, d_Water, nel);
177 fWater->AddElement(elH, 2);
178 fWater->AddElement(elO, 1);
179
180 //BoneMatrix (Collagen) (FF from Tartari2002)
181 G4double d_BoneMatrix = 1.263*g/cm3;
182 nel = 4;
183 matname = "BoneMatrix_MI";
184 fBoneMatrix = new G4Material(matname, d_BoneMatrix, nel);
185 fBoneMatrix->AddElement(elH, 0.0344);
186 fBoneMatrix->AddElement(elC, 0.7140);
187 fBoneMatrix->AddElement(elN, 0.1827);
188 fBoneMatrix->AddElement(elO, 0.0689);
189
190 //Mineral (Hydroxyapatite) (Tartari2002) (FF from Tartari2002)
191 G4double d_Mineral = 2.74*g/cm3;
192 nel = 4;
193 matname = "Mineral_MI";
194 fMineral = new G4Material(matname, d_Mineral, nel);
195 fMineral->AddElement(elH, 0.002);
196 fMineral->AddElement(elO, 0.414);
197 fMineral->AddElement(elP, 0.185);
198 fMineral->AddElement(elCa, 0.399);
199
200 //Medical Material (compostion of Water, Fat, BoneMatrix and Mineral)
201 G4double comp[] = {fComp0, fComp1, fComp2, fComp3};
202 G4double d_MedMat =
203 1/(comp[0]/d_Fat+comp[1]/d_Water+comp[2]/d_BoneMatrix+comp[3]/d_Mineral);
204 G4int n_MedMat = 0;
205 for (size_t i=0; i<4; i++) {
206 if (comp[i]>0) n_MedMat++;
207 if (comp[i]<0 || comp[i]>1) {
208 G4String excep =
209 "Error in Medical Material composition: comp[i]<0 or comp[i]>1";
210 G4Exception("DetectorConstuction::DefineMaterials()","dc0001",
211 FatalException,excep);
212 return;
213 }
214 }
215 std::stringstream ss0,ss1,ss2,ss3;
216 ss0 << comp[0];
217 ss1 << comp[1];
218 ss2 << comp[2];
219 ss3 << comp[3];
220 if (comp[0]==0 || comp[0]==1) ss0 << ".00";
221 if (comp[1]==0 || comp[1]==1) ss1 << ".00";
222 if (comp[2]==0 || comp[2]==1) ss2 << ".00";
223 if (comp[3]==0 || comp[3]==1) ss3 << ".00";
224 if (ss0.str().size()<4) ss0 << "0";
225 if (ss1.str().size()<4) ss1 << "0";
226 if (ss2.str().size()<4) ss2 << "0";
227 if (ss3.str().size()<4) ss3 << "0";
228 if (ss0.str().size()!=4 || ss1.str().size()!=4 || ss2.str().size()!=4
229 || ss3.str().size()!=4) {
230 G4String excep =
231 "Error in MedMaterial composition: check the digits of the elements of comp";
232 G4Exception("DetectorConstuction::DefineMaterials()","dc0002",
233 FatalException,excep);
234 return;
235 }
236 matname = "MedMat_"+ss0.str()+"_"+ss1.str()+"_"+ss2.str()+"_"+ss3.str();
237 fMedMat = new G4Material(matname, d_MedMat, n_MedMat);
238 if (comp[0]) fMedMat->AddMaterial(fFat, comp[0]);
239 if (comp[1]) fMedMat->AddMaterial(fWater, comp[1]);
240 if (comp[2]) fMedMat->AddMaterial(fBoneMatrix, comp[2]);
241 if (comp[3]) fMedMat->AddMaterial(fMineral, comp[3]);
242 if (comp[0]+comp[1]+comp[2]+comp[3] != 1) {
243 G4String excep = "Error in Medical Material composition: sum(comp) != 1";
244 G4Exception("DetectorConstuction::DefineMaterials()",
245 "dc0003",FatalException,excep);
246 return;
247 }
248 //If the user wants to use more than one MedMat, he has to create the mix
249 //and label the material properly, such as "MedMat_0.55_0.25_0.05_0.15".
250 //Such a name enables the automatic form factor calculation.
251
252 //PMMA (FF from Tartari2002)
253 d = 1.18*g/cm3;
254 nel = 3;
255 matname = "PMMA_MI";
256 fPMMA = new G4Material(matname, d, nel);
257 fPMMA->AddElement(elH, 8);
258 fPMMA->AddElement(elC, 5);
259 fPMMA->AddElement(elO, 2);
260
261 //Adipose (Poletti2002) (FF from Poletti2002)
262 d = 0.92*g/cm3;
263 nel = 4;
264 matname = "adipose_MI";
265 fAdipose = new G4Material(matname, d, nel);
266 fAdipose->AddElement(elH, 0.124);
267 fAdipose->AddElement(elC, 0.765);
268 fAdipose->AddElement(elN, 0.004);
269 fAdipose->AddElement(elO, 0.107);
270
271 //Glandular (Poletti2002) (FF from Poletti2002)
272 d = 1.04*g/cm3;
273 nel = 4;
274 matname = "glandular_MI";
275 fGlandular = new G4Material(matname, d, nel);
276 fGlandular->AddElement(elH, 0.093);
277 fGlandular->AddElement(elC, 0.184);
278 fGlandular->AddElement(elN, 0.044);
279 fGlandular->AddElement(elO, 0.679);
280
281 //human breast 50/50 (ICRU44) (FF from Peplow1998)
282 d = 0.96*g/cm3;
283 nel = 3;
284 matname = "breast5050_MI";
285 fBreast5050 = new G4Material(matname, d, nel);
286 fBreast5050->AddElement(elH, 0.115);
287 fBreast5050->AddElement(elC, 0.387);
288 fBreast5050->AddElement(elO, 0.498);
289
290 //Liver (ICRU46) (FF_pork_liver_Peplow1998)
291 d = 1.06*g/cm3;
292 nel = 9;
293 matname = "liver_MI";
294 fliver = new G4Material(matname, d, nel);
295 fliver->AddElement(elH, 0.102);
296 fliver->AddElement(elC, 0.139);
297 fliver->AddElement(elN, 0.030);
298 fliver->AddElement(elO, 0.716);
299 fliver->AddElement(elNa, 0.002);
300 fliver->AddElement(elP, 0.003);
301 fliver->AddElement(elS, 0.003);
302 fliver->AddElement(elCl, 0.002);
303 fliver->AddElement(elK, 0.003);
304
305 //Kidney (ICRU46) (FF_pork_kidney_Peplow1998)
306 d = 1.05*g/cm3;
307 nel = 10;
308 matname = "kidney_MI";
309 fkidney = new G4Material(matname, d, nel);
310 fkidney->AddElement(elH, 0.103);
311 fkidney->AddElement(elC, 0.132);
312 fkidney->AddElement(elN, 0.030);
313 fkidney->AddElement(elO, 0.724);
314 fkidney->AddElement(elNa, 0.002);
315 fkidney->AddElement(elP, 0.002);
316 fkidney->AddElement(elS, 0.002);
317 fkidney->AddElement(elCl, 0.002);
318 fkidney->AddElement(elK, 0.002);
319 fkidney->AddElement(elCa, 0.001);
320
321 //Lexan (Polycarbonate) (FF from Peplow1998)
322 d = 1.221*g/cm3;
323 nel = 3;
324 matname = "Lexan_MI";
325 fLexan = new G4Material(matname, d, nel);
326 fLexan->AddElement(elH, 14);
327 fLexan->AddElement(elC, 16);
328 fLexan->AddElement(elO, 3);
329
330 //Kapton (FF from Peplow1998)
331 d = 1.42*g/cm3;
332 nel = 4;
333 matname = "Kapton_MI";
334 fKapton = new G4Material(matname, d, nel);
335 fKapton->AddElement(elH, 28);
336 fKapton->AddElement(elC, 35);
337 fKapton->AddElement(elN, 2);
338 fKapton->AddElement(elO, 7);
339
340 //Carcinoma (muscle ICRU44) (FF from Kidane1999)
341 d = 1.05*g/cm3; //check the density
342 nel = 9;
343 matname = "carcinoma_MI";
344 fcarcinoma = new G4Material(matname, d, nel);
345 fcarcinoma->AddElement(elH, 0.102);
346 fcarcinoma->AddElement(elC, 0.143);
347 fcarcinoma->AddElement(elN, 0.034);
348 fcarcinoma->AddElement(elO, 0.710);
349 fcarcinoma->AddElement(elNa, 0.001);
350 fcarcinoma->AddElement(elP, 0.002);
351 fcarcinoma->AddElement(elS, 0.003);
352 fcarcinoma->AddElement(elCl, 0.001);
353 fcarcinoma->AddElement(elK, 0.004);
354
355 //Nylon (FF from Kosanetzky1987)
356 d = 1.15*g/cm3;
357 nel = 4;
358 matname = "Nylon_MI";
359 fNylon = new G4Material(matname, d, nel);
360 fNylon->AddElement(elH, 11);
361 fNylon->AddElement(elC, 6);
362 fNylon->AddElement(elN, 1);
363 fNylon->AddElement(elO, 1);
364
365 //Polyethylene (FF from Kosanetzky1987)
366 d = 0.94*g/cm3; //MDPE => 0.92*g/cm3, HDPE => 0.94*g/cm3
367 nel = 2;
368 matname = "Polyethylene_MI";
369 fPolyethylene = new G4Material(matname, d, nel);
370 fPolyethylene->AddElement(elH, 4);
371 fPolyethylene->AddElement(elC, 2);
372
373 //Polystyrene (FF from Kosanetzky1987)
374 d = 1.05*g/cm3;
375 nel = 2;
376 matname = "Polystyrene_MI";
377 fPolystyrene = new G4Material(matname, d, nel);
378 fPolystyrene->AddElement(elH, 8);
379 fPolystyrene->AddElement(elC, 8);
380
381 //GrayMatter (DeFelici2008) (FF from DeFelici2008)
382 d = 0.991*g/cm3;
383 nel = 3;
384 matname = "grayMatter_MI";
385 fGrayMatter = new G4Material(matname, d, nel);
386 fGrayMatter->AddElement(elH, 0.1127);
387 fGrayMatter->AddElement(elC, 0.0849);
388 fGrayMatter->AddElement(elO, 0.8024);
389
390 //WhiteMatter (DeFelici2008) (FF from DeFelici2008)
391 d = 0.983*g/cm3;
392 nel = 3;
393 matname = "whiteMatter_MI";
394 fWhiteMatter = new G4Material(matname, d, nel);
395 fWhiteMatter->AddElement(elH, 0.1134);
396 fWhiteMatter->AddElement(elC, 0.1621);
397 fWhiteMatter->AddElement(elO, 0.7245);
398
399 //Blood (beef) (ICRU46) (FF from Peplow1998)
400 d = 1.06*g/cm3;
401 nel = 9;
402 matname = "blood_MI";
403 fbeefBlood = new G4Material(matname, d, nel);
404 fbeefBlood->AddElement(elH, 0.102);
405 fbeefBlood->AddElement(elC, 0.11);
406 fbeefBlood->AddElement(elN, 0.033);
407 fbeefBlood->AddElement(elO, 0.746);
408 fbeefBlood->AddElement(elNa, 0.001);
409 fbeefBlood->AddElement(elP, 0.001);
410 fbeefBlood->AddElement(elS, 0.002);
411 fbeefBlood->AddElement(elCl, 0.003);
412 fbeefBlood->AddElement(elK, 0.002);
413
414 //Formaline (FF from Peplow1998)
415 d = 1.083*g/cm3;
416 nel = 3;
417 matname = "Formaline_MI";
418 fFormaline = new G4Material(matname, d, nel);
419 fFormaline->AddElement(elH, 2);
420 fFormaline->AddElement(elC, 1);
421 fFormaline->AddElement(elO, 1);
422
423 //Acetone (FF from Cozzini2010)
424 d = 0.7845*g/cm3;
425 nel = 3;
426 matname = "Acetone_MI";
427 fAcetone = new G4Material(matname, d, nel);
428 fAcetone->AddElement(elH, 6);
429 fAcetone->AddElement(elC, 3);
430 fAcetone->AddElement(elO, 1);
431
432 //Hperoxide (FF from Cozzini2010)
433 d = 1.11*g/cm3;
434 nel = 2;
435 matname = "Hperoxide_MI";
436 fHperoxide = new G4Material(matname, d, nel);
437 fHperoxide->AddElement(elH, 2);
438 fHperoxide->AddElement(elO, 2);
439
440 //CIRS30-70 (Poletti2002) (FF from Poletti2002)
441 d = 0.97*g/cm3;
442 nel = 5;
443 matname = "CIRS30-70_MI";
444 fCIRS3070 = new G4Material(matname, d, nel);
445 fCIRS3070->AddElement(elH, 0.1178);
446 fCIRS3070->AddElement(elC, 0.7512);
447 fCIRS3070->AddElement(elN, 0.0066);
448 fCIRS3070->AddElement(elO, 0.1214);
449 fCIRS3070->AddElement(elCa, 0.0030);
450
451 //CIRS50-50 (Poletti2002) (FF from Poletti2002)
452 d = 0.98*g/cm3;
453 nel = 5;
454 matname = "CIRS50-50_MI";
455 fCIRS5050 = new G4Material(matname, d, nel);
456 fCIRS5050->AddElement(elH, 0.1110);
457 fCIRS5050->AddElement(elC, 0.7274);
458 fCIRS5050->AddElement(elN, 0.0104);
459 fCIRS5050->AddElement(elO, 0.1482);
460 fCIRS5050->AddElement(elCa, 0.0030);
461
462 //CIRS70-30 (Poletti2002) (FF from Poletti2002)
463 d = 1.01*g/cm3;
464 nel = 5;
465 matname = "CIRS70-30_MI";
466 fCIRS7030 = new G4Material(matname, d, nel);
467 fCIRS7030->AddElement(elH, 0.1172);
468 fCIRS7030->AddElement(elC, 0.7378);
469 fCIRS7030->AddElement(elN, 0.0130);
470 fCIRS7030->AddElement(elO, 0.1244);
471 fCIRS7030->AddElement(elCa, 0.0076);
472
473 //RMI454 (Poletti2002) (FF from Poletti2002)
474 d = 0.98*g/cm3;
475 nel = 4;
476 matname = "RMI454_MI";
477 fRMI454 = new G4Material(matname, d, nel);
478 fRMI454->AddElement(elH, 0.0924);
479 fRMI454->AddElement(elC, 0.6935);
480 fRMI454->AddElement(elN, 0.0198);
481 fRMI454->AddElement(elO, 0.1943);
482
483 //Bone (King2011 decomposition) (FF from King2011)
484 d = 1.344*g/cm3;
485 nel = 6;
486 matname = "bone_MI";
487 fBone = new G4Material(matname, d, nel);
488 fBone->AddElement(elH, 0.0582);
489 fBone->AddElement(elC, 0.3055);
490 fBone->AddElement(elN, 0.0347);
491 fBone->AddElement(elO, 0.3856);
492 fBone->AddElement(elP, 0.0684);
493 fBone->AddElement(elCa, 0.1476);
494
495 //FatLowX (Tartari2002) (FF_fat_Tartari2002_joint_lowXdata_ESRF2003)
496 nel = 3;
497 matname = "FatLowX_MI";
498 ffatLowX = new G4Material(matname, d_Fat, nel);
499 ffatLowX->AddElement(elH, 0.119);
500 ffatLowX->AddElement(elC, 0.772);
501 ffatLowX->AddElement(elO, 0.109);
502
503 //BonematrixLowX (Collagen)
504 //(Tartari2002) (FF_bonematrix_Tartari2002_joint_lowXdata)
505 nel = 4;
506 matname = "BoneMatrixLowX_MI";
507 fbonematrixLowX = new G4Material(matname, d_BoneMatrix, nel);
508 fbonematrixLowX->AddElement(elH, 0.0344);
509 fbonematrixLowX->AddElement(elC, 0.7140);
510 fbonematrixLowX->AddElement(elN, 0.1827);
511 fbonematrixLowX->AddElement(elO, 0.0689);
512
513 //dryBoneLowX
514 //(Tartari2002) (FF_dryBone_Tartari2002_joint_lowXdata_ESRF2003)
515 d = 2.06*g/cm3;
516 nel = 6;
517 matname = "dryBoneLowX_MI";
518 fdryBoneLowX = new G4Material(matname, d, nel);
519 fdryBoneLowX->AddElement(elH, 0.0112);
520 fdryBoneLowX->AddElement(elC, 0.2013);
521 fdryBoneLowX->AddElement(elN, 0.0515);
522 fdryBoneLowX->AddElement(elO, 0.3148);
523 fdryBoneLowX->AddElement(elP, 0.1327);
524 fdryBoneLowX->AddElement(elCa, 0.2885);
525
526 //CustomMat (FF read from file)
527 nel = 0;
528 G4double sumMF = 0.;
529 G4cout << "CustomMat composition: " << G4endl;
531 G4cout << "CustomMatHmassfract: " << fCustomMatHmassfract << G4endl;
532 nel++;
533 sumMF += fCustomMatHmassfract;
534 }
536 G4cout << "CustomMatCmassfract: " << fCustomMatCmassfract << G4endl;
537 nel++;
538 sumMF += fCustomMatCmassfract;
539 }
541 G4cout << "CustomMatNmassfract: " << fCustomMatNmassfract << G4endl;
542 nel++;
543 sumMF += fCustomMatNmassfract;
544 }
546 G4cout << "CustomMatOmassfract: " << fCustomMatOmassfract << G4endl;
547 nel++;
548 sumMF += fCustomMatOmassfract;
549 }
551 G4cout << "CustomMatNamassfract: " << fCustomMatNamassfract << G4endl;
552 nel++;
553 sumMF += fCustomMatNamassfract;
554 }
556 G4cout << "CustomMatPmassfract: " << fCustomMatPmassfract << G4endl;
557 nel++;
558 sumMF += fCustomMatPmassfract;
559 }
561 G4cout << "CustomMatSmassfract: " << fCustomMatSmassfract << G4endl;
562 nel++;
563 sumMF += fCustomMatSmassfract;
564 }
566 G4cout << "CustomMatClmassfract: " << fCustomMatClmassfract << G4endl;
567 nel++;
568 sumMF += fCustomMatClmassfract;
569 }
571 G4cout << "CustomMatKmassfract: " << fCustomMatKmassfract << G4endl;
572 nel++;
573 sumMF += fCustomMatKmassfract;
574 }
576 G4cout << "CustomMatCamassfract: " << fCustomMatCamassfract << G4endl;
577 nel++;
578 sumMF += fCustomMatCamassfract;
579 }
580 if (sumMF == 0.) {
581 //set a default material (water),
582 //otherwiswe an error appears in the interactive mode
583 fCustomMatDensity = 1.00; //g/cm3
584 fCustomMatHmassfract = 0.1119;
585 G4cout << "CustomMat set, but not used!" << G4endl;
586 G4cout << "CustomMatHmassfract: " << fCustomMatHmassfract << G4endl;
587 fCustomMatOmassfract = 0.8881;
588 G4cout << "CustomMatOmassfract: " << fCustomMatOmassfract << G4endl;
589 nel = 2;
590 sumMF = 1;
591 }
592 if (sumMF != 1.) {
593 G4String excep =
594 "Error in Custom Material composition: check elemental mass fractions";
595 G4Exception("DetectorConstuction::DefineMaterials()",
596 "dc0004",FatalException,excep);
597 return;
598 }
599
600 d = fCustomMatDensity*g/cm3;
601 matname = "CustomMat";
602 //Notice: this is an extended material
603 fCustomMat = new G4ExtendedMaterial(matname, d, nel);
605 fCustomMat->AddElement(elH, fCustomMatHmassfract);
607 fCustomMat->AddElement(elC, fCustomMatCmassfract);
609 fCustomMat->AddElement(elN, fCustomMatNmassfract);
611 fCustomMat->AddElement(elO, fCustomMatOmassfract);
613 fCustomMat->AddElement(elNa, fCustomMatNamassfract);
615 fCustomMat->AddElement(elP, fCustomMatPmassfract);
617 fCustomMat->AddElement(elS, fCustomMatSmassfract);
619 fCustomMat->AddElement(elCl, fCustomMatClmassfract);
621 fCustomMat->AddElement(elK, fCustomMatKmassfract);
623 fCustomMat->AddElement(elCa, fCustomMatCamassfract);
624 //Register MI extension
625 fCustomMat->RegisterExtension
626 (std::unique_ptr<G4MIData>(new G4MIData("MI")));
627 G4MIData* dataMICustomMat = (G4MIData*)fCustomMat->RetrieveExtension("MI");
628 dataMICustomMat->SetFilenameFF(fCustomMatFF);
629
630 //Nist Materials
631 fLead = NistMan->FindOrBuildMaterial("G4_Pb");
632 fTungsten = NistMan->FindOrBuildMaterial("G4_W");
633 fGe = NistMan->FindOrBuildMaterial("G4_Ge");
634}

◆ SetGeometricalVariables()

void SAXSDetectorConstruction::SetGeometricalVariables ( )

Definition at line 638 of file SAXSDetectorConstruction.cc.

639{
640 //World
641 fWorldSize = 10000.*mm;
642
643 //Phantom
644 fPhantomDiameter = 50.*mm;
645 fPhantomHeight = 15.*mm;
646 fPhantomZ = 0.*mm;
647
648 //setup angle (rad)
649 fthetaSetup = 0.;
650
651 //Slits
652 fSlitSize = 50.*mm;
653 fSlit1Thickness = 5.*mm;
654 fSlit2Thickness = 5.*mm;
655 fSlit3Thickness = 5.*mm;
656 fSlit4Thickness = 5.*mm;
657 fSlit1SampleDistance = 350.*mm;
658 fSlit2SampleDistance = 50.*mm;
659 fSlit3SampleDistance = 50.*mm;
660 fSlit4SampleDistance = 450.*mm;
661 fSlit1xAperture = 4.*mm;
662 fSlit2xAperture = 4.*mm;
663 fSlit3xAperture = 4.*mm;
664 fSlit4xAperture = 4.*mm;
665 fSlit1yAperture = 4.*mm;
666 fSlit2yAperture = 4.*mm;
667 fSlit3yAperture = 4.*mm;
668 fSlit4yAperture = 4.*mm;
669
670 //Detector
671 fDetectorSize = 20.*mm;
672 fDetectorThickness = 20.*mm;
673 fDetectorSampleDistance = 500.*mm;
674
675 //Shielding
676 fShieldingThickness = 4.*mm;
677}

◆ Construct()

G4VPhysicalVolume * SAXSDetectorConstruction::Construct ( )
virtual

Definition at line 681 of file SAXSDetectorConstruction.cc.

682{
683 //define custom materials
685
686 //World
687 fWorldSolid = new G4Box("WorldSolid",
688 fWorldSize*0.5,
689 fWorldSize*0.5,
690 fWorldSize*0.5);
691
692 fWorldLogic = new G4LogicalVolume(fWorldSolid, fAir, "WorldLogic");
693
694 fWorldLogic->SetVisAttributes(G4VisAttributes::GetInvisible());
695
697 G4ThreeVector(0., 0., 0.),
699 "WorldPhysical",
700 0,
701 false,
702 0);
703
704 //choose the phantom material
705 switch (fPhantomMaterialIndex) {
706 case (1):
708 break;
709 case (2):
711 break;
712 case (3):
714 break;
715 case (4):
717 break;
718 case (5):
720 break;
721 case (6):
723 break;
724 case (7):
726 break;
727 case (8):
729 break;
730 case (9):
732 break;
733 case (10):
735 break;
736 case (11):
738 break;
739 case (12):
741 break;
742 case (13):
744 break;
745 case (14):
747 break;
748 case (15):
750 break;
751 case (16):
753 break;
754 case (17):
756 break;
757 case (18):
759 break;
760 case (19):
762 break;
763 case (20):
765 break;
766 case (21):
768 break;
769 case (22):
771 break;
772 case (23):
774 break;
775 case (24):
777 break;
778 case (25):
780 break;
781 case (26):
783 break;
784 case (27):
786 break;
787 case (28):
789 break;
790 case (29):
792 break;
793 case (30):
795 break;
796 }
797
798 //Phantom (cylinder with axis orthogonal to the X-ray beam axis)
799 G4Tubs* PhantomSolid = new G4Tubs("PhantomSolid",
800 0.,
801 fPhantomDiameter*0.5,
802 fPhantomHeight*0.5,
803 0.*deg,
804 360.*deg);
805
806 fPhantomLogic = new G4LogicalVolume(PhantomSolid,
808 "PhantomLogic");
809
810 G4VisAttributes* PhantomVisAttribute =
811 new G4VisAttributes(G4Colour(1., 1., 1.));
812 PhantomVisAttribute->SetForceSolid(true);
813 fPhantomLogic->SetVisAttributes(PhantomVisAttribute);
814
815 G4cout << "Phantom material: " << fPhantomMaterial->GetName() << G4endl;
816 G4cout << "Phantom density: " << fPhantomMaterial->GetDensity()/(g/cm3)
817 << " g/cm3" << G4endl;
818 G4cout << "Phantom mass: " << fPhantomLogic->GetMass()/g << " g" << G4endl;
819
820 G4double rotAngle = 90.*CLHEP::deg;
821 G4RotationMatrix* PhantomRotationMatrix =
822 new G4RotationMatrix(0., 0., 0.);
823 PhantomRotationMatrix->rotateX(rotAngle);
824
825 fPhantomPhysical = new G4PVPlacement(PhantomRotationMatrix,
826 G4ThreeVector(0., 0., fPhantomZ),
828 "PhantomPhysical",
830 false,
831 0);
832
833 //setup rotation matrix (downstream of the phantom/sample)
834 G4RotationMatrix* SetupRotationMatrix = new G4RotationMatrix();
835 SetupRotationMatrix->rotateY(-fthetaSetup);
836
837 //Slits
838 G4Box* Slit1OutSolid = new G4Box("Slit1OutSolid",
839 fSlitSize*0.5,
840 fSlitSize*0.5,
841 fSlit1Thickness*0.5);
842
843 G4Box* Slit2OutSolid = new G4Box("Slit2OutSolid",
844 fSlitSize*0.5,
845 fSlitSize*0.5,
846 fSlit2Thickness*0.5);
847
848 G4Box* Slit3OutSolid = new G4Box("Slit3OutSolid",
849 fSlitSize*0.5,
850 fSlitSize*0.5,
851 fSlit3Thickness*0.5);
852
853 G4Box* Slit4OutSolid = new G4Box("Slit4OutSolid",
854 fSlitSize*0.5,
855 fSlitSize*0.5,
856 fSlit4Thickness*0.5);
857
858 G4Box* Hole1Solid = new G4Box("Hole1Solid",
859 fSlit1xAperture*0.5,
860 fSlit1yAperture*0.5,
861 fSlit1Thickness*0.51);
862
863 G4Box* Hole2Solid = new G4Box("Hole2Solid",
864 fSlit2xAperture*0.5,
865 fSlit2yAperture*0.5,
866 fSlit2Thickness*0.51);
867
868 G4Box* Hole3Solid = new G4Box("Hole3Solid",
869 fSlit3xAperture*0.5,
870 fSlit3yAperture*0.5,
871 fSlit3Thickness*0.51);
872
873 G4Box* Hole4Solid = new G4Box("Hole4Solid",
874 fSlit4xAperture*0.5,
875 fSlit4yAperture*0.5,
876 fSlit4Thickness*0.51);
877
878 G4SubtractionSolid* Slit1Solid = new G4SubtractionSolid("Slit1Solid",
879 Slit1OutSolid,
880 Hole1Solid);
881
882 G4SubtractionSolid* Slit2Solid = new G4SubtractionSolid("Slit1Solid",
883 Slit2OutSolid,
884 Hole2Solid);
885
886 G4SubtractionSolid* Slit3Solid = new G4SubtractionSolid("Slit3Solid",
887 Slit3OutSolid,
888 Hole3Solid);
889
890 G4SubtractionSolid* Slit4Solid = new G4SubtractionSolid("Slit4Solid",
891 Slit4OutSolid,
892 Hole4Solid);
893
894 fSlit1Logic = new G4LogicalVolume(Slit1Solid, fTungsten, "Slit1Logic");
895 fSlit2Logic = new G4LogicalVolume(Slit2Solid, fTungsten, "Slit2Logic");
896 fSlit3Logic = new G4LogicalVolume(Slit3Solid, fTungsten, "Slit3Logic");
897 fSlit4Logic = new G4LogicalVolume(Slit4Solid, fTungsten, "Slit4Logic");
898
899 if (fIWantSlits) {
900 G4cout << "Slit material: Tungsten" << G4endl;
901 G4cout << "Slit1 thickness: " << fSlit1Thickness/mm << " mm" << G4endl;
902 G4cout << "Slit2 thickness: " << fSlit2Thickness/mm << " mm" << G4endl;
903 G4cout << "Slit3 thickness: " << fSlit3Thickness/mm << " mm" << G4endl;
904 G4cout << "Slit4 thickness: " << fSlit4Thickness/mm << " mm" << G4endl;
905 G4cout << "Slit1 aperture: " << fSlit1xAperture/mm << " x "
906 << fSlit1yAperture/mm << " mm2" << G4endl;
907 G4cout << "Slit2 aperture: " << fSlit2xAperture/mm << " x "
908 << fSlit2yAperture/mm << " mm2" << G4endl;
909 G4cout << "Slit3 aperture: " << fSlit3xAperture/mm << " x "
910 << fSlit3yAperture/mm << " mm2" << G4endl;
911 G4cout << "Slit4 aperture: " << fSlit4xAperture/mm << " x "
912 << fSlit4yAperture/mm << " mm2" << G4endl;
913 }
914
915 G4VisAttributes* SlitlVisAttribute =
916 new G4VisAttributes(G4Colour(0.5, 0.5, 0.5));
917 SlitlVisAttribute->SetForceSolid(true);
918 fSlit1Logic->SetVisAttributes(SlitlVisAttribute);
919 fSlit2Logic->SetVisAttributes(SlitlVisAttribute);
920 fSlit3Logic->SetVisAttributes(SlitlVisAttribute);
921 fSlit4Logic->SetVisAttributes(SlitlVisAttribute);
922
923 G4double Slit1z = fPhantomZ - fSlit1SampleDistance;
924 G4ThreeVector Slit1PositionVector = G4ThreeVector(0., 0., Slit1z);
925
926 G4double Slit2z = fPhantomZ - fSlit2SampleDistance;
927 G4ThreeVector Slit2PositionVector = G4ThreeVector(0., 0., Slit2z);
928
929 G4double Slit3x = fSlit3SampleDistance*std::sin(fthetaSetup);
930 G4double Slit3z = fPhantomZ + fSlit3SampleDistance*std::cos(fthetaSetup);
931 G4ThreeVector Slit3PositionVector = G4ThreeVector(Slit3x, 0., Slit3z);
932
933 G4double Slit4x = fSlit4SampleDistance*std::sin(fthetaSetup);
934 G4double Slit4z = fPhantomZ + fSlit4SampleDistance*std::cos(fthetaSetup);
935 G4ThreeVector Slit4PositionVector = G4ThreeVector(Slit4x, 0., Slit4z);
936
937 if (fIWantSlits) {
939 Slit1PositionVector,
941 "Slit1Physical",
943 false,
944 0);
945
947 Slit2PositionVector,
949 "Slit2Physical",
951 false,
952 0);
953
954 fSlit3Physical = new G4PVPlacement(SetupRotationMatrix,
955 Slit3PositionVector,
957 "Slit3Physical",
959 false,
960 0);
961
962 fSlit4Physical = new G4PVPlacement(SetupRotationMatrix,
963 Slit4PositionVector,
965 "Slit4Physical",
967 false,
968 0);
969 }
970
971 //Detector (with shielding)
972 G4Tubs* DetectorSolid = new G4Tubs("DetectorSolid",
973 0.,
974 fDetectorSize*0.5,
976 0.*deg,
977 360.*deg);
978
979 fDetectorLogic = new G4LogicalVolume(DetectorSolid, fGe, "DetectorLogic");
980
981 G4VisAttributes* DetectorVisAttribute =
982 new G4VisAttributes(G4Colour(0., 0.5, 0.));
983 DetectorVisAttribute->SetForceSolid(true);
984 fDetectorLogic->SetVisAttributes(DetectorVisAttribute);
985
986 G4double Detx = fDetectorSampleDistance*std::sin(fthetaSetup);
987 G4double Detz = fPhantomZ + fDetectorSampleDistance*std::cos(fthetaSetup);
988 G4ThreeVector DetectorPositionVector = G4ThreeVector(Detx, 0., Detz);
989
990 fDetectorPhysical = new G4PVPlacement(SetupRotationMatrix,
991 DetectorPositionVector,
993 "DetectorPhysical",
995 false,
996 0);
997
998 //Shielding
999 G4double ShieldingSize = fDetectorSize+2*fShieldingThickness;
1000
1001 G4double margin = 2.;
1002 G4double ShieldingLength = fDetectorThickness+fShieldingThickness*margin;
1003
1004 G4double ShieldingSampleDistance = fDetectorSampleDistance+
1007 ShieldingLength*0.5;
1008
1009 G4Tubs* ShieldingSolid = new G4Tubs("ShieldingSolid",
1010 fDetectorSize*0.5,
1011 ShieldingSize*0.5,
1012 ShieldingLength*0.5,
1013 0.*deg,
1014 360.*deg);
1015
1016 fShieldingLogic = new G4LogicalVolume(ShieldingSolid,
1017 fLead,
1018 "ShieldingLogic");
1019
1020 G4cout << "Shielding material: Lead" << G4endl;
1021 G4cout << "Shielding thickness: " << fShieldingThickness/mm
1022 << " mm" << G4endl;
1023
1024 G4VisAttributes* ShieldingVisAttribute =
1025 new G4VisAttributes(G4Colour(0.3, 0.3, 0.3));
1026 ShieldingVisAttribute->SetForceSolid(true);
1027 fShieldingLogic->SetVisAttributes(ShieldingVisAttribute);
1028
1029 G4double Shieldx = ShieldingSampleDistance*std::sin(fthetaSetup);
1030 G4double Shieldz = fPhantomZ +
1031 ShieldingSampleDistance*std::cos(fthetaSetup);
1032 G4ThreeVector ShieldingPositionVector =
1033 G4ThreeVector(Shieldx, 0., Shieldz);
1034
1035 G4double ShieldingBackSampleDistance = fDetectorSampleDistance+
1038
1039 G4Tubs* ShieldingBackSolid = new G4Tubs("ShieldingBackSolid",
1040 0.,
1041 fDetectorSize*0.5,
1043 0.*deg,
1044 360.*deg);
1045
1046 fShieldingBackLogic = new G4LogicalVolume(ShieldingBackSolid,
1047 fLead,
1048 "ShieldingBackLogic");
1049
1050 fShieldingBackLogic->SetVisAttributes(ShieldingVisAttribute);
1051
1052 G4double ShieldBackx = ShieldingBackSampleDistance*std::sin(fthetaSetup);
1053 G4double ShieldBackz = fPhantomZ +
1054 ShieldingBackSampleDistance*std::cos(fthetaSetup);
1055 G4ThreeVector ShieldingBackPositionVector =
1056 G4ThreeVector(ShieldBackx, 0., ShieldBackz);
1057
1058 fShieldingPhysical = new G4PVPlacement(SetupRotationMatrix,
1059 ShieldingPositionVector,
1061 "ShieldingPhysical",
1062 fWorldLogic,
1063 false,
1064 0);
1065
1066 fShieldingBackPhysical = new G4PVPlacement(SetupRotationMatrix,
1067 ShieldingBackPositionVector,
1069 "ShieldingBackPhysical",
1070 fWorldLogic,
1071 false,
1072 0);
1073
1074 return fWorldPhysical;
1075
1076}
G4VPhysicalVolume * fShieldingBackPhysical

◆ GetSensitiveVolume()

G4LogicalVolume * SAXSDetectorConstruction::GetSensitiveVolume ( ) const
inline

Definition at line 69 of file SAXSDetectorConstruction.hh.

69{return fSensitiveVolume;}

◆ GetPhantom()

G4LogicalVolume * SAXSDetectorConstruction::GetPhantom ( ) const
inline

Definition at line 70 of file SAXSDetectorConstruction.hh.

70{return fPhantomLogic;}

◆ ConstructSDandField()

void SAXSDetectorConstruction::ConstructSDandField ( )
privatevirtual

Definition at line 1080 of file SAXSDetectorConstruction.cc.

1081{
1082 //Sensitive Volume
1083 G4VSensitiveDetector* vDetector = new SAXSSensitiveDetector("det");
1084 G4SDManager::GetSDMpointer()->AddNewDetector(vDetector);
1086 fSensitiveVolume->SetSensitiveDetector(vDetector);
1087}

◆ SetCustomMatFF()

void SAXSDetectorConstruction::SetCustomMatFF ( const G4String ffname)
inline

Definition at line 213 of file SAXSDetectorConstruction.hh.

213{fCustomMatFF = ffname;}

◆ SetCustomMatDensity()

void SAXSDetectorConstruction::SetCustomMatDensity ( G4double  csd)
inline

Definition at line 215 of file SAXSDetectorConstruction.hh.

215{fCustomMatDensity = csd;}

◆ SetCustomMatHmassfract()

void SAXSDetectorConstruction::SetCustomMatHmassfract ( G4double  csHmf)
inline

Definition at line 216 of file SAXSDetectorConstruction.hh.

216{fCustomMatHmassfract = csHmf;}

◆ SetCustomMatCmassfract()

void SAXSDetectorConstruction::SetCustomMatCmassfract ( G4double  csCmf)
inline

Definition at line 217 of file SAXSDetectorConstruction.hh.

217{fCustomMatCmassfract = csCmf;}

◆ SetCustomMatNmassfract()

void SAXSDetectorConstruction::SetCustomMatNmassfract ( G4double  csNmf)
inline

Definition at line 218 of file SAXSDetectorConstruction.hh.

218{fCustomMatNmassfract = csNmf;}

◆ SetCustomMatOmassfract()

void SAXSDetectorConstruction::SetCustomMatOmassfract ( G4double  csOmf)
inline

Definition at line 219 of file SAXSDetectorConstruction.hh.

219{fCustomMatOmassfract = csOmf;}

◆ SetCustomMatNamassfract()

void SAXSDetectorConstruction::SetCustomMatNamassfract ( G4double  csNamf)
inline

Definition at line 220 of file SAXSDetectorConstruction.hh.

220{fCustomMatNamassfract = csNamf;}

◆ SetCustomMatPmassfract()

void SAXSDetectorConstruction::SetCustomMatPmassfract ( G4double  csPmf)
inline

Definition at line 221 of file SAXSDetectorConstruction.hh.

221{fCustomMatPmassfract = csPmf;}

◆ SetCustomMatSmassfract()

void SAXSDetectorConstruction::SetCustomMatSmassfract ( G4double  csSmf)
inline

Definition at line 222 of file SAXSDetectorConstruction.hh.

222{fCustomMatSmassfract = csSmf;}

◆ SetCustomMatClmassfract()

void SAXSDetectorConstruction::SetCustomMatClmassfract ( G4double  csClmf)
inline

Definition at line 223 of file SAXSDetectorConstruction.hh.

223{fCustomMatClmassfract = csClmf;}

◆ SetCustomMatKmassfract()

void SAXSDetectorConstruction::SetCustomMatKmassfract ( G4double  csKmf)
inline

Definition at line 224 of file SAXSDetectorConstruction.hh.

224{fCustomMatKmassfract = csKmf;}

◆ SetCustomMatCamassfract()

void SAXSDetectorConstruction::SetCustomMatCamassfract ( G4double  csCamf)
inline

Definition at line 225 of file SAXSDetectorConstruction.hh.

225{fCustomMatCamassfract = csCamf;}

◆ SetPhantomMaterial()

void SAXSDetectorConstruction::SetPhantomMaterial ( G4int  mat)
inline

Definition at line 227 of file SAXSDetectorConstruction.hh.

◆ SetPhantomDiameter()

void SAXSDetectorConstruction::SetPhantomDiameter ( G4double  diam)
inline

Definition at line 229 of file SAXSDetectorConstruction.hh.

229{fPhantomDiameter = diam;}

◆ SetPhantomHeight()

void SAXSDetectorConstruction::SetPhantomHeight ( G4double  ht)
inline

Definition at line 230 of file SAXSDetectorConstruction.hh.

230{fPhantomHeight = ht;}

◆ SetPhantomZ()

void SAXSDetectorConstruction::SetPhantomZ ( G4double  PhZ)
inline

Definition at line 231 of file SAXSDetectorConstruction.hh.

231{fPhantomZ = PhZ;}

◆ SetComp0()

void SAXSDetectorConstruction::SetComp0 ( G4double  c0)
inline

Definition at line 233 of file SAXSDetectorConstruction.hh.

233{fComp0 = c0;}

◆ SetComp1()

void SAXSDetectorConstruction::SetComp1 ( G4double  c1)
inline

Definition at line 234 of file SAXSDetectorConstruction.hh.

234{fComp1 = c1;}

◆ SetComp2()

void SAXSDetectorConstruction::SetComp2 ( G4double  c2)
inline

Definition at line 235 of file SAXSDetectorConstruction.hh.

235{fComp2 = c2;}

◆ SetComp3()

void SAXSDetectorConstruction::SetComp3 ( G4double  c3)
inline

Definition at line 236 of file SAXSDetectorConstruction.hh.

236{fComp3 = c3;}

◆ SetThetaSetup()

void SAXSDetectorConstruction::SetThetaSetup ( G4double  theta)
inline

Definition at line 238 of file SAXSDetectorConstruction.hh.

238{fthetaSetup = theta;}

◆ SetSlits()

void SAXSDetectorConstruction::SetSlits ( G4bool  bslits)
inline

Definition at line 240 of file SAXSDetectorConstruction.hh.

240{fIWantSlits = bslits;}

◆ SetSlit1Thickness()

void SAXSDetectorConstruction::SetSlit1Thickness ( G4double  sl1th)
inline

Definition at line 241 of file SAXSDetectorConstruction.hh.

241{fSlit1Thickness = sl1th;}

◆ SetSlit2Thickness()

void SAXSDetectorConstruction::SetSlit2Thickness ( G4double  sl2th)
inline

Definition at line 242 of file SAXSDetectorConstruction.hh.

242{fSlit2Thickness = sl2th;}

◆ SetSlit3Thickness()

void SAXSDetectorConstruction::SetSlit3Thickness ( G4double  sl3th)
inline

Definition at line 243 of file SAXSDetectorConstruction.hh.

243{fSlit3Thickness = sl3th;}

◆ SetSlit4Thickness()

void SAXSDetectorConstruction::SetSlit4Thickness ( G4double  sl4th)
inline

Definition at line 244 of file SAXSDetectorConstruction.hh.

244{fSlit4Thickness = sl4th;}

◆ SetSlit1SampleDistance()

void SAXSDetectorConstruction::SetSlit1SampleDistance ( G4double  slSampleDist1)
inline

Definition at line 245 of file SAXSDetectorConstruction.hh.

246 {fSlit1SampleDistance = slSampleDist1;}

◆ SetSlit2SampleDistance()

void SAXSDetectorConstruction::SetSlit2SampleDistance ( G4double  slSampleDist2)
inline

Definition at line 247 of file SAXSDetectorConstruction.hh.

248 {fSlit2SampleDistance = slSampleDist2;}

◆ SetSlit3SampleDistance()

void SAXSDetectorConstruction::SetSlit3SampleDistance ( G4double  slSampleDist3)
inline

Definition at line 249 of file SAXSDetectorConstruction.hh.

250 {fSlit3SampleDistance = slSampleDist3;}

◆ SetSlit4SampleDistance()

void SAXSDetectorConstruction::SetSlit4SampleDistance ( G4double  slSampleDist4)
inline

Definition at line 251 of file SAXSDetectorConstruction.hh.

252 {fSlit4SampleDistance = slSampleDist4;}

◆ SetSlit1xAperture()

void SAXSDetectorConstruction::SetSlit1xAperture ( G4double  aperture1x)
inline

Definition at line 253 of file SAXSDetectorConstruction.hh.

253{fSlit1xAperture = aperture1x;}

◆ SetSlit2xAperture()

void SAXSDetectorConstruction::SetSlit2xAperture ( G4double  aperture2x)
inline

Definition at line 254 of file SAXSDetectorConstruction.hh.

254{fSlit2xAperture = aperture2x;}

◆ SetSlit3xAperture()

void SAXSDetectorConstruction::SetSlit3xAperture ( G4double  aperture3x)
inline

Definition at line 255 of file SAXSDetectorConstruction.hh.

255{fSlit3xAperture = aperture3x;}

◆ SetSlit4xAperture()

void SAXSDetectorConstruction::SetSlit4xAperture ( G4double  aperture4x)
inline

Definition at line 256 of file SAXSDetectorConstruction.hh.

256{fSlit4xAperture = aperture4x;}

◆ SetSlit1yAperture()

void SAXSDetectorConstruction::SetSlit1yAperture ( G4double  aperture1y)
inline

Definition at line 257 of file SAXSDetectorConstruction.hh.

257{fSlit1yAperture = aperture1y;}

◆ SetSlit2yAperture()

void SAXSDetectorConstruction::SetSlit2yAperture ( G4double  aperture2y)
inline

Definition at line 258 of file SAXSDetectorConstruction.hh.

258{fSlit2yAperture = aperture2y;}

◆ SetSlit3yAperture()

void SAXSDetectorConstruction::SetSlit3yAperture ( G4double  aperture3y)
inline

Definition at line 259 of file SAXSDetectorConstruction.hh.

259{fSlit3yAperture = aperture3y;}

◆ SetSlit4yAperture()

void SAXSDetectorConstruction::SetSlit4yAperture ( G4double  aperture4y)
inline

Definition at line 260 of file SAXSDetectorConstruction.hh.

260{fSlit4yAperture = aperture4y;}

◆ SetDetectorSize()

void SAXSDetectorConstruction::SetDetectorSize ( G4double  detSize)
inline

Definition at line 262 of file SAXSDetectorConstruction.hh.

262{fDetectorSize = detSize;}

◆ SetDetectorThickness()

void SAXSDetectorConstruction::SetDetectorThickness ( G4double  detTh)
inline

Definition at line 263 of file SAXSDetectorConstruction.hh.

263{fDetectorThickness = detTh;}

◆ SetDetectorSampleDistance()

void SAXSDetectorConstruction::SetDetectorSampleDistance ( G4double  detDist)
inline

Definition at line 264 of file SAXSDetectorConstruction.hh.

265 {fDetectorSampleDistance = detDist;}

Member Data Documentation

◆ fSensitiveVolume

G4LogicalVolume* SAXSDetectorConstruction::fSensitiveVolume
protected

Definition at line 73 of file SAXSDetectorConstruction.hh.

◆ fMessenger

SAXSDetectorConstructionMessenger* SAXSDetectorConstruction::fMessenger
private

Definition at line 78 of file SAXSDetectorConstruction.hh.

◆ fIWantSlits

G4bool SAXSDetectorConstruction::fIWantSlits
private

Definition at line 80 of file SAXSDetectorConstruction.hh.

◆ fWorldSolid

G4Box* SAXSDetectorConstruction::fWorldSolid
private

Definition at line 84 of file SAXSDetectorConstruction.hh.

◆ fWorldLogic

G4LogicalVolume* SAXSDetectorConstruction::fWorldLogic
private

Definition at line 85 of file SAXSDetectorConstruction.hh.

◆ fWorldPhysical

G4VPhysicalVolume* SAXSDetectorConstruction::fWorldPhysical
private

Definition at line 86 of file SAXSDetectorConstruction.hh.

◆ fPhantomLogic

G4LogicalVolume* SAXSDetectorConstruction::fPhantomLogic
private

Definition at line 89 of file SAXSDetectorConstruction.hh.

◆ fPhantomPhysical

G4VPhysicalVolume* SAXSDetectorConstruction::fPhantomPhysical
private

Definition at line 90 of file SAXSDetectorConstruction.hh.

◆ fPhantomMaterial

G4Material* SAXSDetectorConstruction::fPhantomMaterial
private

Definition at line 91 of file SAXSDetectorConstruction.hh.

◆ fPhantomMaterialIndex

G4int SAXSDetectorConstruction::fPhantomMaterialIndex
private

Definition at line 92 of file SAXSDetectorConstruction.hh.

◆ fSlit1Logic

G4LogicalVolume* SAXSDetectorConstruction::fSlit1Logic
private

Definition at line 95 of file SAXSDetectorConstruction.hh.

◆ fSlit2Logic

G4LogicalVolume* SAXSDetectorConstruction::fSlit2Logic
private

Definition at line 96 of file SAXSDetectorConstruction.hh.

◆ fSlit3Logic

G4LogicalVolume* SAXSDetectorConstruction::fSlit3Logic
private

Definition at line 97 of file SAXSDetectorConstruction.hh.

◆ fSlit4Logic

G4LogicalVolume* SAXSDetectorConstruction::fSlit4Logic
private

Definition at line 98 of file SAXSDetectorConstruction.hh.

◆ fSlit1Physical

G4VPhysicalVolume* SAXSDetectorConstruction::fSlit1Physical
private

Definition at line 99 of file SAXSDetectorConstruction.hh.

◆ fSlit2Physical

G4VPhysicalVolume* SAXSDetectorConstruction::fSlit2Physical
private

Definition at line 100 of file SAXSDetectorConstruction.hh.

◆ fSlit3Physical

G4VPhysicalVolume* SAXSDetectorConstruction::fSlit3Physical
private

Definition at line 101 of file SAXSDetectorConstruction.hh.

◆ fSlit4Physical

G4VPhysicalVolume* SAXSDetectorConstruction::fSlit4Physical
private

Definition at line 102 of file SAXSDetectorConstruction.hh.

◆ fDetectorLogic

G4LogicalVolume* SAXSDetectorConstruction::fDetectorLogic
private

Definition at line 105 of file SAXSDetectorConstruction.hh.

◆ fDetectorPhysical

G4VPhysicalVolume* SAXSDetectorConstruction::fDetectorPhysical
private

Definition at line 106 of file SAXSDetectorConstruction.hh.

◆ fShieldingLogic

G4LogicalVolume* SAXSDetectorConstruction::fShieldingLogic
private

Definition at line 109 of file SAXSDetectorConstruction.hh.

◆ fShieldingPhysical

G4VPhysicalVolume* SAXSDetectorConstruction::fShieldingPhysical
private

Definition at line 110 of file SAXSDetectorConstruction.hh.

◆ fShieldingBackLogic

G4LogicalVolume* SAXSDetectorConstruction::fShieldingBackLogic
private

Definition at line 111 of file SAXSDetectorConstruction.hh.

◆ fShieldingBackPhysical

G4VPhysicalVolume* SAXSDetectorConstruction::fShieldingBackPhysical
private

Definition at line 112 of file SAXSDetectorConstruction.hh.

◆ fFat

G4Material* SAXSDetectorConstruction::fFat
private

Definition at line 116 of file SAXSDetectorConstruction.hh.

◆ fWater

G4Material* SAXSDetectorConstruction::fWater
private

Definition at line 117 of file SAXSDetectorConstruction.hh.

◆ fBoneMatrix

G4Material* SAXSDetectorConstruction::fBoneMatrix
private

Definition at line 118 of file SAXSDetectorConstruction.hh.

◆ fMineral

G4Material* SAXSDetectorConstruction::fMineral
private

Definition at line 119 of file SAXSDetectorConstruction.hh.

◆ fMedMat

G4Material* SAXSDetectorConstruction::fMedMat
private

Definition at line 120 of file SAXSDetectorConstruction.hh.

◆ fPMMA

G4Material* SAXSDetectorConstruction::fPMMA
private

Definition at line 121 of file SAXSDetectorConstruction.hh.

◆ fAdipose

G4Material* SAXSDetectorConstruction::fAdipose
private

Definition at line 122 of file SAXSDetectorConstruction.hh.

◆ fGlandular

G4Material* SAXSDetectorConstruction::fGlandular
private

Definition at line 123 of file SAXSDetectorConstruction.hh.

◆ fBreast5050

G4Material* SAXSDetectorConstruction::fBreast5050
private

Definition at line 124 of file SAXSDetectorConstruction.hh.

◆ fcarcinoma

G4Material* SAXSDetectorConstruction::fcarcinoma
private

Definition at line 125 of file SAXSDetectorConstruction.hh.

◆ fLexan

G4Material* SAXSDetectorConstruction::fLexan
private

Definition at line 126 of file SAXSDetectorConstruction.hh.

◆ fKapton

G4Material* SAXSDetectorConstruction::fKapton
private

Definition at line 127 of file SAXSDetectorConstruction.hh.

◆ fNylon

G4Material* SAXSDetectorConstruction::fNylon
private

Definition at line 128 of file SAXSDetectorConstruction.hh.

◆ fPolyethylene

G4Material* SAXSDetectorConstruction::fPolyethylene
private

Definition at line 129 of file SAXSDetectorConstruction.hh.

◆ fPolystyrene

G4Material* SAXSDetectorConstruction::fPolystyrene
private

Definition at line 130 of file SAXSDetectorConstruction.hh.

◆ fGrayMatter

G4Material* SAXSDetectorConstruction::fGrayMatter
private

Definition at line 131 of file SAXSDetectorConstruction.hh.

◆ fWhiteMatter

G4Material* SAXSDetectorConstruction::fWhiteMatter
private

Definition at line 132 of file SAXSDetectorConstruction.hh.

◆ fbeefBlood

G4Material* SAXSDetectorConstruction::fbeefBlood
private

Definition at line 133 of file SAXSDetectorConstruction.hh.

◆ fFormaline

G4Material* SAXSDetectorConstruction::fFormaline
private

Definition at line 134 of file SAXSDetectorConstruction.hh.

◆ fAcetone

G4Material* SAXSDetectorConstruction::fAcetone
private

Definition at line 135 of file SAXSDetectorConstruction.hh.

◆ fHperoxide

G4Material* SAXSDetectorConstruction::fHperoxide
private

Definition at line 136 of file SAXSDetectorConstruction.hh.

◆ fCIRS3070

G4Material* SAXSDetectorConstruction::fCIRS3070
private

Definition at line 137 of file SAXSDetectorConstruction.hh.

◆ fCIRS5050

G4Material* SAXSDetectorConstruction::fCIRS5050
private

Definition at line 138 of file SAXSDetectorConstruction.hh.

◆ fCIRS7030

G4Material* SAXSDetectorConstruction::fCIRS7030
private

Definition at line 139 of file SAXSDetectorConstruction.hh.

◆ fRMI454

G4Material* SAXSDetectorConstruction::fRMI454
private

Definition at line 140 of file SAXSDetectorConstruction.hh.

◆ fBone

G4Material* SAXSDetectorConstruction::fBone
private

Definition at line 141 of file SAXSDetectorConstruction.hh.

◆ ffatLowX

G4Material* SAXSDetectorConstruction::ffatLowX
private

Definition at line 142 of file SAXSDetectorConstruction.hh.

◆ fbonematrixLowX

G4Material* SAXSDetectorConstruction::fbonematrixLowX
private

Definition at line 143 of file SAXSDetectorConstruction.hh.

◆ fdryBoneLowX

G4Material* SAXSDetectorConstruction::fdryBoneLowX
private

Definition at line 144 of file SAXSDetectorConstruction.hh.

◆ fliver

G4Material* SAXSDetectorConstruction::fliver
private

Definition at line 145 of file SAXSDetectorConstruction.hh.

◆ fkidney

G4Material* SAXSDetectorConstruction::fkidney
private

Definition at line 146 of file SAXSDetectorConstruction.hh.

◆ fCustomMat

G4ExtendedMaterial* SAXSDetectorConstruction::fCustomMat
private

Definition at line 149 of file SAXSDetectorConstruction.hh.

◆ fCustomMatDensity

G4double SAXSDetectorConstruction::fCustomMatDensity
private

Definition at line 150 of file SAXSDetectorConstruction.hh.

◆ fCustomMatHmassfract

G4double SAXSDetectorConstruction::fCustomMatHmassfract
private

Definition at line 151 of file SAXSDetectorConstruction.hh.

◆ fCustomMatCmassfract

G4double SAXSDetectorConstruction::fCustomMatCmassfract
private

Definition at line 152 of file SAXSDetectorConstruction.hh.

◆ fCustomMatNmassfract

G4double SAXSDetectorConstruction::fCustomMatNmassfract
private

Definition at line 153 of file SAXSDetectorConstruction.hh.

◆ fCustomMatOmassfract

G4double SAXSDetectorConstruction::fCustomMatOmassfract
private

Definition at line 154 of file SAXSDetectorConstruction.hh.

◆ fCustomMatNamassfract

G4double SAXSDetectorConstruction::fCustomMatNamassfract
private

Definition at line 155 of file SAXSDetectorConstruction.hh.

◆ fCustomMatPmassfract

G4double SAXSDetectorConstruction::fCustomMatPmassfract
private

Definition at line 156 of file SAXSDetectorConstruction.hh.

◆ fCustomMatSmassfract

G4double SAXSDetectorConstruction::fCustomMatSmassfract
private

Definition at line 157 of file SAXSDetectorConstruction.hh.

◆ fCustomMatClmassfract

G4double SAXSDetectorConstruction::fCustomMatClmassfract
private

Definition at line 158 of file SAXSDetectorConstruction.hh.

◆ fCustomMatKmassfract

G4double SAXSDetectorConstruction::fCustomMatKmassfract
private

Definition at line 159 of file SAXSDetectorConstruction.hh.

◆ fCustomMatCamassfract

G4double SAXSDetectorConstruction::fCustomMatCamassfract
private

Definition at line 160 of file SAXSDetectorConstruction.hh.

◆ fCustomMatFF

G4String SAXSDetectorConstruction::fCustomMatFF
private

Definition at line 161 of file SAXSDetectorConstruction.hh.

◆ fComp0

G4double SAXSDetectorConstruction::fComp0
private

Definition at line 164 of file SAXSDetectorConstruction.hh.

◆ fComp1

G4double SAXSDetectorConstruction::fComp1
private

Definition at line 164 of file SAXSDetectorConstruction.hh.

◆ fComp2

G4double SAXSDetectorConstruction::fComp2
private

Definition at line 164 of file SAXSDetectorConstruction.hh.

◆ fComp3

G4double SAXSDetectorConstruction::fComp3
private

Definition at line 164 of file SAXSDetectorConstruction.hh.

◆ fAir

G4Material* SAXSDetectorConstruction::fAir
private

Definition at line 167 of file SAXSDetectorConstruction.hh.

◆ fTungsten

G4Material* SAXSDetectorConstruction::fTungsten
private

Definition at line 168 of file SAXSDetectorConstruction.hh.

◆ fLead

G4Material* SAXSDetectorConstruction::fLead
private

Definition at line 169 of file SAXSDetectorConstruction.hh.

◆ fGe

G4Material* SAXSDetectorConstruction::fGe
private

Definition at line 170 of file SAXSDetectorConstruction.hh.

◆ fWorldSize

G4double SAXSDetectorConstruction::fWorldSize
private

Definition at line 174 of file SAXSDetectorConstruction.hh.

◆ fPhantomDiameter

G4double SAXSDetectorConstruction::fPhantomDiameter
private

Definition at line 177 of file SAXSDetectorConstruction.hh.

◆ fPhantomHeight

G4double SAXSDetectorConstruction::fPhantomHeight
private

Definition at line 178 of file SAXSDetectorConstruction.hh.

◆ fPhantomZ

G4double SAXSDetectorConstruction::fPhantomZ
private

Definition at line 179 of file SAXSDetectorConstruction.hh.

◆ fthetaSetup

G4double SAXSDetectorConstruction::fthetaSetup
private

Definition at line 182 of file SAXSDetectorConstruction.hh.

◆ fSlitSize

G4double SAXSDetectorConstruction::fSlitSize
private

Definition at line 185 of file SAXSDetectorConstruction.hh.

◆ fSlit1Thickness

G4double SAXSDetectorConstruction::fSlit1Thickness
private

Definition at line 186 of file SAXSDetectorConstruction.hh.

◆ fSlit2Thickness

G4double SAXSDetectorConstruction::fSlit2Thickness
private

Definition at line 187 of file SAXSDetectorConstruction.hh.

◆ fSlit3Thickness

G4double SAXSDetectorConstruction::fSlit3Thickness
private

Definition at line 188 of file SAXSDetectorConstruction.hh.

◆ fSlit4Thickness

G4double SAXSDetectorConstruction::fSlit4Thickness
private

Definition at line 189 of file SAXSDetectorConstruction.hh.

◆ fSlit1SampleDistance

G4double SAXSDetectorConstruction::fSlit1SampleDistance
private

Definition at line 190 of file SAXSDetectorConstruction.hh.

◆ fSlit2SampleDistance

G4double SAXSDetectorConstruction::fSlit2SampleDistance
private

Definition at line 191 of file SAXSDetectorConstruction.hh.

◆ fSlit3SampleDistance

G4double SAXSDetectorConstruction::fSlit3SampleDistance
private

Definition at line 192 of file SAXSDetectorConstruction.hh.

◆ fSlit4SampleDistance

G4double SAXSDetectorConstruction::fSlit4SampleDistance
private

Definition at line 193 of file SAXSDetectorConstruction.hh.

◆ fSlit1xAperture

G4double SAXSDetectorConstruction::fSlit1xAperture
private

Definition at line 194 of file SAXSDetectorConstruction.hh.

◆ fSlit2xAperture

G4double SAXSDetectorConstruction::fSlit2xAperture
private

Definition at line 195 of file SAXSDetectorConstruction.hh.

◆ fSlit3xAperture

G4double SAXSDetectorConstruction::fSlit3xAperture
private

Definition at line 196 of file SAXSDetectorConstruction.hh.

◆ fSlit4xAperture

G4double SAXSDetectorConstruction::fSlit4xAperture
private

Definition at line 197 of file SAXSDetectorConstruction.hh.

◆ fSlit1yAperture

G4double SAXSDetectorConstruction::fSlit1yAperture
private

Definition at line 198 of file SAXSDetectorConstruction.hh.

◆ fSlit2yAperture

G4double SAXSDetectorConstruction::fSlit2yAperture
private

Definition at line 199 of file SAXSDetectorConstruction.hh.

◆ fSlit3yAperture

G4double SAXSDetectorConstruction::fSlit3yAperture
private

Definition at line 200 of file SAXSDetectorConstruction.hh.

◆ fSlit4yAperture

G4double SAXSDetectorConstruction::fSlit4yAperture
private

Definition at line 201 of file SAXSDetectorConstruction.hh.

◆ fDetectorThickness

G4double SAXSDetectorConstruction::fDetectorThickness
private

Definition at line 204 of file SAXSDetectorConstruction.hh.

◆ fDetectorSize

G4double SAXSDetectorConstruction::fDetectorSize
private

Definition at line 205 of file SAXSDetectorConstruction.hh.

◆ fDetectorSampleDistance

G4double SAXSDetectorConstruction::fDetectorSampleDistance
private

Definition at line 206 of file SAXSDetectorConstruction.hh.

◆ fShieldingThickness

G4double SAXSDetectorConstruction::fShieldingThickness
private

Definition at line 209 of file SAXSDetectorConstruction.hh.


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

Applications | User Support | Publications | Collaboration