54
56 G4Material::GetMaterial("Vacuum"), "temp"),
57 "housing", pMotherLogical, pMany, pCopyNo)
59{
61
65
66
70 new G4Box(
"housing_box", housing_x / 2., housing_y / 2., housing_z / 2.);
71
73 "scint_log");
75 fHousing_box, G4Material::GetMaterial(
"Al"),
"housing_log");
76
79
80
81 fSphere =
new G4Sphere(
"sphere", 0., 2. * cm, 0. * deg, 360. * deg, 0. * deg,
82 360. * deg);
86 new G4PVPlacement(
nullptr, G4ThreeVector(5. * cm, 5. * cm, 5. * cm),
88
89
90 G4double innerRadius_pmt = 0.;
91 G4double height_pmt =
fD_mtl / 2.;
92 G4double startAngle_pmt = 0.;
93 G4double spanningAngle_pmt = 360. * deg;
94
96 startAngle_pmt, spanningAngle_pmt);
97
98
99
100
102 height_pmt / 2., startAngle_pmt, spanningAngle_pmt);
103
107 fPhotocath, G4Material::GetMaterial(
"Al"),
"photocath_log");
108
109 new G4PVPlacement(
nullptr, G4ThreeVector(0., 0., -height_pmt / 2.),
111
112
113
117
118 G4double x, y, z;
119 G4double xmin = -
fScint_x / 2. - dx / 2.;
120 G4double ymin = -
fScint_y / 2. - dy / 2.;
121 G4double zmin = -
fScint_z / 2. - dz / 2.;
122 G4int k = 0;
123
125 PlacePMTs(
fPmt_log,
nullptr, x, y, dx, dy, xmin, ymin,
fNx,
fNy, x, y, z, k);
126
127 auto rm_z = new G4RotationMatrix();
128 rm_z->rotateY(180. * deg);
130 PlacePMTs(
fPmt_log, rm_z, x, y, dx, dy, xmin, ymin,
fNx,
fNy, x, y, z, k);
131
132 auto rm_y1 = new G4RotationMatrix();
133 rm_y1->rotateY(-90. * deg);
135 PlacePMTs(
fPmt_log, rm_y1, y, z, dy, dz, ymin, zmin,
fNy,
fNz, x, y, z, k);
136
137 auto rm_y2 = new G4RotationMatrix();
138 rm_y2->rotateY(90. * deg);
140 PlacePMTs(
fPmt_log, rm_y2, y, z, dy, dz, ymin, zmin,
fNy,
fNz, x, y, z, k);
141
142 auto rm_x1 = new G4RotationMatrix();
143 rm_x1->rotateX(90. * deg);
145 PlacePMTs(
fPmt_log, rm_x1, x, z, dx, dz, xmin, zmin,
fNx,
fNz, x, y, z, k);
146
147 auto rm_x2 = new G4RotationMatrix();
148 rm_x2->rotateX(-90. * deg);
150 PlacePMTs(
fPmt_log, rm_x2, x, z, dx, dz, xmin, zmin,
fNx,
fNz, x, y, z, k);
151
154
156}
G4LogicalVolume * fScint_log
G4LogicalVolume * fPhotocath_log
G4LogicalVolume * fHousing_log
G4double fOuterRadius_pmt
G4LogicalVolume * fPmt_log
G4LogicalVolume * fSphere_log
void PlacePMTs(G4LogicalVolume *pmt_Log, G4RotationMatrix *rot, G4double &a, G4double &b, G4double da, G4double db, G4double amin, G4double bmin, G4int na, G4int nb, G4double &x, G4double &y, G4double &z, G4int &k)
LXeDetectorConstruction * fConstructor