Project
Loading...
Searching...
No Matches
Support.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
16
17#include "MFTBase/Constants.h"
18#include "MFTBase/Support.h"
19#include "MFTBase/Geometry.h"
20
21using namespace o2::mft;
22
26
27 //_____________________________________________________________________________
28 Support::Support() : mHalfDisk(nullptr),
29 mDiskGap(1.4),
30 mSupRad{17.5, 17.5, 17.5, 23.0, 23.0},
31 mSupThickness(.8),
32 mPhi0(0.),
33 mPhi1(180.),
34 mT_delta(0.01),
35 mOuterCut{15.5, 15.5, 16.9, 20.5, 21.9},
36 mRaisedBoxHeight(0.305),
37 mFixBoxHeight(1.41),
38 mRad_M2(.156657 / 2.), // TODO: Check Radius of M2 holes
39 mHeight_M2(.6 / 2), // Height of M2 holes on raised boxes
40 mRad_D2_h(.2 / 2.),
41 mHeight_D2_h(.4 / 2),
42 mTwoHoles(2), // Number of D6.5 mm Holes in each halfDisk support
43 mD65(.65 / 2.), //Radius
44 mD6(.6 / 2.), // Radius
45 mD8(.8 / 2.), // Radius
46 mD3(.3 / 2.), // Radius
47 mM3(.3 / 2.), // Radius TODO: Verify this!
48 mD45(.45 / 2.), // Radius
49 mD2(.2 / 2.), // Radius
50 mHeight_D2(.4 / 2.)
51{
52 // Support dimentions obtained from Meriadeg Guillamet's blueprints
53 // from https://twiki.cern.ch/twiki/bin/viewauth/ALICE/MFTWP3
54
55 initParameters();
56}
57
58//_____________________________________________________________________________
59TGeoVolumeAssembly* Support::create(Int_t half, Int_t disk)
60{
61 TGeoSubtraction* localSubtraction;
62 TGeoBBox* localBox;
63 TGeoTube* localTube;
64 TGeoUnion* localUnion;
65 TGeoTranslation* localTranslation;
66 TGeoCompositeShape* localCS = nullptr;
67
68 //Info("Create",Form("Creating Support_H%d_D%d", half,disk),0,0);
69 mHalfDisk = new TGeoVolumeAssembly(Form("Support_H%d_D%d", half, disk));
70 auto* base = new TGeoTubeSeg(Form("Base_H%d_D%d", half, disk), 0, mSupRad[disk], mSupThickness / 2., mPhi0, mPhi1);
71
72 // Adding fixationBoxes
73 localCS = serialBoolOperation(base, TGeoBBox(), mDiskFixBoxes[disk], TGeoUnion());
74
75 // Cutting boxes
76 //Info("Create",Form("Cutting Boxes Support_H%d_D%d", half,disk),0,0);
77 // Using template function to remove boxes
78 localCS = serialBoolOperation(localCS, TGeoBBox(), mDiskBoxCuts[disk], TGeoSubtraction());
79
80 // Adding raisedBoxes
81 //Info("Create",Form("Adding raised boxes Support_H%d_D%d", half,disk),0,0);
82 localCS = serialBoolOperation(localCS, TGeoBBox(), mDiskRaisedBoxes[disk], TGeoUnion());
83
84 // ================= Holes ==================
85 //TODO: Holes pointing the y axis
86
87 // ======= Creating big holes =========
88 //Info("Create",Form("Cutting Voids Support_H%d_D%d", half,disk),0,0);
89 for (auto iVoid = 0; iVoid < mNumberOfVoids[disk]; iVoid++) {
90 TGeoArb8* localArb;
91 localArb = new TGeoArb8(Form("sc_void_%d_H%d_D%d", iVoid, half, disk), mSupThickness + 10. * mT_delta);
92 for (auto iVertex = 0; iVertex < 4; iVertex++) {
93 Double_t* vertex = &mVoidVert[disk][iVoid][iVertex][0];
94 double y;
95 y = ((disk == 3) || (disk == 4)) ? mOuterCut[disk] - vertex[1] : vertex[1];
96 localArb->SetVertex(iVertex, vertex[0], y);
97 localArb->SetVertex(iVertex + 4, vertex[0], y); //Vertexes 4..7 = 0..3
98 }
99 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localArb, nullptr, TGeoSubtraction()));
100 }
101
102 // ==== M2 6mm deep holes)
103 //Info("Create",Form("Cutting M2 6 mm deep holes Support_H%d_D%d", half,disk),0,0);
104 localTube = new TGeoTube(Form("sc_tube1_a_H%d_D%d", half, disk), 0, mRad_M2, mHeight_M2 + 6. * mT_delta);
105 for (auto iHole = 0; iHole < mNumberOfM2Holes[disk]; iHole++) {
106 localTranslation = new TGeoTranslation(-mM2Holes[disk][iHole][0],
107 mOuterCut[disk] - mM2Holes[disk][iHole][1],
108 mRaisedBoxHeight + mSupThickness / 2. - mHeight_M2);
109 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
110
111 //For the backside
112 localTranslation = new TGeoTranslation(mM2Holes[disk][iHole][0],
113 mOuterCut[disk] - mM2Holes[disk][iHole][1],
114 -(mRaisedBoxHeight + mSupThickness / 2. - mHeight_M2));
115 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
116 }
117
118 // ==== D2 H7 - 4 mm deep (on raisedBoxes)
119 //Info("Create",Form("Cutting D2 mm holes on raisedboxes Support_H%d_D%d", half,disk),0,0);
120 localTube = new TGeoTube(Form("sc_tube1_a_H%d_D%d", half, disk), 0, mRad_D2_h, mHeight_D2_h + 6. * mT_delta);
121
122 for (auto iHole = 0; iHole < mNumberOfD2_hHoles[disk]; iHole++) {
123 localTranslation = new TGeoTranslation(-mD2_hHoles[disk][iHole][0],
124 mOuterCut[disk] - mD2_hHoles[disk][iHole][1],
125 mRaisedBoxHeight + mSupThickness / 2. - mHeight_D2_h);
126 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
127
128 //For the backside
129 localTranslation = new TGeoTranslation(mD2_hHoles[disk][iHole][0],
130 mOuterCut[disk] - mD2_hHoles[disk][iHole][1],
131 -(mRaisedBoxHeight + mSupThickness / 2. - mHeight_D2_h));
132 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
133 }
134
135 // ==== D6.5 H7 (6.5 mm diameter holes)
136 //Info("Create",Form("Cutting 6.5 holes Support_H%d_D%d", half,disk),0,0);
137 localTube = new TGeoTube(Form("D65tube_H%d_D%d", half, disk), 0, mD65, mSupThickness / 2. + 20. * mT_delta);
138 for (auto iHole = 0; iHole < mTwoHoles; iHole++) {
139 localTranslation = new TGeoTranslation(-mD65Holes[disk][iHole][0],
140 mOuterCut[disk] - mD65Holes[disk][iHole][1],
141 0.);
142 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
143 }
144
145 // ==== D6 H7 (6 mm diameter holes)
146 //Info("Create",Form("Cutting 6 mm holes Support_H%d_D%d", half,disk),0,0);
147 localTube = new TGeoTube(Form("D6tube_H%d_D%d", half, disk), 0, mD6, mSupThickness / 2. + mT_delta);
148 for (auto iHole = 0; iHole < mTwoHoles; iHole++) {
149 localTranslation = new TGeoTranslation(-mD6Holes[disk][iHole][0],
150 mOuterCut[disk] - mD6Holes[disk][iHole][1],
151 0.);
152 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
153 }
154
155 // ==== D8 H7 (8 mm diameter holes)
156 //Info("Create",Form("Cutting 8 mm holes Support_H%d_D%d", half,disk),0,0);
157 localTube = new TGeoTube(Form("D8tube_H%d_D%d", half, disk), 0, mD8, mSupThickness / 2. + mRaisedBoxHeight + 20 * mT_delta);
158 for (auto iHole = 0; iHole < mNumberOfD8_Holes[disk]; iHole++) {
159 localTranslation = new TGeoTranslation(-mD8Holes[disk][iHole][0],
160 mOuterCut[disk] - mD8Holes[disk][iHole][1],
161 0.);
162 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
163 }
164
165 // ==== D3 H7 (3 mm diameter holes)
166 //Info("Create",Form("Cutting 3 mm holes Support_H%d_D%d", half,disk),0,0);
167 localTube = new TGeoTube(Form("D3tube_H%d_D%d", half, disk), 0, mD3, mSupThickness / 2. + mT_delta);
168 for (auto iHole = 0; iHole < mTwoHoles; iHole++) {
169 localTranslation = new TGeoTranslation(-mD3Holes[disk][iHole][0],
170 mOuterCut[disk] - mD3Holes[disk][iHole][1],
171 0.);
172 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
173 }
174
175 // ==== M3 H7 (?? mm diameter holes)
176 //Info("Create",Form("Cutting M3 H7 holes Support_H%d_D%d", half,disk),0,0);
177 localTube = new TGeoTube(Form("M3tube_H%d_D%d", half, disk), 0, mM3, mSupThickness / 2. + mT_delta);
178 for (auto iHole = 0; iHole < mNumberOfM3Holes[disk]; iHole++) {
179 localTranslation = new TGeoTranslation(-mM3Holes[disk][iHole][0],
180 mOuterCut[disk] - mM3Holes[disk][iHole][1],
181 0.);
182 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
183 }
184
185 // ==== D4.5 H9
186 //Info("Create",Form("Cutting 4.5 mm holes Support_H%d_D%d", half,disk),0,0);
187 localTube = new TGeoTube(Form("D45tube_H%d_D%d", half, disk), 0, mD45, mSupThickness / 2. + mT_delta);
188 for (auto iHole = 0; iHole < mTwoHoles; iHole++) {
189 localTranslation = new TGeoTranslation(-mD45Holes[disk][iHole][0],
190 mOuterCut[disk] - mD45Holes[disk][iHole][1],
191 0.);
192 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
193 }
194
195 // ==== D2 H7 - 4 mm deep (on lower surface)
196 //Info("Create",Form("Cutting D2 holes Support_H%d_D%d", half,disk),0,0);
197 localTube = new TGeoTube(Form("D2tube_H%d_D%d", half, disk), 0, mD2, .4 / 2. + 6 * mT_delta);
198 for (auto iHole = 0; iHole < mTwoHoles; iHole++) {
199 localTranslation = new TGeoTranslation(-mD2Holes[disk][iHole][0],
200 mOuterCut[disk] - mD2Holes[disk][iHole][1],
201 mSupThickness / 2. - .4 / 2);
202 localCS = new TGeoCompositeShape(nullptr, compositeOperation(localCS, localTube, localTranslation, TGeoSubtraction()));
203 }
204
205 // ======= Prepare support volume and add to HalfDisk =========
206
207 auto* support_vol = new TGeoVolume(Form("Support_H%d_D%d", half, disk), localCS, mSupportMedium);
208
209 auto* rot = new TGeoRotation("rot", 0, 0, 180);
210 mHalfDisk->AddNode(support_vol, 0, rot);
211 return mHalfDisk;
212}
213
214//_____________________________________________________________________________
215void Support::initParameters()
216{
217
218 mSupportMedium = gGeoManager->GetMedium("MFT_PEEK$");
219 auto th = mSupThickness;
220 // # Support parametrization =====
221
222 // ================================================
223 // ## Cut boxes (squares)
224 // ### halfDisks 00
225
226 mDiskBoxCuts[0] =
227 {
228 {mSupRad[0] + mT_delta, mDiskGap, th, 0., 0., 0},
229 {sqrt(pow(mSupRad[0], 2.) - pow(mOuterCut[0], 2.)), (mSupRad[0] - mOuterCut[0]) / 2., th, 0., (mSupRad[0] + mOuterCut[0]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
230 {12.4, 6.91, th, 0., 0., 0},
231 {7.95, 9.4, th, 0., 0., 0},
232 {2.9, 11.885, th, 0., 0., 0},
233 {2.9 / 2, .7, th, -12.15, 9.9, 0},
234 {2.9 / 2, .7, th, 12.15, 9.9, 0},
235 {1.3875, 1.4, th, 16.1875, 7.9, 0},
236 {1.3875, 1.4, th, -16.1875, 7.9, 0}};
237
238 // ### halfDisks 01
239 mDiskBoxCuts[1] = mDiskBoxCuts[0];
240
241 // ### halfDisk 02
242 mDiskBoxCuts[2] =
243 {
244 {mSupRad[2] + mT_delta, mDiskGap, th, 0., 0., 0},
245 {sqrt(pow(mSupRad[2], 2.) - pow(mOuterCut[2], 2.)),
246 (mSupRad[2] - mOuterCut[2]) / 2., th,
247 0.,
248 (mSupRad[2] + mOuterCut[2]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
249 {12.8, 6.91, th, 0., 0., 0},
250 {9.7, 9.4, th, 0., 0., 0},
251 {(6.3 - 2.2) / 2, 12.4, th, (6.3 + 2.2) / 2, 0, 0},
252 {2.2 + mT_delta, 11.9, th, 0., 0., 0},
253 {(6.3 - 2.2) / 2, 12.4, th, -(6.3 + 2.2) / 2, 0, 0},
254 {2.8 / 2, .7, th, -12.95, 9.85, 0},
255 {2.8 / 2, .7, th, 12.95, 9.85, 0},
256 {(mSupRad[2] - 14.8) / 2, (10.0 - 6.5) / 2, th, (mSupRad[2] + 14.8) / 2, (10.0 + 6.5) / 2, 0},
257 {(mSupRad[2] - 14.8) / 2, (10.0 - 6.5) / 2, th, -(mSupRad[2] + 14.8) / 2, (10.0 + 6.5) / 2, 0}};
258
259 // ### halfDisk 03
260 mDiskBoxCuts[3] =
261 {
262 {mSupRad[3] + mT_delta, mDiskGap, th, 0., 0., 0},
263 {sqrt(pow(mSupRad[3], 2.) - pow(mOuterCut[3], 2.)),
264 (mSupRad[3] - mOuterCut[3]) / 2., th,
265 0.,
266 (mSupRad[3] + mOuterCut[3]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
267 {15.7, 9.4, th, 0., 0., 0},
268 {9.7, 12.4, th, 0., 0., 0},
269 {4.6, 14.73, th, 0., 0., 0},
270 {2.9, 16.0, th, 0., 0., 0},
271 {(mSupRad[3] - 18.3) / 2., 4.2, th, (mSupRad[3] + 18.3) / 2, 0, 0},
272 {(mSupRad[3] - 18.3) / 2., 4.2, th, -(mSupRad[3] + 18.3) / 2, 0, 0}};
273
274 // ### halfDisk 04
275 mDiskBoxCuts[4] =
276 {
277 {mSupRad[4] + mT_delta, mDiskGap, th, 0., 0., 0},
278 {sqrt(pow(mSupRad[4], 2.) - pow(mOuterCut[4], 2.)),
279 (mSupRad[4] - mOuterCut[4]) / 2., th,
280 0.,
281 (mSupRad[4] + mOuterCut[4]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
282 {16.2, 9.4, th, 0., 0., 0},
283 {11.4, 12.4, th, 0., 0., 0},
284 {8.0, 15.35, th, 0., 0., 0},
285 {2.9, 16.4, th, 0., 0., 0},
286 {2.35, 4.2, th, -20.65, 0., 0},
287 {2.35, 4.2, th, 20.65, 0., 0}};
288
289 // ================================================
290 // ## Raised boxes
291 // ### halfDisks 00
292
293 auto rBT = mRaisedBoxHeight / 2.; // Raised boxes thickness
294 auto rBS = mRaisedBoxHeight / 2. + mSupThickness / 2.; //Raised boxes z shift
295 // Raised Boxes {Width, Height, Thickness, x_center, y_center, z_center}
296 mDiskRaisedBoxes[0] =
297 {
298 {(9.35 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, (9.35 + 7.95) / 2., (8.81 + 6.91) / 2., rBS},
299 {(7.65 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, (7.65 + 2.9) / 2., (11.82 + 9.4) / 2., rBS},
300 {(2.55 + 2.05) / 2., (13.92 - 11.885) / 2., rBT, (2.55 - 2.05) / 2., (13.92 + 11.885) / 2., rBS},
301 {(7.15 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, (-7.152 - 2.92) / 2., (11.82 + 9.4) / 2, rBS},
302 {(10.55 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, (-10.55 - 7.95) / 2., (8.81 + 6.91) / 2., rBS},
303 //Back side:
304 {(9.35 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, -(9.35 + 7.95) / 2., (8.81 + 6.91) / 2., -rBS},
305 {(7.65 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, -(7.65 + 2.9) / 2., (11.82 + 9.4) / 2., -rBS},
306 {(2.55 + 2.05) / 2., (13.92 - 11.885) / 2., rBT, -(2.55 - 2.05) / 2., (13.92 + 11.885) / 2., -rBS},
307 {(7.15 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, -(-7.152 - 2.92) / 2., (11.82 + 9.4) / 2, -rBS},
308 {(10.55 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, -(-10.55 - 7.95) / 2., (8.81 + 6.91) / 2., -rBS}};
309
310 // ### halfDisks 01
311 mDiskRaisedBoxes[1] = mDiskRaisedBoxes[0];
312
313 // ### halfDisk 02
314 mDiskRaisedBoxes[2] =
315 {
316 {(10.55 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, (10.55 + 9.7) / 2., (8.81 + 6.91) / 2., rBS},
317 {(8.85 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, (8.85 + 6.3) / 2., (11.82 + 9.4) / 2., rBS},
318 {(5.45 - 2.55) / 2., (14.83 - 12.4) / 2., rBT, (5.45 + 2.55) / 2., (14.83 + 12.4) / 2., rBS},
319 {(2.2 + 2.2) / 2., (13.92 - 11.9) / 2., rBT, (2.2 - 2.2) / 2., (13.92 + 11.9) / 2, rBS},
320 {(5.95 - 3.05) / 2., (14.83 - 12.4) / 2., rBT, -(5.95 + 3.05) / 2., (14.83 + 12.4) / 2., rBS},
321 {(9.35 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, -(9.35 + 6.3) / 2., (11.82 + 9.4) / 2, rBS},
322 {(11.05 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, -(11.05 + 9.7) / 2., (8.81 + 6.91) / 2., rBS},
323 //Back side:
324 {(10.55 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, -(10.55 + 9.7) / 2., (8.81 + 6.91) / 2., -rBS},
325 {(8.85 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, -(8.85 + 6.3) / 2., (11.82 + 9.4) / 2., -rBS},
326 {(5.45 - 2.55) / 2., (14.83 - 12.4) / 2., rBT, -(5.45 + 2.55) / 2., (14.83 + 12.4) / 2., -rBS},
327 {(2.2 + 2.2) / 2., (13.92 - 11.9) / 2., rBT, -(2.2 - 2.2) / 2., (13.92 + 11.9) / 2, -rBS},
328 {(5.95 - 3.05) / 2., (14.83 - 12.4) / 2., rBT, (5.95 + 3.05) / 2., (14.83 + 12.4) / 2., -rBS},
329 {(9.35 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, (9.35 + 6.3) / 2., (11.82 + 9.4) / 2, -rBS},
330 {(11.05 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, (11.05 + 9.7) / 2., (8.81 + 6.91) / 2., -rBS}};
331
332 // ### halfDisk 03
333 mDiskRaisedBoxes[3] =
334 {
335 {(12.75 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, (12.75 + 9.7) / 2., (11.82 + 9.4) / 2., rBS},
336 {(9.35 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, (9.35 + 4.6) / 2., (14.83 + 12.4) / 2., rBS},
337 {(4.25 - 2.9) / 2., (16.63 - 14.73) / 2., rBT, (4.25 + 2.9) / 2., (16.63 + 14.73) / 2., rBS},
338 {(2.55 + 2.05) / 2., (18.03 - 16.0) / 2., rBT, (2.55 - 2.05) / 2., (18.03 + 16.0) / 2, rBS},
339 {(3.75 - 2.9) / 2., (17.09 - 14.73) / 2., rBT, -(3.75 + 2.9) / 2., (17.09 + 14.73) / 2., rBS},
340 {(8.85 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, -(8.85 + 4.6) / 2., (14.83 + 12.4) / 2., rBS},
341 {(13.95 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, -(13.95 + 9.7) / 2., (11.82 + 9.4) / 2., rBS},
342 //for backside:
343 {(12.75 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, -(12.75 + 9.7) / 2., (11.82 + 9.4) / 2., -rBS},
344 {(9.35 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, -(9.35 + 4.6) / 2., (14.83 + 12.4) / 2., -rBS},
345 {(4.25 - 2.9) / 2., (16.63 - 14.73) / 2., rBT, -(4.25 + 2.9) / 2., (16.63 + 14.73) / 2., -rBS},
346 {(2.55 + 2.05) / 2., (18.03 - 16.0) / 2., rBT, -(2.55 - 2.05) / 2., (18.03 + 16.0) / 2, -rBS},
347 {(3.75 - 2.9) / 2., (17.09 - 14.73) / 2., rBT, (3.75 + 2.9) / 2., (17.09 + 14.73) / 2., -rBS},
348 {(8.85 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, (8.85 + 4.6) / 2., (14.83 + 12.4) / 2., -rBS},
349 {(13.95 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, (13.95 + 9.7) / 2., (11.82 + 9.4) / 2., -rBS}};
350
351 // ### halfDisk 04
352 mDiskRaisedBoxes[4] =
353 {
354 {(13.9 - 11.4) / 2., (11.82 - 9.4) / 2., rBT, -(13.9 + 11.4) / 2., (11.82 + 9.4) / 2., rBS}, // RB0
355 {(10.55 - 8.0) / 2., (14.83 - 12.4) / 2., rBT, -(10.55 + 8.0) / 2., (14.83 + 12.4) / 2., rBS}, // RB1
356 {(7.15 - 2.9) / 2., (17.84 - 15.35) / 2., rBT, -(7.15 + 2.9) / 2., (17.84 + 15.35) / 2., rBS}, // RB2
357 {(2.05 + 2.55) / 2., (18.45 - 16.4) / 2., rBT, -(2.05 - 2.55) / 2., (18.45 + 16.4) / 2, rBS}, // RB3
358 {-(-4.75 + 2.9) / 2., (17.26 - 15.35) / 2., rBT, -(-4.75 - 2.9) / 2., (17.26 + 15.35) / 2., rBS}, // RB4
359 {-(-7.65 + 4.75) / 2., (17.85 - 15.35) / 2., rBT, -(-7.65 - 4.75) / 2., (17.85 + 15.35) / 2., rBS}, // RB5
360 {-(-11.05 + 8.0) / 2., (14.83 - 12.4) / 2., rBT, -(-11.05 - 8.0) / 2., (14.83 + 12.4) / 2., rBS}, // RB6
361 {-(-14.45 + 11.4) / 2., (11.82 - 9.4) / 2., rBT, -(-14.45 - 11.4) / 2., (11.82 + 9.4) / 2., rBS}, // RB7
362 //For backside:
363 {(13.9 - 11.4) / 2., (11.82 - 9.4) / 2., rBT, (13.9 + 11.4) / 2., (11.82 + 9.4) / 2., -rBS}, // RB0
364 {(10.55 - 8.0) / 2., (14.83 - 12.4) / 2., rBT, (10.55 + 8.0) / 2., (14.83 + 12.4) / 2., -rBS}, // RB1
365 {(7.15 - 2.9) / 2., (17.84 - 15.35) / 2., rBT, (7.15 + 2.9) / 2., (17.84 + 15.35) / 2., -rBS}, // RB2
366 {(2.05 + 2.55) / 2., (18.45 - 16.4) / 2., rBT, (2.05 - 2.55) / 2., (18.45 + 16.4) / 2, -rBS}, // RB3
367 {-(-4.75 + 2.9) / 2., (17.26 - 15.35) / 2., rBT, (-4.75 - 2.9) / 2., (17.26 + 15.35) / 2., -rBS}, // RB4
368 {-(-7.65 + 4.75) / 2., (17.85 - 15.35) / 2., rBT, (-7.65 - 4.75) / 2., (17.85 + 15.35) / 2., -rBS}, // RB5
369 {-(-11.05 + 8.0) / 2., (14.83 - 12.4) / 2., rBT, (-11.05 - 8.0) / 2., (14.83 + 12.4) / 2., -rBS}, // RB6
370 {-(-14.45 + 11.4) / 2., (11.82 - 9.4) / 2., rBT, (-14.45 - 11.4) / 2., (11.82 + 9.4) / 2., -rBS} // RB7
371 };
372
373 // ================================================
374 // ## Fixation boxes
375 // ### halfDisks 00
376 // Fixation Boxes {Width, Height, Thickness, x_center, y_center, z_center = 0}
377 mDiskFixBoxes[0] = {
378 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., (16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0},
379 //Other side:
380 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., -(16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0}};
381
382 // ### halfDisks 01
383 mDiskFixBoxes[1] = mDiskFixBoxes[0];
384
385 // ### halfDisk 02
386 mDiskFixBoxes[2] = {
387 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., (16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0},
388 {(14.7 - 12.5) / 2., (8.8 - 5.4) / 2., mSupThickness / 2., (14.7 + 12.5) / 2., mOuterCut[2] - (5.4 + 8.8) / 2., 0},
389 //Other side:
390 {(14.7 - 12.5) / 2., (8.8 - 5.4) / 2., mSupThickness / 2., -(14.7 + 12.5) / 2., mOuterCut[2] - (5.4 + 8.8) / 2., 0},
391 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., -(16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0}};
392
393 // ### halfDisk 03
394 mDiskFixBoxes[3] = {
395 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., (25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
396 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., (24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
397 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., (23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0},
398 //Other side:
399 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., -(25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
400 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., -(24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
401 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., -(23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0}};
402
403 // ### halfDisk 04
404 mDiskFixBoxes[4] = {
405 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., (25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
406 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., (24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
407 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., (23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0},
408 //Other side:
409 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., -(25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
410 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., -(24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
411 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., -(23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0}};
412
413 // ================================================
414 // ## Big holes (Voids)
415 // Description only needed for one side of the disk.
416 // The other side is taken as a reflection on the y axis.
417 // 4 vertices are required for each hole that will be used
418 // on TGeoArb8 shapes.
419
420 // ### halfdisk 00
421 mNumberOfVoids[0] = 8; //Number of Voids (big holes) in each halfDisk support
422 mVoidVert[0] = new Double_t[mNumberOfVoids[0]][4][2]{
423 {{-16., 1.8}, {-16., 4.5}, {-13.8, 4.5}, {-12.9, 1.8}}, // A,B,C,H
424 {{-13.8, 4.5}, {-13.8, 8.7}, {-12.9, 7.6}, {-12.9, 1.8}}, // C,D,G,H
425 {{-13.8, 8.7}, {-10.55, 8.7}, {-10.55, 7.6}, {-12.9, 7.6}}, // D,E,F,G
426 {{-10.412, 12.8}, {-7.395, 14.75}, {-3., 14.75}, {-3., 12.8}}, // I,J,K,L
427 {{3., 12.8}, {3., 14.75}, {7.395, 14.75}, {10.412, 12.8}}, // M,N,O,P
428 {{12.9, 7.6}, {10.55, 7.6}, {10.55, 8.7}, {13.8, 8.7}}, // R,S,T,U
429 {{12.9, 1.8}, {12.9, 7.6}, {13.8, 8.7}, {13.8, 4.5}}, // Q,R,U,V
430 {{12.9, 1.8}, {13.8, 4.5}, {16., 4.5}, {16., 1.8}} // Q,V,W,X
431 };
432
433 // ### halfdisk 01
434 mNumberOfVoids[1] = mNumberOfVoids[0];
435 mVoidVert[1] = mVoidVert[0];
436
437 // ### halfdisk 02
438 mNumberOfVoids[2] = 8;
439 mVoidVert[2] = new Double_t[mNumberOfVoids[2]][4][2]{
440 {{-16., 1.9}, {-16., 4.1}, {-14.2, 4.1}, {-13.3, 1.9}}, // A,B,C,H
441 {{-13.3, 1.9}, {-14.2, 4.1}, {-14.2, 8.9}, {-13.3, 7.6}}, // H,C,D,G
442 {{-14.2, 8.9}, {-11.55, 8.9}, {-11.55, 7.6}, {-13.3, 7.6}}, // D,E,F,G
443 {{-5.5, 15.33}, {-5.5, 16.2}, {5.5, 16.2}, {5.5, 15.33}}, // K,L,M,N
444 {{-2.05, 14.22}, {-2.05, 15.33}, {2.05, 15.33}, {2.05, 14.22}}, // I,J,O,P
445 {{13.3, 7.6}, {11.55, 7.6}, {11.55, 8.9}, {14.2, 8.9}}, // R,S,T,U
446 {{13.3, 1.9}, {13.3, 7.6}, {14.2, 8.9}, {14.2, 4.1}}, // Q,R,U,V
447 {{13.3, 1.9}, {14.2, 4.1}, {16.0, 4.1}, {16.0, 1.9}} // Q,V,W,X
448 };
449
450 // ### halfdisk 03
451 mNumberOfVoids[3] = 6; //Number of Voids (big holes) in each halfDisk support
452 mVoidVert[3] = new Double_t[mNumberOfVoids[3]][4][2]{
453 {{-21.377, 15.3}, {-20.075, 11.5}, {-17.0, 11.5}, {-17.0, 15.3}}, // a,b,c,d
454 {{-19.053, 9.5}, {-13.964, 3.5}, {-14.0, 7.5}, {-14.0, 9.5}}, // e,f,i,j
455 {{-13.964 - .02, 3.5}, {-10.0, 3.5}, {-10.0, 7.5}, {-14.0 - .02, 7.5}}, // f,g,h,i,
456 {{21.377, 15.3}, {17.0, 15.3}, {17.0, 11.5}, {20.075, 11.5}}, // s,t,q,r
457 {{19.053, 9.5}, {14.0, 9.5}, {14.0 - .02, 7.5}, {13.964 - .02, 3.5}}, // m,n,o,l
458 {{13.964, 3.5}, {14.0, 7.5}, {10.0, 7.5}, {10.0, 3.5}} // l,o,p,k
459 };
460
461 // ### halfdisk 04
462 mNumberOfVoids[4] = 4; //Number of Voids (big holes) in each halfDisk support
463 mVoidVert[4] = new Double_t[mNumberOfVoids[4]][4][2]{
464 {{-21.377, 16.7}, {-20.075, 12.9}, {-17.0, 12.9}, {-17.0, 16.7}}, // a,b,c,d
465 {{-19.053, 10.9}, {-13.964, 4.9}, {-11.5, 4.9}, {-15.0, 10.9}}, // e,f,g,j // Simplified
466 //{{-19.053, 10.9}, {-13.964, 4.9}, {-15.0, 8.9}, {-15.0, 10.9}} // e,f,i,j
467 //{{-15.0, 8.9}, {-13.964, 4.9}, {-11.5, 4.9}, {-11.5, 8.9}}, // i,f,g,h
468 {{21.377, 16.7}, {17., 16.7}, {17.0, 12.9}, {20.075, 12.9}}, // s,t,q,r
469 {{11.5, 4.9}, {13.96, 4.9}, {19.053, 10.9}, {15.0, 10.9}} // k,l,m,n // Simplified
470 //{{19.053, 10.9}, {15.0, 10.9}, {15.0, 8.9}, {13.964, 4.9}}, // m,n,o,l
471 //{{13.964, 4.9}, {15.0, 8.9}, {11.5, 8.9}, {11.5, 4.9}} // l,o,p,k
472 };
473
474 // ================================================
475 // ## M2 6mm deep
476 // ### halfDisk00
477 mNumberOfM2Holes[0] = 12;
478 mM2Holes[0] = new Double_t[mNumberOfM2Holes[0]][2]{
479 {-8.75, 7.29}, // #16
480 {-7.05, 4.275}, // #18
481 {-5.35, 4.275}, // #20
482 {-3.65, 4.275}, // #22
483 {-1.95, 2.429}, // #24
484 {-0.25, 2.175}, // #26
485 {1.45, 2.269}, // #28
486 {3.15, 4.275}, // #30
487 {4.85, 4.275}, // #32
488 {6.55, 4.275}, // #34
489 {8.25, 7.29}, // #36
490 {9.95, 7.29} // #38
491 };
492
493 // ### halfDisk01
494 mNumberOfM2Holes[1] = mNumberOfM2Holes[0];
495 mM2Holes[1] = mM2Holes[0];
496
497 // ### halfDisk02
498 mNumberOfM2Holes[2] = 13;
499 mM2Holes[2] = new Double_t[mNumberOfM2Holes[2]][2]{
500 {-10.45, 8.69}, // 16
501 {-8.75, 5.675}, // 18
502 {-7.05, 5.675}, // 20
503 {-5.35, 2.66}, // 22
504 {-3.65, 2.66}, // 24
505 {-1.95, 3.825}, // 26
506 {-0.25, 3.575}, // 28
507 {1.45, 3.665}, // 30
508 {3.15, 2.66}, // 32
509 {4.85, 2.66}, // 34
510 {6.55, 5.675}, // 36
511 {8.25, 5.675}, // 38
512 {9.95, 8.69} // 40
513 };
514
515 // ### halfDisk03
516 mNumberOfM2Holes[3] = 16;
517 mM2Holes[3] = new Double_t[mNumberOfM2Holes[3]][2]{
518 {-12.15, 9.275}, // P
519 {-10.45, 9.275}, // R
520 {-8.75, 6.26}, // T
521 {-7.05, 6.26}, // V
522 {-5.35, 6.26}, // X
523 {-3.65, 4.46}, // Z
524 {-1.95, 3.225}, // BB
525 {-0.25, 3.06}, // DD
526 {1.45, 3.12}, // FF
527 {3.15, 3.99}, // HH
528 {4.85, 6.62}, // JJ
529 {6.65, 6.62}, // LL
530 {8.25, 6.62}, // NN
531 {9.95, 9.275}, // PP
532 {11.65, 9.275}, // RR
533 {13.35, 9.275} // TT
534 };
535
536 // ### halfDisk04
537 mNumberOfM2Holes[4] = 17;
538 mM2Holes[4] = new Double_t[mNumberOfM2Holes[4]][2]{
539 {-13.85, 10.675}, // P
540 {-12.15, 10.675}, // R
541 {-10.45, 7.66}, // T
542 {-8.75, 7.66}, // V
543 {-7.05, 4.645}, // X
544 {-5.35, 4.645}, // Z
545 {-3.65, 5.235}, // BB
546 {-1.95, 4.205}, // DD
547 {-0.25, 4.06}, // FF
548 {1.45, 4.115}, // HH
549 {3.15, 4.86}, // JJ
550 {4.85, 4.645}, // LL
551 {6.55, 4.645}, // NN
552 {8.25, 7.66}, // PP
553 {9.95, 7.66}, // RR
554 {11.65, 10.675}, // TT
555 {13.35, 10.675} // VV
556 };
557
558 // ================================================
559 // ## D2 H7 - 4 mm deep (on raisedBoxes)
560 // ### halfDisk00
561 mNumberOfD2_hHoles[0] = 12;
562 mD2_hHoles[0] = new Double_t[mNumberOfD2_hHoles[0]][2]{{-8.75, 8.09}, // #15
563 {-7.05, 5.075}, // #17
564 {-5.35, 5.075}, // #19
565 {-3.65, 5.075}, // #21
566 {-1.95, 3.229}, // #23
567 {-0.25, 2.975}, // #25
568 {1.45, 3.069}, // #27
569 {3.15, 5.075}, // #29
570 {4.85, 5.075}, // #31
571 {6.55, 5.075}, // #33
572 {8.25, 8.09}, // #35
573 {9.95, 8.09}}; // #37
574
575 // ### halfDisk01
576 mNumberOfD2_hHoles[1] = mNumberOfD2_hHoles[0];
577 mD2_hHoles[1] = mD2_hHoles[0];
578
579 // ### halfDisk02
580 mNumberOfD2_hHoles[2] = 13;
581 mD2_hHoles[2] = new Double_t[mNumberOfD2_hHoles[2]][2]{
582 {-10.45, 9.49}, // 15
583 {-8.75, 6.475}, // 17
584 {-7.05, 6.475}, // 19
585 {-5.35, 3.46}, // 21
586 {-3.65, 3.46}, // 23
587 {-1.95, 4.625}, // 25
588 {-0.25, 4.375}, // 27
589 {1.45, 4.465}, // 29
590 {3.15, 3.46}, // 31
591 {4.85, 3.46}, // 33
592 {6.55, 6.475}, // 35
593 {8.25, 6.475}, // 37
594 {9.95, 9.49} // 39
595 };
596
597 // ### halfDisk03
598 mNumberOfD2_hHoles[3] = 16;
599 mD2_hHoles[3] = new Double_t[mNumberOfD2_hHoles[3]][2]{
600 {-12.15, 10.075}, // O
601 {-10.45, 10.075}, // Q
602 {-8.75, 7.06}, // S
603 {-7.05, 7.06}, // T
604 {-5.35, 7.06}, // W
605 {-3.65, 5.26}, // Y
606 {-1.95, 4.025}, // AA
607 {-0.25, 3.86}, // CC
608 {1.45, 3.92}, // EE
609 {3.15, 4.79}, // GG
610 {4.85, 7.06}, // II
611 {6.65, 7.06}, // KK
612 {8.25, 7.06}, // MM
613 {9.95, 10.075}, // OO
614 {11.65, 10.075}, // QQ
615 {13.35, 10.075} // SS
616 };
617
618 // ### halfDisk04
619 mNumberOfD2_hHoles[4] = 17;
620 mD2_hHoles[4] = new Double_t[mNumberOfD2_hHoles[4]][2]{
621 {-13.85, 11.475}, // O
622 {-12.15, 11.475}, // Q
623 {-10.45, 8.46}, // S
624 {-8.75, 8.46}, // U
625 {-7.05, 5.445}, // W
626 {-5.35, 5.445}, // Y
627 {-3.65, 6.035}, // AA
628 {-1.95, 5.005}, // CC
629 {-.25, 4.86}, // EE
630 {1.45, 4.915}, // GG
631 {3.15, 5.66}, // II
632 {4.85, 5.445}, // KK
633 {6.55, 5.445}, // MM
634 {8.25, 8.46}, // OO
635 {9.95, 8.46}, // QQ
636 {11.65, 11.475}, // SS
637 {13.35, 11.475} // UU
638 };
639
640 // ================================================
641 // ## D6.5 mm holes
642 // ### halfDisk00
643 mD65Holes[0] = new Double_t[mTwoHoles][2]{
644 {-16.6, 13.5},
645 {16.6, 13.5}};
646
647 // ### halfDisk01
648 mD65Holes[1] = mD65Holes[0];
649
650 // ### halfDisk02
651 mD65Holes[2] = new Double_t[mTwoHoles][2]{
652 {-16.6, 14.9}, // 1
653 {16.6, 14.9} // 2
654 };
655
656 // ### halfDisk03
657 mD65Holes[3] = new Double_t[mTwoHoles][2]{
658 {-17.4, 18.5}, // A
659 {17.4, 18.5} // B
660 };
661
662 // ### halfDisk02
663 mD65Holes[4] = new Double_t[mTwoHoles][2]{
664 {-17.4, 19.9}, //
665 {17.4, 19.9} // 2
666 };
667
668 // ================================================
669 // ## D6 mm holes
670 // ### halfDisk00
671 mD6Holes[0] = new Double_t[mTwoHoles][2]{
672 {-16.6, 12.5}, // 3
673 {16.6, 12.5} // 4
674 };
675
676 // ### halfDisk01
677 mD6Holes[1] = mD6Holes[0];
678
679 // ### halfDisk02
680 mD6Holes[2] = new Double_t[mTwoHoles][2]{
681 {-16.6, 13.9}, // 3
682 {16.6, 13.9} // 4
683 };
684
685 // ### halfDisk03
686 mD6Holes[3] = new Double_t[mTwoHoles][2]{
687 {-17.4, 17.5}, // C
688 {17.4, 17.5} // D
689 };
690
691 // ### halfDisk04
692 mD6Holes[4] = new Double_t[mTwoHoles][2]{
693 {-17.4, 18.9}, // #
694 {17.4, 18.9} // #
695 };
696
697 // ================================================
698 // ## D8 mm holes
699 // ### halfDisk00
700 mNumberOfD8_Holes[0] = 2;
701 mD8Holes[0] = new Double_t[mNumberOfD8_Holes[0]][2]{
702 {-16.1, 10.3}, // 5
703 {16.1, 10.3} // 6
704 };
705
706 // ### halfDisk01
707 mNumberOfD8_Holes[1] = mNumberOfD8_Holes[0];
708 mD8Holes[1] = mD8Holes[0];
709
710 // ### halfDisk02
711 mNumberOfD8_Holes[2] = 2;
712 mD8Holes[2] = new Double_t[mNumberOfD8_Holes[1]][2]{
713 {-16.1, 11.7}, // 5
714 {16.1, 11.7} // 6
715 };
716
717 // ### halfDisk03
718 mNumberOfD8_Holes[3] = 0;
719
720 // ### halfDisk04
721 mNumberOfD8_Holes[4] = 0;
722
723 // ================================================
724 // ## D3 mm holes
725 // ### halfDisk00
726 mD3Holes[0] = new Double_t[mTwoHoles][2]{
727 {-14.0, 6.0}, // 7
728 {14.0, 6.0} // 8
729 };
730
731 // ### halfDisk01
732 mD3Holes[1] = mD3Holes[0];
733
734 // ### halfDisk02
735 mD3Holes[2] = new Double_t[mTwoHoles][2]{
736 {-14.0, 7.4}, // 7
737 {14.0, 7.4} // 8
738 };
739
740 // ### halfDisk03
741 mD3Holes[3] = new Double_t[mTwoHoles][2]{
742 {-19.5, 10.5}, // E
743 {19.5, 10.5} // F
744 };
745
746 // ### halfDisk04
747 mD3Holes[4] = new Double_t[mTwoHoles][2]{
748 {-19.5, 11.9}, // E
749 {19.5, 11.9} // F
750 };
751
752 // ================================================
753 // ## M3 H7 mm holes
754 // ### halfDisk00
755 mNumberOfM3Holes[0] = 2;
756 mM3Holes[0] = new Double_t[mNumberOfM3Holes[0]][2]{
757 {-11.0, 4.0}, // 11
758 {11.0, 4.0} // 12
759 };
760
761 // ### halfDisk01
762 mNumberOfM3Holes[1] = mNumberOfM3Holes[0];
763 mM3Holes[1] = mM3Holes[0];
764
765 // ### halfDisk02
766 mNumberOfM3Holes[2] = 2;
767 mM3Holes[2] = new Double_t[mNumberOfM3Holes[2]][2]{
768 {-12.0, 7.4}, // 7
769 {12.0, 7.4} // 8
770 };
771
772 // ### halfDisk03
773 mNumberOfM3Holes[3] = 4;
774 mM3Holes[3] = new Double_t[mNumberOfM3Holes[3]][2]{
775 {-16.5, 10.5}, // G
776 {16.5, 10.5}, // H
777 {-6.0, 2.5}, // M
778 {6.0, 2.5} // N
779 };
780
781 // ### halfDisk04
782 mNumberOfM3Holes[4] = 4;
783 mM3Holes[4] = new Double_t[mNumberOfM3Holes[4]][2]{
784 {-17.0, 11.9}, // G
785 {17.0, 11.9}, // H
786 {-9.0, 4.4}, // K
787 {9.0, 4.4} // L
788 };
789
790 // ================================================
791 // ## D45 H7 mm holes
792 // ### halfDisk00
793 mD45Holes[0] = new Double_t[mTwoHoles][2]{
794 {-9.0, 4.0}, // 13
795 {9.0, 4.0} // 14
796 };
797
798 // ### halfDisk01
799 mD45Holes[1] = mD45Holes[0];
800
801 // ### halfDisk02
802 mD45Holes[2] = new Double_t[mTwoHoles][2]{
803 {-11.0, 5.4}, // 13
804 {11.0, 5.4} // 14
805 };
806
807 // ### halfDisk03
808 mD45Holes[3] = new Double_t[mTwoHoles][2]{
809 {-10., 1.5}, // K
810 {10., 1.5} // L
811 };
812
813 // ### halfDisk04
814 mD45Holes[4] = new Double_t[mTwoHoles][2]{
815 {-10.0, 2.9}, // M
816 {10.0, 2.9} // N
817 };
818
819 // ================================================
820 // ## D2 H7 mm holes - 4 mm deep (on lower surface)
821 // ### halfDisk00
822 mD2Holes[0] = new Double_t[mTwoHoles][2]{
823 {-12.2, 8.295}, // 9
824 {12.2, 8.295} // 10
825 };
826
827 // ### halfDisk01
828 mD2Holes[1] = mD2Holes[0];
829
830 // ### halfDisk02
831 mD2Holes[2] = new Double_t[mTwoHoles][2]{
832 {-12.6, 9.695}, // 9
833 {12.6, 9.695} // 10
834 };
835
836 // ### halfDisk03
837 mD2Holes[3] = new Double_t[mTwoHoles][2]{
838 {-15.5, 10.805}, // I
839 {15.5, 10.805} // J
840 };
841
842 // ### halfDisk04
843 mD2Holes[4] = new Double_t[mTwoHoles][2]{
844 {-16.0, 12.205}, // I
845 {16.0, 12.205} // J
846 };
847}
Constants for the MFT; distance unit is cm.
uint64_t vertex
Definition RawEventData.h:9
Class handling both virtual segmentation and real volumes.
ClassImp(IdPath)
Class describing geometry of one MFT half-disk support.
TGeoVolumeAssembly * create(Int_t kHalf, Int_t disk)
Definition Support.cxx:59
GLint y
Definition glcorearb.h:270
auto compositeOperation(L &&left, R &&right, T &&translation, OP &&op)
Definition Support.h:119
auto serialBoolOperation(L &&base, SHAPE &&shape, EL &&elements, OP &&op)
Definition Support.h:127