159{
160 TGeoVolume *
top=gGeoManager->GetTopVolume();
161
163 TGeoMedium *air =gGeoManager->GetMedium("air");
164
166 TGeoMedium *Fe =gGeoManager->GetMedium("iron");
167
169 TGeoMedium *Al = gGeoManager->GetMedium("CoilAluminium");
170
172 TGeoMedium *Cu = gGeoManager->GetMedium("CoilCopper");
173
175 TGeoMedium *Steel = gGeoManager->GetMedium("steel");
176
177 gGeoManager->SetVisLevel(10);
178
179 TGeoVolume *tTauNuDet = gGeoManager->GetVolume("tTauNuDet");
180 cout<<
"Tau Nu Detector fDesign: "<<
fDesign<<endl;
181
183 {
184 TGeoUniformMagField *magField1 =
new TGeoUniformMagField(0.,-
fField,0.);
185 TGeoUniformMagField *magField2 =
new TGeoUniformMagField(0.,
fField,0.);
186
187 TGeoVolumeAssembly *MagnetVol = new TGeoVolumeAssembly("Goliath");
188 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
189
190
192 TGeoVolume *volBase = new TGeoVolume("volBase",Base,Fe);
193 volBase->SetLineColor(kRed);
194 MagnetVol->AddNode(volBase,1,
new TGeoTranslation(0,
fMagnetY/2 -
fBaseY/2, 0));
195 MagnetVol->AddNode(volBase,2,
new TGeoTranslation(0, -
fMagnetY/2 +
fBaseY/2, 0));
196
197
199 TGeoVolume *CoilVolUp = new TGeoVolume("CoilVolUp",CoilBoxU, Cu);
200 CoilVolUp->SetLineColor(kGreen);
202 TGeoVolume *CoilVolDown = new TGeoVolume("CoilVolDown",CoilBoxD, Al);
203 CoilVolDown->SetLineColor(kGreen);
204
205 TGeoRotation *
r1 =
new TGeoRotation();
206 r1->SetAngles(0,90,0);
208 TGeoHMatrix *mUp = new TGeoHMatrix(tUp);
210 TGeoHMatrix *mDown = new TGeoHMatrix(tDown);
211
212 MagnetVol->AddNode(CoilVolUp,1,mUp);
213 MagnetVol->AddNode(CoilVolDown,1,mDown);
214
215
216
217
218
219 Double_t base1 = 135, base2 = 78;
220 Double_t side1 = 33, side2 = 125, side3 = 57, side4 = 90;
221
222
223
224
225 TGeoBBox *LateralS1 =
new TGeoBBox(
"LateralS1",side1/2,
fCoilH1/2,base1/2);
227 TGeoVolume *volLateralS1 = new TGeoVolume("volLateralS1",LateralS1,Fe);
228 volLateralS1->SetLineColor(kRed);
229 volLateralS1->SetField(magField1);
230 MagnetVol->AddNode(volLateralS1, 1, tr1);
231
232
233
234 TGeoArb8 *LateralS2 =
new TGeoArb8(
"LateralS2",
fCoilH1/2);
235 LateralS2->SetVertex(0, side4, 0);
236 LateralS2->SetVertex(1, side1, 0);
237 LateralS2->SetVertex(2, side1, base1);
238 LateralS2->SetVertex(3, side4, base2);
239 LateralS2->SetVertex(4, side4, 0);
240 LateralS2->SetVertex(5, side1, 0);
241 LateralS2->SetVertex(6, side1, base1);
242 LateralS2->SetVertex(7, side4, base2);
243
244 TGeoVolume *volLateralS2 = new TGeoVolume("volLateralS2",LateralS2,Fe);
245 volLateralS2->SetLineColor(kRed);
246 volLateralS2->SetField(magField1);
247
248 TGeoRotation *
r2 =
new TGeoRotation();
249 r2->SetAngles(0,90,0);
251 TGeoHMatrix *m3_a = new TGeoHMatrix(tr3);
252 MagnetVol->AddNode(volLateralS2, 1, m3_a);
253
254
255
256
257 TGeoBBox *LateralSurface1low =
new TGeoBBox(
"LateralSurface1low",side1/2,(
fCoilDist +
fCoilH2)/2,side2/2);
258 TGeoVolume *volLateralSurface1low = new TGeoVolume("volLateralSurface1low",LateralSurface1low,Fe);
259 volLateralSurface1low->SetLineColor(kRed);
260 volLateralSurface1low->SetField(magField1);
262 MagnetVol->AddNode(volLateralSurface1low, 1, tr1low);;
263
264
265
266 TGeoBBox *LateralSurface2low =
new TGeoBBox(
"LateralSurface2low",side3/2,(
fCoilDist +
fCoilH2)/2,base2/2);
267 TGeoVolume *volLateralSurface2low = new TGeoVolume("volLateralSurface2low",LateralSurface2low,Fe);
268 volLateralSurface2low->SetLineColor(kRed);
270 MagnetVol->AddNode(volLateralSurface2low, 1, tr2low);
271 volLateralSurface2low->SetField(magField1);
272
273
274
275
277 TGeoVolume *volLateralS1_b = new TGeoVolume("volLateralS1_b",LateralS1,Fe);
278 volLateralS1_b->SetLineColor(kRed);
279 volLateralS1_b->SetField(magField1);
280 MagnetVol->AddNode(volLateralS1_b, 1, tr1_b);
281
282
283 TGeoArb8 *LateralS2_b =
new TGeoArb8(
"LateralS2_b",
fCoilH1/2);
284 LateralS2_b ->SetVertex(0, side4, 0);
285 LateralS2_b ->SetVertex(1, side1, 0);
286 LateralS2_b ->SetVertex(2, side1, base1);
287 LateralS2_b ->SetVertex(3, side4, base2);
288 LateralS2_b ->SetVertex(4, side4, 0);
289 LateralS2_b ->SetVertex(5, side1, 0);
290 LateralS2_b ->SetVertex(6, side1, base1);
291 LateralS2_b ->SetVertex(7, side4, base2);
292
293 TGeoVolume *volLateralS2_b = new TGeoVolume("volLateralS2_b",LateralS2_b,Fe);
294 volLateralS2_b->SetLineColor(kRed);
295 volLateralS2_b->SetField(magField1);
296
297 TGeoRotation *r2_b = new TGeoRotation();
298 r2_b->SetAngles(0,270,0);
300 TGeoHMatrix *m3_b = new TGeoHMatrix(tr2_b);
301 MagnetVol->AddNode(volLateralS2_b, 1, m3_b);
302
303
304
305
306
307 TGeoVolume *volLateralSurface1blow = new TGeoVolume("volLateralSurface1blow",LateralSurface1low,Fe);
308 volLateralSurface1blow->SetLineColor(kRed);
309 volLateralSurface1blow->SetField(magField1);
311 MagnetVol->AddNode(volLateralSurface1blow, 1, tr1blow);;
312
313
314
315 TGeoVolume *volLateralSurface2blow = new TGeoVolume("volLateralSurface2blow",LateralSurface2low,Fe);
316 volLateralSurface2blow->SetLineColor(kRed);
317 volLateralSurface2blow->SetField(magField1);
319 MagnetVol->AddNode(volLateralSurface2blow, 1, tr2blow);
320
321
322
323
324
325
328 TGeoVolume *volLateralS1_d = new TGeoVolume("volLateralS1_d",LateralS1_d,Fe);
329 volLateralS1_d->SetLineColor(kRed);
330 volLateralS1_d->SetField(magField1);
331 MagnetVol->AddNode(volLateralS1_d, 1, tr1_d);
332
333
334
336 LateralS2_d->SetVertex(0, side4, 0);
337 LateralS2_d->SetVertex(1, side1, 0);
338 LateralS2_d->SetVertex(2, side1, base1);
339 LateralS2_d->SetVertex(3, side4, base2);
340 LateralS2_d->SetVertex(4, side4, 0);
341 LateralS2_d->SetVertex(5, side1, 0);
342 LateralS2_d->SetVertex(6, side1, base1);
343 LateralS2_d->SetVertex(7, side4, base2);
344
345
346 TGeoVolume *volLateralS2_d = new TGeoVolume("volLateralS2_d",LateralS2_d,Fe);
347 volLateralS2_d->SetLineColor(kRed);
348 volLateralS2_d->SetField(magField1);
349
350 TGeoRotation *r2_d = new TGeoRotation();
351 r2_d->SetAngles(0,270,180);
353 TGeoHMatrix *m3_d = new TGeoHMatrix(tr2_d);
354 MagnetVol->AddNode(volLateralS2_d, 1, m3_d);
355
356
357
358
359
362 TGeoVolume *volLateralS1_c = new TGeoVolume("volLateralS1_c",LateralS1_c,Fe);
363 volLateralS1_c->SetLineColor(kRed);
364 volLateralS1_c->SetField(magField1);
365 MagnetVol->AddNode(volLateralS1_c, 1, tr1_c);
366
367
368
370 LateralS2_c ->SetVertex(0, side4, 0);
371 LateralS2_c ->SetVertex(1, side1, 0);
372 LateralS2_c ->SetVertex(2, side1, base1);
373 LateralS2_c ->SetVertex(3, side4, base2);
374 LateralS2_c ->SetVertex(4, side4, 0);
375 LateralS2_c ->SetVertex(5, side1, 0);
376 LateralS2_c ->SetVertex(6, side1, base1);
377 LateralS2_c ->SetVertex(7, side4, base2);
378
379 TGeoVolume *volLateralS2_c = new TGeoVolume("volLateralS2_c",LateralS2_c,Fe);
380 volLateralS2_c->SetLineColor(kRed);
381 volLateralS2_c->SetField(magField1);
382
383 TGeoRotation *r2_c = new TGeoRotation();
384 r2_c->SetAngles(0,90,180);
386 TGeoHMatrix *m3_c = new TGeoHMatrix(tr2_c);
387 MagnetVol->AddNode(volLateralS2_c, 1, m3_c);
388
389
390 }
391
393 {
394 TGeoUniformMagField *magField1 =
new TGeoUniformMagField(-
fField,0.,0.);
395 TGeoUniformMagField *magField2 =
new TGeoUniformMagField(
fField,0.,0.);
396
397 TGeoVolumeAssembly *MagnetVol = new TGeoVolumeAssembly("Davide");
398 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
399
400
403
404 TGeoCompositeShape *LateralSurf = new TGeoCompositeShape("LS","LB-C");
405
406 TGeoVolume *CoilVol = new TGeoVolume("CoilVol",CoilBox, Cu);
407 CoilVol->SetLineColor(kGreen);
408 TGeoVolume *LateralSurfVol = new TGeoVolume("LateralSurfVol",LateralSurf, Fe);
409 LateralSurfVol->SetLineColor(kRed);
410
411 TGeoRotation *
r1 =
new TGeoRotation();
413
414
415 r1->RegisterYourself();
416 TGeoTranslation *t1r =
new TGeoTranslation(-
fMagnetX/2+
fBaseX/2,0,0);
417 TGeoTranslation *t1l =
new TGeoTranslation(
fMagnetX/2-
fBaseX/2,0,0);
418
419 TGeoCombiTrans *trans1r =
new TGeoCombiTrans(-
fMagnetX/2+
fBaseX/2,0,0,r1);
420 TGeoCombiTrans *trans1l =
new TGeoCombiTrans(
fMagnetX/2-
fBaseX/2,0,0,r1);
421 TGeoHMatrix *m1_r = new TGeoHMatrix("m1_r");
422 *m1_r = trans1r;
423 TGeoHMatrix *m1_l = new TGeoHMatrix("m1_l");
424 *m1_l = trans1l;
425
426 MagnetVol->AddNode(CoilVol,1, m1_r);
427 MagnetVol->AddNode(LateralSurfVol,1,m1_r);
428 MagnetVol->AddNode(CoilVol,2, m1_l);
429 MagnetVol->AddNode(LateralSurfVol,2,m1_l);
430
432 TGeoVolume *ColumnVol = new TGeoVolume("ColumnVol",ColumnBox,Fe);
433 ColumnVol->SetField(magField1);
434 ColumnVol->SetLineColor(kRed);
439
441 TGeoVolume *BaseVol = new TGeoVolume("BaseVol",BaseBox,Fe);
442 BaseVol->SetLineColor(kRed);
443 MagnetVol->AddNode(BaseVol,1,
new TGeoTranslation(0,-
fMagnetY/2+
fColumnY/2,0));
444
446 TGeoVolume *PillarVol = new TGeoVolume("PillarVol",PillarBox,Steel);
447 PillarVol->SetLineColor(kGreen+3);
452 }
453
455 {
456
457 TGeoVolumeAssembly *MagnetVol = new TGeoVolumeAssembly("NudetMagnet");
458 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
459
461 TGeoVolume *BaseVol = new TGeoVolume("BaseVol",BaseBox,Fe);
462 BaseVol->SetLineColor(kRed);
464
465
466 LateralBox->SetName("L");
467 Double_t
delta = 0.1;
469 Model->SetName("T");
470
472
473
474 TGeoBBox *SemiLateralBox =
new TGeoBBox(
"SemiLateralBox",(
fColumnX)/2, SemiLateralBoxHeight /2,
fColumnZ/2);
475 TGeoVolume *volUpLateral = new TGeoVolume("volUpLateral",SemiLateralBox,Fe);
476
477 TGeoVolume *volDownLateral = new TGeoVolume("volDownLateral",SemiLateralBox,Fe);
478 SemiLateralBox->SetName("S");
479 volUpLateral->SetLineColor(kRed);
480 volDownLateral->SetLineColor(kRed);
481
483
484 TGeoBBox *MidLateralBox =
new TGeoBBox(
"MidLateralBox",
fColumnX/2, MidBoxHeight/2,
fColumnZ/2);
485 MidLateralBox->SetName("M");
486
487
488
489 TGeoRotation rot("rot",90,90,0);
490 TGeoRotation rot1("rot1",-90,90,0);
492 TGeoCombiTrans* comb = new TGeoCombiTrans(trans,rot);
493 comb->SetName("comb");
494 comb->RegisterYourself();
495 TGeoCompositeShape *cut = new TGeoCompositeShape("CUT", "L-T:comb");
496
497
498 TGeoTranslation* transcuttop =
new TGeoTranslation(
"transcuttop",0,
fCutHeight/2 + SemiLateralBoxHeight/2 ,0);
499 TGeoTranslation* transcuttop1 = new TGeoTranslation("transcuttop1",0, MidBoxHeight/2 ,0);
500 TGeoTranslation* transcutbottom =
new TGeoTranslation(
"transcutbottom",0, -
fCutHeight/2 - SemiLateralBoxHeight/2 ,0);
501 TGeoTranslation* transcutbottom1 = new TGeoTranslation("transcutbottom1",0, -MidBoxHeight/2 ,0);
502
503 transcuttop->RegisterYourself();
504 transcuttop1->RegisterYourself();
505 transcutbottom->RegisterYourself();
506 transcutbottom1->RegisterYourself();
507
508 TGeoCompositeShape *cuttop = new TGeoCompositeShape("CUTTOP", "CUT - (S:transcuttop) - (S:transcutbottom)");
509 TGeoVolume *volcuttop = new TGeoVolume("volcuttop", cuttop, Fe);
510 volcuttop->SetLineColor(kRed);
511
513 TGeoCombiTrans* combleft = new TGeoCombiTrans(transleft,rot1);
514 combleft->SetName("combleft");
515 combleft->RegisterYourself();
516 TGeoCompositeShape *cutleft;
517 cutleft = new TGeoCompositeShape("CUTLEFT", "L-T:combleft");
518 TGeoCompositeShape *cuttopleft = new TGeoCompositeShape("CUTTOPLEFT", "CUTLEFT - (S:transcuttop) - (S:transcutbottom)");
519 TGeoVolume *volcuttopleft = new TGeoVolume("volcuttopleft", cuttopleft, Fe);
520 volcuttopleft->SetLineColor(kRed);
521
522
525
526
528
529 TGeoTubeSeg *Coillateraltuberightdown =
new TGeoTubeSeg(
"Coillateraltuberightdown",
fCoilThickness,OuterRadius,
fCoilX/2,90,180);
530 TGeoTubeSeg *Coillateraltuberighttup =
new TGeoTubeSeg(
"Coillateraltuberightup",
fCoilThickness,OuterRadius,
fCoilX/2,0,90);
531 TGeoTubeSeg *Coillateraltubeleftup =
new TGeoTubeSeg(
"Coillateraltubeleftup",
fCoilThickness,OuterRadius,
fCoilX/2,270,360);
532 TGeoTubeSeg *Coillateraltubeleftdown =
new TGeoTubeSeg(
"Coillateraltubeleftdown",
fCoilThickness,OuterRadius,
fCoilX/2,180,270);
533
535
536 TGeoRotation rottube("rottube",90,90,0);
537
542 TGeoCombiTrans* combination = new TGeoCombiTrans(transtube,rottube);
543 TGeoCombiTrans* combination1 = new TGeoCombiTrans(transtube1,rottube);
544 TGeoCombiTrans* combination2 = new TGeoCombiTrans(transtube2,rottube);
545 TGeoCombiTrans* combination3 = new TGeoCombiTrans(transtube3,rottube);
546
547 combination->SetName("combination");
548 combination->RegisterYourself();
549 combination1->SetName("combination1");
550 combination1->RegisterYourself();
551 combination2->SetName("combination2");
552 combination2->RegisterYourself();
553 combination3->SetName("combination3");
554 combination3->RegisterYourself();
555
556 TGeoCompositeShape * CoilRight = new TGeoCompositeShape("CoilRight","Coillateraltuberightdown:combination+Coillateraltuberightup:combination1+Coillateralcenter");
557 TGeoVolume *CoilVolright = new TGeoVolume("CoilVolright",CoilRight,Cu);
558
559 TGeoCompositeShape * CoilLeft = new TGeoCompositeShape("CoilLeft","Coillateraltubeleftdown:combination2+Coillateraltubeleftup:combination3+Coillateralcenter");
560 TGeoVolume *CoilVolleft = new TGeoVolume("CoilVolleft",CoilLeft,Cu);
561
562
563
565 TGeoVolume *CoilVol = new TGeoVolume("CoilVol",Coil, Cu);
566
567
568
569 MagnetVol->AddNode(BaseVol,1,
new TGeoTranslation(0,-
fMagnetY/2+
fBaseY/2,0));
570 MagnetVol->AddNode(BaseVol,2,
new TGeoTranslation(0,
fMagnetY/2-
fBaseY/2,0));
571
574 MagnetVol->AddNode(volcuttop, 1,
new TGeoTranslation(-
fMagnetX/2+
fColumnX/2, 0, 0));
575
578 MagnetVol->AddNode(volcuttopleft,2,
new TGeoTranslation(
fMagnetX/2-
fColumnX/2,0,0));
579
580 CoilVolleft->SetLineColor(kGreen);
581 MagnetVol->AddNode(CoilVolleft,1,
new TGeoTranslation(0,0,-
fMagnetZ/2.+
fCoilY/2.));
582 CoilVolright->SetLineColor(kGreen);
583 MagnetVol->AddNode(CoilVolright,1,
new TGeoTranslation(0,0,+
fMagnetZ/2.-
fCoilY/2.));
584 CoilVol->SetLineColor(kGreen);
585 MagnetVol->AddNode(CoilVol,1,
new TGeoTranslation(0,(
fCoilH1+
fCoilH2)/4,0));
586 MagnetVol->AddNode(CoilVol,2,
new TGeoTranslation(0,-(
fCoilH1+
fCoilH2)/4,0));
587
588
589
590 TGeoVolume *volMagRegion = new TGeoVolume("volMagRegion",IncoilBox, air);
591 MagnetVol->AddNode(volMagRegion, 1, new TGeoTranslation(0,0,0));
592
593
595 TGeoVolume *PillarVol = new TGeoVolume("PillarVol",PillarBox,Steel);
596 PillarVol->SetLineColor(kGreen+3);
601
602
604 TGeoUniformMagField *magField1 =
new TGeoUniformMagField(-
fField,0.,0.);
605 TGeoUniformMagField *magField2 =
new TGeoUniformMagField(
fField,0.,0.);
606 TGeoUniformMagField *magField1y =
new TGeoUniformMagField(0.,-
fField,0.);
607 TGeoUniformMagField *magField2y =
new TGeoUniformMagField(0.,
fField,0.);
608
609 BaseVol->SetField(magField1);
610 volUpLateral->SetField(magField2y);
611 volDownLateral->SetField(magField1y);
612 volMagRegion->SetField(magField2);
613 }
614 }
615}
Int_t InitMedium(const char *name)