34 #include "DetectorConstruction.hh"
35 #include "DetectorMessenger.hh"
54 :fMaterial_World(0), fMaterial_Frame(0),
55 fMaterial_ExitWindow(0), fMaterial_ScatterFoil(0), fMaterial_MonitorChbr(0),
56 fMaterial_Bag(0), fMaterial_Gas(0), fMaterial_Ring(0)
72 delete fDetectorMessenger;
79 return ConstructVolumes();
84 void DetectorConstruction::DefineMaterials()
87 G4int ncomponents, natoms;
180 temperature = 2.73*
kelvin;
192 fMaterial_World = Vacuum;
193 fMaterial_Frame =
Air;
194 fMaterial_ExitWindow = Titanium;
195 fMaterial_ScatterFoil = fMaterial_Frame;
196 fMaterial_MonitorChbr = Mylar;
197 fMaterial_Bag = Mylar;
198 fMaterial_Gas = Helium;
199 fMaterial_Ring = Aluminium;
204 void DetectorConstruction::GeometryParameters()
206 fZfront_ExitWindow = 0.0*um;
207 fThickness_ExitWindow = 41.2*um;
209 fZfront_ScatterFoil = 2.65*
cm;
210 fThickness_ScatterFoil = 0.0*um;
212 fZfront_MonitorChbr = 50.*
mm;
213 fThickness_MonitorChbr = 112.7*um;
215 fZfront_Bag = 64.975*
mm;
216 fThickness_Bag = 110.0050*
cm;
218 fThickness_Gas = 110.*
cm;
220 fThickness_Ring = 14.*
mm;
221 fInnerRadius_Ring = 20.*
cm;
223 fZfront_Frame = 2.0*um;
224 fThickness_Frame = 118.2*
cm;
226 fThickness_World = fZfront_Frame + fThickness_Frame;
227 fRadius_World = 23.3*
cm;
244 svol_World =
new G4Tubs(
"World",
246 0.5*fThickness_World,
265 svol_Frame =
new G4Tubs(
"Frame",
267 0.5*fThickness_Frame,
276 zpos = fZfront_Frame;
290 svol_ExitWindow =
new G4Tubs(
"ExitWindow",
292 0.5*fThickness_ExitWindow,
297 fMaterial_ExitWindow,
300 zpos = fZfront_ExitWindow + 0.5*fThickness_ExitWindow - 0.5*fThickness_Frame;
313 svol_MonitorChbr =
new G4Tubs(
"MonitorChbr",
315 0.5*fThickness_MonitorChbr,
320 fMaterial_MonitorChbr,
323 zpos = fZfront_MonitorChbr + 0.5*fThickness_MonitorChbr - 0.5*fThickness_Frame;
337 svol_Bag =
new G4Tubs(
"Bag",
347 zpos = fZfront_Bag + 0.5*fThickness_Bag - 0.5*fThickness_Frame;
361 svol_Gas =
new G4Tubs(
"Gas",
384 svol_Ring =
new G4Tubs(
"Ring",
385 fInnerRadius_Ring, fRadius_World,
394 zpos = 0.5*(fThickness_Gas - fThickness_Ring);
415 if ((fMaterial_ScatterFoil != fMaterial_Frame) && (fThickness_ScatterFoil > 0.))
418 svol_ScatterFoil =
new G4Tubs(
"ScatterFoil",
420 0.5*fThickness_ScatterFoil,
425 fMaterial_ScatterFoil,
428 zpos = fZfront_ScatterFoil + 0.5*fThickness_ScatterFoil - 0.5*fThickness_Frame;
452 std::ios::fmtflags mode =
G4cout.flags();
453 G4cout.setf(std::ios::fixed,std::ios::floatfield);
456 G4cout <<
"\n \t \t" <<
"Material \t" <<
"Z_front \t" <<
"Thickness \n";
458 G4cout <<
"\n ExitWindow \t" << fMaterial_ExitWindow->
GetName()
459 <<
"\t" <<
G4BestUnit(fZfront_ExitWindow,
"Length")
460 <<
"\t" <<
G4BestUnit(fThickness_ExitWindow,
"Length");
462 if (fMaterial_ScatterFoil != fMaterial_Frame) {
463 G4cout <<
"\n ScatterFoil \t" << fMaterial_ScatterFoil->
GetName() <<
"\t"
464 <<
"\t" <<
G4BestUnit(fZfront_ScatterFoil,
"Length")
465 <<
"\t" <<
G4BestUnit(fThickness_ScatterFoil,
"Length");
468 G4cout <<
"\n MonitorChbr \t" << fMaterial_MonitorChbr->
GetName() <<
"\t"
469 <<
"\t" <<
G4BestUnit(fZfront_MonitorChbr,
"Length")
470 <<
"\t" <<
G4BestUnit(fThickness_MonitorChbr,
"Length");
472 G4double thickBagWindow = 0.5*(fThickness_Bag - fThickness_Gas);
473 G4double zfrontGas = fZfront_Bag + thickBagWindow;
474 G4double zfrontBagWindow2 = zfrontGas + fThickness_Gas;
476 G4cout <<
"\n BagWindow1 \t" << fMaterial_Bag->
GetName() <<
"\t"
478 <<
"\t" <<
G4BestUnit(thickBagWindow,
"Length");
482 <<
"\t" <<
G4BestUnit(fThickness_Gas,
"Length");
484 G4cout <<
"\n BagWindow2 \t" << fMaterial_Bag->
GetName() <<
"\t"
485 <<
"\t" <<
G4BestUnit(zfrontBagWindow2,
"Length")
486 <<
"\t" <<
G4BestUnit(thickBagWindow,
"Length");
488 G4cout <<
"\n ScoringPlane \t" << fMaterial_Frame->
GetName() <<
"\t"
492 G4cout.setf(mode,std::ios::floatfield);
503 if (pMaterial) fMaterial_ScatterFoil = pMaterial;
510 fThickness_ScatterFoil = val;