160 TGeoVolume *top=gGeoManager->GetTopVolume();
163 TGeoMedium *air =gGeoManager->GetMedium(
"air");
166 TGeoMedium *Fe =gGeoManager->GetMedium(
"iron");
169 TGeoMedium *Al = gGeoManager->GetMedium(
"CoilAluminium");
172 TGeoMedium *Cu = gGeoManager->GetMedium(
"CoilCopper");
175 TGeoMedium *Steel = gGeoManager->GetMedium(
"steel");
177 gGeoManager->SetVisLevel(10);
179 TGeoVolume *tTauNuDet = gGeoManager->GetVolume(
"tTauNuDet");
180 cout<<
"Tau Nu Detector fDesign: "<<
fDesign<<endl;
184 TGeoUniformMagField *magField1 =
new TGeoUniformMagField(0.,-
fField,0.);
185 TGeoUniformMagField *magField2 =
new TGeoUniformMagField(0.,
fField,0.);
187 TGeoVolumeAssembly *MagnetVol =
new TGeoVolumeAssembly(
"Goliath");
188 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
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));
199 TGeoVolume *CoilVolUp =
new TGeoVolume(
"CoilVolUp",CoilBoxU, Cu);
200 CoilVolUp->SetLineColor(kGreen);
202 TGeoVolume *CoilVolDown =
new TGeoVolume(
"CoilVolDown",CoilBoxD, Al);
203 CoilVolDown->SetLineColor(kGreen);
205 TGeoRotation *r1 =
new TGeoRotation();
206 r1->SetAngles(0,90,0);
208 TGeoHMatrix *mUp =
new TGeoHMatrix(tUp);
210 TGeoHMatrix *mDown =
new TGeoHMatrix(tDown);
212 MagnetVol->AddNode(CoilVolUp,1,mUp);
213 MagnetVol->AddNode(CoilVolDown,1,mDown);
219 Double_t base1 = 135, base2 = 78;
220 Double_t side1 = 33, side2 = 125, side3 = 57, side4 = 90;
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);
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);
244 TGeoVolume *volLateralS2 =
new TGeoVolume(
"volLateralS2",LateralS2,Fe);
245 volLateralS2->SetLineColor(kRed);
246 volLateralS2->SetField(magField1);
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);
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);;
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);
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);
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);
293 TGeoVolume *volLateralS2_b =
new TGeoVolume(
"volLateralS2_b",LateralS2_b,Fe);
294 volLateralS2_b->SetLineColor(kRed);
295 volLateralS2_b->SetField(magField1);
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);
307 TGeoVolume *volLateralSurface1blow =
new TGeoVolume(
"volLateralSurface1blow",LateralSurface1low,Fe);
308 volLateralSurface1blow->SetLineColor(kRed);
309 volLateralSurface1blow->SetField(magField1);
311 MagnetVol->AddNode(volLateralSurface1blow, 1, tr1blow);;
315 TGeoVolume *volLateralSurface2blow =
new TGeoVolume(
"volLateralSurface2blow",LateralSurface2low,Fe);
316 volLateralSurface2blow->SetLineColor(kRed);
317 volLateralSurface2blow->SetField(magField1);
319 MagnetVol->AddNode(volLateralSurface2blow, 1, tr2blow);
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);
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);
346 TGeoVolume *volLateralS2_d =
new TGeoVolume(
"volLateralS2_d",LateralS2_d,Fe);
347 volLateralS2_d->SetLineColor(kRed);
348 volLateralS2_d->SetField(magField1);
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);
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);
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);
379 TGeoVolume *volLateralS2_c =
new TGeoVolume(
"volLateralS2_c",LateralS2_c,Fe);
380 volLateralS2_c->SetLineColor(kRed);
381 volLateralS2_c->SetField(magField1);
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);
394 TGeoUniformMagField *magField1 =
new TGeoUniformMagField(-
fField,0.,0.);
395 TGeoUniformMagField *magField2 =
new TGeoUniformMagField(
fField,0.,0.);
397 TGeoVolumeAssembly *MagnetVol =
new TGeoVolumeAssembly(
"Davide");
398 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
404 TGeoCompositeShape *LateralSurf =
new TGeoCompositeShape(
"LS",
"LB-C");
406 TGeoVolume *CoilVol =
new TGeoVolume(
"CoilVol",CoilBox, Cu);
407 CoilVol->SetLineColor(kGreen);
408 TGeoVolume *LateralSurfVol =
new TGeoVolume(
"LateralSurfVol",LateralSurf, Fe);
409 LateralSurfVol->SetLineColor(kRed);
411 TGeoRotation *r1 =
new TGeoRotation();
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);
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");
423 TGeoHMatrix *m1_l =
new TGeoHMatrix(
"m1_l");
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);
432 TGeoVolume *ColumnVol =
new TGeoVolume(
"ColumnVol",ColumnBox,Fe);
433 ColumnVol->SetField(magField1);
434 ColumnVol->SetLineColor(kRed);
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));
446 TGeoVolume *PillarVol =
new TGeoVolume(
"PillarVol",PillarBox,Steel);
447 PillarVol->SetLineColor(kGreen+3);
457 TGeoVolumeAssembly *MagnetVol =
new TGeoVolumeAssembly(
"NudetMagnet");
458 tTauNuDet->AddNode(MagnetVol,1,
new TGeoTranslation(0,0,
fCenterZ));
461 TGeoVolume *BaseVol =
new TGeoVolume(
"BaseVol",BaseBox,Fe);
462 BaseVol->SetLineColor(kRed);
466 LateralBox->SetName(
"L");
467 Double_t delta = 0.1;
474 TGeoBBox *SemiLateralBox =
new TGeoBBox(
"SemiLateralBox",(
fColumnX)/2, SemiLateralBoxHeight /2,
fColumnZ/2);
475 TGeoVolume *volUpLateral =
new TGeoVolume(
"volUpLateral",SemiLateralBox,Fe);
477 TGeoVolume *volDownLateral =
new TGeoVolume(
"volDownLateral",SemiLateralBox,Fe);
478 SemiLateralBox->SetName(
"S");
479 volUpLateral->SetLineColor(kRed);
480 volDownLateral->SetLineColor(kRed);
484 TGeoBBox *MidLateralBox =
new TGeoBBox(
"MidLateralBox",
fColumnX/2, MidBoxHeight/2,
fColumnZ/2);
485 MidLateralBox->SetName(
"M");
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");
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);
503 transcuttop->RegisterYourself();
504 transcuttop1->RegisterYourself();
505 transcutbottom->RegisterYourself();
506 transcutbottom1->RegisterYourself();
508 TGeoCompositeShape *cuttop =
new TGeoCompositeShape(
"CUTTOP",
"CUT - (S:transcuttop) - (S:transcutbottom)");
509 TGeoVolume *volcuttop =
new TGeoVolume(
"volcuttop", cuttop, Fe);
510 volcuttop->SetLineColor(kRed);
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);
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);
536 TGeoRotation rottube(
"rottube",90,90,0);
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);
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();
556 TGeoCompositeShape * CoilRight =
new TGeoCompositeShape(
"CoilRight",
"Coillateraltuberightdown:combination+Coillateraltuberightup:combination1+Coillateralcenter");
557 TGeoVolume *CoilVolright =
new TGeoVolume(
"CoilVolright",CoilRight,Cu);
559 TGeoCompositeShape * CoilLeft =
new TGeoCompositeShape(
"CoilLeft",
"Coillateraltubeleftdown:combination2+Coillateraltubeleftup:combination3+Coillateralcenter");
560 TGeoVolume *CoilVolleft =
new TGeoVolume(
"CoilVolleft",CoilLeft,Cu);
565 TGeoVolume *CoilVol =
new TGeoVolume(
"CoilVol",Coil, Cu);
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));
574 MagnetVol->AddNode(volcuttop, 1,
new TGeoTranslation(-
fMagnetX/2+
fColumnX/2, 0, 0));
578 MagnetVol->AddNode(volcuttopleft,2,
new TGeoTranslation(
fMagnetX/2-
fColumnX/2,0,0));
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));
590 TGeoVolume *volMagRegion =
new TGeoVolume(
"volMagRegion",IncoilBox, air);
591 MagnetVol->AddNode(volMagRegion, 1,
new TGeoTranslation(0,0,0));
595 TGeoVolume *PillarVol =
new TGeoVolume(
"PillarVol",PillarBox,Steel);
596 PillarVol->SetLineColor(kGreen+3);
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.);
609 BaseVol->SetField(magField1);
610 volUpLateral->SetField(magField2y);
611 volDownLateral->SetField(magField1y);
612 volMagRegion->SetField(magField2);