139 auto logicExtrusion =
147 std::vector<G4double> p_TiO2 = { 2.00 * eV, 3.47 * eV };
151 std::vector<G4double> effi_TiO2 = { 0., 0. };
153 TiO2SurfaceProperty->AddProperty(
"REFLECTIVITY", p_TiO2, refl_TiO2);
154 TiO2SurfaceProperty->AddProperty(
"EFFICIENCY", p_TiO2, effi_TiO2);
156 TiO2Surface->SetMaterialPropertiesTable(TiO2SurfaceProperty);
158 new G4PVPlacement(
nullptr, G4ThreeVector(), logicExtrusion,
"Extrusion",
172 new G4Box(
"Scintillator",
178 solidScintillator, polystyrene,
"Scintillator");
180 new G4PVPlacement(
nullptr, G4ThreeVector(), logicScintillator,
"Scintillator",
181 logicExtrusion,
false, 0);
188 new G4Box(
"SideOfBar",
194 0. * deg, 90. * deg);
197 solidScintside, polystyrene,
"SideOfBar");
200 solidScintcrnr, polystyrene,
"CrnrOfBar");
205 new G4PVPlacement(
nullptr, G4ThreeVector(0., -pos, 0.), logicScintSide,
206 "SideOfBar", logicExtrusion,
false, 0);
208 new G4PVPlacement(
nullptr, G4ThreeVector(0., pos, 0.), logicScintSide,
209 "SideOfBar", logicExtrusion,
false, 1);
211 auto rot1 =
new G4RotationMatrix();
212 rot1->rotateZ(-90.*deg);
214 new G4PVPlacement(rot1, G4ThreeVector(pos, 0., 0.), logicScintSide,
215 "SideOfBar", logicExtrusion,
false, 2);
217 new G4PVPlacement(rot1, G4ThreeVector(-pos, 0., 0.), logicScintSide,
218 "SideOfBar", logicExtrusion,
false, 3);
222 new G4PVPlacement(
nullptr, G4ThreeVector(pos, pos, 0.), logicScintCrnr,
223 "CrnrOfBar", logicExtrusion,
false, 0);
225 new G4PVPlacement(rot1, G4ThreeVector(-pos, pos, 0.), logicScintCrnr,
226 "CrnrOfBar", logicExtrusion,
false, 1);
228 auto rot2 =
new G4RotationMatrix();
229 rot2->rotateZ(-180.*deg);
231 new G4PVPlacement(rot2, G4ThreeVector(-pos, -pos, 0.), logicScintCrnr,
232 "CrnrOfBar", logicExtrusion,
false, 2);
234 auto rot3 =
new G4RotationMatrix();
235 rot3->rotateZ(-270.*deg);
237 new G4PVPlacement(rot3, G4ThreeVector(pos, -pos, 0.), logicScintCrnr,
238 "CrnrOfBar", logicExtrusion,
false, 3);
249 logicScintillator,
false, 0);
258 G4ExceptionDescription ed;
259 ed <<
"The Fiber Hole has not been constructed";
260 G4Exception(
"WLSDetectorConstruction",
"wls001", FatalException, ed);
312 logicClad2,
"Clad2", logicPlacement,
false, 0);
318 physiPlacement, opSurface);
323 logicPlacement = logicClad2;
324 physiPlacement = physiClad2;
348 logicClad1,
"Clad1", logicPlacement,
false, 0);
354 physiPlacement, opSurface);
360 logicPlacement = logicClad1;
361 physiPlacement = physiClad1;
389 logicWLSfiber->SetUserLimits(
394 logicWLSfiber,
"WLSFiber", logicPlacement,
false, 0);
400 physiPlacement, opSurface);
403 physiWLSfiber, opSurface);
425 "MirrorSurface", glisur, ground, dielectric_metal,
fMirrorPolish);
429 std::vector<G4double> p_mirror = { 2.00 * eV, 3.47 * eV };
432 std::vector<G4double> effi_mirror = { 0., 0. };
434 mirrorSurfaceProperty->AddProperty(
"REFLECTIVITY", p_mirror, refl_mirror);
435 mirrorSurfaceProperty->AddProperty(
"EFFICIENCY", p_mirror, effi_mirror);
437 mirrorSurface->SetMaterialPropertiesTable(mirrorSurfaceProperty);
469 G4ExceptionDescription ed;
470 ed <<
"Invalid alignment. Alignment reset to 0.";
471 G4Exception(
"WLSDetectorConstruction",
"wls002", JustWarning, ed);
488 auto logicClrfiber =
new G4LogicalVolume(solidClrfiber, air,
"ClearFiber");
492 logicClrfiber,
"ClearFiber", logicCouple,
false, 0);
506 auto logicPhotonDet =
509 new G4PVPlacement(
nullptr, G4ThreeVector(0., 0., 0.), logicPhotonDet,
510 "PhotonDet", logicClrfiber,
false, 0);
514 "PhotonDetSurface", glisur, ground, dielectric_metal,
fMPPCPolish);
518 std::vector<G4double> p_mppc = { 2.00 * eV, 3.47 * eV };
520 std::vector<G4double> effi_mppc = { 1., 1. };
522 photonDetSurfaceProperty->AddProperty(
"REFLECTIVITY", p_mppc, refl_mppc);
523 photonDetSurfaceProperty->AddProperty(
"EFFICIENCY", p_mppc, effi_mppc);
525 photonDetSurface->SetMaterialPropertiesTable(photonDetSurfaceProperty);
533 visAttributes->SetVisibility(
false);
538 visAttributes->SetVisibility(
true);
539 logicExtrusion->SetVisAttributes(visAttributes);
543 visAttributes->SetVisibility(
true);
544 logicScintillator->SetVisAttributes(visAttributes);
548 visAttributes->SetVisibility(
true);
549 logicScintSide->SetVisAttributes(visAttributes);
553 visAttributes->SetVisibility(
true);
554 logicScintCrnr->SetVisAttributes(visAttributes);
558 visAttributes->SetVisibility(
true);
562 if(logicClad1 !=
nullptr)
565 visAttributes->SetVisibility(
true);
566 logicClad1->SetVisAttributes(visAttributes);
570 if(logicClad2 !=
nullptr)
573 visAttributes->SetVisibility(
true);
574 logicClad2->SetVisAttributes(visAttributes);
579 visAttributes->SetVisibility(
true);
580 logicWLSfiber->SetVisAttributes(visAttributes);
586 visAttributes->SetVisibility(
true);
587 logicMirror->SetVisAttributes(visAttributes);
592 visAttributes->SetVisibility(
true);
593 logicCouple->SetVisAttributes(visAttributes);
597 visAttributes->SetVisibility(
true);
598 logicClrfiber->SetVisAttributes(visAttributes);
602 visAttributes->SetVisibility(
true);
603 logicPhotonDet->SetVisAttributes(visAttributes);