Project
Loading...
Searching...
No Matches
Barrel.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
12#include "TGeoCompositeShape.h"
13#include "TGeoCone.h"
14#include "TGeoManager.h"
15#include "TGeoMaterial.h"
16#include "TGeoMatrix.h"
17#include "TGeoMedium.h"
18#include "TGeoShape.h"
19#include "TGeoTrd1.h"
20#include "TGeoTube.h"
21#include "TGeoVolume.h"
22#include "TGeoXtru.h"
23#include "TMath.h"
24
25#include "MFTBase/Barrel.h"
26
27using namespace o2::mft;
28
33
34TGeoVolumeAssembly* Barrel::createBarrel()
35{
36
37 auto* BarrelVolume = new TGeoVolumeAssembly("BarrelVolume");
38
39 //
40 TGeoMedium* kMeAl = gGeoManager->GetMedium("MFT_Alu$");
41 TGeoMedium* mCu = gGeoManager->GetMedium("MFT_Cu$");
42 TGeoMedium* mCarbon = gGeoManager->GetMedium("MFT_CarbonFiberM46J$");
43 TGeoMedium* mRohacell = gGeoManager->GetMedium("MFT_Rohacell$");
44 TGeoMedium* mKapton = gGeoManager->GetMedium("MFT_Kapton$");
45 TGeoMedium* mWater = gGeoManager->GetMedium("MFT_Water$");
46 TGeoMedium* mAir = gGeoManager->GetMedium("MFT_Air$");
47 TGeoMedium* mPolypropylene = gGeoManager->GetMedium("MFT_Polypropylene$");
48 TGeoMedium* mPolyurethane = gGeoManager->GetMedium("MFT_Polyurethane$");
49 TGeoMedium* mPolyimide = gGeoManager->GetMedium("MFT_Polyimide$");
50 Double_t angle_open = 26.5;
51 const Float_t kDegRad = TMath::Pi() / 180.;
52 Double_t angle_open_rad = 26.5 * kDegRad;
53 Double_t rin = 49.90;
54 Double_t rout = 50.30;
55 Double_t no_overlap = 0.5;
56 Double_t shift_y = 0.4;
57 // define shape of joints
58 TGeoVolume* BarrelJoint0 = gGeoManager->MakeTubs("Barrel_joint0", kMeAl, rin - 0.25, rin, 1.05, 180 + (angle_open + no_overlap), 360 - (angle_open + no_overlap));
59 TGeoVolume* BarrelJoint1 = gGeoManager->MakeTubs("Barrel_joint1", kMeAl, rin, rin + 0.45, 0.525, 180 + (angle_open + no_overlap), 360 - (angle_open + no_overlap));
60 TGeoVolume* BoxJoint0 = gGeoManager->MakeBox("BoxJoint0", kMeAl, 0.2375, 2.750, 0.5125);
61 TGeoVolume* BoxJoint1 = gGeoManager->MakeBox("BoxJoint1", kMeAl, 0.75, 2.750, 0.5125);
62 // define shape of cyl vol
63 TGeoVolume* BarrelTube0 =
64 gGeoManager->MakeTubs("Barrel_Cylinder0", mCarbon, rin, rout, 20.325, 180 + (angle_open + no_overlap), 360 - (angle_open + no_overlap));
65 TGeoVolume* BarrelTube1 =
66 gGeoManager->MakeTubs("Barrel_Cylinder1", mCarbon, rin, rout, 61.00, 180 + (angle_open + no_overlap), 360 - (angle_open + no_overlap));
67
68 // defining rails 1st cyl
69 TGeoVolume* barrel_rail0 = gGeoManager->MakeBox("RailBox0", mCarbon, 0.5, 0.45, 19.20);
70 TGeoVolume* cylrail = gGeoManager->MakeTubs("cylrail0", mCarbon, 0, .20, 19.20, 0, 180);
71 TGeoVolume* barrel_rail1 = gGeoManager->MakeBox("RailBox1", mCarbon, 0.2, .45, 19.20);
72 TGeoCompositeShape* com_rail1;
73 TGeoTranslation* transcyl = new TGeoTranslation(0, 0.45, 0);
74 transcyl->SetName("transcyl");
75 transcyl->RegisterYourself();
76
77 com_rail1 =
78 new TGeoCompositeShape("Composite_rail1", "RailBox1 + cylrail0:transcyl");
79 TGeoVolume* comp_volrail0 = new TGeoVolume("Comp_rail0_vol", com_rail1, mCarbon);
80 TGeoVolume* BoxCavity0 = gGeoManager->MakeBox("BoxCavity0", mCarbon, 0.50, 2.50, 19.20);
81 TGeoVolume* BoxCavity1 = gGeoManager->MakeBox("BoxCavity1", mCarbon, 0.40, 2.30, 19.20);
82 TGeoVolume* BoxCavity2 = gGeoManager->MakeBox("BoxCavity2", mCarbon, 0.50, 0.10, 19.20);
83 TGeoVolume* Joincyl0 = gGeoManager->MakeTubs("Joincyl0", mCarbon, 0.7500, 0.95, 19.20, 105.4660, 180);
84 TGeoVolume* Joincyl1 = gGeoManager->MakeTubs("Joincyl1", mCarbon, 10.000, 10.20, 19.20, 0.0, 5.1);
85 TGeoCompositeShape* com_box0;
86 TGeoTranslation* cstr = new TGeoTranslation(0, -2.40, 0);
87 TGeoTranslation* jcyl0 = new TGeoTranslation(0.7, -3.25, 0);
88 TGeoTranslation* jcyl1 = new TGeoTranslation(-10.50, -3.25, 0);
89 cstr->SetName("cstr");
90 jcyl0->SetName("jcyltr0");
91 jcyl1->SetName("jcyltr1");
92 cstr->RegisterYourself();
93 jcyl0->RegisterYourself();
94 jcyl1->RegisterYourself();
95 com_box0 = new TGeoCompositeShape("CompBox", "BoxCavity0 - BoxCavity1 - BoxCavity2:cstr + Joincyl0:jcyltr0 + Joincyl1:jcyltr1");
96
97 TGeoVolume* comp_volBox = new TGeoVolume("Comp_Box_Vol0", com_box0, mCarbon);
98 // definig pos_box0
99 TGeoRotation rotrail0;
100 TGeoRotation rotrail1;
101 rotrail0.SetAngles(-127.7, 0, 0); // inversion du signe car le positionnement était incorrect
102 rotrail1.SetAngles(127.7, 0, 0); // inversion du signe
103
104 Double_t rin_shift = rin - 0.9;
105 Double_t xcr = rin_shift * TMath::Sin(127.7 * kDegRad);
106 Double_t ycr = rin_shift * TMath::Cos(127.7 * kDegRad);
107 TGeoTranslation transrail0(-xcr, -ycr, 20.350); // central rail R pos= 49.90; H= 0.90; W = 1.0 (cm)
108 TGeoTranslation transrail1(xcr, -ycr, 20.350); // les fameux 127.7°
109 TGeoCombiTrans Combirail0(transrail0, rotrail0);
110 TGeoCombiTrans Combirail1(transrail1, rotrail1);
111 TGeoHMatrix* pos_rail0 = new TGeoHMatrix(Combirail0);
112 TGeoHMatrix* pos_rail1 = new TGeoHMatrix(Combirail1);
113
114 TGeoRotation rotrail2;
115 TGeoRotation rotrail3;
116 rotrail2.SetAngles(-61.28, 0, 0); // right
117 rotrail3.SetAngles(61.28, 0, 0); // left
118 Double_t xrail_2_3 = rin_shift * TMath::Sin(61.28 * kDegRad);
119 Double_t yrail_2_3 = rin_shift * TMath::Cos(61.28 * kDegRad);
120
121 TGeoTranslation transrail2(-xrail_2_3, -yrail_2_3, 20.350); // R = 498.5; H = 11 (mm)
122 TGeoTranslation transrail3(xrail_2_3, -yrail_2_3, 20.350);
123
124 TGeoCombiTrans Combirail2(transrail2, rotrail2);
125 TGeoCombiTrans Combirail3(transrail3, rotrail3);
126 TGeoHMatrix* pos_rail2 = new TGeoHMatrix(Combirail2);
127 TGeoHMatrix* pos_rail3 = new TGeoHMatrix(Combirail3);
128
129 TGeoRotation rotrail4;
130 TGeoRotation rotrail5;
131 rotrail4.SetAngles(-43.32, 0, 0); // right
132 rotrail5.SetAngles(43.32, 0, 0); // left
133 Double_t xrail_4_5 = rin_shift * TMath::Sin(43.32 * kDegRad);
134 Double_t yrail_4_5 = rin_shift * TMath::Cos(43.32 * kDegRad);
135
136 TGeoTranslation transrail4(-xrail_4_5, -yrail_4_5, 20.350); // R = 498.5
137 TGeoTranslation transrail5(xrail_4_5, -yrail_4_5, 20.350);
138 TGeoCombiTrans Combirail4(transrail4, rotrail4);
139 TGeoCombiTrans Combirail5(transrail5, rotrail5);
140 TGeoHMatrix* pos_rail4 = new TGeoHMatrix(Combirail4);
141 TGeoHMatrix* pos_rail5 = new TGeoHMatrix(Combirail5);
142 // rotating 2nd Box
143
144 TGeoRotation rotbox0;
145 rotbox0.SetAngles(180, 180, 0);
146 TGeoTranslation transbox0(-45.30, -19.85 + shift_y, 20.35); // ??? 23.66°
147 TGeoCombiTrans Combibox0(transbox0, rotbox0);
148 TGeoHMatrix* pos_box0 = new TGeoHMatrix(Combibox0);
149
150 // rails 2nd cyl
151
152 TGeoVolume* barrel_rail02 = gGeoManager->MakeBox("RailBox02", mCarbon, 0.5, 0.45, 60.4750);
153 TGeoVolume* cylrail2 = gGeoManager->MakeTubs("cylrail2", mCarbon, 0, 0.20, 60.4750, 0, 180);
154 TGeoVolume* barrel_rail12 = gGeoManager->MakeBox("RailBox12", mCarbon, 0.2, 0.45, 60.4750);
155 TGeoCompositeShape* com_rail12;
156 TGeoTranslation* transcyl2 = new TGeoTranslation(0, 0.45, 0);
157 transcyl2->SetName("transcyl2");
158 transcyl2->RegisterYourself();
159 com_rail12 = new TGeoCompositeShape("Composite_rail1", "RailBox12 + cylrail2:transcyl2");
160 TGeoVolume* comp_volrail02 = new TGeoVolume("Comp_rail0_vol2", com_rail12, mCarbon);
161 TGeoVolume* BoxCavity02 = gGeoManager->MakeBox("BoxCavity02", mCarbon, 0.50, 2.50, 60.4750);
162 TGeoVolume* BoxCavity12 = gGeoManager->MakeBox("BoxCavity12", mCarbon, 0.40, 2.30, 60.4750);
163 TGeoVolume* BoxCavity22 = gGeoManager->MakeBox("BoxCavity22", mCarbon, 0.50, 0.10, 60.4750);
164 TGeoVolume* Joincyl02 = gGeoManager->MakeTubs("Joincyl02", mCarbon, 0.7500, 0.95, 60.4750, 105.4660, 180);
165 TGeoVolume* Joincyl12 = gGeoManager->MakeTubs("Joincyl12", mCarbon, 10.000, 10.20, 60.4750, 0.0, 5.1);
166 TGeoCompositeShape* com_box02;
167 TGeoTranslation* cstr2 = new TGeoTranslation(0, -2.40, 0);
168 TGeoTranslation* jcyl02 = new TGeoTranslation(0.7, -3.25, 0);
169 TGeoTranslation* jcyl12 = new TGeoTranslation(-10.50, -3.25, 0);
170 cstr2->SetName("cstr2");
171 jcyl02->SetName("jcyltr02");
172 jcyl12->SetName("jcyltr12");
173 cstr2->RegisterYourself();
174 jcyl02->RegisterYourself();
175 jcyl12->RegisterYourself();
176 com_box02 = new TGeoCompositeShape("CompBox2", "BoxCavity02 - BoxCavity12 - BoxCavity22:cstr2 + Joincyl02:jcyltr02 + Joincyl12:jcyltr12");
177
178 TGeoVolume* comp_volBox2 = new TGeoVolume("Comp_Box_Vol02", com_box02, mCarbon);
179 TGeoRotation rotrail02;
180 TGeoRotation rotrail12;
181 rotrail02.SetAngles(-127.7, 0, 0);
182 rotrail12.SetAngles(127.7, 0, 0);
183
184 TGeoTranslation transrail02(-xcr, -ycr, 104.425); // central rail R pos= 499.0; H= 9.0; W = 10.0
185 TGeoTranslation transrail12(xcr, -ycr, 104.425);
186 TGeoCombiTrans Combirail02(transrail02, rotrail02);
187 TGeoCombiTrans Combirail12(transrail12, rotrail12);
188 TGeoHMatrix* pos_rail02 = new TGeoHMatrix(Combirail02);
189 TGeoHMatrix* pos_rail12 = new TGeoHMatrix(Combirail12);
190
191 TGeoRotation rotrail22;
192 TGeoRotation rotrail32;
193 rotrail22.SetAngles(-4.62, 0, 0);
194 rotrail32.SetAngles(4.62, 0, 0);
195
196 TGeoTranslation transrail22(-rin_shift * TMath::Cos(28.76 * kDegRad), -rin_shift * TMath::Sin(28.76 * kDegRad), 104.425); // 28.76°
197 TGeoTranslation transrail32(rin_shift * TMath::Cos(28.76 * kDegRad), -rin_shift * TMath::Sin(28.76 * kDegRad), 104.425);
198 TGeoCombiTrans Combirail22(transrail22, rotrail2);
199 TGeoCombiTrans Combirail32(transrail32, rotrail3);
200 TGeoHMatrix* pos_rail22 = new TGeoHMatrix(Combirail22);
201 TGeoHMatrix* pos_rail32 = new TGeoHMatrix(Combirail32);
202
203 TGeoRotation rotrail42;
204 TGeoRotation rotrail52;
205 rotrail42.SetAngles(-46.3, 0, 0); // right
206 rotrail52.SetAngles(46.3, 0, 0); // left
207
208 TGeoTranslation transrail42(-xrail_4_5, -yrail_4_5, 104.425);
209 TGeoTranslation transrail52(xrail_4_5, -yrail_4_5, 104.425);
210 TGeoCombiTrans Combirail42(transrail42, rotrail42);
211 TGeoCombiTrans Combirail52(transrail52, rotrail52);
212 TGeoHMatrix* pos_rail42 = new TGeoHMatrix(Combirail42);
213 TGeoHMatrix* pos_rail52 = new TGeoHMatrix(Combirail52);
214 // rotating 2nd Box
215
216 TGeoRotation rotbox02;
217 rotbox02.SetAngles(180, 180, 0);
218 TGeoTranslation transbox02(-45.30, -19.85 + shift_y, 104.425);
219 TGeoCombiTrans Combibox02(transbox02, rotbox02);
220 TGeoHMatrix* pos_box02 = new TGeoHMatrix(Combibox02);
221 // defining SideRails
222 TGeoVolume* SideRail0 = gGeoManager->MakeBox("siderail0", kMeAl, 0.4, 2.5, 23.975); // SideRail H= 50 mm, W = 8 mm, L 479.5 mm
223 TGeoVolume* SideRail1 = gGeoManager->MakeBox("siderail1", kMeAl, 0.4, 2.5, 61.525); // SideRail H= 50 mm, W = 8 mm, L 1230.5 mm
224
225 // defining pipes
226 TGeoVolume* BarrelPipes = gGeoManager->MakeTube("Barrel_Pipes", mPolyurethane, 0.3, 0.4, 82.375);
227 TGeoVolume* WPipes3mm = gGeoManager->MakeTube("Barrel_PipesFill3mm", mWater, 0.0, 0.3, 82.375);
228 BarrelPipes->SetLineColor(kBlue);
229
230 TGeoVolume* ConePipes = gGeoManager->MakeTube("Cone_Pipes", kMeAl, 0.3, 0.4, 82.25); // ?????
231 TGeoVolume* PipeBox0 = gGeoManager->MakeBox("PipeBoxOut", mPolyurethane, 1.75, 0.45, 82.375);
232 TGeoVolume* PipeBox1 = gGeoManager->MakeBox("PipeBoxInn", mPolyurethane, 1.65, 0.35, 82.375);
233 TGeoVolume* PipeBoxFill = gGeoManager->MakeBox("PipeBoxFill", mAir, 1.65, 0.35, 82.375);
234 TGeoCompositeShape* ParallelPipeBox = new TGeoCompositeShape("ParallelPipeBox", "PipeBoxOut - PipeBoxInn");
235 TGeoVolume* PipeBox = new TGeoVolume("PipeBox", ParallelPipeBox, mPolyurethane);
236 PipeBox->SetLineColor(kWhite);
237 // rotation+translation pipes
238 TGeoRotation rotpipe0;
239 rotpipe0.SetAngles(-46.0, 0, 0);
240
241 Double_t xpipe = rin_shift * TMath::Sin(46 * kDegRad);
242 Double_t ypipe = rin_shift * TMath::Cos(46 * kDegRad);
243
244 TGeoTranslation transpipe0(-xpipe, -ypipe, 82.375);
245 TGeoCombiTrans Combipipe0(transpipe0, rotpipe0);
246 TGeoHMatrix* pos_pipe0 = new TGeoHMatrix(Combipipe0);
247
248 TGeoRotation rotpiper;
249 rotpiper.SetAngles(46.0, 0, 0);
250 TGeoTranslation transpipe2(xpipe, -ypipe, 82.375);
251 TGeoCombiTrans Combipipe2(transpipe2, rotpiper);
252 TGeoHMatrix* pos_pipe2 = new TGeoHMatrix(Combipipe2);
253
254 Double_t xboxjoint = rin * TMath::Cos(angle_open_rad);
255 Double_t yboxjoint = rin * TMath::Sin(angle_open_rad);
256
257 BarrelJoint0->SetLineColor(kRed - 9);
258 BarrelVolume->AddNode(BarrelJoint0, 1);
259 BarrelVolume->AddNode(BarrelJoint1, 1, new TGeoTranslation(0.0, 0.0, -0.525));
260 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(xboxjoint, -yboxjoint + 2.75 + shift_y, 0.525));
261 BarrelVolume->AddNode(BoxJoint1, 2, new TGeoTranslation(xboxjoint + 0.75 / 2, -yboxjoint + 2.75 + shift_y, -0.535));
262 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(-xboxjoint, -yboxjoint + 2.75 + shift_y, 0.525));
263 BarrelVolume->AddNode(BoxJoint1, 2, new TGeoTranslation(-xboxjoint - 0.75 / 2, -yboxjoint + 2.75 + shift_y, -0.525), "");
264 BarrelVolume->AddNode(BarrelTube0, 1, new TGeoTranslation(0.0, 0.0, 20.325));
265 BarrelVolume->AddNode(BarrelJoint0, 1, new TGeoTranslation(0.0, 0.0, 40.65));
266 BarrelVolume->AddNode(BarrelJoint1, 1, new TGeoTranslation(0.0, 0.0, 41.1875));
267 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(xboxjoint, -yboxjoint + 2.75 + shift_y, 40.125));
268 BarrelVolume->AddNode(BoxJoint1, 1, new TGeoTranslation(xboxjoint + 0.75 / 2, -yboxjoint + 2.75 + shift_y, 41.1875), "");
269 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(-xboxjoint, -yboxjoint + 2.75 + shift_y, 40.125));
270 BarrelVolume->AddNode(BoxJoint1, 2, new TGeoTranslation(-xboxjoint - 0.75 / 2, -yboxjoint + 2.75 + shift_y, 41.1875), "");
271
272 BarrelVolume->AddNode(barrel_rail0, 2, pos_rail0);
273 BarrelVolume->AddNode(barrel_rail0, 2, pos_rail1);
274
275 BarrelVolume->AddNode(comp_volrail0, 2, pos_rail2);
276 BarrelVolume->AddNode(comp_volrail0, 2, pos_rail3);
277
278 BarrelVolume->AddNode(comp_volrail0, 2, pos_rail4);
279 BarrelVolume->AddNode(comp_volrail0, 2, pos_rail5);
280
281 BarrelVolume->AddNode(comp_volBox, 2, pos_box0);
282
283 BarrelVolume->AddNode(comp_volBox, 2, new TGeoTranslation(45.30, -19.84 + shift_y, 20.35));
284
285 // adding siderails
286 BarrelVolume->AddNode(SideRail0, 1, new TGeoTranslation(46.200001, -20.0 + shift_y, 17.775));
287 BarrelVolume->AddNode(SideRail0, 1, new TGeoTranslation(-46.200001, -20.0 + shift_y, 17.775));
288
289 // start of the 2nd cyl
290 BarrelVolume->AddNode(BarrelJoint0, 1, new TGeoTranslation(0.0, 0.0, 42.80));
291 BarrelVolume->AddNode(BarrelJoint1, 1, new TGeoTranslation(0.0, 0.0, 42.250));
292 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(xboxjoint, -yboxjoint + 2.75 + shift_y, 43.325));
293 BarrelVolume->AddNode(BoxJoint1, 2, new TGeoTranslation(xboxjoint + 0.75 / 2, -yboxjoint + 2.75 + shift_y, 42.275));
294 BarrelVolume->AddNode(BoxJoint0, 1, new TGeoTranslation(-xboxjoint, -yboxjoint + 2.75 + shift_y, 43.325));
295 BarrelVolume->AddNode(BoxJoint1, 2, new TGeoTranslation(-xboxjoint + 0.75 / 2, -yboxjoint + 2.75 + shift_y, 42.275));
296 BarrelVolume->AddNode(BarrelTube1, 1, new TGeoTranslation(0.0, 0.0, 103.8));
297
298 // adding rails 2nd cyl
299 BarrelVolume->AddNode(barrel_rail02, 2, pos_rail02);
300 BarrelVolume->AddNode(barrel_rail02, 2, pos_rail12);
301
302 BarrelVolume->AddNode(comp_volrail02, 2, pos_rail22);
303 BarrelVolume->AddNode(comp_volrail02, 2, pos_rail32);
304
305 BarrelVolume->AddNode(comp_volrail02, 2, pos_rail42);
306 BarrelVolume->AddNode(comp_volrail02, 2, pos_rail52);
307
308 BarrelVolume->AddNode(comp_volBox2, 2, pos_box02);
309 BarrelVolume->AddNode(comp_volBox2, 2, new TGeoTranslation(45.30, -19.84 + shift_y, 104.325));
310
311 // adding side rails
312 BarrelVolume->AddNode(SideRail1, 1, new TGeoTranslation(46.200001, -20.0 + shift_y, 103.375));
313 BarrelVolume->AddNode(SideRail1, 1, new TGeoTranslation(-46.200001, -20.0 + shift_y, 103.375));
314
315 // adding pipes R=490.8 and R 490.0 mm
316
317 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(29.55 * kDegRad), -rin_shift * TMath::Sin(29.55 * kDegRad), 82.375));
318 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(30.62 * kDegRad), -rin_shift * TMath::Sin(30.62 * kDegRad), 82.375));
319 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(31.68 * kDegRad), -rin_shift * TMath::Sin(31.68 * kDegRad), 82.375));
320 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(33.06 * kDegRad) + 0.1, -rin_shift * TMath::Sin(33.06 * kDegRad) + 0.1, 82.375));
321 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(34.70 * kDegRad) + 0.1, -rin_shift * TMath::Sin(34.70 * kDegRad) + 0.1, 82.375));
322 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(-rin_shift * TMath::Cos(36.34 * kDegRad) + 0.1, -rin_shift * TMath::Sin(36.34 * kDegRad) + 0.1, 82.375));
323
324 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(29.55 * kDegRad), -rin_shift * TMath::Sin(29.55 * kDegRad), 82.375));
325 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(30.62 * kDegRad), -rin_shift * TMath::Sin(30.62 * kDegRad), 82.375));
326 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(31.68 * kDegRad), -rin_shift * TMath::Sin(31.68 * kDegRad), 82.375));
327 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(33.10 * kDegRad) - 0.1, -rin_shift * TMath::Sin(33.10 * kDegRad) + 0.1, 82.375));
328 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(34.70 * kDegRad) - 0.1, -rin_shift * TMath::Sin(34.70 * kDegRad) + 0.1, 82.375));
329 BarrelVolume->AddNode(BarrelPipes, 1, new TGeoTranslation(rin_shift * TMath::Cos(36.34 * kDegRad) - 0.1, -rin_shift * TMath::Sin(36.34 * kDegRad) + 0.1, 82.375));
330
331 BarrelVolume->AddNode(PipeBox, 1, pos_pipe0);
332 BarrelVolume->AddNode(PipeBox, 1, pos_pipe2);
333
334 // adding fill to the pipes
335 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(29.55 * kDegRad), -rin_shift * TMath::Sin(29.55 * kDegRad), 82.375));
336 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(30.62 * kDegRad), -rin_shift * TMath::Sin(30.62 * kDegRad), 82.375));
337 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(31.68 * kDegRad), -rin_shift * TMath::Sin(31.68 * kDegRad), 82.375));
338 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(33.06 * kDegRad) + 0.1, -rin_shift * TMath::Sin(33.06 * kDegRad) + 0.1, 82.375));
339 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(34.70 * kDegRad) + 0.1, -rin_shift * TMath::Sin(34.70 * kDegRad) + 0.1, 82.375));
340 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(-rin_shift * TMath::Cos(36.34 * kDegRad) + 0.1, -rin_shift * TMath::Sin(36.34 * kDegRad) + 0.1, 82.375));
341
342 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(29.55 * kDegRad), -rin_shift * TMath::Sin(29.55 * kDegRad), 82.375));
343 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(30.62 * kDegRad), -rin_shift * TMath::Sin(30.62 * kDegRad), 82.375));
344 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(31.68 * kDegRad), -rin_shift * TMath::Sin(31.68 * kDegRad), 82.375));
345 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(33.10 * kDegRad) - 0.1, -rin_shift * TMath::Sin(33.10 * kDegRad) + 0.1, 82.375));
346 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(34.70 * kDegRad) - 0.1, -rin_shift * TMath::Sin(34.70 * kDegRad) + 0.1, 82.375));
347 BarrelVolume->AddNode(WPipes3mm, 1, new TGeoTranslation(rin_shift * TMath::Cos(36.34 * kDegRad) - 0.1, -rin_shift * TMath::Sin(36.34 * kDegRad) + 0.1, 82.375));
348
349 BarrelVolume->AddNode(PipeBoxFill, 2, pos_pipe0);
350 BarrelVolume->AddNode(PipeBoxFill, 2, pos_pipe2);
351
352 // ----------------------- set Wires --------------------------------
353 Float_t radiia = 0.075;
354 Float_t radiib = 0.0317; // HABIA H2419 (Charlotte Riccio)
355 Float_t w_pos = 50.35;
356 Int_t nwiresa = 10;
357 Int_t nwiresb = 16;
358
359 // defining wires shapes
360 TGeoVolume* BarrelWiresA = gGeoManager->MakeTube("Barrel_wiresa", mCu, 0.0, radiia, 81.225);
361 TGeoVolume* BarrelWiresB = gGeoManager->MakeTube("Barrel_wiresb", mCu, 0.0, radiib, 81.225);
362 // defining isolation layers
363 TGeoVolume* BarrelWiresIsolA = gGeoManager->MakeTube("Barrel_wiresa_isol", mPolyimide, 7 * radiia, 7 * radiia + 0.05, 81.225);
364 TGeoVolume* BarrelWiresIsolB = gGeoManager->MakeTube("Barrel_wiresb_isol", mPolyimide, 7 * radiib, 7 * radiib + 0.05, 81.225);
365
366 Double_t rin_wireA[2] = {rin - 0.82, rin - 0.82 - 2 * radiia};
367 Double_t rin_wireB[4] = {rin - 0.82, rin - 0.82 - 2 * radiib, rin - 0.82 - 4 * radiib, rin - 0.82 - 6 * radiib};
368
369 Double_t xPosIniA;
370 Double_t xPosIniB;
371
372 // 2 layers of 10 WireA
373 for (Int_t l = 0; l < 2; l++) { // 2 layers
374 xPosIniA = rin_wireA[l] * TMath::Sin(51.0 * kDegRad);
375 for (Int_t k = 0; k < 5; k++) {
376 xPosIniA = xPosIniA - radiia;
377 Float_t yPosIniA = sqrt(rin_wireA[l] * rin_wireA[l] - xPosIniA * xPosIniA);
378 BarrelVolume->AddNode(BarrelWiresA, 1, new TGeoTranslation(xPosIniA, -yPosIniA, 81.325));
379 BarrelVolume->AddNode(BarrelWiresA, 1, new TGeoTranslation(-xPosIniA, -yPosIniA, 81.325));
380 xPosIniA = xPosIniA - 0.03;
381 }
382 }
383 Double_t xIsol = (rin_wireA[0] - 0.1) * TMath::Sin(50.5 * kDegRad);
384 Double_t yIsol = sqrt((rin_wireA[0] - 0.1) * (rin_wireA[0] - 0.1) - xIsol * xIsol);
385 BarrelVolume->AddNode(BarrelWiresIsolA, 1, new TGeoTranslation(xIsol, -yIsol, 81.325));
386 BarrelVolume->AddNode(BarrelWiresIsolA, 1, new TGeoTranslation(-xIsol, -yIsol, 81.325));
387
388 // 4 layers of 16 WireB
389 for (Int_t l = 0; l < 4; l++) { // 4 layers
390 xPosIniB = rin_wireB[l] * TMath::Sin(49.2 * kDegRad);
391 for (Int_t k = 0; k < 4; k++) {
392 xPosIniB = xPosIniB - radiib;
393 Float_t yPosIniB = sqrt(rin_wireB[l] * rin_wireB[l] - xPosIniB * xPosIniB);
394 BarrelVolume->AddNode(BarrelWiresB, 1, new TGeoTranslation(xPosIniB, -yPosIniB, 81.325));
395 BarrelVolume->AddNode(BarrelWiresB, 1, new TGeoTranslation(-xPosIniB, -yPosIniB, 81.325));
396 xPosIniB = xPosIniB - 0.02;
397 }
398 }
399 xIsol = (rin_wireB[1] - 0.05) * TMath::Sin(49.0 * kDegRad);
400 yIsol = sqrt((rin_wireB[1] - 0.05) * (rin_wireB[1] - 0.05) - xIsol * xIsol);
401 BarrelVolume->AddNode(BarrelWiresIsolB, 1, new TGeoTranslation(xIsol, -yIsol, 81.325));
402 BarrelVolume->AddNode(BarrelWiresIsolB, 1, new TGeoTranslation(-xIsol, -yIsol, 81.325));
403
404 // fixation services
405 Float_t FSThickness = 0.4;
406 Float_t FSRad = 47.30;
407 TGeoVolume* FixService0 = gGeoManager->MakeTubs("FixService0", mPolypropylene, FSRad, FSRad + FSThickness, 2.00, 313, 331);
408 TGeoVolume* FixService1 = gGeoManager->MakeTubs("FixService1", mPolypropylene, FSRad, FSRad + FSThickness, 2.00, 209, 226.7);
409 // coloring
410 FixService0->SetLineColor(kWhite);
411 FixService1->SetLineColor(kWhite);
412 // adding nodes
413 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(0.00, 0.0, 21.2));
414 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 21.2));
415 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 32.7));
416 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 32.7));
417 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 44.2));
418 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 44.2));
419 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 52.325));
420 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 52.325));
421 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 76.325));
422 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 76.325));
423 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 100.325));
424 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 100.325));
425 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 124.325));
426 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 124.325));
427 BarrelVolume->AddNode(FixService0, 1, new TGeoTranslation(-0.00, 0.0, 148.325));
428 BarrelVolume->AddNode(FixService1, 1, new TGeoTranslation(0.00, 0.0, 148.325));
429
430 /*
431 //====================== Need to be rewrited!, fm july 2023 ================
432 //=========================== CONICAL PART, A side ==========================
433 //===========================================================================
434 // triangular section
435 TGeoXtru* trian = new TGeoXtru(2);
436 trian->SetName("Tri01");
437 Double_t x_tri[3] = {0.0, 164.5, 164.5}; // ini 164.5
438 Double_t y_tri[3] = {0.0, 0.0, -31.90}; // init -26.50
439 trian->DefinePolygon(3, x_tri, y_tri);
440 trian->DefineSection(0, -0.2, 0, 0, 1);
441 trian->DefineSection(1, 0.2, 0, 0, 1);
442 // creating the volume
443 TGeoVolume* comp2 = new TGeoVolume("tri", trian, kMeAl); // ????????????????????????
444 comp2->SetName("tri");
445 comp2->RegisterYourself();
446 comp2->SetLineColor(kRed);
447 comp2->SetLineWidth(2);
448 comp2->SetFillColor(4);
449
450 // defining pos
451 TGeoRotation rot_tri0;
452 rot_tri0.SetAngles(-90, 90, 90);
453 TGeoTranslation trans_tri0(46.6, -15.40, -82.25); // movi 16.40
454 TGeoTranslation trans_tri1(-46.6, -15.40, -82.25); // movi
455 TGeoCombiTrans combi_tri0(trans_tri0, rot_tri0);
456 TGeoCombiTrans combi_tri1(trans_tri1, rot_tri0);
457 TGeoHMatrix pos_tri0 = combi_tri0;
458 TGeoHMatrix pos_tri1 = combi_tri1;
459 TGeoHMatrix* pos_trif0 = new TGeoHMatrix(pos_tri0);
460 pos_trif0->SetName("pt0");
461 pos_trif0->RegisterYourself();
462 TGeoHMatrix* pos_trif1 = new TGeoHMatrix(pos_tri1);
463
464 pos_trif1->SetName("pt1");
465 pos_trif1->RegisterYourself();
466
467 TGeoVolume* main_vol2 = gGeoManager->MakeCons("cone", kMeAl, 82.25, 49.059, 49.069 + 0.500, 60.50, 60.51 + 0.500, 198.25, 341.74); // ????????????????????????
468 TGeoVolume* main_vol2_tt = gGeoManager->MakeCons("cone_tt", kMeAl, 82.35, 49.069, 49.069 + 0.50, 60.51, 70.51 + 0.50, 198.25, 341.74); // ????????????????????????
469
470 TGeoVolume* main_vol3 = gGeoManager->MakeBox("box", mAir, 46.6, 90.0, 82.25); // movi
471 TGeoBBox* main_box = (TGeoBBox*)(main_vol3->GetShape());
472 main_vol3->SetLineColor(kRed);
473 main_vol3->SetLineWidth(2);
474 main_vol3->SetFillColor(4);
475
476 TGeoCompositeShape* cs;
477 cs = new TGeoCompositeShape("CS", "(Tri01:pt0 + cone * box + Tri01:pt1) - cone_tt");
478 TGeoVolume* comp1 = new TGeoVolume("COMP", cs, kMeAl); // adding missing medium // ????????????????????????
479 // comp1->SetLineColor(kBlue);
480 // comp1->SetLineWidth(2);
481 // comp1->SetFillColor(4);
482
483 // defining pipes
484 TGeoVolume* BarrelPipes4mmC = gGeoManager->MakeTube("Barrel_PipesC", mPolyurethane, 0.4, 0.45, 83.0);
485 TGeoVolume* WPipes4mmC = gGeoManager->MakeTube("Barrel_PipesFill4mmC", mWater, 0.0, 0.4, 83.0);
486 TGeoVolume* BarrelPipes6mmC = gGeoManager->MakeTube("Barrel_PipesC", mPolyurethane, 0.6, 0.65, 83.0);
487 TGeoVolume* WPipes6mmC = gGeoManager->MakeTube("Barrel_PipesFill6mmC", mWater, 0.0, 0.6, 83.0);
488 TGeoVolume* ConePipesC = gGeoManager->MakeTube("Cone_PipesC", kMeAl, 0.3, 0.4, 82.25); // ????????????????????????
489 TGeoVolume* PipeBox0C = gGeoManager->MakeBox("PipeBoxOutC", mPolyurethane, 2.95, 0.45, 82.8);
490 TGeoVolume* PipeBox1C = gGeoManager->MakeBox("PipeBoxInnC", mPolyurethane, 2.85, 0.35, 82.8);
491 TGeoCompositeShape* ParallelPipeBoxC = new TGeoCompositeShape("ParallelPipeBoxC", "PipeBoxOutC - PipeBoxInnC");
492 TGeoVolume* PipeBoxC = new TGeoVolume("PipeBoxC", ParallelPipeBoxC, mPolyurethane);
493 BarrelPipes4mmC->SetLineColor(kRed);
494 BarrelPipes6mmC->SetLineColor(kRed);
495
496 Float_t y_translation = 2;
497 Float_t y_sup = 4;
498 Float_t z_translation = 247.2;
499
500 //=============================== Mes rotations ==============================
501 auto* rot_R5 = new TGeoRotation("rot_R5", 11.3, 8.4, 130);
502 auto* rot_R4 = new TGeoRotation("rot_R4", 12.3, 8.4, 130);
503 auto* rot_R3 = new TGeoRotation("rot_R3", 13.3, 8.4, 130);
504 auto* rot_R2 = new TGeoRotation("rot_R2", 14.3, 8.4, 130);
505 auto* rot_R1 = new TGeoRotation("rot_R1", 15.3, 8.4, 130);
506 auto* rot_R0 = new TGeoRotation("rot_R0", 16.3, 8.4, 130);
507
508 auto* rot_Q = new TGeoRotation("rot_Q", 16.3, 8.4, 130);
509
510 BarrelVolume->AddNode(BarrelPipes4mmC, 1, new TGeoCombiTrans(-41.25 + 0.9, -32.75 + y_translation - y_sup - 1.35, z_translation, rot_R5));
511 BarrelVolume->AddNode(BarrelPipes4mmC, 2, new TGeoCombiTrans(-40.55 + 1.0, -33.5 + y_translation - y_sup - 1.25, z_translation, rot_R4));
512 BarrelVolume->AddNode(BarrelPipes4mmC, 3, new TGeoCombiTrans(-39.95 + 1.1, -34.3 + y_translation - y_sup - 1.2, z_translation, rot_R3));
513 BarrelVolume->AddNode(BarrelPipes6mmC, 4, new TGeoCombiTrans(-39.05 + 1.0, -35.11 + y_translation - y_sup - 1.3, z_translation, rot_R2));
514 BarrelVolume->AddNode(BarrelPipes6mmC, 5, new TGeoCombiTrans(-37.84 + 0.8, -35.87 + y_translation - y_sup - 1.65, z_translation, rot_R1));
515 BarrelVolume->AddNode(BarrelPipes6mmC, 6, new TGeoCombiTrans(-36.79 + 0.9, -36.86 + y_translation - y_sup - 1.6, z_translation, rot_R0));
516
517 auto* rot_L5 = new TGeoRotation("rot_L5", -11.3, 8.4, 130);
518 auto* rot_L4 = new TGeoRotation("rot_L4", -12.3, 8.4, 130);
519 auto* rot_L3 = new TGeoRotation("rot_L3", -13.3, 8.4, 130);
520 auto* rot_L2 = new TGeoRotation("rot_L2", -14.3, 8.4, 130);
521 auto* rot_L1 = new TGeoRotation("rot_L1", -15.3, 8.4, 130);
522 auto* rot_L0 = new TGeoRotation("rot_L0", -16.3, 8.4, 130);
523 auto* rot_B = new TGeoRotation("rot_B", -16.3, 8.4, 130);
524
525 BarrelVolume->AddNode(BarrelPipes4mmC, 7, new TGeoCombiTrans(41.25 - 0.9, -32.75 + y_translation - y_sup - 1.35, z_translation, rot_L5));
526 BarrelVolume->AddNode(BarrelPipes4mmC, 8, new TGeoCombiTrans(40.55 - 1.0, -33.5 + y_translation - y_sup - 1.25, z_translation, rot_L4));
527 BarrelVolume->AddNode(BarrelPipes4mmC, 9, new TGeoCombiTrans(39.95 - 1.1, -34.3 + y_translation - y_sup - 1.2, z_translation, rot_L3));
528 BarrelVolume->AddNode(BarrelPipes6mmC, 10, new TGeoCombiTrans(39.05 - 1.0, -35.11 + y_translation - y_sup - 1.3, z_translation, rot_L2));
529 BarrelVolume->AddNode(BarrelPipes6mmC, 11, new TGeoCombiTrans(37.84 - 0.8, -35.87 + y_translation - y_sup - 1.65, z_translation, rot_L1));
530 BarrelVolume->AddNode(BarrelPipes6mmC, 12, new TGeoCombiTrans(36.79 - 0.9, -36.86 + y_translation - y_sup - 1.6, z_translation, rot_L0));
531
532 // PIPE rectangular
533 //==========================================================
534 auto* rot_P = new TGeoRotation("rot_P", 23.0, 8.4, 126); // 16 //box left
535 auto* comb_AC = new TGeoCombiTrans(-32.040 + 1.0, -40.275 + y_translation - y_sup - 1.7, z_translation, rot_P);
536 auto* rot_A = new TGeoRotation("rot_A", -23.0, 8.4, -126); // box right
537 auto* comb_BC = new TGeoCombiTrans(32.040 - 1.0, -40.275 + y_translation - y_sup - 1.7, z_translation, rot_A);
538 //==========================================================
539 PipeBoxC->SetLineColor(kRed);
540 BarrelVolume->AddNode(PipeBoxC, 1, comb_AC); //, pos_pipe0
541 BarrelVolume->AddNode(PipeBoxC, 2, comb_BC); //, pos_pipe2
542
543 auto* rotC = new TGeoRotation("rotC", 0.0, 0.0, 0.0);
544 auto* combiC = new TGeoCombiTrans(0.0, -y_translation, z_translation, rotC);
545 BarrelVolume->AddNode(comp1, 1, combiC);
546
547 //===================================================================
548 //========================== Low Voltage ============================
549 //===================================================================
550 // z_translation = 81.225 + z_translation;
551 // defining wires shapes
552 TGeoVolume* BarrelWiresAA = gGeoManager->MakeTube("Barrel_wiresaa", mCu, 0.0, radiia, 164.5 / 2);
553 TGeoVolume* BarrelWiresBA = gGeoManager->MakeTube("Barrel_wiresba", mCu, 0.0, radiib, 164.5 / 2);
554 TGeoVolume* BarrelWiresCA = gGeoManager->MakeTube("Barrel_wiresca", mCu, 0.0, radiic, 164.5 / 2);
555 // units cm
556
557 xPosIni = 40.35;
558 Float_t correction = 1.0;
559 Float_t coeff_inclinaison = 0.75;
560 Float_t decalage = -14.325;
561 Float_t hypo = 50.35;
562 auto* rot_L = new TGeoRotation("rot_R", 11.0, 8.0, 0.0);
563 auto* rot_R = new TGeoRotation("rot_L", -11.0, 8.0, 0.0);
564 // auto* rot_L = new TGeoRotation("rot_L", 11.3, 8.4, 130);
565 // auto* rot_R = new TGeoRotation("rot_L", -11.3, 8.4, 130);
566 for (Int_t k = 0; k < 26; k++) {
567 switch (wires_array_pos[k]) {
568
569 case 1: {
570 xPosIni = xPosIni - radiia;
571 Float_t yPosIni = correction * sqrt(hypo * hypo - xPosIni * xPosIni);
572 BarrelVolume->AddNode(BarrelWiresAA, 1, new TGeoCombiTrans(xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_L3));
573 // printf("X %f Y %f \n",xPosIni, -coeff_inclinaison * yPosIni + decalage);
574 BarrelVolume->AddNode(BarrelWiresAA, 1, new TGeoCombiTrans(-xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_R3));
575 xPosIni = xPosIni - 0.02;
576 break;
577 }
578
579 case 2: {
580 xPosIni = xPosIni - radiib - 0.005; // 0.005 to avoid overlap between wires!!!
581 Float_t yPosIni = correction * sqrt(hypo * hypo - xPosIni * xPosIni);
582 BarrelVolume->AddNode(BarrelWiresBA, 1, new TGeoCombiTrans(xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_L3));
583 BarrelVolume->AddNode(BarrelWiresBA, 1, new TGeoCombiTrans(-xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_R3));
584 xPosIni = xPosIni - 0.02;
585 break;
586 }
587
588 case 3: {
589 xPosIni = xPosIni - radiic;
590 Float_t yPosIni = correction * sqrt(hypo * hypo - xPosIni * xPosIni);
591 BarrelVolume->AddNode(BarrelWiresCA, 1, new TGeoCombiTrans(xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_L3));
592 BarrelVolume->AddNode(BarrelWiresCA, 1, new TGeoCombiTrans(-xPosIni, -coeff_inclinaison * yPosIni + decalage, z_translation, rot_R3));
593 xPosIni = xPosIni - 0.02;
594 break;
595 }
596 }
597 }
598 //===================================================================
599 //===================================================================
600 //===================================================================
601 */
602
603 return BarrelVolume;
604}
TGeoVolumeAssembly * createBarrel()
Definition Barrel.cxx:34