79 auto nistManager = G4NistManager::Instance();
80 nistManager->FindOrBuildMaterial(
"G4_Pb");
86 new G4Material(
"liquidArgon", z=18.,
a= 39.95*g/mole, density= 1.390*g/cm3);
90 new G4Material(
"Galactic", z=1.,
a=1.01*g/mole,density= universe_mean_density,
91 kStateGas, 2.73*kelvin, 3.e-18*pascal);
94 G4cout << *(G4Material::GetMaterialTable()) << G4endl;
102 G4int nofLayers = 10;
103 G4double absoThickness = 10.*mm;
104 G4double gapThickness = 5.*mm;
105 G4double calorSizeXY = 10.*cm;
107 auto layerThickness = absoThickness + gapThickness;
108 auto calorThickness = nofLayers * layerThickness;
109 auto worldSizeXY = 1.2 * calorSizeXY;
110 auto worldSizeZ = 1.2 * calorThickness;
113 auto defaultMaterial = G4Material::GetMaterial(
"Galactic");
114 auto absorberMaterial = G4Material::GetMaterial(
"G4_Pb");
115 auto gapMaterial = G4Material::GetMaterial(
"liquidArgon");
117 if ( ! defaultMaterial || ! absorberMaterial || ! gapMaterial ) {
118 G4ExceptionDescription msg;
119 msg <<
"Cannot retrieve materials already defined.";
120 G4Exception(
"DetectorConstruction::DefineVolumes()",
121 "MyCode0001", FatalException, msg);
129 worldSizeXY/2, worldSizeXY/2, worldSizeZ/2);
150 =
new G4Box(
"Calorimeter",
151 calorSizeXY/2, calorSizeXY/2, calorThickness/2);
173 calorSizeXY/2, calorSizeXY/2, layerThickness/2);
194 calorSizeXY/2, calorSizeXY/2, absoThickness/2);
203 G4ThreeVector(0., 0., -gapThickness / 2),
216 calorSizeXY/2, calorSizeXY/2, gapThickness/2);
225 G4ThreeVector(0., 0., absoThickness / 2),
238 <<
"------------------------------------------------------------" << G4endl
239 <<
"---> The calorimeter is " << nofLayers <<
" layers of: [ "
240 << absoThickness/mm <<
"mm of " << absorberMaterial->GetName()
242 << gapThickness/mm <<
"mm of " << gapMaterial->GetName() <<
" ] " << G4endl
243 <<
"------------------------------------------------------------" << G4endl;
248 worldLV->SetVisAttributes(G4VisAttributes::GetInvisible());
261 G4SDManager::GetSDMpointer()->SetVerboseLevel(1);
269 G4SDManager::GetSDMpointer()->AddNewDetector(absDetector);
273 absDetector->RegisterPrimitive(primitive);
277 primitive ->SetFilter(charged);
278 absDetector->RegisterPrimitive(primitive);
280 SetSensitiveDetector(
"AbsoLV",absDetector);
285 G4SDManager::GetSDMpointer()->AddNewDetector(gapDetector);
288 gapDetector->RegisterPrimitive(primitive);
291 primitive ->SetFilter(charged);
292 gapDetector->RegisterPrimitive(primitive);
294 SetSensitiveDetector(
"GapLV",gapDetector);
302 G4ThreeVector fieldValue;