Skip to content

Commit 2dfd8e2

Browse files
Mario Sittasawenzel
authored andcommitted
Fix number of foam wedges at 90deg, add carbon fleece with glue
1 parent 6c9dfae commit 2dfd8e2

File tree

3 files changed

+99
-13
lines changed

3 files changed

+99
-13
lines changed

Detectors/Upgrades/IT3/simulation/include/ITS3Simulation/V3Services.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,14 @@ class V3Services : public V11Geometry
9696
void createOBConeSideC(TGeoVolume* mother, const TGeoManager* mgr = gGeoManager);
9797

9898
private:
99+
/// Creates a single Foam Wedge (with carbon fleece and glue attached)
100+
/// \param rIn the inner radius
101+
/// \param rOut the outer radius
102+
/// \param zlen the half length along Z
103+
/// \param phi the angular aperture
104+
/// \param mgr The GeoManager (used only to get the proper material)
105+
TGeoVolume* createFoamWedge(const Double_t rIn, const Double_t rOut, const Double_t zLen, const Double_t phi, const TGeoManager* mgr = gGeoManager);
106+
99107
/// Creates a single Inner Barrel End Wheel on Side A
100108
/// \param iLay the layer number
101109
/// \param endWheel the End Wheel volume assembly

Detectors/Upgrades/IT3/simulation/src/Detector.cxx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,9 @@ void Detector::createMaterials()
427427
Float_t wRohac[4] = {9., 13., 1., 2.};
428428
Float_t dRohac = 0.05;
429429

430+
// Araldite 2011
431+
Float_t dAraldite = 1.05;
432+
430433
o2::base::Detector::Mixture(1, "AIR$", aAir, zAir, dAir, 4, wAir);
431434
o2::base::Detector::Medium(1, "AIR$", 1, 0, ifield, fieldm, tmaxfdAir, stemaxAir, deemaxAir, epsilAir, stminAir);
432435

@@ -499,6 +502,11 @@ void Detector::createMaterials()
499502
o2::base::Detector::Material(33, "ERGDUOCEL$", 12.0107, 6, 0.06, 999, 999);
500503
o2::base::Detector::Medium(33, "ERGDUOCEL$", 33, 0, ifield, fieldm, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
501504

505+
// Impregnated carbon fleece
506+
// (as educated guess we assume 50% carbon fleece 50% Araldite glue)
507+
o2::base::Detector::Material(34, "IMPREG_FLEECE$", 12.0107, 6, 0.5 * (dAraldite + 0.4), 999, 999);
508+
o2::base::Detector::Medium(34, "IMPREG_FLEECE$", 34, 0, ifield, fieldm, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
509+
502510
// PEEK CF30
503511
o2::base::Detector::Mixture(19, "PEEKCF30$", aPEEK, zPEEK, dPEEK, -3, wPEEK);
504512
o2::base::Detector::Medium(19, "PEEKCF30$", 19, 0, ifield, fieldm, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);

Detectors/Upgrades/IT3/simulation/src/V3Services.cxx

Lines changed: 83 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ TGeoVolume* V3Services::createInnerBarrelSupports(const TGeoManager* mgr)
7575
// a TGeoVolume(Assembly) with the half cylinder and wedges
7676
//
7777
// Created: 11 Feb 2021 Mario Sitta
78+
// Updated: 22 Feb 2021 Mario Sitta Impregnated carbon fleece added
7879
//
7980

8081
// For the time being we put all relevant parameters here
@@ -94,7 +95,6 @@ TGeoVolume* V3Services::createInnerBarrelSupports(const TGeoManager* mgr)
9495
TGeoVolume* layerVol;
9596
TGeoVolume* foamVol[3];
9697
TGeoTube* layerSh;
97-
TGeoTubeSeg* foamSh[3];
9898

9999
Double_t rmin, rmax, zlen, alpha, phi;
100100
Double_t xpos, ypos, zpos;
@@ -133,23 +133,17 @@ TGeoVolume* V3Services::createInnerBarrelSupports(const TGeoManager* mgr)
133133
rmax = layerSh->GetRmin();
134134
}
135135

136-
foamSh[j] = new TGeoTubeSeg(rmin, rmax, zlen, 0, phi);
136+
foamVol[j] = createFoamWedge(rmin, rmax, zlen, phi);
137+
foamVol[j]->SetName(Form("IBSupportWedge%d", j));
137138
}
138139

139140
// We have all shapes: now create the real volumes
140141
TGeoMedium* medCarbon = mgr->GetMedium("IT3_F6151B05M$");
141-
TGeoMedium* medFoam = mgr->GetMedium("ERGDUOCEL$");
142142

143143
TGeoVolume* suppCylVol = new TGeoVolume("IBSupportCylinder", suppCylSh, medCarbon);
144144
suppCylVol->SetFillColor(kBlue);
145145
suppCylVol->SetLineColor(kBlue);
146146

147-
for (Int_t j = 0; j < 3; j++) {
148-
foamVol[j] = new TGeoVolume(Form("IBSupportFoam%d", j), foamSh[j], medFoam);
149-
foamVol[j]->SetFillColor(kGreen);
150-
foamVol[j]->SetLineColor(kGreen);
151-
}
152-
153147
// Finally put everything in the container volume
154148
TGeoVolumeAssembly* ibSupport = new TGeoVolumeAssembly("IBCylinderSupport");
155149

@@ -163,18 +157,94 @@ TGeoVolume* V3Services::createInnerBarrelSupports(const TGeoManager* mgr)
163157
Double_t emptySpace = 2 * layerSh->GetDz() - sNFoamWedges * sFoamZLen - 2 * sFoamEdgeZDist;
164158
emptySpace /= (sNFoamWedges - 1);
165159

