64 :constructed(false),worldMaterial(0),absorberMaterial(0),gapMaterial(0),
65 layerSolid(0),gapSolid(0),worldLogical(0),worldPhysical(0),serial(false),
69 totalThickness = 2.0*
m;
70 layerThickness = totalThickness / numberOfLayers;
72 for(
size_t i=0;i<3;i++)
82 calName[0] =
"Calor-A";
83 calName[1] =
"Calor-B";
84 calName[2] =
"Calor-C";
90 {
delete detectorMessenger;}
104 return worldPhysical;
107 void ExN07DetectorConstruction::DefineMaterials()
114 G4int ncomponents, natoms;
155 density = 1.390*
g/
cm3;
159 density = 11.35*
g/
cm3;
167 density = 1.000*
g/
cm3;
172 density = 1.032*
g/
cm3;
181 density = 1.290*
mg/
cm3;
192 temperature = 2.73*
kelvin;
201 worldMaterial = Vacuum;
202 absorberMaterial = Pb;
206 void ExN07DetectorConstruction::SetupGeometry()
219 G4VSolid* calorSolid =
new G4Box(
"Calor",0.5*
m,0.5*
m,totalThickness/2.);
223 calorLogical[i] =
new G4LogicalVolume(calorSolid,absorberMaterial,calName[i]);
228 calorLogical[i],calName[i],worldLogical,
false,i);
234 calorLogical[i],calName[i],worldLogical,
false,i);
241 layerSolid =
new G4Box(
"Layer",0.5*
m,0.5*
m,layerThickness/2.);
244 layerLogical[i] =
new G4LogicalVolume(layerSolid,absorberMaterial,calName[i]+
"_LayerLog");
245 layerPhysical[i] =
new G4PVReplica(calName[i]+
"_Layer",layerLogical[i],calorLogical[i],
kZAxis,
246 numberOfLayers,layerThickness);
252 gapSolid =
new G4Box(
"Gap",0.5*
m,0.5*
m,layerThickness/4.);
257 gapLogical[i],calName[i]+
"_gap",layerLogical[i],
false,0);
285 void ExN07DetectorConstruction::SetupDetectors()
294 epFilter->
add(particleName=
"e-");
295 epFilter->
add(particleName=
"e+");
298 for(
G4int i=0;i<3;i++)
300 for(
G4int j=0;j<2;j++)
306 { detName +=
"_abs"; }
308 { detName +=
"_gap"; }
356 G4cout <<
"--------------------------------------------------------" <<
G4endl;
358 {
G4cout <<
" Calorimeters are placed in serial." <<
G4endl; }
360 {
G4cout <<
" Calorimeters are placed in parallel." <<
G4endl; }
363 G4cout <<
"--------------------------------------------------------" <<
G4endl;
372 absorberMaterial = pttoMaterial;
373 if(constructed)
for(
size_t i=0;i<3;i++)
384 {
G4cerr << materialChoice <<
" is not defined. - Command is ignored." <<
G4endl; }
388 {
return absorberMaterial->
GetName(); }
396 gapMaterial = pttoMaterial;
397 if(constructed)
for(
size_t i=0;i<3;i++)
405 {
G4cerr << materialChoice <<
" is not defined. - Command is ignored." <<
G4endl; }
409 {
return gapMaterial->
GetName(); }
413 if(serial==ser)
return;
418 if(!constructed)
return;
419 for(
G4int i=0;i<3;i++)
433 layerThickness = totalThickness/numberOfLayers;
434 if(!constructed)
return;
438 for(
size_t i=0;i<3;i++)
441 delete layerPhysical[i];
442 layerPhysical[i] =
new G4PVReplica(calName[i]+
"_Layer",layerLogical[i],calorLogical[i],
kZAxis,
443 numberOfLayers,layerThickness);
451 static G4bool isAdded =
false;
453 if( isAdded )
return;
458 G4int ncomponents, natoms;