31 #include "B3DetectorConstruction.hh"
65 void B3DetectorConstruction::DefineMaterials()
92 G4double cosdPhi = std::cos(half_dPhi);
93 G4double tandPhi = std::tan(half_dPhi);
95 G4double ring_R1 = 0.5*cryst_dY/tandPhi;
96 G4double ring_R2 = (ring_R1+cryst_dZ)/cosdPhi;
98 G4double detector_dZ = nb_rings*cryst_dX;
107 G4double world_sizeXY = 2.4*ring_R2;
108 G4double world_sizeZ = 1.2*detector_dZ;
112 0.5*world_sizeXY, 0.5*world_sizeXY, 0.5*world_sizeZ);
133 new G4Tubs(
"Ring", ring_R1, ring_R2, 0.5*cryst_dX, 0.,
twopi);
144 G4double dX = cryst_dX - gap, dY = cryst_dY - gap;
145 G4Box* solidCryst =
new G4Box(
"crystal", dX/2, dY/2, cryst_dZ/2);
154 for (
G4int icrys = 0; icrys < nb_cryst ; icrys++) {
176 new G4Tubs(
"Detector", ring_R1, ring_R2, 0.5*detector_dZ, 0.,
twopi);
186 G4double OG = -0.5*(detector_dZ + cryst_dX);
187 for (
G4int iring = 0; iring < nb_rings ; iring++) {
219 new G4Tubs(
"Patient", 0., patient_radius, 0.5*patient_dZ, 0.,
twopi);
G4bool RegisterPrimitive(G4VPrimitiveScorer *)
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
static constexpr double mm
CLHEP::Hep3Vector G4ThreeVector
virtual void ConstructSDandField()
CLHEP::HepRotation G4RotationMatrix
void SetVerboseLevel(G4int vl)
virtual ~B3DetectorConstruction()
static G4MaterialTable * GetMaterialTable()
HepRotation & rotateY(double delta)
static G4NistManager * Instance()
static constexpr double twopi
G4GLOB_DLL std::ostream G4cout
virtual G4VPhysicalVolume * Construct()
static constexpr double cm
static constexpr double cm3
void SetSensitiveDetector(const G4String &logVolName, G4VSensitiveDetector *aSD, G4bool multi=false)
void AddNewDetector(G4VSensitiveDetector *aSD)
static G4SDManager * GetSDMpointer()
HepRotation & rotateZ(double delta)
void AddElement(G4Element *element, G4int nAtoms)
static constexpr double deg
G4Element * FindOrBuildElement(G4int Z, G4bool isotopes=true)
static const G4VisAttributes & GetInvisible()
void SetVisAttributes(const G4VisAttributes *pVA)