166-
for (Int_t j = 0; j < sNFoamWedges; j++) {
167-
zpos = -layerSh->GetDz() + sFoamEdgeZDist + j * (sFoamZLen + emptySpace) + 0.5 * sFoamZLen;
168-
for (Int_t i = 0; i < 3; i++) {
160+
for (Int_t i = 0; i < 3; i++) {
161+
for (Int_t j = 0; j < sNFoamWedges; j++) {
162+
zpos = -layerSh->GetDz() + sFoamEdgeZDist + j * (sFoamZLen + emptySpace) + 0.5 * sFoamZLen;
169163
ibSupport->AddNode(foamVol[i], j + 1, new TGeoCombiTrans(0, 0, zpos, new TGeoRotation("", alpha, 0, 0)));
170164
ibSupport->AddNode(foamVol[i], sNFoamWedges + j + 1, new TGeoCombiTrans(0, 0, zpos, new TGeoRotation("", 180. - alpha - phi, 0, 0)));
171-
ibSupport->AddNode(foamVol[i], 2 * sNFoamWedges + j + 1, new TGeoCombiTrans(0, 0, zpos, new TGeoRotation("", 90. - phi / 2, 0, 0)));
172165
}
166+
// There are only two wedges at 90deg located at the far ends
167+
zpos = -layerSh->GetDz() + sFoamEdgeZDist + 0.5 * sFoamZLen;
168+
ibSupport->AddNode(foamVol[i], 2 * sNFoamWedges + 1, new TGeoCombiTrans(0, 0, zpos, new TGeoRotation("", 90. - phi / 2, 0, 0)));
169+
ibSupport->AddNode(foamVol[i], 2 * sNFoamWedges + 2, new TGeoCombiTrans(0, 0, -zpos, new TGeoRotation("", 90. - phi / 2, 0, 0)));
173170
}
171+
174172
//
175173
return ibSupport;
176174
}
177175

176+
TGeoVolume* V3Services::createFoamWedge(const Double_t rIn, const Double_t rOut, const Double_t zLen, const Double_t phi, const TGeoManager* mgr)
177+
{
178+
//
179+
// Creates a single foam wedge with glue-impregnated carbon fleece attached
180+
//
181+
// Input:
182+
// rIn : the inner radius
183+
// rOut : the outer radius
184+
// zLen : the half length along Z
185+
// phi : the angular aperture
186+
// mgr : the GeoManager (used only to get the proper material)
187+
//
188+
// Output:
189+
//
190+
// Return:
191+
// a TGeoVolume with all elements, ready to be displaced
192+
//
193+
// Created: 22 Feb 2021 Mario Sitta
194+
//
195+
196+
// For the time being we put all relevant parameters here
197+
// May be changed into static const's when definitively set
198+
const Double_t sIBSuppWedgeCFThick = 20.0 * sMicron;
199+
200+
// Local variables
201+
Double_t rmin, rmax;
202+
203+
// The foam wedge container: a TubeSeg
204+
TGeoTubeSeg* wedgeSh = new TGeoTubeSeg(rIn, rOut, zLen, 0, phi);
205+
206+
// The foam wedge: a TubeSeg
207+
rmin = rIn + sIBSuppWedgeCFThick;
208+
rmax = rOut - sIBSuppWedgeCFThick;
209+
TGeoTubeSeg* foamSh = new TGeoTubeSeg(rmin, rmax, zLen, 0, phi);
210+
211+
// The two carbon fleece layers: two TubeSeg's
212+
rmax = rIn + sIBSuppWedgeCFThick;
213+
TGeoTubeSeg* fleeceInSh = new TGeoTubeSeg(rIn, rmax, zLen, 0, phi);
214+
215+
rmin = rOut - sIBSuppWedgeCFThick;
216+
TGeoTubeSeg* fleeceOutSh = new TGeoTubeSeg(rmin, rOut, zLen, 0, phi);
217+
218+
// We have all shapes: now create the real volumes
219+
TGeoMedium* medAir = mgr->GetMedium("IT3_AIR$");
220+
TGeoMedium* medFoam = mgr->GetMedium("IT3_ERGDUOCEL$");
221+
TGeoMedium* medFleece = mgr->GetMedium("IT3_IMPREG_FLEECE$");
222+
223+
TGeoVolume* wedgeVol = new TGeoVolume("IBSupportWedge", wedgeSh, medAir);
224+
wedgeVol->SetFillColor(kGreen);
225+
wedgeVol->SetLineColor(kGreen);
226+
227+
TGeoVolume* foamVol = new TGeoVolume("IBSupportFoam", foamSh, medFoam);
228+
foamVol->SetFillColor(kGreen);
229+
foamVol->SetLineColor(kGreen);
230+
231+
TGeoVolume* fleeceInVol = new TGeoVolume("IBSupportFleeceI", fleeceInSh, medFleece);
232+
fleeceInVol->SetFillColor(kViolet);
233+
fleeceInVol->SetLineColor(kViolet);
234+
235+
TGeoVolume* fleeceOutVol = new TGeoVolume("IBSupportFleeceO", fleeceOutSh, medFleece);
236+
fleeceOutVol->SetFillColor(kViolet);
237+
fleeceOutVol->SetLineColor(kViolet);
238+
239+
// Finally put everything in the container volume
240+
wedgeVol->AddNode(foamVol, 1, nullptr);
241+
wedgeVol->AddNode(fleeceInVol, 1, nullptr);
242+
wedgeVol->AddNode(fleeceOutVol, 1, nullptr);
243+
244+
// Done
245+
return wedgeVol;
246+
}
247+
178248
TGeoVolume* V3Services::createIBEndWheelsSideA(const TGeoManager* mgr)
179249
{
180250
//

0 commit comments

Comments
 (0)