SND@LHC Software
Loading...
Searching...
No Matches
ShipGoliath.cxx
Go to the documentation of this file.
1#include "ShipGoliath.h"
2
3#include "TGeoManager.h"
4#include "FairRun.h" // for FairRun
5#include "FairRuntimeDb.h" // for FairRuntimeDb
6//#include "FairGeoMedia.h"
7//#include "FairGeoBuilder.h"
8
9#include <iosfwd> // for ostream
10#include "TList.h" // for TListIter, TList (ptr only)
11#include "TObjArray.h" // for TObjArray
12#include "TString.h" // for TString
13#include "TGeoBBox.h"
14#include "TGeoTrd1.h"
15#include "TGeoArb8.h"
16#include "TGeoCompositeShape.h"
17#include "TGeoTube.h"
18#include "TGeoMaterial.h"
19#include "TGeoElement.h"
20#include "TGeoMedium.h"
21#include <stddef.h> // for NULL
22#include <iostream> // for operator<<, basic_ostream, etc
23
24using namespace std;
25
29
31 : FairModule("ShipGoliath", "")
32{
33}
34
35ShipGoliath::ShipGoliath(const char* name, const Double_t zC, const Double_t LS, const Double_t TS, const Double_t GapTS, const char* Title)
36 : FairModule(name ,Title)
37{
38 zCenter = zC;
40 TransversalSize = TS;
41 GapFromTSpectro = GapTS;
42}
43
45{
46 Double_t side1 = TransversalSize, side2 = LongitudinalSize; //side1 = short side, side2 = long side of the top part
47 Double_t base1 = 135, base2 = 78; //basis of the trapezoid
48 Double_t side3 = 33, side4 = 90, side5 = 125; //Sides of the columns
49 Double_t height = 180; //Distane between the lower and upper surface
50
51 cout << zCenter << endl;
52
53 TGeoVolume *top=gGeoManager->GetTopVolume();
54 TGeoMedium *Fe = gGeoManager->GetMedium("iron");
55
56 //
57 //******* UPPER AND LOWER BASE *******
58 //
59
60 TGeoBBox *TopS = new TGeoBBox(180,57/2,225);
61 TGeoVolume *volTopS = new TGeoVolume("volTopS",TopS,Fe);
62 volTopS->SetLineColor(kRed);
63 //volTopS->SetTransparency(7);
64
65 top->AddNode(volTopS,1,new TGeoTranslation(0, 126, zCenter)); //upper part
66 top->AddNode(volTopS,2,new TGeoTranslation(0, -111, zCenter)); //lower part
67
68
69 //*******************************************************************
70 //**************************** MAGNETS ******************************
71 //*******************************************************************
72
73
74
75 TGeoRotation *r1 = new TGeoRotation();
76 r1->SetAngles(0,90,0);
77 TGeoCombiTrans t(0, 75, zCenter,r1);
78 t.Print();
79 TGeoHMatrix *m = new TGeoHMatrix(t);
80
81
82
83 TGeoTube *magnetUp = new TGeoTube(side4,160,22.5);
84 TGeoVolume *volmagnetUp = new TGeoVolume("volmagnetUp",magnetUp,Fe);
85 volmagnetUp->SetLineColor(kGreen);
86 top->AddNode(volmagnetUp,1,m); //upper part
87
88
89 TGeoCombiTrans t1(0, -67.5, zCenter,r1);
90 TGeoHMatrix *m1 = new TGeoHMatrix(t1);
91
92
93 TGeoTube *magnetDown = new TGeoTube(side4,160,15);
94 TGeoVolume *volmagnetDown = new TGeoVolume("volmagnetDown",magnetDown,Fe);
95 volmagnetDown->SetLineColor(kGreen);
96 top->AddNode(volmagnetDown,1,m1); //lower part
97
98
99 //*******************************************************************
100 //********************* LATERAL SURFACES ****************************
101 //*******************************************************************
102
103
104 //***** SIDE Left Front ****
105
106 //LONGER RECTANGLE
107 TGeoBBox *LateralS1 = new TGeoBBox("LateralS1",16.5,45/2,67.5);
108 TGeoTranslation *tr1 = new TGeoTranslation(-side1/2 +side3/2, 75, zCenter- side2/2 +base1/2);
109 TGeoVolume *volLateralS1 = new TGeoVolume("volLateralS1",LateralS1,Fe);
110 volLateralS1->SetLineColor(kRed);
111 top->AddNode(volLateralS1, 1, tr1);
112
113 //TRAPEZOID
114
115 TGeoArb8 *LateralS2 = new TGeoArb8("LateralS2",45/2);
116 LateralS2->SetVertex(0, side4, 0);
117 LateralS2->SetVertex(1, side3, 0);
118 LateralS2->SetVertex(2, side3, base1);
119 LateralS2->SetVertex(3, side4, base2);
120 LateralS2->SetVertex(4, side4, 0);
121 LateralS2->SetVertex(5, side3, 0);
122 LateralS2->SetVertex(6, side3, base1);
123 LateralS2->SetVertex(7, side4, base2);
124
125 TGeoVolume *volLateralS2 = new TGeoVolume("volLateralS2",LateralS2,Fe);
126 volLateralS2->SetLineColor(kRed);
127
128 TGeoRotation *r2 = new TGeoRotation();
129 r2->SetAngles(0,90,0);
130 TGeoCombiTrans tr2(-side1/2, 75, zCenter-side2/2,r2);
131 TGeoHMatrix *m2 = new TGeoHMatrix(tr2);
132 top->AddNode(volLateralS2, 1, m2);
133
134 //LOWER LATERAL SURFACE
135
136 //LONGER RECTANGLE
137 TGeoBBox *LateralSurface1low = new TGeoBBox("LateralSurface1low",side3/2,135/2,side5/2);
138 TGeoTranslation *tr1low = new TGeoTranslation(-side1/2 +side3/2, -15, zCenter- side2/2 +side5/2);
139 tr1low->SetName("tr1low");
140 tr1low->RegisterYourself();
141
142 //SHORTER RECTANGLE
143 TGeoBBox *LateralSurface2low = new TGeoBBox("LateralSurface2low",28.5,135/2,base2/2);
144 TGeoTranslation *tr2low = new TGeoTranslation(-side1/2 + (side4-side3)/2 + side3, -15, zCenter-side2/2 +base2/2);
145 tr2low->SetName("tr2low");
146 tr2low->RegisterYourself();
147
148 TGeoCompositeShape *LateralSurfacelow = new TGeoCompositeShape("LateralSurfacelow", "LateralSurface1low:tr1low+LateralSurface2low:tr2low");
149 TGeoVolume *volLateralSurfacelow = new TGeoVolume("volLateralSurfacelow",LateralSurfacelow,Fe);
150
151 volLateralSurfacelow->SetLineColor(kRed);
152 top->AddNode(volLateralSurfacelow, 1, new TGeoTranslation(0,0,0));
153
154
155
156 //***** SIDE Right Front ****
157
158 //LONGER RECTANGLE
159 TGeoBBox *LateralS1_b = new TGeoBBox("LateralS1_b",16.5,45/2,67.5);
160 TGeoTranslation *tr1_b = new TGeoTranslation(-side1/2 +side3/2, 75, zCenter+ side2/2 - base1/2);
161 TGeoVolume *volLateralS1_b = new TGeoVolume("volLateralS1_b",LateralS1_b,Fe);
162 volLateralS1_b->SetLineColor(kRed);
163 top->AddNode(volLateralS1_b, 1, tr1_b);
164
165 //TRAPEZOID
166 TGeoArb8 *LateralS2_b = new TGeoArb8("LateralS2_b",45/2);
167 LateralS2_b ->SetVertex(0, side4, 0);
168 LateralS2_b ->SetVertex(1, side3, 0);
169 LateralS2_b ->SetVertex(2, side3, base1);
170 LateralS2_b ->SetVertex(3, side4, base2);
171 LateralS2_b ->SetVertex(4, side4, 0);
172 LateralS2_b ->SetVertex(5, side3, 0);
173 LateralS2_b ->SetVertex(6, side3, base1);
174 LateralS2_b ->SetVertex(7, side4, base2);
175
176 TGeoVolume *volLateralS2_b = new TGeoVolume("volLateralS2_b",LateralS2_b,Fe);
177 volLateralS2_b->SetLineColor(kRed);
178
179 TGeoRotation *r2_b = new TGeoRotation();
180 r2_b->SetAngles(0,270,0);
181 TGeoCombiTrans tr2_b(-side1/2, 75, zCenter + side2/2,r2_b);
182 TGeoHMatrix *m2_b = new TGeoHMatrix(tr2_b);
183 top->AddNode(volLateralS2_b, 1, m2_b);
184
185 //LOWER LATERAL SURFACE
186
187 //LONGER RECTANGLE
188 TGeoBBox *LateralSurface1dlow = new TGeoBBox("LateralSurface1dlow",side3/2,135/2,side5/2);
189 TGeoTranslation *tr1dlow = new TGeoTranslation(-side1/2 +side3/2, -15, zCenter+ side2/2 -side5/2);
190 tr1dlow->SetName("tr1dlow");
191 tr1dlow->RegisterYourself();
192
193 //SHORTER RECTANGLE
194 TGeoBBox *LateralSurface2dlow = new TGeoBBox("LateralSurface2dlow",28.5,135/2,base2/2);
195 TGeoTranslation *tr2dlow = new TGeoTranslation(-side1/2 + (side4-side3)/2 + side3, -15, zCenter+side2/2 -base2/2);
196 tr2dlow->SetName("tr2dlow");
197 tr2dlow->RegisterYourself();
198
199 TGeoCompositeShape *LateralSurfacedlow = new TGeoCompositeShape("LateralSurfacedlow", "LateralSurface1dlow:tr1dlow+LateralSurface2dlow:tr2dlow");
200 TGeoVolume *volLateralSurfacedlow = new TGeoVolume("volLateralSurfacedlow",LateralSurfacedlow,Fe);
201
202 volLateralSurfacedlow->SetLineColor(kRed);
203 top->AddNode(volLateralSurfacedlow, 1, new TGeoTranslation(0,0,0));
204
205
206 //***** SIDE left Back ****
207
208 //UPPER LATERAL SURFACE = LOWER ONE
209
210 //LONGER RECTANGLE
211
212 TGeoBBox *LateralS1_d = new TGeoBBox("LateralS1_d",16.5,height/2,67.5);
213 TGeoTranslation *tr1_d = new TGeoTranslation(side1/2 - side3/2, 7.5, zCenter- side2/2 +base1/2);
214 TGeoVolume *volLateralS1_d = new TGeoVolume("volLateralS1_d",LateralS1_d,Fe);
215 volLateralS1_d->SetLineColor(kRed);
216 top->AddNode(volLateralS1_d, 1, tr1_d);
217
218 //TRAPEZOID
219
220 TGeoArb8 *LateralS2_d = new TGeoArb8("LateralS2_d",height/2);
221 LateralS2_d->SetVertex(0, side4, 0);
222 LateralS2_d->SetVertex(1, side3, 0);
223 LateralS2_d->SetVertex(2, side3, base1);
224 LateralS2_d->SetVertex(3, side4, base2);
225 LateralS2_d->SetVertex(4, side4, 0);
226 LateralS2_d->SetVertex(5, side3, 0);
227 LateralS2_d->SetVertex(6, side3, base1);
228 LateralS2_d->SetVertex(7, side4, base2);
229
230
231 TGeoVolume *volLateralS2_d = new TGeoVolume("volLateralS2_d",LateralS2_d,Fe);
232 volLateralS2_d->SetLineColor(kRed);
233
234 TGeoRotation *r2_d = new TGeoRotation();
235 r2_d->SetAngles(0,270,180);
236 TGeoCombiTrans tr2_d(side1/2, 7.5, zCenter -side2/2,r2_d);
237 TGeoHMatrix *m2_d = new TGeoHMatrix(tr2_d);
238 top->AddNode(volLateralS2_d, 1, m2_d);
239
240
241
242 //***** SIDE right Back ****
243
244
245 //UPPER LATERAL SURFACE = LOWER ONE
246
247 //LONGER RECTANGLE
248
249 TGeoBBox *LateralS1_c = new TGeoBBox("LateralS1_c",16.5,height/2,67.5);
250 TGeoTranslation *tr1_c = new TGeoTranslation(side1/2 - side3/2, 7.5, zCenter+ side2/2 -base1/2);
251 TGeoVolume *volLateralS1_c = new TGeoVolume("volLateralS1_c",LateralS1_c,Fe);
252 volLateralS1_c->SetLineColor(kRed);
253 top->AddNode(volLateralS1_c, 1, tr1_c);
254
255
256 //TRAPEZOID
257
258 TGeoArb8 *LateralS2_c = new TGeoArb8("LateralS2_c",height/2);
259 LateralS2_c ->SetVertex(0, side4, 0);
260 LateralS2_c ->SetVertex(1, side3, 0);
261 LateralS2_c ->SetVertex(2, side3, base1);
262 LateralS2_c ->SetVertex(3, side4, base2);
263 LateralS2_c ->SetVertex(4, side4, 0);
264 LateralS2_c ->SetVertex(5, side3, 0);
265 LateralS2_c ->SetVertex(6, side3, base1);
266 LateralS2_c ->SetVertex(7, side4, base2);
267
268 TGeoVolume *volLateralS2_c = new TGeoVolume("volLateralS2_c",LateralS2_c,Fe);
269 volLateralS2_c->SetLineColor(kRed);
270
271 TGeoRotation *r2_c = new TGeoRotation();
272 r2_c->SetAngles(0,90,180);
273 TGeoCombiTrans tr2_c(side1/2, 7.5, zCenter + side2/2,r2_c);
274 TGeoHMatrix *m2_c = new TGeoHMatrix(tr2_c);
275 top->AddNode(volLateralS2_c, 1, m2_c);
276}
277
279
280
281
282
283
284
285
286
287
288
289
290
291
292
Double_t m
virtual ~ShipGoliath()
void ConstructGeometry()
ClassDef(ShipGoliath, 1) protected Double_t LongitudinalSize
Definition ShipGoliath.h:17
Double_t GapFromTSpectro
Definition ShipGoliath.h:23
Double_t TransversalSize
Definition ShipGoliath.h:22
ClassImp(ecalContFact) ecalContFact