71 auto parallelLogicalVolume = GetWorld()->GetLogicalVolume();
77 G4double sensitiveLayerOffset = 0;
86 G4double detectorRadius =
fNbOfLayers * fullLayerThickness;
87 G4double detectorOuterRadius = detectorInnerRadius + detectorRadius;
88 G4double rowThickness = detectorLength /
fNbOfRows;
89 G4double full2Pi = 2.* CLHEP::pi * rad;
94 auto solidDetector =
new G4Tubs(
"Detector",
104 G4ThreeVector(0, 0, 0),
107 parallelLogicalVolume,
114 auto solidRow =
new G4Tubs(
"Row", detectorInnerRadius, detectorOuterRadius, rowThickness / 2.,
136 auto solidSlice =
new G4Tubs(
"Slice", detectorInnerRadius, detectorOuterRadius, rowThickness/2,
151 for (
int iSlice = 0; iSlice<
fNbOfSlices; iSlice++) {
152 auto rotation =
new G4RotationMatrix();
153 rotation->setPhi((iSlice+0.5)*cellPhi);
157 "Slice_"+std::to_string(iSlice),
166 attribs.SetColour(
G4Colour(0, 1, 0, 0.1));
167 attribs.SetForceSolid(
true);
169 auto solidCell =
new G4Tubs(
"Cell", detectorInnerRadius + sensitiveLayerOffset,
171 rowThickness/2, 0, cellPhi);
179 detectorInnerRadius);
182 for (
int iLayer = 0; iLayer<
fNbOfLayers; iLayer++) {
183 auto solidCell =
new G4Tubs(
"Cell_"+std::to_string(iLayer),
184 detectorInnerRadius + iLayer * fullLayerThickness
185 + sensitiveLayerOffset,
186 detectorInnerRadius + iLayer * fullLayerThickness
188 rowThickness/2, 0, cellPhi);
194 "Cell_"+std::to_string(iLayer),