Skip to content

Commit ad892fe

Browse files
sawenzelclaude
andcommitted
Give the RB26/3 compensator its bellow plies back
This restores the thirteen plies of the RB26/3 axial compensator, which have been absent since the commit that emptied the volume, and positions them so the stack fits inside its own mother. - 4b84a92 replaced every s3 with s2 in this positioning block, so RB26s3Bellow has been an empty vacuum tube since April 2019. - Drawing LHCVC2A_0065 (EDMS 662891) gives 13 convolutions of 2 x 0.3 mm steel between R = 15.05 and 17.00 cm over 177 mm, which are the constants already in the file. - Restoring the old block alone does not work. Its stack ran from -9.0084 to +9.0768 in a mother of half length 8.85, and 4b84a92's enlargement to 8.99340 did not close that. Only 0.01 cm separates the bellow from the right welding tube, so the mother cannot grow. - The mother is therefore unchanged and the ply pitch is the one that makes the fourteen roots span it exactly, 1.32692 cm, 1.5 percent shorter than 4*PlieR - 2*PlieThickness. The webs are then 0.6501 and 0.6768 cm apart in turn rather than equidistant. - The same change is applied to PipeRun4.cxx. - CheckOverlaps(0.001) reports the same single pre-existing overlap as before. The pre-2019 geometry instead reports RB26s3Bellow extruded by 0.22680 cm and 0.15840 cm. - This adds material: 2.87 kg over the compensator subtree, at z = -1273.3 to -1231.0 cm and R = 15.05 to 17.00 cm, which is eta near 5. Measured against the pre-2019 geometry, the restored material is identical at the web and crest radii and 1.245 g/cm2 larger at the root radius, because two of the plies that stuck out of the mother were never seen by point location. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent d495173 commit ad892fe

2 files changed

Lines changed: 38 additions & 6 deletions

File tree

Detectors/Passive/src/Pipe.cxx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2300,9 +2300,25 @@ void Pipe::ConstructGeometry()
23002300
TGeoVolume* voRB26s3Bellow =
23012301
new TGeoVolume("RB26s3Bellow", new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, zBellowTot), kMedVacHC);
23022302

2303-
// RB26s3Bellow is left without plies. The wiggle stack that stood here was a copy of the
2304-
// RB26/2 code and filled voRB26s2Bellow a second time; filling it with the RB26/3 wiggle
2305-
// would change the material budget and is a separate fix.
2303+
// Positioning of the volumes.
2304+
//
2305+
// A thirteen-convolution bellow has fourteen inner roots, so one lower plie
2306+
// leads the thirteen wiggles. The pitch is not 4*PlieR - 2*PlieThickness: a
2307+
// torus-and-disc wiggle is longer than the convolution it stands for, and at
2308+
// that pitch the stack does not fit the bellow. There is no room to grow it
2309+
// either, since only 0.01 cm separates this bellow from the right welding
2310+
// tube. The pitch is therefore the one that makes the fourteen roots span the
2311+
// bellow exactly, which is 1.5 per cent shorter.
2312+
const Float_t kRB26s3PliePitch =
2313+
(2. * zBellowTot - 2. * kRB26s3PlieR) / kRB26s3NumberOfPlies;
2314+
const Float_t kRB26s3RootToWiggle = 3. * kRB26s3PlieR - 5. * kRB26s3PlieThickness / 2.;
2315+
2316+
z0 = -zBellowTot + kRB26s3PlieR;
2317+
voRB26s3Bellow->AddNode(voRB26s3WiggleL, 1, new TGeoTranslation(0., 0., z0));
2318+
for (Int_t iw = 0; iw < kRB26s3NumberOfPlies; iw++) {
2319+
Float_t zpos = z0 + (iw + 1) * kRB26s3PliePitch - kRB26s3RootToWiggle;
2320+
voRB26s3Bellow->AddNode(voRB26s3Wiggle, iw + 1, new TGeoTranslation(0., 0., zpos));
2321+
}
23062322

23072323
voRB26s3Compensator->AddNode(voRB26s3Bellow, 1,
23082324
new TGeoTranslation(0., 0., kRB26s3WeldingTubeLeftL + zBellowTot));

Detectors/Passive/src/PipeRun4.cxx

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,9 +2165,25 @@ void PipeRun4::ConstructGeometry()
21652165
float zBellowTot = kRB26s3NumberOfPlies * (static_cast<TGeoBBox*>(voRB26s3Wiggle->GetShape()))->GetDZ();
21662166
TGeoVolume* voRB26s3Bellow = new TGeoVolume("RB26s3Bellow", new TGeoTube(kRB26s3BellowRi, kRB26s3BellowRo, zBellowTot), kMedVacHC);
21672167

2168-
// RB26s3Bellow is left without plies. The wiggle stack that stood here was a copy of the
2169-
// RB26/2 code and filled voRB26s2Bellow a second time; filling it with the RB26/3 wiggle
2170-
// would change the material budget and is a separate fix.
2168+
// Positioning of the volumes.
2169+
//
2170+
// A thirteen-convolution bellow has fourteen inner roots, so one lower plie
2171+
// leads the thirteen wiggles. The pitch is not 4*PlieR - 2*PlieThickness: a
2172+
// torus-and-disc wiggle is longer than the convolution it stands for, and at
2173+
// that pitch the stack does not fit the bellow. There is no room to grow it
2174+
// either, since only 0.01 cm separates this bellow from the right welding
2175+
// tube. The pitch is therefore the one that makes the fourteen roots span the
2176+
// bellow exactly, which is 1.5 per cent shorter.
2177+
const float kRB26s3PliePitch =
2178+
(2. * zBellowTot - 2. * kRB26s3PlieR) / kRB26s3NumberOfPlies;
2179+
const float kRB26s3RootToWiggle = 3. * kRB26s3PlieR - 5. * kRB26s3PlieThickness / 2.;
2180+
2181+
z0 = -zBellowTot + kRB26s3PlieR;
2182+
voRB26s3Bellow->AddNode(voRB26s3WiggleL, 1, new TGeoTranslation(0., 0., z0));
2183+
for (int iw = 0; iw < kRB26s3NumberOfPlies; iw++) {
2184+
float zpos = z0 + (iw + 1) * kRB26s3PliePitch - kRB26s3RootToWiggle;
2185+
voRB26s3Bellow->AddNode(voRB26s3Wiggle, iw + 1, new TGeoTranslation(0., 0., zpos));
2186+
}
21712187

21722188
voRB26s3Compensator->AddNode(voRB26s3Bellow, 1, new TGeoTranslation(0., 0., kRB26s3WeldingTubeLeftL + zBellowTot));
21732189

0 commit comments

Comments
 (0)