97 for (
int iRepeat = 0; iRepeat <
m_volData.nRepeat(); iRepeat++) {
100 GeoTransform* xform =
nullptr;
101 double zOffset =
m_volData.zMid() - zParent;
102 if (zOffset != 0 || iRepeat > 0) {
103 xform =
new GeoTransform(GeoTrf::TranslateZ3D(zOffset) * GeoTrf::RotateZ3D(
phi));
107 if (xform) parent->add(xform);
110 if (xform) fullparent->add(xform);
111 fullparent->add(child);
116 GeoTransform* xformNeg =
new GeoTransform(GeoTrf::RotateY3D(180 * Gaudi::Units::deg) * GeoTrf::TranslateZ3D(
117 zOffset) * GeoTrf::RotateZ3D(
phi));
119 parent->add(xformNeg);
122 fullparent->add(xformNeg);
123 fullparent->add(child);
131 GeoFullPhysVol* fullparentPos, GeoFullPhysVol* fullparentNeg,
132 GeoVPhysVol* child,
double zParent) {
133 for (
int iRepeat = 0; iRepeat <
m_volData.nRepeat(); iRepeat++) {
135 double zOffset =
m_volData.zMid() - zParent;
136 const bool newXform((zOffset != 0)or(iRepeat > 0));
140 parentPos->add(
new GeoTransform(GeoTrf::TranslateZ3D(zOffset) * GeoTrf::RotateZ3D(
phi)));
142 parentPos->add(child);
143 }
else if (fullparentPos) {
145 fullparentPos->add(
new GeoTransform(GeoTrf::TranslateZ3D(zOffset) * GeoTrf::RotateZ3D(
phi)));
147 fullparentPos->add(child);
152 GeoTransform* xformNeg =
new GeoTransform(GeoTrf::RotateY3D(180 * Gaudi::Units::deg) * GeoTrf::TranslateZ3D(
153 zOffset) * GeoTrf::RotateZ3D(
phi));
155 parentNeg->add(xformNeg);
156 parentNeg->add(child);
158 fullparentNeg->add(xformNeg);
159 fullparentNeg->add(child);