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 // a name of its own: a volume sharing a name with its assembly also shares its ROOT volume number
208 auto* support_vol = new TGeoVolume(Form("SupportVol_H%d_D%d", half, disk), localCS, mSupportMedium);
209
210 auto* rot = new TGeoRotation("rot", 0, 0, 180);
211 mHalfDisk->AddNode(support_vol, 0, rot);
212 return mHalfDisk;
213}
214
215//_____________________________________________________________________________
216void Support::initParameters()
217{
218
219 mSupportMedium = gGeoManager->GetMedium("MFT_PEEK$");
220 auto th = mSupThickness;
221 // # Support parametrization =====
222
223 // ================================================
224 // ## Cut boxes (squares)
225 // ### halfDisks 00
226
227 mDiskBoxCuts[0] =
228 {
229 {mSupRad[0] + mT_delta, mDiskGap, th, 0., 0., 0},
230 {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²)
231 {12.4, 6.91, th, 0., 0., 0},
232 {7.95, 9.4, th, 0., 0., 0},
233 {2.9, 11.885, th, 0., 0., 0},
234 {2.9 / 2, .7, th, -12.15, 9.9, 0},
235 {2.9 / 2, .7, th, 12.15, 9.9, 0},
236 {1.3875, 1.4, th, 16.1875, 7.9, 0},
237 {1.3875, 1.4, th, -16.1875, 7.9, 0}};
238
239 // ### halfDisks 01
240 mDiskBoxCuts[1] = mDiskBoxCuts[0];
241
242 // ### halfDisk 02
243 mDiskBoxCuts[2] =
244 {
245 {mSupRad[2] + mT_delta, mDiskGap, th, 0., 0., 0},
246 {sqrt(pow(mSupRad[2], 2.) - pow(mOuterCut[2], 2.)),
247 (mSupRad[2] - mOuterCut[2]) / 2., th,
248 0.,
249 (mSupRad[2] + mOuterCut[2]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
250 {12.8, 6.91, th, 0., 0., 0},
251 {9.7, 9.4, th, 0., 0., 0},
252 {(6.3 - 2.2) / 2, 12.4, th, (6.3 + 2.2) / 2, 0, 0},
253 {2.2 + mT_delta, 11.9, th, 0., 0., 0},
254 {(6.3 - 2.2) / 2, 12.4, th, -(6.3 + 2.2) / 2, 0, 0},
255 {2.8 / 2, .7, th, -12.95, 9.85, 0},
256 {2.8 / 2, .7, th, 12.95, 9.85, 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 {(mSupRad[2] - 14.8) / 2, (10.0 - 6.5) / 2, th, -(mSupRad[2] + 14.8) / 2, (10.0 + 6.5) / 2, 0}};
259
260 // ### halfDisk 03
261 mDiskBoxCuts[3] =
262 {
263 {mSupRad[3] + mT_delta, mDiskGap, th, 0., 0., 0},
264 {sqrt(pow(mSupRad[3], 2.) - pow(mOuterCut[3], 2.)),
265 (mSupRad[3] - mOuterCut[3]) / 2., th,
266 0.,
267 (mSupRad[3] + mOuterCut[3]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
268 {15.7, 9.4, th, 0., 0., 0},
269 {9.7, 12.4, th, 0., 0., 0},
270 {4.6, 14.73, th, 0., 0., 0},
271 {2.9, 16.0, th, 0., 0., 0},
272 {(mSupRad[3] - 18.3) / 2., 4.2, th, (mSupRad[3] + 18.3) / 2, 0, 0},
273 {(mSupRad[3] - 18.3) / 2., 4.2, th, -(mSupRad[3] + 18.3) / 2, 0, 0}};
274
275 // ### halfDisk 04
276 mDiskBoxCuts[4] =
277 {
278 {mSupRad[4] + mT_delta, mDiskGap, th, 0., 0., 0},
279 {sqrt(pow(mSupRad[4], 2.) - pow(mOuterCut[4], 2.)),
280 (mSupRad[4] - mOuterCut[4]) / 2., th,
281 0.,
282 (mSupRad[4] + mOuterCut[4]) / 2., 0}, //External cut width: 2*sqrt(R²-x²)
283 {16.2, 9.4, th, 0., 0., 0},
284 {11.4, 12.4, th, 0., 0., 0},
285 {8.0, 15.35, th, 0., 0., 0},
286 {2.9, 16.4, th, 0., 0., 0},
287 {2.35, 4.2, th, -20.65, 0., 0},
288 {2.35, 4.2, th, 20.65, 0., 0}};
289
290 // ================================================
291 // ## Raised boxes
292 // ### halfDisks 00
293
294 auto rBT = mRaisedBoxHeight / 2.; // Raised boxes thickness
295 auto rBS = mRaisedBoxHeight / 2. + mSupThickness / 2.; //Raised boxes z shift
296 // Raised Boxes {Width, Height, Thickness, x_center, y_center, z_center}
297 mDiskRaisedBoxes[0] =
298 {
299 {(9.35 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, (9.35 + 7.95) / 2., (8.81 + 6.91) / 2., rBS},
300 {(7.65 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, (7.65 + 2.9) / 2., (11.82 + 9.4) / 2., rBS},
301 {(2.55 + 2.05) / 2., (13.92 - 11.885) / 2., rBT, (2.55 - 2.05) / 2., (13.92 + 11.885) / 2., rBS},
302 {(7.15 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, (-7.152 - 2.92) / 2., (11.82 + 9.4) / 2, rBS},
303 {(10.55 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, (-10.55 - 7.95) / 2., (8.81 + 6.91) / 2., rBS},
304 //Back side:
305 {(9.35 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, -(9.35 + 7.95) / 2., (8.81 + 6.91) / 2., -rBS},
306 {(7.65 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, -(7.65 + 2.9) / 2., (11.82 + 9.4) / 2., -rBS},
307 {(2.55 + 2.05) / 2., (13.92 - 11.885) / 2., rBT, -(2.55 - 2.05) / 2., (13.92 + 11.885) / 2., -rBS},
308 {(7.15 - 2.9) / 2., (11.82 - 9.4) / 2., rBT, -(-7.152 - 2.92) / 2., (11.82 + 9.4) / 2, -rBS},
309 {(10.55 - 7.95) / 2., (8.81 - 6.91) / 2., rBT, -(-10.55 - 7.95) / 2., (8.81 + 6.91) / 2., -rBS}};
310
311 // ### halfDisks 01
312 mDiskRaisedBoxes[1] = mDiskRaisedBoxes[0];
313
314 // ### halfDisk 02
315 mDiskRaisedBoxes[2] =
316 {
317 {(10.55 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, (10.55 + 9.7) / 2., (8.81 + 6.91) / 2., rBS},
318 {(8.85 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, (8.85 + 6.3) / 2., (11.82 + 9.4) / 2., rBS},
319 {(5.45 - 2.55) / 2., (14.83 - 12.4) / 2., rBT, (5.45 + 2.55) / 2., (14.83 + 12.4) / 2., rBS},
320 {(2.2 + 2.2) / 2., (13.92 - 11.9) / 2., rBT, (2.2 - 2.2) / 2., (13.92 + 11.9) / 2, rBS},
321 {(5.95 - 3.05) / 2., (14.83 - 12.4) / 2., rBT, -(5.95 + 3.05) / 2., (14.83 + 12.4) / 2., rBS},
322 {(9.35 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, -(9.35 + 6.3) / 2., (11.82 + 9.4) / 2, rBS},
323 {(11.05 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, -(11.05 + 9.7) / 2., (8.81 + 6.91) / 2., rBS},
324 //Back side:
325 {(10.55 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, -(10.55 + 9.7) / 2., (8.81 + 6.91) / 2., -rBS},
326 {(8.85 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, -(8.85 + 6.3) / 2., (11.82 + 9.4) / 2., -rBS},
327 {(5.45 - 2.55) / 2., (14.83 - 12.4) / 2., rBT, -(5.45 + 2.55) / 2., (14.83 + 12.4) / 2., -rBS},
328 {(2.2 + 2.2) / 2., (13.92 - 11.9) / 2., rBT, -(2.2 - 2.2) / 2., (13.92 + 11.9) / 2, -rBS},
329 {(5.95 - 3.05) / 2., (14.83 - 12.4) / 2., rBT, (5.95 + 3.05) / 2., (14.83 + 12.4) / 2., -rBS},
330 {(9.35 - 6.3) / 2., (11.82 - 9.4) / 2., rBT, (9.35 + 6.3) / 2., (11.82 + 9.4) / 2, -rBS},
331 {(11.05 - 9.7) / 2., (8.81 - 6.91) / 2., rBT, (11.05 + 9.7) / 2., (8.81 + 6.91) / 2., -rBS}};
332
333 // ### halfDisk 03
334 mDiskRaisedBoxes[3] =
335 {
336 {(12.75 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, (12.75 + 9.7) / 2., (11.82 + 9.4) / 2., rBS},
337 {(9.35 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, (9.35 + 4.6) / 2., (14.83 + 12.4) / 2., rBS},
338 {(4.25 - 2.9) / 2., (16.63 - 14.73) / 2., rBT, (4.25 + 2.9) / 2., (16.63 + 14.73) / 2., rBS},
339 {(2.55 + 2.05) / 2., (18.03 - 16.0) / 2., rBT, (2.55 - 2.05) / 2., (18.03 + 16.0) / 2, rBS},
340 {(3.75 - 2.9) / 2., (17.09 - 14.73) / 2., rBT, -(3.75 + 2.9) / 2., (17.09 + 14.73) / 2., rBS},
341 {(8.85 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, -(8.85 + 4.6) / 2., (14.83 + 12.4) / 2., rBS},
342 {(13.95 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, -(13.95 + 9.7) / 2., (11.82 + 9.4) / 2., rBS},
343 //for backside:
344 {(12.75 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, -(12.75 + 9.7) / 2., (11.82 + 9.4) / 2., -rBS},
345 {(9.35 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, -(9.35 + 4.6) / 2., (14.83 + 12.4) / 2., -rBS},
346 {(4.25 - 2.9) / 2., (16.63 - 14.73) / 2., rBT, -(4.25 + 2.9) / 2., (16.63 + 14.73) / 2., -rBS},
347 {(2.55 + 2.05) / 2., (18.03 - 16.0) / 2., rBT, -(2.55 - 2.05) / 2., (18.03 + 16.0) / 2, -rBS},
348 {(3.75 - 2.9) / 2., (17.09 - 14.73) / 2., rBT, (3.75 + 2.9) / 2., (17.09 + 14.73) / 2., -rBS},
349 {(8.85 - 4.6) / 2., (14.83 - 12.4) / 2., rBT, (8.85 + 4.6) / 2., (14.83 + 12.4) / 2., -rBS},
350 {(13.95 - 9.7) / 2., (11.82 - 9.4) / 2., rBT, (13.95 + 9.7) / 2., (11.82 + 9.4) / 2., -rBS}};
351
352 // ### halfDisk 04
353 mDiskRaisedBoxes[4] =
354 {
355 {(13.9 - 11.4) / 2., (11.82 - 9.4) / 2., rBT, -(13.9 + 11.4) / 2., (11.82 + 9.4) / 2., rBS}, // RB0
356 {(10.55 - 8.0) / 2., (14.83 - 12.4) / 2., rBT, -(10.55 + 8.0) / 2., (14.83 + 12.4) / 2., rBS}, // RB1
357 {(7.15 - 2.9) / 2., (17.84 - 15.35) / 2., rBT, -(7.15 + 2.9) / 2., (17.84 + 15.35) / 2., rBS}, // RB2
358 {(2.05 + 2.55) / 2., (18.45 - 16.4) / 2., rBT, -(2.05 - 2.55) / 2., (18.45 + 16.4) / 2, rBS}, // RB3
359 {-(-4.75 + 2.9) / 2., (17.26 - 15.35) / 2., rBT, -(-4.75 - 2.9) / 2., (17.26 + 15.35) / 2., rBS}, // RB4
360 {-(-7.65 + 4.75) / 2., (17.85 - 15.35) / 2., rBT, -(-7.65 - 4.75) / 2., (17.85 + 15.35) / 2., rBS}, // RB5
361 {-(-11.05 + 8.0) / 2., (14.83 - 12.4) / 2., rBT, -(-11.05 - 8.0) / 2., (14.83 + 12.4) / 2., rBS}, // RB6
362 {-(-14.45 + 11.4) / 2., (11.82 - 9.4) / 2., rBT, -(-14.45 - 11.4) / 2., (11.82 + 9.4) / 2., rBS}, // RB7
363 //For backside:
364 {(13.9 - 11.4) / 2., (11.82 - 9.4) / 2., rBT, (13.9 + 11.4) / 2., (11.82 + 9.4) / 2., -rBS}, // RB0
365 {(10.55 - 8.0) / 2., (14.83 - 12.4) / 2., rBT, (10.55 + 8.0) / 2., (14.83 + 12.4) / 2., -rBS}, // RB1
366 {(7.15 - 2.9) / 2., (17.84 - 15.35) / 2., rBT, (7.15 + 2.9) / 2., (17.84 + 15.35) / 2., -rBS}, // RB2
367 {(2.05 + 2.55) / 2., (18.45 - 16.4) / 2., rBT, (2.05 - 2.55) / 2., (18.45 + 16.4) / 2, -rBS}, // RB3
368 {-(-4.75 + 2.9) / 2., (17.26 - 15.35) / 2., rBT, (-4.75 - 2.9) / 2., (17.26 + 15.35) / 2., -rBS}, // RB4
369 {-(-7.65 + 4.75) / 2., (17.85 - 15.35) / 2., rBT, (-7.65 - 4.75) / 2., (17.85 + 15.35) / 2., -rBS}, // RB5
370 {-(-11.05 + 8.0) / 2., (14.83 - 12.4) / 2., rBT, (-11.05 - 8.0) / 2., (14.83 + 12.4) / 2., -rBS}, // RB6
371 {-(-14.45 + 11.4) / 2., (11.82 - 9.4) / 2., rBT, (-14.45 - 11.4) / 2., (11.82 + 9.4) / 2., -rBS} // RB7
372 };
373
374 // ================================================
375 // ## Fixation boxes
376 // ### halfDisks 00
377 // Fixation Boxes {Width, Height, Thickness, x_center, y_center, z_center = 0}
378 mDiskFixBoxes[0] = {
379 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., (16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0},
380 //Other side:
381 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., -(16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0}};
382
383 // ### halfDisks 01
384 mDiskFixBoxes[1] = mDiskFixBoxes[0];
385
386 // ### halfDisk 02
387 mDiskFixBoxes[2] = {
388 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., (16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0},
389 {(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},
390 //Other side:
391 {(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},
392 {(16.8 - 14.8) / 2., (6.5 - 4.6) / 2., mFixBoxHeight / 2., -(16.8 + 14.8) / 2., (6.5 + 4.6) / 2., 0}};
393
394 // ### halfDisk 03
395 mDiskFixBoxes[3] = {
396 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., (25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
397 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., (24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
398 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., (23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0},
399 //Other side:
400 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., -(25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
401 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., -(24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
402 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., -(23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0}};
403
404 // ### halfDisk 04
405 mDiskFixBoxes[4] = {
406 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., (25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
407 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., (24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
408 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., (23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0},
409 //Other side:
410 {(25.6 - 24.5) / 2., (6.5 - 5.2) / 2., mFixBoxHeight / 2., -(25.6 + 24.5) / 2., (6.5 + 5.2) / 2., 0},
411 {(24.5 - 23.6) / 2., (6.5 - 4.2) / 2., mFixBoxHeight / 2., -(24.5 + 23.6) / 2., (6.5 + 4.2) / 2., 0},
412 {(23.6 - 22.0) / 2., (6.5 - 4.2) / 2., mSupThickness / 2., -(23.6 + 22.0) / 2., (6.5 + 4.2) / 2., 0}};
413
414 // ================================================
415 // ## Big holes (Voids)
416 // Description only needed for one side of the disk.
417 // The other side is taken as a reflection on the y axis.
418 // 4 vertices are required for each hole that will be used
419 // on TGeoArb8 shapes.
420
421 // ### halfdisk 00
422 mNumberOfVoids[0] = 8; //Number of Voids (big holes) in each halfDisk support
423 mVoidVert[0] = new Double_t[mNumberOfVoids[0]][4][2]{
424 {{-16., 1.8}, {-16., 4.5}, {-13.8, 4.5}, {-12.9, 1.8}}, // A,B,C,H
425 {{-13.8, 4.5}, {-13.8, 8.7}, {-12.9, 7.6}, {-12.9, 1.8}}, // C,D,G,H
426 {{-13.8, 8.7}, {-10.55, 8.7}, {-10.55, 7.6}, {-12.9, 7.6}}, // D,E,F,G
427 {{-10.412, 12.8}, {-7.395, 14.75}, {-3., 14.75}, {-3., 12.8}}, // I,J,K,L
428 {{3., 12.8}, {3., 14.75}, {7.395, 14.75}, {10.412, 12.8}}, // M,N,O,P
429 {{12.9, 7.6}, {10.55, 7.6}, {10.55, 8.7}, {13.8, 8.7}}, // R,S,T,U
430 {{12.9, 1.8}, {12.9, 7.6}, {13.8, 8.7}, {13.8, 4.5}}, // Q,R,U,V
431 {{12.9, 1.8}, {13.8, 4.5}, {16., 4.5}, {16., 1.8}} // Q,V,W,X
432 };
433
434 // ### halfdisk 01
435 mNumberOfVoids[1] = mNumberOfVoids[0];
436 mVoidVert[1] = mVoidVert[0];
437
438 // ### halfdisk 02
439 mNumberOfVoids[2] = 8;
440 mVoidVert[2] = new Double_t[mNumberOfVoids[2]][4][2]{
441 {{-16., 1.9}, {-16., 4.1}, {-14.2, 4.1}, {-13.3, 1.9}}, // A,B,C,H
442 {{-13.3, 1.9}, {-14.2, 4.1}, {-14.2, 8.9}, {-13.3, 7.6}}, // H,C,D,G
443 {{-14.2, 8.9}, {-11.55, 8.9}, {-11.55, 7.6}, {-13.3, 7.6}}, // D,E,F,G
444 {{-5.5, 15.33}, {-5.5, 16.2}, {5.5, 16.2}, {5.5, 15.33}}, // K,L,M,N
445 {{-2.05, 14.22}, {-2.05, 15.33}, {2.05, 15.33}, {2.05, 14.22}}, // I,J,O,P
446 {{13.3, 7.6}, {11.55, 7.6}, {11.55, 8.9}, {14.2, 8.9}}, // R,S,T,U
447 {{13.3, 1.9}, {13.3, 7.6}, {14.2, 8.9}, {14.2, 4.1}}, // Q,R,U,V
448 {{13.3, 1.9}, {14.2, 4.1}, {16.0, 4.1}, {16.0, 1.9}} // Q,V,W,X
449 };
450
451 // ### halfdisk 03
452 mNumberOfVoids[3] = 6; //Number of Voids (big holes) in each halfDisk support
453 mVoidVert[3] = new Double_t[mNumberOfVoids[3]][4][2]{
454 {{-21.377, 15.3}, {-20.075, 11.5}, {-17.0, 11.5}, {-17.0, 15.3}}, // a,b,c,d
455 // pockets e..j and k..p cut as two convex pieces split at y = 7.5, overlapping by .02; u, u', v, v' lie on e-f and l-m
456 {{-19.053, 9.5}, {-19.053 + 5.089 * 2.02 / 6., 7.48}, {-14.0, 7.48}, {-14.0, 9.5}}, // e,u',i',j
457 {{-19.053 + 5.089 / 3., 7.5}, {-13.964, 3.5}, {-10.0, 3.5}, {-10.0, 7.5}}, // u,f,g,h
458 {{21.377, 15.3}, {17.0, 15.3}, {17.0, 11.5}, {20.075, 11.5}}, // s,t,q,r
459 {{14.0, 9.5}, {14.0, 7.48}, {19.053 - 5.089 * 2.02 / 6., 7.48}, {19.053, 9.5}}, // n,o',v',m
460 {{10.0, 7.5}, {10.0, 3.5}, {13.964, 3.5}, {19.053 - 5.089 / 3., 7.5}} // p,k,l,v
461 };
462
463 // ### halfdisk 04
464 mNumberOfVoids[4] = 4; //Number of Voids (big holes) in each halfDisk support
465 mVoidVert[4] = new Double_t[mNumberOfVoids[4]][4][2]{
466 {{-21.377, 16.7}, {-20.075, 12.9}, {-17.0, 12.9}, {-17.0, 16.7}}, // a,b,c,d
467 {{-19.053, 10.9}, {-13.964, 4.9}, {-11.5, 4.9}, {-15.0, 10.9}}, // e,f,g,j // Simplified
468 //{{-19.053, 10.9}, {-13.964, 4.9}, {-15.0, 8.9}, {-15.0, 10.9}} // e,f,i,j
469 //{{-15.0, 8.9}, {-13.964, 4.9}, {-11.5, 4.9}, {-11.5, 8.9}}, // i,f,g,h
470 {{21.377, 16.7}, {17., 16.7}, {17.0, 12.9}, {20.075, 12.9}}, // s,t,q,r
471 {{11.5, 4.9}, {13.96, 4.9}, {19.053, 10.9}, {15.0, 10.9}} // k,l,m,n // Simplified
472 //{{19.053, 10.9}, {15.0, 10.9}, {15.0, 8.9}, {13.964, 4.9}}, // m,n,o,l
473 //{{13.964, 4.9}, {15.0, 8.9}, {11.5, 8.9}, {11.5, 4.9}} // l,o,p,k
474 };
475
476 // ================================================
477 // ## M2 6mm deep
478 // ### halfDisk00
479 mNumberOfM2Holes[0] = 12;
480 mM2Holes[0] = new Double_t[mNumberOfM2Holes[0]][2]{
481 {-8.75, 7.29}, // #16
482 {-7.05, 4.275}, // #18
483 {-5.35, 4.275}, // #20
484 {-3.65, 4.275}, // #22
485 {-1.95, 2.429}, // #24
486 {-0.25, 2.175}, // #26
487 {1.45, 2.269}, // #28
488 {3.15, 4.275}, // #30
489 {4.85, 4.275}, // #32
490 {6.55, 4.275}, // #34
491 {8.25, 7.29}, // #36
492 {9.95, 7.29} // #38
493 };
494
495 // ### halfDisk01
496 mNumberOfM2Holes[1] = mNumberOfM2Holes[0];
497 mM2Holes[1] = mM2Holes[0];
498
499 // ### halfDisk02
500 mNumberOfM2Holes[2] = 13;
501 mM2Holes[2] = new Double_t[mNumberOfM2Holes[2]][2]{
502 {-10.45, 8.69}, // 16
503 {-8.75, 5.675}, // 18
504 {-7.05, 5.675}, // 20
505 {-5.35, 2.66}, // 22
506 {-3.65, 2.66}, // 24
507 {-1.95, 3.825}, // 26
508 {-0.25, 3.575}, // 28
509 {1.45, 3.665}, // 30
510 {3.15, 2.66}, // 32
511 {4.85, 2.66}, // 34
512 {6.55, 5.675}, // 36
513 {8.25, 5.675}, // 38
514 {9.95, 8.69} // 40
515 };
516
517 // ### halfDisk03
518 mNumberOfM2Holes[3] = 16;
519 mM2Holes[3] = new Double_t[mNumberOfM2Holes[3]][2]{
520 {-12.15, 9.275}, // P
521 {-10.45, 9.275}, // R
522 {-8.75, 6.26}, // T
523 {-7.05, 6.26}, // V
524 {-5.35, 6.26}, // X
525 {-3.65, 4.46}, // Z
526 {-1.95, 3.225}, // BB
527 {-0.25, 3.06}, // DD
528 {1.45, 3.12}, // FF
529 {3.15, 3.99}, // HH
530 {4.85, 6.62}, // JJ
531 {6.65, 6.62}, // LL
532 {8.25, 6.62}, // NN
533 {9.95, 9.275}, // PP
534 {11.65, 9.275}, // RR
535 {13.35, 9.275} // TT
536 };
537
538 // ### halfDisk04
539 mNumberOfM2Holes[4] = 17;
540 mM2Holes[4] = new Double_t[mNumberOfM2Holes[4]][2]{
541 {-13.85, 10.675}, // P
542 {-12.15, 10.675}, // R
543 {-10.45, 7.66}, // T
544 {-8.75, 7.66}, // V
545 {-7.05, 4.645}, // X
546 {-5.35, 4.645}, // Z
547 {-3.65, 5.235}, // BB
548 {-1.95, 4.205}, // DD
549 {-0.25, 4.06}, // FF
550 {1.45, 4.115}, // HH
551 {3.15, 4.86}, // JJ
552 {4.85, 4.645}, // LL
553 {6.55, 4.645}, // NN
554 {8.25, 7.66}, // PP
555 {9.95, 7.66}, // RR
556 {11.65, 10.675}, // TT
557 {13.35, 10.675} // VV
558 };
559
560 // ================================================
561 // ## D2 H7 - 4 mm deep (on raisedBoxes)
562 // ### halfDisk00
563 mNumberOfD2_hHoles[0] = 12;
564 mD2_hHoles[0] = new Double_t[mNumberOfD2_hHoles[0]][2]{{-8.75, 8.09}, // #15
565 {-7.05, 5.075}, // #17
566 {-5.35, 5.075}, // #19
567 {-3.65, 5.075}, // #21
568 {-1.95, 3.229}, // #23
569 {-0.25, 2.975}, // #25
570 {1.45, 3.069}, // #27
571 {3.15, 5.075}, // #29
572 {4.85, 5.075}, // #31
573 {6.55, 5.075}, // #33
574 {8.25, 8.09}, // #35
575 {9.95, 8.09}}; // #37
576
577 // ### halfDisk01
578 mNumberOfD2_hHoles[1] = mNumberOfD2_hHoles[0];
579 mD2_hHoles[1] = mD2_hHoles[0];
580
581 // ### halfDisk02
582 mNumberOfD2_hHoles[2] = 13;
583 mD2_hHoles[2] = new Double_t[mNumberOfD2_hHoles[2]][2]{
584 {-10.45, 9.49}, // 15
585 {-8.75, 6.475}, // 17
586 {-7.05, 6.475}, // 19
587 {-5.35, 3.46}, // 21
588 {-3.65, 3.46}, // 23
589 {-1.95, 4.625}, // 25
590 {-0.25, 4.375}, // 27
591 {1.45, 4.465}, // 29
592 {3.15, 3.46}, // 31
593 {4.85, 3.46}, // 33
594 {6.55, 6.475}, // 35
595 {8.25, 6.475}, // 37
596 {9.95, 9.49} // 39
597 };
598
599 // ### halfDisk03
600 mNumberOfD2_hHoles[3] = 16;
601 mD2_hHoles[3] = new Double_t[mNumberOfD2_hHoles[3]][2]{
602 {-12.15, 10.075}, // O
603 {-10.45, 10.075}, // Q
604 {-8.75, 7.06}, // S
605 {-7.05, 7.06}, // T
606 {-5.35, 7.06}, // W
607 {-3.65, 5.26}, // Y
608 {-1.95, 4.025}, // AA
609 {-0.25, 3.86}, // CC
610 {1.45, 3.92}, // EE
611 {3.15, 4.79}, // GG
612 {4.85, 7.06}, // II
613 {6.65, 7.06}, // KK
614 {8.25, 7.06}, // MM
615 {9.95, 10.075}, // OO
616 {11.65, 10.075}, // QQ
617 {13.35, 10.075} // SS
618 };
619
620 // ### halfDisk04
621 mNumberOfD2_hHoles[4] = 17;
622 mD2_hHoles[4] = new Double_t[mNumberOfD2_hHoles[4]][2]{
623 {-13.85, 11.475}, // O
624 {-12.15, 11.475}, // Q
625 {-10.45, 8.46}, // S
626 {-8.75, 8.46}, // U
627 {-7.05, 5.445}, // W
628 {-5.35, 5.445}, // Y
629 {-3.65, 6.035}, // AA
630 {-1.95, 5.005}, // CC
631 {-.25, 4.86}, // EE
632 {1.45, 4.915}, // GG
633 {3.15, 5.66}, // II
634 {4.85, 5.445}, // KK
635 {6.55, 5.445}, // MM
636 {8.25, 8.46}, // OO
637 {9.95, 8.46}, // QQ
638 {11.65, 11.475}, // SS
639 {13.35, 11.475} // UU
640 };
641
642 // ================================================
643 // ## D6.5 mm holes
644 // ### halfDisk00
645 mD65Holes[0] = new Double_t[mTwoHoles][2]{
646 {-16.6, 13.5},
647 {16.6, 13.5}};
648
649 // ### halfDisk01
650 mD65Holes[1] = mD65Holes[0];
651
652 // ### halfDisk02
653 mD65Holes[2] = new Double_t[mTwoHoles][2]{
654 {-16.6, 14.9}, // 1
655 {16.6, 14.9} // 2
656 };
657
658 // ### halfDisk03
659 mD65Holes[3] = new Double_t[mTwoHoles][2]{
660 {-17.4, 18.5}, // A
661 {17.4, 18.5} // B
662 };
663
664 // ### halfDisk02
665 mD65Holes[4] = new Double_t[mTwoHoles][2]{
666 {-17.4, 19.9}, //
667 {17.4, 19.9} // 2
668 };
669
670 // ================================================
671 // ## D6 mm holes
672 // ### halfDisk00
673 mD6Holes[0] = new Double_t[mTwoHoles][2]{
674 {-16.6, 12.5}, // 3
675 {16.6, 12.5} // 4
676 };
677
678 // ### halfDisk01
679 mD6Holes[1] = mD6Holes[0];
680
681 // ### halfDisk02
682 mD6Holes[2] = new Double_t[mTwoHoles][2]{
683 {-16.6, 13.9}, // 3
684 {16.6, 13.9} // 4
685 };
686
687 // ### halfDisk03
688 mD6Holes[3] = new Double_t[mTwoHoles][2]{
689 {-17.4, 17.5}, // C
690 {17.4, 17.5} // D
691 };
692
693 // ### halfDisk04
694 mD6Holes[4] = new Double_t[mTwoHoles][2]{
695 {-17.4, 18.9}, // #
696 {17.4, 18.9} // #
697 };
698
699 // ================================================
700 // ## D8 mm holes
701 // ### halfDisk00
702 mNumberOfD8_Holes[0] = 2;
703 mD8Holes[0] = new Double_t[mNumberOfD8_Holes[0]][2]{
704 {-16.1, 10.3}, // 5
705 {16.1, 10.3} // 6
706 };
707
708 // ### halfDisk01
709 mNumberOfD8_Holes[1] = mNumberOfD8_Holes[0];
710 mD8Holes[1] = mD8Holes[0];
711
712 // ### halfDisk02
713 mNumberOfD8_Holes[2] = 2;
714 mD8Holes[2] = new Double_t[mNumberOfD8_Holes[1]][2]{
715 {-16.1, 11.7}, // 5
716 {16.1, 11.7} // 6
717 };
718
719 // ### halfDisk03
720 mNumberOfD8_Holes[3] = 0;
721
722 // ### halfDisk04
723 mNumberOfD8_Holes[4] = 0;
724
725 // ================================================
726 // ## D3 mm holes
727 // ### halfDisk00
728 mD3Holes[0] = new Double_t[mTwoHoles][2]{
729 {-14.0, 6.0}, // 7
730 {14.0, 6.0} // 8
731 };
732
733 // ### halfDisk01
734 mD3Holes[1] = mD3Holes[0];
735
736 // ### halfDisk02
737 mD3Holes[2] = new Double_t[mTwoHoles][2]{
738 {-14.0, 7.4}, // 7
739 {14.0, 7.4} // 8
740 };
741
742 // ### halfDisk03
743 mD3Holes[3] = new Double_t[mTwoHoles][2]{
744 {-19.5, 10.5}, // E
745 {19.5, 10.5} // F
746 };
747
748 // ### halfDisk04
749 mD3Holes[4] = new Double_t[mTwoHoles][2]{
750 {-19.5, 11.9}, // E
751 {19.5, 11.9} // F
752 };
753
754 // ================================================
755 // ## M3 H7 mm holes
756 // ### halfDisk00
757 mNumberOfM3Holes[0] = 2;
758 mM3Holes[0] = new Double_t[mNumberOfM3Holes[0]][2]{
759 {-11.0, 4.0}, // 11
760 {11.0, 4.0} // 12
761 };
762
763 // ### halfDisk01
764 mNumberOfM3Holes[1] = mNumberOfM3Holes[0];
765 mM3Holes[1] = mM3Holes[0];
766
767 // ### halfDisk02
768 mNumberOfM3Holes[2] = 2;
769 mM3Holes[2] = new Double_t[mNumberOfM3Holes[2]][2]{
770 {-12.0, 7.4}, // 7
771 {12.0, 7.4} // 8
772 };
773
774 // ### halfDisk03
775 mNumberOfM3Holes[3] = 4;
776 mM3Holes[3] = new Double_t[mNumberOfM3Holes[3]][2]{
777 {-16.5, 10.5}, // G
778 {16.5, 10.5}, // H
779 {-6.0, 2.5}, // M
780 {6.0, 2.5} // N
781 };
782
783 // ### halfDisk04
784 mNumberOfM3Holes[4] = 4;
785 mM3Holes[4] = new Double_t[mNumberOfM3Holes[4]][2]{
786 {-17.0, 11.9}, // G
787 {17.0, 11.9}, // H
788 {-9.0, 4.4}, // K
789 {9.0, 4.4} // L
790 };
791
792 // ================================================
793 // ## D45 H7 mm holes
794 // ### halfDisk00
795 mD45Holes[0] = new Double_t[mTwoHoles][2]{
796 {-9.0, 4.0}, // 13
797 {9.0, 4.0} // 14
798 };
799
800 // ### halfDisk01
801 mD45Holes[1] = mD45Holes[0];
802
803 // ### halfDisk02
804 mD45Holes[2] = new Double_t[mTwoHoles][2]{
805 {-11.0, 5.4}, // 13
806 {11.0, 5.4} // 14
807 };
808
809 // ### halfDisk03
810 mD45Holes[3] = new Double_t[mTwoHoles][2]{
811 {-10., 1.5}, // K
812 {10., 1.5} // L
813 };
814
815 // ### halfDisk04
816 mD45Holes[4] = new Double_t[mTwoHoles][2]{
817 {-10.0, 2.9}, // M
818 {10.0, 2.9} // N
819 };
820
821 // ================================================
822 // ## D2 H7 mm holes - 4 mm deep (on lower surface)
823 // ### halfDisk00
824 mD2Holes[0] = new Double_t[mTwoHoles][2]{
825 {-12.2, 8.295}, // 9
826 {12.2, 8.295} // 10
827 };
828
829 // ### halfDisk01
830 mD2Holes[1] = mD2Holes[0];
831
832 // ### halfDisk02
833 mD2Holes[2] = new Double_t[mTwoHoles][2]{
834 {-12.6, 9.695}, // 9
835 {12.6, 9.695} // 10
836 };
837
838 // ### halfDisk03
839 mD2Holes[3] = new Double_t[mTwoHoles][2]{
840 {-15.5, 10.805}, // I
841 {15.5, 10.805} // J
842 };
843
844 // ### halfDisk04
845 mD2Holes[4] = new Double_t[mTwoHoles][2]{
846 {-16.0, 12.205}, // I
847 {16.0, 12.205} // J
848 };
849}
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.
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