diff --git a/macro/passive/fair/create_bpipe_geometry_v21e.C b/macro/passive/fair/create_bpipe_geometry_v21e.C deleted file mode 100644 index 722e557643721681509e01c868bc30170f8f30bd..0000000000000000000000000000000000000000 --- a/macro/passive/fair/create_bpipe_geometry_v21e.C +++ /dev/null @@ -1,747 +0,0 @@ -/* Copyright (C) 2021 Nuclear Physics Institute of the CAS, Rez - SPDX-License-Identifier: GPL-3.0-only - Authors: Petr Chudoba [committer] */ - -#include "TGeoArb8.h" -#include "TGeoCompositeShape.h" -#include "TGeoCone.h" -#include "TGeoManager.h" -#include "TGeoMatrix.h" -#include "TGeoSystemOfUnits.h" -#include "TGeoTube.h" -#include "TPad.h" -#include "TROOT.h" -#include "TSystem.h" - -#include "iostream" -#include "stdio.h" -using namespace std; -using namespace TGeoUnit; - -void create_bpipe_geometry_v21e(const char* geoTag = "v21e") -{ - //--- Definition of a simple geometry - gSystem->Load("libGeom"); - TGeoManager* geom = new TGeoManager("beampipe_v21e", "Beampipe for maximum deflection"); - - //--- define some materials - TGeoMixture* matCarbonFiber = new TGeoMixture("BP_carbonfiber", 4, 1.5); - matCarbonFiber->AddElement(12.001, 6.0, 0.8926); - matCarbonFiber->AddElement(1.0079, 1.0, 0.0192); - matCarbonFiber->AddElement(35.453, 17.0, 0.0271); - matCarbonFiber->AddElement(15.999, 8.0, 0.0611); - - TGeoMixture* matStainless = new TGeoMixture("BP_stainless", 10, 8.0); - matStainless->AddElement(12.0, 6.0, 0.00035); - matStainless->AddElement(51.94, 24.0, 0.175); - matStainless->AddElement(54.94, 25.0, 0.01); - matStainless->AddElement(95.94, 42.0, 0.025); - matStainless->AddElement(14.0, 7.0, 0.0005); - matStainless->AddElement(58.6934, 28.0, 0.115); - matStainless->AddElement(30.97, 15.0, 0.000225); - matStainless->AddElement(31.97, 16.0, 0.000075); - matStainless->AddElement(27.98, 14.0, 0.005); - matStainless->AddElement(55.93, 26.0, 0.67135); - - TGeoMaterial* matVacuum = new TGeoMaterial("BP_vacuum", 1.e-16, 1.e-16, 1.e-16); - TGeoMaterial* matAl = new TGeoMaterial("BP_aluminium", 26.9815386, 13, 2.7, 24.01); - - // //--- define some media - TGeoMedium* Vacuum = new TGeoMedium("BP_vacuum", 1, matVacuum); - TGeoMedium* Al = new TGeoMedium("BP_aluminium", 2, matAl); - TGeoMedium* CF = new TGeoMedium("BP_carbonfiber", 3, matCarbonFiber); - TGeoMedium* Stainless = new TGeoMedium("BP_stainless", 4, matStainless); - - Double_t conus_lenght = 1585 * mm; - Double_t rmin1 = 55 * mm; - Double_t rmax1 = 56 * mm; - Double_t rmin2 = 125 * mm; - Double_t rmax2 = 126 * mm; - - Double_t rail_cord[] = {23.0, 0, 4.5, 21.4, 2.8, 4.5}; - Double_t top_plate_cord[] = {10, 0, 2.1, 10.15, 0, 4.05, 11.75, 2.15, 4.0, 15.3, 4.28, - 2.85, 18.1, 5.27, 2.85, 19.75, 5.65, 5.0, 21.1, 5.65, 0}; - Double_t side_plate_cord[] = {11.3, 0, 2, 11.3, 0, 7.55, 16, 6.8, 4.6, 8.7, 6.8, 4.6, - 19.8, 8.3, 2.35, 13.6, 8.3, 2.35, 20.8, 7.9, 3.0, 14.8, 7.9, 3.0, - 21.3, 6.8, 1.5, 16.3, 6.8, 1.5, 21.3, 6.3, 0, 17.4, 6.3, 0}; - - //-----------------------DEFINITION OF TRANSFORMATIONS-------------------------------------------------------------------------------------- - - TGeoRotation* rot_top = new TGeoRotation("rot_top"); - rot_top->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_top = new TGeoCombiTrans(0, 15.2, 0, rot_top); - - TGeoRotation* rot_bott = new TGeoRotation("rot_bott"); - rot_bott->SetAngles(180, 0, 0); - TGeoCombiTrans* combi_bott = new TGeoCombiTrans(0, -15.2, 0, rot_bott); - - TGeoRotation* rot_rail_top = new TGeoRotation("rot_rail_top"); - rot_rail_top->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_rail_top = new TGeoCombiTrans(0, 20.15 - rail_cord[4], rail_cord[2] + 33, rot_rail_top); - - TGeoRotation* rot_rail = new TGeoRotation("rot_rail_bott"); - rot_rail->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_rail_bott = new TGeoCombiTrans(0, -20.15, rail_cord[2] + 33, rot_rail); - - - TGeoTranslation* ident_translation = new TGeoTranslation("ident_translation", 0, 0, 0); - ident_translation->RegisterYourself(); - - TGeoRotation* ident_rotation = new TGeoRotation("ident_rotation"); - ident_rotation->RotateY(0); - ident_rotation->RegisterYourself(); - - TGeoRotation* rot_left = new TGeoRotation("rot_left"); - rot_left->SetAngles(90, 0, 0); - TGeoCombiTrans* combi_left = new TGeoCombiTrans(-15.2, 0, 0, rot_left); - - TGeoRotation* rot_right = new TGeoRotation("rot_right"); - rot_right->SetAngles(270, 0, 0); - TGeoCombiTrans* combi_right = new TGeoCombiTrans(15.2, 0, 0, rot_right); - - TGeoCombiTrans* tr_top_0a = new TGeoCombiTrans(0, 15.2, top_plate_cord[2], rot_top); - TGeoCombiTrans* tr_top_1a = new TGeoCombiTrans(0, 15.2, 2 * top_plate_cord[2] + top_plate_cord[5], rot_top); - TGeoCombiTrans* tr_top_2a = new TGeoCombiTrans( - 0, 15.2, 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8], rot_top); - TGeoCombiTrans* tr_top_3a = new TGeoCombiTrans(0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] - + top_plate_cord[8] + top_plate_cord[8] + top_plate_cord[11], - rot_top); - TGeoCombiTrans* tr_top_4a = - new TGeoCombiTrans(0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] - + top_plate_cord[8] + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14], - rot_top); - TGeoCombiTrans* tr_top_5a = new TGeoCombiTrans( - 0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] + top_plate_cord[8] - + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14] + top_plate_cord[14] + top_plate_cord[17], - rot_top); - - TGeoCombiTrans* tr_bott_0a = new TGeoCombiTrans(0, -15.2, top_plate_cord[2], rot_bott); - TGeoCombiTrans* tr_bott_1a = new TGeoCombiTrans(0, -15.2, 2 * top_plate_cord[2] + top_plate_cord[5], rot_bott); - TGeoCombiTrans* tr_bott_2a = new TGeoCombiTrans( - 0, -15.2, 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8], rot_bott); - TGeoCombiTrans* tr_bott_3a = new TGeoCombiTrans(0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] - + top_plate_cord[8] + top_plate_cord[8] + top_plate_cord[11], - rot_bott); - TGeoCombiTrans* tr_bott_4a = - new TGeoCombiTrans(0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] - + top_plate_cord[8] + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14], - rot_bott); - TGeoCombiTrans* tr_bott_5a = new TGeoCombiTrans( - 0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] + top_plate_cord[8] - + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14] + top_plate_cord[14] + top_plate_cord[17], - rot_bott); - - TGeoCombiTrans* tr_side_left_0a = new TGeoCombiTrans(-15.2, 0, side_plate_cord[2], rot_left); - TGeoCombiTrans* tr_side_left_1a = new TGeoCombiTrans(-15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5], rot_left); - TGeoCombiTrans* tr_side_left_2a = new TGeoCombiTrans( - -15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8], rot_left); - TGeoCombiTrans* tr_side_left_3a = - new TGeoCombiTrans(-15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14], - rot_left); - TGeoCombiTrans* tr_side_left_4a = - new TGeoCombiTrans(-15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20], - rot_left); - TGeoCombiTrans* tr_side_left_5a = new TGeoCombiTrans( - -15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] + side_plate_cord[8] - + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20] + side_plate_cord[20] + side_plate_cord[26], - rot_left); - - TGeoCombiTrans* tr_side_right_0a = new TGeoCombiTrans(15.2, 0, side_plate_cord[2], rot_right); - TGeoCombiTrans* tr_side_right_1a = - new TGeoCombiTrans(15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5], rot_right); - TGeoCombiTrans* tr_side_right_2a = new TGeoCombiTrans( - 15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8], rot_right); - TGeoCombiTrans* tr_side_right_3a = - new TGeoCombiTrans(15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14], - rot_right); - TGeoCombiTrans* tr_side_right_4a = - new TGeoCombiTrans(15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20], - rot_right); - TGeoCombiTrans* tr_side_right_5a = new TGeoCombiTrans( - 15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] + side_plate_cord[8] - + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20] + side_plate_cord[20] + side_plate_cord[26], - rot_right); - - TGeoRotation* rot_sts_conus_connection = new TGeoRotation("rot_sts_conus_connection"); - //rot_sts_conus_connection->RotateZ(180); - TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -1600.00 * mm, rot_sts_conus_connection); - - TGeoRotation* rotation_of_sts_tube = new TGeoRotation("rotation_of_sts_tube"); - //rotation_of_sts_tube->RotateZ(180); - rotation_of_sts_tube->RotateY(-1.2); - TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -1630.50 * mm, rotation_of_sts_tube); - - TGeoRotation* rot_global = new TGeoRotation("rot_global"); - rot_global->RotateY(1.2); - TGeoCombiTrans* ctr_global = new TGeoCombiTrans(0, 0, 3214.99917754 * mm, rot_global); - - TGeoRotation* rot_s1 = new TGeoRotation("rot_s1"); - rot_s1->RotateZ(180.); - rot_s1->RotateY(4.80111677); - TGeoCombiTrans* ctr_s1 = new TGeoCombiTrans("ctr_s1", 2.50041582 * mm, 0, 59.76969908 * mm, rot_s1); - - TGeoRotation* rot_s2 = new TGeoRotation("rot_s2"); - rot_s2->RotateZ(180.); - rot_s2->RotateY(18.84127012); - TGeoCombiTrans* ctr_s2 = new TGeoCombiTrans("ctr_s2", (36.22434468) * mm, 0, (181.04176807) * mm, rot_s2); - - TGeoRotation* rot_s3 = new TGeoRotation("rot_s3"); - //rot_s3->RotateZ(180.); - rot_s3->RotateY(8.5257557); - - TGeoCombiTrans* ctr_s3 = new TGeoCombiTrans("ctr_s3", (70.72502201) * mm, 0, (294.40492979) * mm, rot_s3); - - TGeoRotation* rot_s4 = new TGeoRotation("rot_s4"); - //rot_s4->RotateZ(180.); - rot_s4->RotateY(5.7511677); - - TGeoCombiTrans* ctr_s4 = new TGeoCombiTrans("ctr_s4", (76.53811002) * mm, 0, 341.44507901 * mm, rot_s4); - - - TGeoRotation* rot_plate = new TGeoRotation("rot_plate"); - rot_plate->RotateY(-0.95); - TGeoCombiTrans* ctr_plate_up = - new TGeoCombiTrans("ctr_plate_up", 80. * mm, (147 + 12.5) * mm, (292.8 + 90) * mm, rot_plate); - TGeoCombiTrans* ctr_plate_down = - new TGeoCombiTrans("ctr_plate_down", 80. * mm, -(147 + 12.5) * mm, (292.8 + 90) * mm, rot_plate); - TGeoTranslation* tr_plate_up = new TGeoTranslation("tr_plate_up", 0. * mm, (147 + 12.5) * mm, 0. * mm); - tr_plate_up->RegisterYourself(); - TGeoTranslation* tr_plate_down = new TGeoTranslation("tr_plate_down", 0. * mm, -(147 + 12.5) * mm, 0. * mm); - tr_plate_down->RegisterYourself(); - - TGeoRotation* rot_lsn = new TGeoRotation("rot_lsn"); - //rot_s5->RotateZ(180.); - rot_lsn->RotateY(-90); - TGeoCombiTrans* ctr_lsn = new TGeoCombiTrans("ctr_s5", -22.5 * mm, -159.5 * mm, 534. * mm, rot_lsn); - - TGeoTranslation* mot_transl = new TGeoTranslation("mot_transl", -286.5 * mm, -159.5 * mm, 534. * mm); - - TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); - - TGeoTranslation orig_translation_cone("orig_translation_cone", -0.15707676 * mm, 0, 1645 * mm); - //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); - - - TGeoRotation orig_rotation("orig_rotation"); - orig_rotation.RotateY(1.2); - //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); - //orig_rotation->RegisterYourself(); - - - //TGeoHMatrix orig_combi = orig_translation * orig_rotation; - TGeoHMatrix orig_combi = orig_rotation * orig_translation; - - TGeoHMatrix orig_combi_cone = orig_rotation * orig_translation_cone; - - TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); - - TGeoHMatrix* origin_combi_cone = new TGeoHMatrix(orig_combi_cone); - - - //TGeoTranslation* cone_transl = new TGeoTranslation("cone_transl", -286.5 * mm, -159.5 * mm, 534. * mm); - - TGeoRotation* rot_psd_tube = new TGeoRotation("rot_psd_tube"); - rot_psd_tube->RotateY(2.15); - TGeoCombiTrans* ctr_psd_tube = - new TGeoCombiTrans("ctr_psd_tube", 426.44387679 * mm, 0. * mm, 10849.15 * mm, rot_psd_tube); - - TGeoRotation* rot_s5 = new TGeoRotation("rot_s5"); - //rot_s5->RotateZ(180.); - rot_s5->RotateY(0.95); - TGeoCombiTrans* ctr_s5 = new TGeoCombiTrans("ctr_s5", (79.32273177) * mm, 0, 381.62237458 * mm, rot_s5); - - TGeoTranslation* nut_transl = new TGeoTranslation("nut_transl", 0. * mm, 0. * mm, -100. * mm); - nut_transl->RegisterYourself(); - - //------------------------------------DEFINITIONS OF VOLUMES---------------------------------------- - //--- make the top container volume - Double_t worldx = 800 * mm; - Double_t worldy = 220 * mm; - Double_t worldz = 18200 * mm; - //TGeoVolume* full_assembly = geom->MakeBox("pipe_v21e", Vacuum, worldx, worldy, worldz); - TGeoVolumeAssembly* full_assembly = new TGeoVolumeAssembly("pipe_v21e"); - geom->SetTopVolume(full_assembly); - full_assembly->SetVisibility(kTRUE); - //TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 1825 * mm); - TGeoVolume* conical_beam_pipe = new TGeoVolumeAssembly("conical_beam_pipe"); - conical_beam_pipe->SetVisibility(kFALSE); - - TGeoVolume* vacuum_conical_beam_pipe = new TGeoVolumeAssembly("vacuum_conical_beam_pipe"); - vacuum_conical_beam_pipe->SetVisibility(kFALSE); - - //TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 350 * mm, 220 * mm, 600 * mm); - TGeoVolume* bellow_ass = new TGeoVolumeAssembly("Bellow assembly"); - bellow_ass->SetVisibility(kFALSE); - - TGeoVolume* vacuum_bellow_ass = new TGeoVolumeAssembly("Vacuum_bellow assembly"); - vacuum_bellow_ass->SetVisibility(kFALSE); - - // TOP PLATE-------------------------------------------------------------------------------------- - TGeoVolume* sub_t_plate1 = geom->MakeArb8("sub_t_plate1", CF, top_plate_cord[2]); - sub_t_plate1->SetLineColor(kGray); - TGeoArb8* t_arb1 = (TGeoArb8*) sub_t_plate1->GetShape(); - t_arb1->SetVertex(0, top_plate_cord[0], top_plate_cord[1]); - t_arb1->SetVertex(1, -top_plate_cord[0], top_plate_cord[1]); - t_arb1->SetVertex(2, -top_plate_cord[0], top_plate_cord[1] + 1.0); - t_arb1->SetVertex(3, top_plate_cord[0], top_plate_cord[1] + 1.0); - t_arb1->SetVertex(4, top_plate_cord[3], top_plate_cord[4]); - t_arb1->SetVertex(5, -top_plate_cord[3], top_plate_cord[4]); - t_arb1->SetVertex(6, -top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb1->SetVertex(7, top_plate_cord[3], top_plate_cord[4] + 1.0); - - TGeoVolume* sub_t_plate2 = geom->MakeArb8("sub_t_plate2", CF, top_plate_cord[5]); - sub_t_plate2->SetLineColor(kGray); - TGeoArb8* t_arb2 = (TGeoArb8*) sub_t_plate2->GetShape(); - t_arb2->SetVertex(0, top_plate_cord[3], top_plate_cord[4]); - t_arb2->SetVertex(1, -top_plate_cord[3], top_plate_cord[4]); - t_arb2->SetVertex(2, -top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb2->SetVertex(3, top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb2->SetVertex(4, top_plate_cord[6], top_plate_cord[7]); - t_arb2->SetVertex(5, -top_plate_cord[6], top_plate_cord[7]); - t_arb2->SetVertex(6, -top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb2->SetVertex(7, top_plate_cord[6], top_plate_cord[7] + 1.0); - - TGeoVolume* sub_t_plate3 = geom->MakeArb8("sub_t_plate3", CF, top_plate_cord[8]); - sub_t_plate3->SetLineColor(kGray); - TGeoArb8* t_arb3 = (TGeoArb8*) sub_t_plate3->GetShape(); - t_arb3->SetVertex(0, top_plate_cord[6], top_plate_cord[7]); - t_arb3->SetVertex(1, -top_plate_cord[6], top_plate_cord[7]); - t_arb3->SetVertex(2, -top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb3->SetVertex(3, top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb3->SetVertex(4, top_plate_cord[9], top_plate_cord[10]); - t_arb3->SetVertex(5, -top_plate_cord[9], top_plate_cord[10]); - t_arb3->SetVertex(6, -top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb3->SetVertex(7, top_plate_cord[9], top_plate_cord[10] + 1.0); - - TGeoVolume* sub_t_plate4 = geom->MakeArb8("sub_t_plate4", CF, top_plate_cord[11]); - sub_t_plate4->SetLineColor(kGray); - TGeoArb8* t_arb4 = (TGeoArb8*) sub_t_plate4->GetShape(); - t_arb4->SetVertex(0, top_plate_cord[9], top_plate_cord[10]); - t_arb4->SetVertex(1, -top_plate_cord[9], top_plate_cord[10]); - t_arb4->SetVertex(2, -top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb4->SetVertex(3, top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb4->SetVertex(4, top_plate_cord[12], top_plate_cord[13]); - t_arb4->SetVertex(5, -top_plate_cord[12], top_plate_cord[13]); - t_arb4->SetVertex(6, -top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb4->SetVertex(7, top_plate_cord[12], top_plate_cord[13] + 1.0); - - TGeoVolume* sub_t_plate5 = geom->MakeArb8("sub_t_plate5", CF, top_plate_cord[14]); - sub_t_plate5->SetLineColor(kGray); - TGeoArb8* t_arb5 = (TGeoArb8*) sub_t_plate5->GetShape(); - t_arb5->SetVertex(0, top_plate_cord[12], top_plate_cord[13]); - t_arb5->SetVertex(1, -top_plate_cord[12], top_plate_cord[13]); - t_arb5->SetVertex(2, -top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb5->SetVertex(3, top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb5->SetVertex(4, top_plate_cord[15], top_plate_cord[17]); - t_arb5->SetVertex(5, -top_plate_cord[15], top_plate_cord[17]); - t_arb5->SetVertex(6, -top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb5->SetVertex(7, top_plate_cord[15], top_plate_cord[17] + 1.0); - - TGeoVolume* sub_t_plate6 = geom->MakeArb8("sub_t_plate6", CF, top_plate_cord[17]); - sub_t_plate6->SetLineColor(kGray); - TGeoArb8* t_arb6 = (TGeoArb8*) sub_t_plate6->GetShape(); - t_arb6->SetVertex(0, top_plate_cord[15], top_plate_cord[17]); - t_arb6->SetVertex(1, -top_plate_cord[15], top_plate_cord[17]); - t_arb6->SetVertex(2, -top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(3, top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(4, top_plate_cord[18], top_plate_cord[17]); - t_arb6->SetVertex(5, -top_plate_cord[18], top_plate_cord[17]); - t_arb6->SetVertex(6, -top_plate_cord[18], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(7, top_plate_cord[18], top_plate_cord[17] + 1.0); - - // SIDE PLATE-------------------------------------------------------------------------------------- - - TGeoVolume* sub_s_plate1 = geom->MakeArb8("sub_s_plate1", CF, side_plate_cord[2]); - sub_s_plate1->SetLineColor(kGray); - TGeoArb8* s_arb1 = (TGeoArb8*) sub_s_plate1->GetShape(); - s_arb1->SetVertex(0, side_plate_cord[0], side_plate_cord[1]); - s_arb1->SetVertex(1, -side_plate_cord[0], side_plate_cord[1]); - s_arb1->SetVertex(2, -side_plate_cord[0], side_plate_cord[1] + 1.0); - s_arb1->SetVertex(3, side_plate_cord[0], side_plate_cord[1] + 1.0); - s_arb1->SetVertex(4, side_plate_cord[3], side_plate_cord[4]); - s_arb1->SetVertex(5, -side_plate_cord[3], side_plate_cord[4]); - s_arb1->SetVertex(6, -side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb1->SetVertex(7, side_plate_cord[3], side_plate_cord[4] + 1.0); - - TGeoVolume* sub_s_plate2 = geom->MakeArb8("sub_s_plate2", CF, side_plate_cord[5]); - sub_s_plate2->SetLineColor(kGray); - TGeoArb8* s_arb2 = (TGeoArb8*) sub_s_plate2->GetShape(); - s_arb2->SetVertex(0, side_plate_cord[3], side_plate_cord[4]); - s_arb2->SetVertex(1, -side_plate_cord[3], side_plate_cord[4]); - s_arb2->SetVertex(2, -side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb2->SetVertex(3, side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb2->SetVertex(4, side_plate_cord[6], side_plate_cord[7]); - s_arb2->SetVertex(5, -side_plate_cord[6], side_plate_cord[7]); - s_arb2->SetVertex(6, -side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb2->SetVertex(7, side_plate_cord[6], side_plate_cord[7] + 1.0); - - TGeoVolume* sub_s_plate3 = geom->MakeArb8("sub_s_plate3", CF, side_plate_cord[8]); - sub_s_plate3->SetLineColor(kGray); - TGeoArb8* s_arb3 = (TGeoArb8*) sub_s_plate3->GetShape(); - s_arb3->SetVertex(0, side_plate_cord[6], side_plate_cord[7]); - s_arb3->SetVertex(1, side_plate_cord[9], side_plate_cord[10]); - s_arb3->SetVertex(2, side_plate_cord[9], side_plate_cord[10] + 1.0); - s_arb3->SetVertex(3, side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb3->SetVertex(4, side_plate_cord[12], side_plate_cord[13]); - s_arb3->SetVertex(5, side_plate_cord[15], side_plate_cord[16]); - s_arb3->SetVertex(6, side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb3->SetVertex(7, side_plate_cord[12], side_plate_cord[13] + 1.0); - - TGeoVolume* sub_s_plate4 = geom->MakeArb8("sub_s_plate4", CF, side_plate_cord[8]); - sub_s_plate4->SetLineColor(kGray); - TGeoArb8* s_arb4 = (TGeoArb8*) sub_s_plate4->GetShape(); - s_arb4->SetVertex(0, -side_plate_cord[6], side_plate_cord[7]); - s_arb4->SetVertex(1, -side_plate_cord[9], side_plate_cord[10]); - s_arb4->SetVertex(2, -side_plate_cord[9], side_plate_cord[10] + 1.0); - s_arb4->SetVertex(3, -side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb4->SetVertex(4, -side_plate_cord[12], side_plate_cord[13]); - s_arb4->SetVertex(5, -side_plate_cord[15], side_plate_cord[16]); - s_arb4->SetVertex(6, -side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb4->SetVertex(7, -side_plate_cord[12], side_plate_cord[13] + 1.0); - - TGeoVolume* sub_s_plate5 = geom->MakeArb8("sub_s_plate5", CF, side_plate_cord[14]); - sub_s_plate5->SetLineColor(kGray); - TGeoArb8* s_arb5 = (TGeoArb8*) sub_s_plate5->GetShape(); - s_arb5->SetVertex(0, side_plate_cord[12], side_plate_cord[13]); - s_arb5->SetVertex(1, side_plate_cord[15], side_plate_cord[16]); - s_arb5->SetVertex(2, side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb5->SetVertex(3, side_plate_cord[12], side_plate_cord[13] + 1.0); - s_arb5->SetVertex(4, side_plate_cord[18], side_plate_cord[19]); - s_arb5->SetVertex(5, side_plate_cord[21], side_plate_cord[22]); - s_arb5->SetVertex(6, side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb5->SetVertex(7, side_plate_cord[18], side_plate_cord[19] + 1.0); - - TGeoVolume* sub_s_plate6 = geom->MakeArb8("sub_s_plate6", CF, side_plate_cord[14]); - sub_s_plate6->SetLineColor(kGray); - TGeoArb8* s_arb6 = (TGeoArb8*) sub_s_plate6->GetShape(); - s_arb6->SetVertex(0, -side_plate_cord[12], side_plate_cord[13]); - s_arb6->SetVertex(1, -side_plate_cord[15], side_plate_cord[16]); - s_arb6->SetVertex(2, -side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb6->SetVertex(3, -side_plate_cord[12], side_plate_cord[13] + 1.0); - s_arb6->SetVertex(4, -side_plate_cord[18], side_plate_cord[19]); - s_arb6->SetVertex(5, -side_plate_cord[21], side_plate_cord[22]); - s_arb6->SetVertex(6, -side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb6->SetVertex(7, -side_plate_cord[18], side_plate_cord[19] + 1.0); - - TGeoVolume* sub_s_plate7 = geom->MakeArb8("sub_s_plate7", CF, side_plate_cord[20]); - sub_s_plate7->SetLineColor(kGray); - TGeoArb8* s_arb7 = (TGeoArb8*) sub_s_plate7->GetShape(); - s_arb7->SetVertex(0, side_plate_cord[18], side_plate_cord[19]); - s_arb7->SetVertex(1, side_plate_cord[21], side_plate_cord[22]); - s_arb7->SetVertex(2, side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb7->SetVertex(3, side_plate_cord[18], side_plate_cord[19] + 1.0); - s_arb7->SetVertex(4, side_plate_cord[24], side_plate_cord[25]); - s_arb7->SetVertex(5, side_plate_cord[27], side_plate_cord[28]); - s_arb7->SetVertex(6, side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb7->SetVertex(7, side_plate_cord[24], side_plate_cord[25] + 1.0); - - TGeoVolume* sub_s_plate8 = geom->MakeArb8("sub_s_plate8", CF, side_plate_cord[20]); - sub_s_plate8->SetLineColor(kGray); - TGeoArb8* s_arb8 = (TGeoArb8*) sub_s_plate8->GetShape(); - s_arb8->SetVertex(0, -side_plate_cord[18], side_plate_cord[19]); - s_arb8->SetVertex(1, -side_plate_cord[21], side_plate_cord[22]); - s_arb8->SetVertex(2, -side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb8->SetVertex(3, -side_plate_cord[18], side_plate_cord[19] + 1.0); - s_arb8->SetVertex(4, -side_plate_cord[24], side_plate_cord[25]); - s_arb8->SetVertex(5, -side_plate_cord[27], side_plate_cord[28]); - s_arb8->SetVertex(6, -side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb8->SetVertex(7, -side_plate_cord[24], side_plate_cord[25] + 1.0); - - TGeoVolume* sub_s_plate9 = geom->MakeArb8("sub_s_plate9", CF, side_plate_cord[26]); - sub_s_plate9->SetLineColor(kGray); - TGeoArb8* s_arb9 = (TGeoArb8*) sub_s_plate9->GetShape(); - s_arb9->SetVertex(0, side_plate_cord[24], side_plate_cord[25]); - s_arb9->SetVertex(1, side_plate_cord[27], side_plate_cord[28]); - s_arb9->SetVertex(2, side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb9->SetVertex(3, side_plate_cord[24], side_plate_cord[25] + 1.0); - s_arb9->SetVertex(4, side_plate_cord[30], side_plate_cord[31]); - s_arb9->SetVertex(5, side_plate_cord[33], side_plate_cord[34]); - s_arb9->SetVertex(6, side_plate_cord[33], side_plate_cord[34] + 1.0); - s_arb9->SetVertex(7, side_plate_cord[30], side_plate_cord[31] + 1.0); - - TGeoVolume* sub_s_plate10 = geom->MakeArb8("sub_s_plate10", CF, side_plate_cord[26]); - sub_s_plate10->SetLineColor(kGray); - TGeoArb8* s_arb10 = (TGeoArb8*) sub_s_plate10->GetShape(); - s_arb10->SetVertex(0, -side_plate_cord[24], side_plate_cord[25]); - s_arb10->SetVertex(1, -side_plate_cord[27], side_plate_cord[28]); - s_arb10->SetVertex(2, -side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb10->SetVertex(3, -side_plate_cord[24], side_plate_cord[25] + 1.0); - s_arb10->SetVertex(4, -side_plate_cord[30], side_plate_cord[31]); - s_arb10->SetVertex(5, -side_plate_cord[33], side_plate_cord[34]); - s_arb10->SetVertex(6, -side_plate_cord[33], side_plate_cord[34] + 1.0); - s_arb10->SetVertex(7, -side_plate_cord[30], side_plate_cord[31] + 1.0); - - // RAIL------------------------------------------------------------------------------------ - TGeoVolume* sub_rail = geom->MakeArb8("sub_rail", Al, rail_cord[2]); - sub_rail->SetLineColor(kBlue); - TGeoArb8* r_arb1 = (TGeoArb8*) sub_rail->GetShape(); - r_arb1->SetVertex(0, rail_cord[0], rail_cord[1]); - r_arb1->SetVertex(1, -rail_cord[0], rail_cord[1]); - r_arb1->SetVertex(2, -rail_cord[0], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(3, rail_cord[0], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(4, rail_cord[3], rail_cord[1]); - r_arb1->SetVertex(5, -rail_cord[3], rail_cord[1]); - r_arb1->SetVertex(6, -rail_cord[3], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(7, rail_cord[3], rail_cord[1] + rail_cord[4]); - - TGeoBBox* flange_box = new TGeoBBox("flange_box", 15.2, 15.2, 1.5); - TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 1.6); - - // DOWNSTREAM_CARBON-FIBRE_RICH_MUCH_FLANGE_TO_BELLOW_ASS------------------------------------------------------------------------------------ - TGeoBBox* rich_much_flange_box = new TGeoBBox("rich_much_flange_box", 15.2, 15.2, 1.5); - TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.55, 1.6); - TGeoCompositeShape* rich_much_flange_composite = - new TGeoCompositeShape("flange_composite_rich", "rich_much_flange_box-rich_much_flange_hole"); - TGeoVolume* rich_much_downstream_flange = - new TGeoVolume("rich_much_downstream_flange", rich_much_flange_composite, CF); - rich_much_downstream_flange->SetLineColor(kGray); - - // VACUUM IN THE FLANGE---------------------------------------------------------------------------------------------- - TGeoTube* vacuum_flange_hole = new TGeoTube("vacuum_flange_hole", 0., 12.5, 1.5); - TGeoVolume* vacuum_downstream_flange = - new TGeoVolume("vacuum_downstream_flange", vacuum_flange_hole, Vacuum); - vacuum_downstream_flange->SetLineColor(kRed); - - // CONICAL_BEAM_PIPE---------------------------------------------------------------------------------------------------------- - TGeoCone* conus = new TGeoCone("conus", conus_lenght, rmin1, rmax1, rmin2, rmax2); - TGeoVolume* conus_volume = new TGeoVolume("conus_volume", conus, CF); - conus_volume->SetLineColor(kGray); - - //-------------------------------VACUUM IN CONE------------------------------------------------------------------- - TGeoCone* vacuum_conus = new TGeoCone("vacuum_conus", conus_lenght, 0, rmin1, 0, rmin2); - TGeoVolume* vacuum_conus_volume = new TGeoVolume("vacuum_conus_volume", vacuum_conus, Vacuum); - vacuum_conus_volume->SetLineColor(kGreen); - - // CONNECTING TUBE-------------------------------------------------------------------------------------------------------------------------------------------------------- - TGeoCtub* tube_connection = new TGeoCtub("tube_connection", 55. * mm, 56. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); - TGeoVolume* tube_connection_volume = new TGeoVolume("tube_connection_volume", tube_connection, CF); - tube_connection_volume->SetLineColor(kGray); - - //------------------------VACUUM IN THE CONNECTING TUBE-------------------------------------------------------------- - TGeoCtub* vacuum_tube_connection = new TGeoCtub("vacuum_tube_connection", 0. * mm, 55. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); - TGeoVolume* vacuum_tube_connection_volume = new TGeoVolume("vacuum_tube_connection_volume", vacuum_tube_connection, Vacuum); - vacuum_tube_connection_volume->SetLineColor(kGreen); - - // STS tube----------------------------------------------------------------------------------------------------- - TGeoCtub* tube_connection_sts = new TGeoCtub("tube_connection_sts", 55. * mm, 56. * mm, 15. * mm, 0., 360., 0., 0., 1., 0.05235892, 0., 4.99972585); - TGeoVolume* tube_connection_sts_volume = new TGeoVolume("tube_connection_sts_volume", tube_connection_sts, CF); - tube_connection_sts_volume->SetLineColor(kGray); - - //-------------------------------BELLOW DEFINITION---------------------------------------------------------------- - TGeoCompositeShape* flange_composite = new TGeoCompositeShape("flange_composite", "flange_box-flange_hole"); - TGeoVolume* bellow_flange_0 = new TGeoVolume("bellow_flange_0", flange_composite, Stainless); - bellow_flange_0->SetLineColor(kRed); - - TGeoCtub* bellow_s1 = new TGeoCtub("bellow_s1", 124. * mm, 142. * mm, 29.87452196 * mm, 0., 360., -0.083697266, 0., - -0.996491228, -0.122217128, 0., 0.992503387); - TGeoVolume* bellow_1 = new TGeoVolume("bellow_s1", bellow_s1, Stainless); - bellow_1->SetLineColor(kRed); - - TGeoCtub* bellow_s2 = new TGeoCtub("bellow_s1", 124. * mm, 142. * mm, 96.682942995 * mm, 0., 360., -0.122217128, 0., - -0.992503387, 0.089898314, 0, 0.995950949); - TGeoVolume* bellow_2 = new TGeoVolume("bellow_s2", bellow_s2, Stainless); - bellow_2->SetLineColor(kRed); - - TGeoCtub* bellow_s3 = new TGeoCtub("bellow_s3", 124. * mm, 142. * mm, 22.10506784 * mm, 0., 360., -0.089898314, 0., - -0.995950949, -0.024210927, 0., 0.999706873); - TGeoVolume* bellow_3 = new TGeoVolume("bellow_s3", bellow_s3, Stainless); - bellow_3->SetLineColor(kRed); - - TGeoCtub* bellow_s4 = new TGeoCtub("bellow_s4", 124. * mm, 142. * mm, 25.306 * mm, 0., 360., -0.024210927, 0., - -0.999706873, -0.083697266, 0., 0.996491228); - TGeoVolume* bellow_4 = new TGeoVolume("bellow_s3", bellow_s4, Stainless); - bellow_4->SetLineColor(kRed); - - //-------------------------------VACUUM BELLOW DEFINITION---------------------------------------------------------------- - TGeoVolume* vacuum_bellow_flange_0 = new TGeoVolume("vacuum_bellow_flange_0", vacuum_flange_hole, Vacuum); - vacuum_bellow_flange_0->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s1 = new TGeoCtub("vacuum_bellow_s1", 0. * mm, 123.8 * mm, 29.87452196 * mm, 0., 360., -0.083697266, 0., - -0.996491228, -0.122217128, 0., 0.992503387); - TGeoVolume* vacuum_bellow_1 = new TGeoVolume("vacuum_bellow_s1", vacuum_bellow_s1, Vacuum); - vacuum_bellow_1->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s2 = new TGeoCtub("vacuum_bellow_s1", 0. * mm, 123.8 * mm, 96.682942995 * mm, 0., 360., -0.122217128, 0., - -0.992503387, 0.089898314, 0, 0.995950949); - TGeoVolume* vacuum_bellow_2 = new TGeoVolume("vacuum_bellow_s2", vacuum_bellow_s2, Vacuum); - vacuum_bellow_2->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s3 = new TGeoCtub("vacuum_bellow_s3", 0. * mm, 123.8 * mm, 22.10506784 * mm, 0., 360., -0.089898314, 0., - -0.995950949, -0.024210927, 0., 0.999706873); - TGeoVolume* vacuum_bellow_3 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s3, Vacuum); - vacuum_bellow_3->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s4 = new TGeoCtub("vacuum_bellow_s4", 0. * mm, 123.8 * mm, 25.306 * mm, 0., 360., -0.024210927, 0., - -0.999706873, -0.083697266, 0., 0.996491228); - TGeoVolume* vacuum_bellow_4 = new TGeoVolume("vacuum_bellow_s4", vacuum_bellow_s4, Vacuum); - vacuum_bellow_4->SetLineColor(kGreen); - - TGeoBBox* roll_plate_s = new TGeoBBox("roll_plate_s", 75. * mm, 12.5 * mm, 90. * mm); - TGeoVolume* roll_plate = new TGeoVolume("roll_plate", roll_plate_s, Al); - roll_plate->SetLineColor(kBlue); - - TGeoTube* flange_cyl = new TGeoTube("flange_cyl", 0., 15., 1.5); - TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 1.6); - TGeoCompositeShape* flange_cyl_composite = new TGeoCompositeShape( - "flange_cyl_composite", "((flange_cyl-flange_cyl_hole)-roll_plate_s:tr_plate_up)-roll_plate_s:tr_plate_down"); - TGeoVolume* bellow_flange_1 = new TGeoVolume("bellow_flange_1", flange_cyl_composite, Stainless); - bellow_flange_1->SetLineColor(kRed); - - //-------------------------------VACUUM FLANGE BELLOW------------------------------------------------------------------ - TGeoTube* vacuum_flange_cyl_hole = new TGeoTube("vacuum_flange_cyl_hole", 0., 8.9, 1.5); - TGeoVolume* vacuum_bellow_flange_1 = new TGeoVolume("vacuum_bellow_flange_1", vacuum_flange_cyl_hole, Vacuum); - vacuum_bellow_flange_1->SetLineColor(kGreen); - - TGeoTube* lead_screw_s = new TGeoTube("lead_screw_s", 0. * mm, 6. * mm, 205. * mm); - TGeoTube* nut_small_s = new TGeoTube("nut_small_s", 6. * mm, 14. * mm, 50. * mm); - TGeoTube* nut_big_s = new TGeoTube("nut_big_s", 14. * mm, 24. * mm, 27. * mm); - - TGeoCompositeShape* lead_screw_nut_s = - new TGeoCompositeShape("lead_screw_nut_s", "lead_screw_s+nut_small_s:nut_transl+nut_big_s:nut_transl"); - TGeoVolume* lead_screw_nut = new TGeoVolume("lead_screw_nut", lead_screw_nut_s, Stainless); - lead_screw_nut->SetLineColor(kRed); - - - TGeoBBox* motor_s = new TGeoBBox("motor_s", 57.5 * mm, 30. * mm, 30. * mm); - TGeoVolume* motor = new TGeoVolume("motor", motor_s, Stainless); - motor->SetLineColor(kRed); - - - TGeoTube* psd_tube_s = new TGeoTube("psd_tube_s", 90. * mm, 92. * mm, 7230. * mm); - TGeoVolume* psd_tube = new TGeoVolume("psd_tube", psd_tube_s, CF); - psd_tube->SetLineColor(kGray); - - //------------------------------VACUUM PSD TUBE------------------------------------------------------------------------- - TGeoTube* vacuum_psd_tube_s = new TGeoTube("vacuum_psd_tube_s", 0. * mm, 90. * mm, 7230. * mm); - TGeoVolume* vacuum_psd_tube = new TGeoVolume("vacuum_psd_tube", vacuum_psd_tube_s, Vacuum); - vacuum_psd_tube->SetLineColor(kGreen); - - //------------------TOP plate------------------------------ - bellow_ass->AddNode(sub_t_plate1, 1, tr_top_0a); - bellow_ass->AddNode(sub_t_plate2, 1, tr_top_1a); - bellow_ass->AddNode(sub_t_plate3, 1, tr_top_2a); - bellow_ass->AddNode(sub_t_plate4, 1, tr_top_3a); - bellow_ass->AddNode(sub_t_plate5, 1, tr_top_4a); - bellow_ass->AddNode(sub_t_plate6, 1, tr_top_5a); - - //-----------------BOTTOM plate---------------------------- - bellow_ass->AddNode(sub_t_plate1, 2, tr_bott_0a); - bellow_ass->AddNode(sub_t_plate2, 2, tr_bott_1a); - bellow_ass->AddNode(sub_t_plate3, 2, tr_bott_2a); - bellow_ass->AddNode(sub_t_plate4, 2, tr_bott_3a); - bellow_ass->AddNode(sub_t_plate5, 2, tr_bott_4a); - bellow_ass->AddNode(sub_t_plate6, 2, tr_bott_5a); - - //-----------------LEFT plate------------------------------ - bellow_ass->AddNode(sub_s_plate1, 1, tr_side_left_0a); - bellow_ass->AddNode(sub_s_plate2, 1, tr_side_left_1a); - bellow_ass->AddNode(sub_s_plate3, 1, tr_side_left_2a); - bellow_ass->AddNode(sub_s_plate4, 1, tr_side_left_2a); - bellow_ass->AddNode(sub_s_plate5, 1, tr_side_left_3a); - bellow_ass->AddNode(sub_s_plate6, 1, tr_side_left_3a); - bellow_ass->AddNode(sub_s_plate7, 1, tr_side_left_4a); - bellow_ass->AddNode(sub_s_plate8, 1, tr_side_left_4a); - bellow_ass->AddNode(sub_s_plate9, 1, tr_side_left_5a); - bellow_ass->AddNode(sub_s_plate10, 1, tr_side_left_5a); - - //---------------RIGHT plate-------------------------------- - bellow_ass->AddNode(sub_s_plate1, 2, tr_side_right_0a); - bellow_ass->AddNode(sub_s_plate2, 2, tr_side_right_1a); - bellow_ass->AddNode(sub_s_plate3, 2, tr_side_right_2a); - bellow_ass->AddNode(sub_s_plate4, 2, tr_side_right_2a); - bellow_ass->AddNode(sub_s_plate5, 2, tr_side_right_3a); - bellow_ass->AddNode(sub_s_plate6, 2, tr_side_right_3a); - bellow_ass->AddNode(sub_s_plate7, 2, tr_side_right_4a); - bellow_ass->AddNode(sub_s_plate8, 2, tr_side_right_4a); - bellow_ass->AddNode(sub_s_plate9, 2, tr_side_right_5a); - bellow_ass->AddNode(sub_s_plate10, 2, tr_side_right_5a); - - //------------------RAIL------------------------------------- - bellow_ass->AddNode(sub_rail, 1, combi_rail_top); - bellow_ass->AddNode(sub_rail, 2, combi_rail_bott); - - //----------------Bellow with flanges----------------------------- - bellow_ass->AddNode(bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); - bellow_ass->AddNode(bellow_1, 1, ctr_s1); - bellow_ass->AddNode(bellow_2, 1, ctr_s2); - bellow_ass->AddNode(bellow_3, 1, ctr_s3); - bellow_ass->AddNode(bellow_4, 1, ctr_s4); - bellow_ass->AddNode(bellow_flange_1, 1, ctr_s5); - - //-----------------Vacuum in bellow and flanges - vacuum_bellow_ass->AddNode(vacuum_bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); - vacuum_bellow_ass->AddNode(vacuum_bellow_1, 1, ctr_s1); - vacuum_bellow_ass->AddNode(vacuum_bellow_2, 1, ctr_s2); - vacuum_bellow_ass->AddNode(vacuum_bellow_3, 1, ctr_s3); - vacuum_bellow_ass->AddNode(vacuum_bellow_4, 1, ctr_s4); - vacuum_bellow_ass->AddNode(vacuum_bellow_flange_1, 1, ctr_s5); - - - //------------------DRIVE assembly-------------------------------------- - bellow_ass->AddNode(roll_plate, 1, ctr_plate_up); - bellow_ass->AddNode(roll_plate, 2, ctr_plate_down); - bellow_ass->AddNode(lead_screw_nut, 1, ctr_lsn); - bellow_ass->AddNode(motor, 1, mot_transl); - - //-------------------CONICAL section-------------------------------------------------- - conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); - conical_beam_pipe->AddNode(conus_volume, 1, new TGeoTranslation(0, 0, 0)); - conical_beam_pipe->AddNode(tube_connection_volume, 1, ctr_sts_conus_connection); - //conical_beam_pipe->AddNode(tube_connection_sts_volume, 1, ctr_sts_tube); //unexplained "nonexisting" overlap - //conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_volume, 1, ctr_sts_tube); - - //-------------------VACUUM in CONICAL section-------------------------------------------------- - //vacuum_conical_beam_pipe->AddNode(vacuum_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); // not needed - vacuum_conical_beam_pipe->AddNode(vacuum_conus_volume, 1, new TGeoTranslation(0, 0, 0)); - vacuum_conical_beam_pipe->AddNode(vacuum_tube_connection_volume, 1, ctr_sts_conus_connection); - - //------------------INSERT into top volume - full_assembly->AddNode(conical_beam_pipe, 1, origin_combi_cone); - full_assembly->AddNode(bellow_ass, 1, origin_combi); - full_assembly->AddNode(psd_tube, 1, ctr_psd_tube); - full_assembly->AddNode(vacuum_conical_beam_pipe, 1, origin_combi_cone); - full_assembly->AddNode(vacuum_bellow_ass, 1, origin_combi); - full_assembly->AddNode(vacuum_psd_tube, 1, ctr_psd_tube); - - //beampipe->AddNode(full_assembly,1, new TGeoTranslation(0, 0, 0*mm)); - // --- close the geometry - geom->CloseGeometry(); - - //--- draw the ROOT box - geom->SetVisLevel(4); - full_assembly->Draw(); - if (gPad && !gROOT->IsBatch()) gPad->GetViewer3D(); - - // --------------- Finish ----------------------------------------------- - TString geo_bin_filename = "pipe_"; - TString geo_name = geo_bin_filename + geoTag; - geo_bin_filename = geo_bin_filename + geoTag + ".geo.root"; - TFile* binfile; - binfile = new TFile(geo_bin_filename, "RECREATE"); - geom->GetTopVolume()->Write(geo_name); // outputting on the top volume - TGeoTranslation* trans = new TGeoTranslation(0.0, 0.0, 82.0); - trans->Write("trans"); - cout << endl; - cout << "Geometry " << geom->GetTopVolume()->GetName() << " written to " << geo_bin_filename << endl; - binfile->Close(); - //--- close the geometry - geom->CloseGeometry(); - //gGeoManager->CheckOverlaps(0.000001); - //gGeoManager->GetListOfOverlaps()->Print(); -} diff --git a/macro/passive/fair/create_bpipe_geometry_v21f.C b/macro/passive/fair/create_bpipe_geometry_v21f.C deleted file mode 100644 index 97e0c451605c0f2b5ccd2ce452dc0b24d61a2c72..0000000000000000000000000000000000000000 --- a/macro/passive/fair/create_bpipe_geometry_v21f.C +++ /dev/null @@ -1,745 +0,0 @@ -/* Copyright (C) 2021 Nuclear Physics Institute of the CAS, Rez - SPDX-License-Identifier: GPL-3.0-only - Authors: Petr Chudoba [committer] */ - -#include "TGeoArb8.h" -#include "TGeoCompositeShape.h" -#include "TGeoCone.h" -#include "TGeoManager.h" -#include "TGeoMatrix.h" -#include "TGeoSystemOfUnits.h" -#include "TGeoTube.h" -#include "TPad.h" -#include "TROOT.h" -#include "TSystem.h" - -#include "iostream" -#include "stdio.h" -using namespace std; -using namespace TGeoUnit; - -void create_bpipe_geometry_v21f(const char* geoTag = "v21f") -{ - //--- Definition of a simple geometry - gSystem->Load("libGeom"); - TGeoManager* geom = new TGeoManager("beampipe_v21f", "Beampipe for no magnetic field"); - - //--- define some materials - TGeoMixture* matCarbonFiber = new TGeoMixture("BP_carbonfiber", 4, 1.5); - matCarbonFiber->AddElement(12.001, 6.0, 0.8926); - matCarbonFiber->AddElement(1.0079, 1.0, 0.0192); - matCarbonFiber->AddElement(35.453, 17.0, 0.0271); - matCarbonFiber->AddElement(15.999, 8.0, 0.0611); - - TGeoMixture* matStainless = new TGeoMixture("BP_stainless", 10, 8.0); - matStainless->AddElement(12.0, 6.0, 0.00035); - matStainless->AddElement(51.94, 24.0, 0.175); - matStainless->AddElement(54.94, 25.0, 0.01); - matStainless->AddElement(95.94, 42.0, 0.025); - matStainless->AddElement(14.0, 7.0, 0.0005); - matStainless->AddElement(58.6934, 28.0, 0.115); - matStainless->AddElement(30.97, 15.0, 0.000225); - matStainless->AddElement(31.97, 16.0, 0.000075); - matStainless->AddElement(27.98, 14.0, 0.005); - matStainless->AddElement(55.93, 26.0, 0.67135); - - TGeoMaterial* matVacuum = new TGeoMaterial("BP_vacuum", 1.e-16, 1.e-16, 1.e-16); - TGeoMaterial* matAl = new TGeoMaterial("BP_aluminium", 26.9815386, 13, 2.7, 24.01); - - // //--- define some media - TGeoMedium* Vacuum = new TGeoMedium("BP_vacuum", 1, matVacuum); - TGeoMedium* Al = new TGeoMedium("BP_aluminium", 2, matAl); - TGeoMedium* CF = new TGeoMedium("BP_carbonfiber", 3, matCarbonFiber); - TGeoMedium* Stainless = new TGeoMedium("BP_stainless", 4, matStainless); - - Double_t conus_lenght = 1585 * mm; - Double_t rmin1 = 55 * mm; - Double_t rmax1 = 56 * mm; - Double_t rmin2 = 125 * mm; - Double_t rmax2 = 126 * mm; - - Double_t rail_cord[] = {23.0, 0, 4.5, 21.4, 2.8, 4.5}; - Double_t top_plate_cord[] = {10, 0, 2.1, 10.15, 0, 4.05, 11.75, 2.15, 4.0, 15.3, 4.28, - 2.85, 18.1, 5.27, 2.85, 19.75, 5.65, 5.0, 21.1, 5.65, 0}; - Double_t side_plate_cord[] = {11.3, 0, 2, 11.3, 0, 7.55, 16, 6.8, 4.6, 8.7, 6.8, 4.6, - 19.8, 8.3, 2.35, 13.6, 8.3, 2.35, 20.8, 7.9, 3.0, 14.8, 7.9, 3.0, - 21.3, 6.8, 1.5, 16.3, 6.8, 1.5, 21.3, 6.3, 0, 17.4, 6.3, 0}; - - //-----------------------DEFINITION OF TRANSFORMATIONS-------------------------------------------------------------------------------------- - - TGeoRotation* rot_top = new TGeoRotation("rot_top"); - rot_top->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_top = new TGeoCombiTrans(0, 15.2, 0, rot_top); - - TGeoRotation* rot_bott = new TGeoRotation("rot_bott"); - rot_bott->SetAngles(180, 0, 0); - TGeoCombiTrans* combi_bott = new TGeoCombiTrans(0, -15.2, 0, rot_bott); - - TGeoRotation* rot_rail_top = new TGeoRotation("rot_rail_top"); - rot_rail_top->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_rail_top = new TGeoCombiTrans(0, 20.15 - rail_cord[4], rail_cord[2] + 33, rot_rail_top); - - TGeoRotation* rot_rail = new TGeoRotation("rot_rail_bott"); - rot_rail->SetAngles(0, 0, 0); - TGeoCombiTrans* combi_rail_bott = new TGeoCombiTrans(0, -20.15, rail_cord[2] + 33, rot_rail); - - - TGeoTranslation* ident_translation = new TGeoTranslation("ident_translation", 0, 0, 0); - ident_translation->RegisterYourself(); - - TGeoRotation* ident_rotation = new TGeoRotation("ident_rotation"); - ident_rotation->RotateY(0); - ident_rotation->RotateY(0); - ident_rotation->RegisterYourself(); - - TGeoRotation* rot_left = new TGeoRotation("rot_left"); - rot_left->SetAngles(90, 0, 0); - TGeoCombiTrans* combi_left = new TGeoCombiTrans(-15.2, 0, 0, rot_left); - - TGeoRotation* rot_right = new TGeoRotation("rot_right"); - rot_right->SetAngles(270, 0, 0); - TGeoCombiTrans* combi_right = new TGeoCombiTrans(15.2, 0, 0, rot_right); - - TGeoCombiTrans* tr_top_0a = new TGeoCombiTrans(0, 15.2, top_plate_cord[2], rot_top); - TGeoCombiTrans* tr_top_1a = new TGeoCombiTrans(0, 15.2, 2 * top_plate_cord[2] + top_plate_cord[5], rot_top); - TGeoCombiTrans* tr_top_2a = new TGeoCombiTrans( - 0, 15.2, 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8], rot_top); - TGeoCombiTrans* tr_top_3a = new TGeoCombiTrans(0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] - + top_plate_cord[8] + top_plate_cord[8] + top_plate_cord[11], - rot_top); - TGeoCombiTrans* tr_top_4a = - new TGeoCombiTrans(0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] - + top_plate_cord[8] + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14], - rot_top); - TGeoCombiTrans* tr_top_5a = new TGeoCombiTrans( - 0, 15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] + top_plate_cord[8] - + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14] + top_plate_cord[14] + top_plate_cord[17], - rot_top); - - TGeoCombiTrans* tr_bott_0a = new TGeoCombiTrans(0, -15.2, top_plate_cord[2], rot_bott); - TGeoCombiTrans* tr_bott_1a = new TGeoCombiTrans(0, -15.2, 2 * top_plate_cord[2] + top_plate_cord[5], rot_bott); - TGeoCombiTrans* tr_bott_2a = new TGeoCombiTrans( - 0, -15.2, 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8], rot_bott); - TGeoCombiTrans* tr_bott_3a = new TGeoCombiTrans(0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] - + top_plate_cord[8] + top_plate_cord[8] + top_plate_cord[11], - rot_bott); - TGeoCombiTrans* tr_bott_4a = - new TGeoCombiTrans(0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] - + top_plate_cord[8] + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14], - rot_bott); - TGeoCombiTrans* tr_bott_5a = new TGeoCombiTrans( - 0, -15.2, - 2 * top_plate_cord[2] + top_plate_cord[5] + top_plate_cord[5] + top_plate_cord[8] + top_plate_cord[8] - + top_plate_cord[11] + top_plate_cord[11] + top_plate_cord[14] + top_plate_cord[14] + top_plate_cord[17], - rot_bott); - - TGeoCombiTrans* tr_side_left_0a = new TGeoCombiTrans(-15.2, 0, side_plate_cord[2], rot_left); - TGeoCombiTrans* tr_side_left_1a = new TGeoCombiTrans(-15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5], rot_left); - TGeoCombiTrans* tr_side_left_2a = new TGeoCombiTrans( - -15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8], rot_left); - TGeoCombiTrans* tr_side_left_3a = - new TGeoCombiTrans(-15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14], - rot_left); - TGeoCombiTrans* tr_side_left_4a = - new TGeoCombiTrans(-15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20], - rot_left); - TGeoCombiTrans* tr_side_left_5a = new TGeoCombiTrans( - -15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] + side_plate_cord[8] - + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20] + side_plate_cord[20] + side_plate_cord[26], - rot_left); - - TGeoCombiTrans* tr_side_right_0a = new TGeoCombiTrans(15.2, 0, side_plate_cord[2], rot_right); - TGeoCombiTrans* tr_side_right_1a = - new TGeoCombiTrans(15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5], rot_right); - TGeoCombiTrans* tr_side_right_2a = new TGeoCombiTrans( - 15.2, 0, 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8], rot_right); - TGeoCombiTrans* tr_side_right_3a = - new TGeoCombiTrans(15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14], - rot_right); - TGeoCombiTrans* tr_side_right_4a = - new TGeoCombiTrans(15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] - + side_plate_cord[8] + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20], - rot_right); - TGeoCombiTrans* tr_side_right_5a = new TGeoCombiTrans( - 15.2, 0, - 2 * side_plate_cord[2] + side_plate_cord[5] + side_plate_cord[5] + side_plate_cord[8] + side_plate_cord[8] - + side_plate_cord[14] + side_plate_cord[14] + side_plate_cord[20] + side_plate_cord[20] + side_plate_cord[26], - rot_right); - - TGeoRotation* rot_sts_conus_connection = new TGeoRotation("rot_sts_conus_connection"); - rot_sts_conus_connection->RotateZ(180); - TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -1600 * mm, rot_sts_conus_connection); - - TGeoRotation* rotation_of_sts_tube = new TGeoRotation("rotation_of_sts_tube"); - rotation_of_sts_tube->RotateZ(180); - rotation_of_sts_tube->RotateY(-1.2); - TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -1630.001 * mm, rotation_of_sts_tube); - - TGeoRotation* rot_global = new TGeoRotation("rot_global"); - rot_global->RotateY(1.2); - TGeoCombiTrans* ctr_global = new TGeoCombiTrans(0, 0, 3214.99917754 * mm, rot_global); - - TGeoRotation* rot_s1 = new TGeoRotation("rot_s1"); - rot_s1->RotateY(-11.888); - TGeoCombiTrans* ctr_s1 = new TGeoCombiTrans("ctr_s1", -11.46294558 * mm, 0, 84.6 * mm, rot_s1); - - TGeoRotation* rot_s2 = new TGeoRotation("rot_s2"); - rot_s2->RotateY(-26.4732337); - TGeoCombiTrans* ctr_s2 = new TGeoCombiTrans("ctr_s2", (-48.92189672) * mm, 0, (191.30295277) * mm, rot_s2); - - TGeoRotation* rot_s3 = new TGeoRotation("rot_s3"); - rot_s3->RotateZ(180.); - rot_s3->RotateY(-15.505); - - TGeoCombiTrans* ctr_s3 = new TGeoCombiTrans("ctr_s3", (-85.745) * mm, 0, (282.6) * mm, rot_s3); - - TGeoRotation* rot_s4 = new TGeoRotation("rot_s4"); - rot_s4->RotateZ(180.); - rot_s4->RotateY(-4.217); - - TGeoCombiTrans* ctr_s4 = new TGeoCombiTrans("ctr_s4", (-98.226) * mm, 0, 344.15 * mm, rot_s4); - - - TGeoRotation* rot_plate = new TGeoRotation("rot_plate"); - rot_plate->RotateY(-1.2); - TGeoCombiTrans* ctr_plate_up = - new TGeoCombiTrans("ctr_plate_up", -100.194 * mm, (147 + 12.5) * mm, (292.8 + 90) * mm, rot_plate); - TGeoCombiTrans* ctr_plate_down = - new TGeoCombiTrans("ctr_plate_down", -100.194 * mm, -(147 + 12.5) * mm, (292.8 + 90) * mm, rot_plate); - TGeoTranslation* tr_plate_up = new TGeoTranslation("tr_plate_up", 0. * mm, (147 + 12.5) * mm, 0. * mm); - tr_plate_up->RegisterYourself(); - TGeoTranslation* tr_plate_down = new TGeoTranslation("tr_plate_down", 0. * mm, -(147 + 12.5) * mm, 0. * mm); - tr_plate_down->RegisterYourself(); - - TGeoRotation* rot_lsn = new TGeoRotation("rot_lsn"); - //rot_s5->RotateZ(180.); - rot_lsn->RotateY(-90); - TGeoCombiTrans* ctr_lsn = new TGeoCombiTrans("ctr_s5", -22.5 * mm, -159.5 * mm, 534. * mm, rot_lsn); - - TGeoTranslation* mot_transl = new TGeoTranslation("mot_transl", -286.5 * mm, -159.5 * mm, 534. * mm); - - TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); - - TGeoTranslation orig_translation_cone("orig_translation_cone", -0.15707676 * mm, 0, 1645 * mm); - //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); - - - TGeoRotation orig_rotation("orig_rotation"); - orig_rotation.RotateY(1.2); - //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); - //orig_rotation->RegisterYourself(); - - - //TGeoHMatrix orig_combi = orig_translation * orig_rotation; - TGeoHMatrix orig_combi = orig_rotation * orig_translation; - - TGeoHMatrix orig_combi_cone = orig_rotation * orig_translation_cone; - - TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); - - TGeoHMatrix* origin_combi_cone = new TGeoHMatrix(orig_combi_cone); - - - //TGeoTranslation* cone_transl = new TGeoTranslation("cone_transl", -286.5 * mm, -159.5 * mm, 534. * mm); - - TGeoRotation* rot_psd_tube = new TGeoRotation("rot_psd_tube"); - rot_psd_tube->RotateY(0); - TGeoCombiTrans* ctr_psd_tube = new TGeoCombiTrans("ctr_psd_tube", -24.7 * mm, 0. * mm, 10858.02 * mm, rot_psd_tube); - - TGeoRotation* rot_s5 = new TGeoRotation("rot_s5"); - //rot_s5->RotateZ(180.); - rot_s5->RotateY(-1.2); - TGeoCombiTrans* ctr_s5 = new TGeoCombiTrans("ctr_s5", (-100.194) * mm, 0, 381.7 * mm, rot_s5); - - TGeoTranslation* nut_transl = new TGeoTranslation("nut_transl", 0. * mm, 0. * mm, 80. * mm); - nut_transl->RegisterYourself(); - - //------------------------------------DEFINITIONS OF VOLUMES---------------------------------------- - //--- make the top container volume - Double_t worldx = 800 * mm; - Double_t worldy = 220 * mm; - Double_t worldz = 18100 * mm; - //TGeoVolume* full_assembly = geom->MakeBox("pipe_v21f", Vacuum, worldx, worldy, worldz); - TGeoVolumeAssembly* full_assembly = new TGeoVolumeAssembly("pipe_v21f"); - geom->SetTopVolume(full_assembly); - full_assembly->SetVisibility(kTRUE); - //TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 1825 * mm); - TGeoVolume* conical_beam_pipe = new TGeoVolumeAssembly("conical_beam_pipe"); - conical_beam_pipe->SetVisibility(kFALSE); - - TGeoVolume* vacuum_conical_beam_pipe = new TGeoVolumeAssembly("vacuum_conical_beam_pipe"); - vacuum_conical_beam_pipe->SetVisibility(kFALSE); - - //TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 350 * mm, 220 * mm, 600 * mm); - TGeoVolume* bellow_ass = new TGeoVolumeAssembly("Bellow assembly"); - bellow_ass->SetVisibility(kFALSE); - - TGeoVolume* vacuum_bellow_ass = new TGeoVolumeAssembly("Vacuum_bellow assembly"); - vacuum_bellow_ass->SetVisibility(kFALSE); - - // TOP PLATE-------------------------------------------------------------------------------------- - TGeoVolume* sub_t_plate1 = geom->MakeArb8("sub_t_plate1", CF, top_plate_cord[2]); - sub_t_plate1->SetLineColor(kGray); - TGeoArb8* t_arb1 = (TGeoArb8*) sub_t_plate1->GetShape(); - t_arb1->SetVertex(0, top_plate_cord[0], top_plate_cord[1]); - t_arb1->SetVertex(1, -top_plate_cord[0], top_plate_cord[1]); - t_arb1->SetVertex(2, -top_plate_cord[0], top_plate_cord[1] + 1.0); - t_arb1->SetVertex(3, top_plate_cord[0], top_plate_cord[1] + 1.0); - t_arb1->SetVertex(4, top_plate_cord[3], top_plate_cord[4]); - t_arb1->SetVertex(5, -top_plate_cord[3], top_plate_cord[4]); - t_arb1->SetVertex(6, -top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb1->SetVertex(7, top_plate_cord[3], top_plate_cord[4] + 1.0); - - TGeoVolume* sub_t_plate2 = geom->MakeArb8("sub_t_plate2", CF, top_plate_cord[5]); - sub_t_plate2->SetLineColor(kGray); - TGeoArb8* t_arb2 = (TGeoArb8*) sub_t_plate2->GetShape(); - t_arb2->SetVertex(0, top_plate_cord[3], top_plate_cord[4]); - t_arb2->SetVertex(1, -top_plate_cord[3], top_plate_cord[4]); - t_arb2->SetVertex(2, -top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb2->SetVertex(3, top_plate_cord[3], top_plate_cord[4] + 1.0); - t_arb2->SetVertex(4, top_plate_cord[6], top_plate_cord[7]); - t_arb2->SetVertex(5, -top_plate_cord[6], top_plate_cord[7]); - t_arb2->SetVertex(6, -top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb2->SetVertex(7, top_plate_cord[6], top_plate_cord[7] + 1.0); - - TGeoVolume* sub_t_plate3 = geom->MakeArb8("sub_t_plate3", CF, top_plate_cord[8]); - sub_t_plate3->SetLineColor(kGray); - TGeoArb8* t_arb3 = (TGeoArb8*) sub_t_plate3->GetShape(); - t_arb3->SetVertex(0, top_plate_cord[6], top_plate_cord[7]); - t_arb3->SetVertex(1, -top_plate_cord[6], top_plate_cord[7]); - t_arb3->SetVertex(2, -top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb3->SetVertex(3, top_plate_cord[6], top_plate_cord[7] + 1.0); - t_arb3->SetVertex(4, top_plate_cord[9], top_plate_cord[10]); - t_arb3->SetVertex(5, -top_plate_cord[9], top_plate_cord[10]); - t_arb3->SetVertex(6, -top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb3->SetVertex(7, top_plate_cord[9], top_plate_cord[10] + 1.0); - - TGeoVolume* sub_t_plate4 = geom->MakeArb8("sub_t_plate4", CF, top_plate_cord[11]); - sub_t_plate4->SetLineColor(kGray); - TGeoArb8* t_arb4 = (TGeoArb8*) sub_t_plate4->GetShape(); - t_arb4->SetVertex(0, top_plate_cord[9], top_plate_cord[10]); - t_arb4->SetVertex(1, -top_plate_cord[9], top_plate_cord[10]); - t_arb4->SetVertex(2, -top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb4->SetVertex(3, top_plate_cord[9], top_plate_cord[10] + 1.0); - t_arb4->SetVertex(4, top_plate_cord[12], top_plate_cord[13]); - t_arb4->SetVertex(5, -top_plate_cord[12], top_plate_cord[13]); - t_arb4->SetVertex(6, -top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb4->SetVertex(7, top_plate_cord[12], top_plate_cord[13] + 1.0); - - TGeoVolume* sub_t_plate5 = geom->MakeArb8("sub_t_plate5", CF, top_plate_cord[14]); - sub_t_plate5->SetLineColor(kGray); - TGeoArb8* t_arb5 = (TGeoArb8*) sub_t_plate5->GetShape(); - t_arb5->SetVertex(0, top_plate_cord[12], top_plate_cord[13]); - t_arb5->SetVertex(1, -top_plate_cord[12], top_plate_cord[13]); - t_arb5->SetVertex(2, -top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb5->SetVertex(3, top_plate_cord[12], top_plate_cord[13] + 1.0); - t_arb5->SetVertex(4, top_plate_cord[15], top_plate_cord[17]); - t_arb5->SetVertex(5, -top_plate_cord[15], top_plate_cord[17]); - t_arb5->SetVertex(6, -top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb5->SetVertex(7, top_plate_cord[15], top_plate_cord[17] + 1.0); - - TGeoVolume* sub_t_plate6 = geom->MakeArb8("sub_t_plate6", CF, top_plate_cord[17]); - sub_t_plate6->SetLineColor(kGray); - TGeoArb8* t_arb6 = (TGeoArb8*) sub_t_plate6->GetShape(); - t_arb6->SetVertex(0, top_plate_cord[15], top_plate_cord[17]); - t_arb6->SetVertex(1, -top_plate_cord[15], top_plate_cord[17]); - t_arb6->SetVertex(2, -top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(3, top_plate_cord[15], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(4, top_plate_cord[18], top_plate_cord[17]); - t_arb6->SetVertex(5, -top_plate_cord[18], top_plate_cord[17]); - t_arb6->SetVertex(6, -top_plate_cord[18], top_plate_cord[17] + 1.0); - t_arb6->SetVertex(7, top_plate_cord[18], top_plate_cord[17] + 1.0); - - // SIDE PLATE-------------------------------------------------------------------------------------- - - TGeoVolume* sub_s_plate1 = geom->MakeArb8("sub_s_plate1", CF, side_plate_cord[2]); - sub_s_plate1->SetLineColor(kGray); - TGeoArb8* s_arb1 = (TGeoArb8*) sub_s_plate1->GetShape(); - s_arb1->SetVertex(0, side_plate_cord[0], side_plate_cord[1]); - s_arb1->SetVertex(1, -side_plate_cord[0], side_plate_cord[1]); - s_arb1->SetVertex(2, -side_plate_cord[0], side_plate_cord[1] + 1.0); - s_arb1->SetVertex(3, side_plate_cord[0], side_plate_cord[1] + 1.0); - s_arb1->SetVertex(4, side_plate_cord[3], side_plate_cord[4]); - s_arb1->SetVertex(5, -side_plate_cord[3], side_plate_cord[4]); - s_arb1->SetVertex(6, -side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb1->SetVertex(7, side_plate_cord[3], side_plate_cord[4] + 1.0); - - TGeoVolume* sub_s_plate2 = geom->MakeArb8("sub_s_plate2", CF, side_plate_cord[5]); - sub_s_plate2->SetLineColor(kGray); - TGeoArb8* s_arb2 = (TGeoArb8*) sub_s_plate2->GetShape(); - s_arb2->SetVertex(0, side_plate_cord[3], side_plate_cord[4]); - s_arb2->SetVertex(1, -side_plate_cord[3], side_plate_cord[4]); - s_arb2->SetVertex(2, -side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb2->SetVertex(3, side_plate_cord[3], side_plate_cord[4] + 1.0); - s_arb2->SetVertex(4, side_plate_cord[6], side_plate_cord[7]); - s_arb2->SetVertex(5, -side_plate_cord[6], side_plate_cord[7]); - s_arb2->SetVertex(6, -side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb2->SetVertex(7, side_plate_cord[6], side_plate_cord[7] + 1.0); - - TGeoVolume* sub_s_plate3 = geom->MakeArb8("sub_s_plate3", CF, side_plate_cord[8]); - sub_s_plate3->SetLineColor(kGray); - TGeoArb8* s_arb3 = (TGeoArb8*) sub_s_plate3->GetShape(); - s_arb3->SetVertex(0, side_plate_cord[6], side_plate_cord[7]); - s_arb3->SetVertex(1, side_plate_cord[9], side_plate_cord[10]); - s_arb3->SetVertex(2, side_plate_cord[9], side_plate_cord[10] + 1.0); - s_arb3->SetVertex(3, side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb3->SetVertex(4, side_plate_cord[12], side_plate_cord[13]); - s_arb3->SetVertex(5, side_plate_cord[15], side_plate_cord[16]); - s_arb3->SetVertex(6, side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb3->SetVertex(7, side_plate_cord[12], side_plate_cord[13] + 1.0); - - TGeoVolume* sub_s_plate4 = geom->MakeArb8("sub_s_plate4", CF, side_plate_cord[8]); - sub_s_plate4->SetLineColor(kGray); - TGeoArb8* s_arb4 = (TGeoArb8*) sub_s_plate4->GetShape(); - s_arb4->SetVertex(0, -side_plate_cord[6], side_plate_cord[7]); - s_arb4->SetVertex(1, -side_plate_cord[9], side_plate_cord[10]); - s_arb4->SetVertex(2, -side_plate_cord[9], side_plate_cord[10] + 1.0); - s_arb4->SetVertex(3, -side_plate_cord[6], side_plate_cord[7] + 1.0); - s_arb4->SetVertex(4, -side_plate_cord[12], side_plate_cord[13]); - s_arb4->SetVertex(5, -side_plate_cord[15], side_plate_cord[16]); - s_arb4->SetVertex(6, -side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb4->SetVertex(7, -side_plate_cord[12], side_plate_cord[13] + 1.0); - - TGeoVolume* sub_s_plate5 = geom->MakeArb8("sub_s_plate5", CF, side_plate_cord[14]); - sub_s_plate5->SetLineColor(kGray); - TGeoArb8* s_arb5 = (TGeoArb8*) sub_s_plate5->GetShape(); - s_arb5->SetVertex(0, side_plate_cord[12], side_plate_cord[13]); - s_arb5->SetVertex(1, side_plate_cord[15], side_plate_cord[16]); - s_arb5->SetVertex(2, side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb5->SetVertex(3, side_plate_cord[12], side_plate_cord[13] + 1.0); - s_arb5->SetVertex(4, side_plate_cord[18], side_plate_cord[19]); - s_arb5->SetVertex(5, side_plate_cord[21], side_plate_cord[22]); - s_arb5->SetVertex(6, side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb5->SetVertex(7, side_plate_cord[18], side_plate_cord[19] + 1.0); - - TGeoVolume* sub_s_plate6 = geom->MakeArb8("sub_s_plate6", CF, side_plate_cord[14]); - sub_s_plate6->SetLineColor(kGray); - TGeoArb8* s_arb6 = (TGeoArb8*) sub_s_plate6->GetShape(); - s_arb6->SetVertex(0, -side_plate_cord[12], side_plate_cord[13]); - s_arb6->SetVertex(1, -side_plate_cord[15], side_plate_cord[16]); - s_arb6->SetVertex(2, -side_plate_cord[15], side_plate_cord[16] + 1.0); - s_arb6->SetVertex(3, -side_plate_cord[12], side_plate_cord[13] + 1.0); - s_arb6->SetVertex(4, -side_plate_cord[18], side_plate_cord[19]); - s_arb6->SetVertex(5, -side_plate_cord[21], side_plate_cord[22]); - s_arb6->SetVertex(6, -side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb6->SetVertex(7, -side_plate_cord[18], side_plate_cord[19] + 1.0); - - TGeoVolume* sub_s_plate7 = geom->MakeArb8("sub_s_plate7", CF, side_plate_cord[20]); - sub_s_plate7->SetLineColor(kGray); - TGeoArb8* s_arb7 = (TGeoArb8*) sub_s_plate7->GetShape(); - s_arb7->SetVertex(0, side_plate_cord[18], side_plate_cord[19]); - s_arb7->SetVertex(1, side_plate_cord[21], side_plate_cord[22]); - s_arb7->SetVertex(2, side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb7->SetVertex(3, side_plate_cord[18], side_plate_cord[19] + 1.0); - s_arb7->SetVertex(4, side_plate_cord[24], side_plate_cord[25]); - s_arb7->SetVertex(5, side_plate_cord[27], side_plate_cord[28]); - s_arb7->SetVertex(6, side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb7->SetVertex(7, side_plate_cord[24], side_plate_cord[25] + 1.0); - - TGeoVolume* sub_s_plate8 = geom->MakeArb8("sub_s_plate8", CF, side_plate_cord[20]); - sub_s_plate8->SetLineColor(kGray); - TGeoArb8* s_arb8 = (TGeoArb8*) sub_s_plate8->GetShape(); - s_arb8->SetVertex(0, -side_plate_cord[18], side_plate_cord[19]); - s_arb8->SetVertex(1, -side_plate_cord[21], side_plate_cord[22]); - s_arb8->SetVertex(2, -side_plate_cord[21], side_plate_cord[22] + 1.0); - s_arb8->SetVertex(3, -side_plate_cord[18], side_plate_cord[19] + 1.0); - s_arb8->SetVertex(4, -side_plate_cord[24], side_plate_cord[25]); - s_arb8->SetVertex(5, -side_plate_cord[27], side_plate_cord[28]); - s_arb8->SetVertex(6, -side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb8->SetVertex(7, -side_plate_cord[24], side_plate_cord[25] + 1.0); - - TGeoVolume* sub_s_plate9 = geom->MakeArb8("sub_s_plate9", CF, side_plate_cord[26]); - sub_s_plate9->SetLineColor(kGray); - TGeoArb8* s_arb9 = (TGeoArb8*) sub_s_plate9->GetShape(); - s_arb9->SetVertex(0, side_plate_cord[24], side_plate_cord[25]); - s_arb9->SetVertex(1, side_plate_cord[27], side_plate_cord[28]); - s_arb9->SetVertex(2, side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb9->SetVertex(3, side_plate_cord[24], side_plate_cord[25] + 1.0); - s_arb9->SetVertex(4, side_plate_cord[30], side_plate_cord[31]); - s_arb9->SetVertex(5, side_plate_cord[33], side_plate_cord[34]); - s_arb9->SetVertex(6, side_plate_cord[33], side_plate_cord[34] + 1.0); - s_arb9->SetVertex(7, side_plate_cord[30], side_plate_cord[31] + 1.0); - - TGeoVolume* sub_s_plate10 = geom->MakeArb8("sub_s_plate10", CF, side_plate_cord[26]); - sub_s_plate10->SetLineColor(kGray); - TGeoArb8* s_arb10 = (TGeoArb8*) sub_s_plate10->GetShape(); - s_arb10->SetVertex(0, -side_plate_cord[24], side_plate_cord[25]); - s_arb10->SetVertex(1, -side_plate_cord[27], side_plate_cord[28]); - s_arb10->SetVertex(2, -side_plate_cord[27], side_plate_cord[28] + 1.0); - s_arb10->SetVertex(3, -side_plate_cord[24], side_plate_cord[25] + 1.0); - s_arb10->SetVertex(4, -side_plate_cord[30], side_plate_cord[31]); - s_arb10->SetVertex(5, -side_plate_cord[33], side_plate_cord[34]); - s_arb10->SetVertex(6, -side_plate_cord[33], side_plate_cord[34] + 1.0); - s_arb10->SetVertex(7, -side_plate_cord[30], side_plate_cord[31] + 1.0); - - // RAIL------------------------------------------------------------------------------------ - TGeoVolume* sub_rail = geom->MakeArb8("sub_rail", Al, rail_cord[2]); - sub_rail->SetLineColor(kBlue); - TGeoArb8* r_arb1 = (TGeoArb8*) sub_rail->GetShape(); - r_arb1->SetVertex(0, rail_cord[0], rail_cord[1]); - r_arb1->SetVertex(1, -rail_cord[0], rail_cord[1]); - r_arb1->SetVertex(2, -rail_cord[0], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(3, rail_cord[0], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(4, rail_cord[3], rail_cord[1]); - r_arb1->SetVertex(5, -rail_cord[3], rail_cord[1]); - r_arb1->SetVertex(6, -rail_cord[3], rail_cord[1] + rail_cord[4]); - r_arb1->SetVertex(7, rail_cord[3], rail_cord[1] + rail_cord[4]); - - TGeoBBox* flange_box = new TGeoBBox("flange_box", 15.2, 15.2, 1.5); - TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 1.6); - - // DOWNSTREAM_CARBON-FIBRE_RICH_MUCH_FLANGE_TO_BELLOW_ASS------------------------------------------------------------------------------------ - TGeoBBox* rich_much_flange_box = new TGeoBBox("rich_much_flange_box", 15.2, 15.2, 1.5); - TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.55, 1.6); - TGeoCompositeShape* rich_much_flange_composite = - new TGeoCompositeShape("flange_composite_rich", "rich_much_flange_box-rich_much_flange_hole"); - TGeoVolume* rich_much_downstream_flange = - new TGeoVolume("rich_much_downstream_flange", rich_much_flange_composite, CF); - rich_much_downstream_flange->SetLineColor(kGray); - - // VACUUM IN THE FLANGE---------------------------------------------------------------------------------------------- - TGeoTube* vacuum_flange_hole = new TGeoTube("vacuum_flange_hole", 0., 12.5, 1.5); - TGeoVolume* vacuum_downstream_flange = - new TGeoVolume("vacuum_downstream_flange", vacuum_flange_hole, Vacuum); - vacuum_downstream_flange->SetLineColor(kRed); - - // CONICAL_BEAM_PIPE---------------------------------------------------------------------------------------------------------- - TGeoCone* conus = new TGeoCone("conus", conus_lenght, rmin1, rmax1, rmin2, rmax2); - TGeoVolume* conus_volume = new TGeoVolume("conus_volume", conus, CF); - conus_volume->SetLineColor(kGray); - - //-------------------------------VACUUM IN CONE------------------------------------------------------------------- - TGeoCone* vacuum_conus = new TGeoCone("vacuum_conus", conus_lenght, 0, rmin1, 0, rmin2); - TGeoVolume* vacuum_conus_volume = new TGeoVolume("vacuum_conus_volume", vacuum_conus, Vacuum); - vacuum_conus_volume->SetLineColor(kGreen); - - // CONNECTING TUBE-------------------------------------------------------------------------------------------------------------------------------------------------------- - TGeoCtub* tube_connection = new TGeoCtub("tube_connection", 55. * mm, 56. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); - TGeoVolume* tube_connection_volume = new TGeoVolume("tube_connection_volume", tube_connection, CF); - tube_connection_volume->SetLineColor(kGray); - - //------------------------VACUUM IN THE CONNECTING TUBE-------------------------------------------------------------- - TGeoCtub* vacuum_tube_connection = new TGeoCtub("vacuum_tube_connection", 0. * mm, 55. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); - TGeoVolume* vacuum_tube_connection_volume = new TGeoVolume("vacuum_tube_connection_volume", vacuum_tube_connection, Vacuum); - vacuum_tube_connection_volume->SetLineColor(kGreen); - - // STS tube----------------------------------------------------------------------------------------------------- - TGeoCtub* tube_connection_sts = new TGeoCtub("tube_connection_sts", 55. * mm, 56. * mm, 15. * mm, 0., 360., 0., 0., 1., 0.05235892, 0., 4.99972585); - TGeoVolume* tube_connection_sts_volume = new TGeoVolume("tube_connection_sts_volume", tube_connection_sts, CF); - tube_connection_sts_volume->SetLineColor(kGray); - - //-------------------------------BELLOW DEFINITION---------------------------------------------------------------- - TGeoCompositeShape* flange_composite = new TGeoCompositeShape("flange_composite", "flange_box-flange_hole"); - TGeoVolume* bellow_flange_0 = new TGeoVolume("bellow_flange_0", flange_composite, Stainless); - bellow_flange_0->SetLineColor(kRed); - - TGeoCtub* bellow_s1 = new TGeoCtub("bellow_s1", 121.9435 * mm, 139.4435 * mm, 55.64459032 * mm, 0., 360., -0.206, 0., - -0.979, -0.206, 0., 0.979); - TGeoVolume* bellow_1 = new TGeoVolume("bellow_s1", bellow_s1, Stainless); - bellow_1->SetLineColor(kRed); - - TGeoCtub* bellow_s2 = new TGeoCtub("bellow_s1", 124.842 * mm, 142.342 * mm, 58.3156 * mm, 0., 360., -0.04705248, 0., - -0.998892419, 0.04705248, 0, 0.998892419); - TGeoVolume* bellow_2 = new TGeoVolume("bellow_s2", bellow_s2, Stainless); - bellow_2->SetLineColor(kRed); - - TGeoCtub* bellow_s3 = new TGeoCtub("bellow_s3", 123.5175 * mm, 141.0175 * mm, 40.5 * mm, 0., 360., -0.1439, 0., - -0.9896, -0.1439, 0., 0.9896); - TGeoVolume* bellow_3 = new TGeoVolume("bellow_s3", bellow_s3, Stainless); - bellow_3->SetLineColor(kRed); - - TGeoCtub* bellow_s4 = new TGeoCtub("bellow_s4", 124.8025 * mm, 142.3025 * mm, 22.5 * mm, 0., 360., -0.0526, 0., - -0.9972, -0.0526, 0., 0.9972); - TGeoVolume* bellow_4 = new TGeoVolume("bellow_s3", bellow_s4, Stainless); - bellow_4->SetLineColor(kRed); - - //-------------------------------VACUUM BELLOW DEFINITION---------------------------------------------------------------- - TGeoVolume* vacuum_bellow_flange_0 = new TGeoVolume("vacuum_bellow_flange_0", vacuum_flange_hole, Vacuum); - vacuum_bellow_flange_0->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s1 = new TGeoCtub("vacuum_bellow_s1", 0 * mm, 121.9435 * mm, 55.64459032 * mm, 0., 360., -0.206, 0., - -0.979, -0.206, 0., 0.979); - TGeoVolume* vacuum_bellow_1 = new TGeoVolume("vacuum_bellow_s1", vacuum_bellow_s1, Vacuum); - vacuum_bellow_1->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s2 = new TGeoCtub("vacuum_bellow_s2", 0 * mm, 124.842 * mm, 58.3156 * mm, 0., 360., -0.04705248, 0., - -0.998892419, 0.04705248, 0, 0.998892419); - TGeoVolume* vacuum_bellow_2 = new TGeoVolume("vacuum_bellow_s2", vacuum_bellow_s2, Vacuum); - vacuum_bellow_2->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s3 = new TGeoCtub("vacuum_bellow_s3", 0 * mm, 123.5175 * mm, 40.5 * mm, 0., 360., -0.1439, 0., - -0.9896, -0.1439, 0., 0.9896); - TGeoVolume* vacuum_bellow_3 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s3, Vacuum); - vacuum_bellow_3->SetLineColor(kGreen); - - TGeoCtub* vacuum_bellow_s4 = new TGeoCtub("vacuum_bellow_s4", 0 * mm, 124.8025 * mm, 22.5 * mm, 0., 360., -0.0526, 0., - -0.9972, -0.0526, 0., 0.9972); - TGeoVolume* vacuum_bellow_4 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s4, Vacuum); - vacuum_bellow_4->SetLineColor(kGreen); - - - TGeoBBox* roll_plate_s = new TGeoBBox("roll_plate_s", 75. * mm, 12.5 * mm, 90. * mm); - TGeoVolume* roll_plate = new TGeoVolume("roll_plate", roll_plate_s, Al); - roll_plate->SetLineColor(kBlue); - - TGeoTube* flange_cyl = new TGeoTube("flange_cyl", 0., 15., 1.5); - TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 1.6); - TGeoCompositeShape* flange_cyl_composite = new TGeoCompositeShape( - "flange_cyl_composite", "((flange_cyl-flange_cyl_hole)-roll_plate_s:tr_plate_up)-roll_plate_s:tr_plate_down"); - TGeoVolume* bellow_flange_1 = new TGeoVolume("bellow_flange_1", flange_cyl_composite, Stainless); - bellow_flange_1->SetLineColor(kRed); - - //-------------------------------VACUUM FLANGE BELLOW------------------------------------------------------------------ - TGeoTube* vacuum_flange_cyl_hole = new TGeoTube("vacuum_flange_cyl_hole", 0., 8.9, 1.5); - TGeoVolume* vacuum_bellow_flange_1 = new TGeoVolume("vacuum_bellow_flange_1", vacuum_flange_cyl_hole, Vacuum); - vacuum_bellow_flange_1->SetLineColor(kGreen); - - TGeoTube* lead_screw_s = new TGeoTube("lead_screw_s", 0. * mm, 6. * mm, 205. * mm); - TGeoTube* nut_small_s = new TGeoTube("nut_small_s", 6. * mm, 14. * mm, 50. * mm); - TGeoTube* nut_big_s = new TGeoTube("nut_big_s", 14. * mm, 24. * mm, 27. * mm); - - TGeoCompositeShape* lead_screw_nut_s = - new TGeoCompositeShape("lead_screw_nut_s", "lead_screw_s+nut_small_s:nut_transl+nut_big_s:nut_transl"); - TGeoVolume* lead_screw_nut = new TGeoVolume("lead_screw_nut", lead_screw_nut_s, Stainless); - lead_screw_nut->SetLineColor(kRed); - - - TGeoBBox* motor_s = new TGeoBBox("motor_s", 57.5 * mm, 30. * mm, 30. * mm); - TGeoVolume* motor = new TGeoVolume("motor", motor_s, Stainless); - motor->SetLineColor(kRed); - - - TGeoTube* psd_tube_s = new TGeoTube("psd_tube_s", 90. * mm, 92. * mm, 7230. * mm); - TGeoVolume* psd_tube = new TGeoVolume("psd_tube", psd_tube_s, CF); - psd_tube->SetLineColor(kGray); - - //------------------------------VACUUM PSD TUBE------------------------------------------------------------------------- - TGeoTube* vacuum_psd_tube_s = new TGeoTube("vacuum_psd_tube_s", 0. * mm, 90. * mm, 7230. * mm); - TGeoVolume* vacuum_psd_tube = new TGeoVolume("vacuum_psd_tube", vacuum_psd_tube_s, Vacuum); - vacuum_psd_tube->SetLineColor(kGreen); - - //------------------TOP plate------------------------------ - bellow_ass->AddNode(sub_t_plate1, 1, tr_top_0a); - bellow_ass->AddNode(sub_t_plate2, 1, tr_top_1a); - bellow_ass->AddNode(sub_t_plate3, 1, tr_top_2a); - bellow_ass->AddNode(sub_t_plate4, 1, tr_top_3a); - bellow_ass->AddNode(sub_t_plate5, 1, tr_top_4a); - bellow_ass->AddNode(sub_t_plate6, 1, tr_top_5a); - - //-----------------BOTTOM plate---------------------------- - bellow_ass->AddNode(sub_t_plate1, 2, tr_bott_0a); - bellow_ass->AddNode(sub_t_plate2, 2, tr_bott_1a); - bellow_ass->AddNode(sub_t_plate3, 2, tr_bott_2a); - bellow_ass->AddNode(sub_t_plate4, 2, tr_bott_3a); - bellow_ass->AddNode(sub_t_plate5, 2, tr_bott_4a); - bellow_ass->AddNode(sub_t_plate6, 2, tr_bott_5a); - - //-----------------LEFT plate------------------------------ - bellow_ass->AddNode(sub_s_plate1, 1, tr_side_left_0a); - bellow_ass->AddNode(sub_s_plate2, 1, tr_side_left_1a); - bellow_ass->AddNode(sub_s_plate3, 1, tr_side_left_2a); - bellow_ass->AddNode(sub_s_plate4, 1, tr_side_left_2a); - bellow_ass->AddNode(sub_s_plate5, 1, tr_side_left_3a); - bellow_ass->AddNode(sub_s_plate6, 1, tr_side_left_3a); - bellow_ass->AddNode(sub_s_plate7, 1, tr_side_left_4a); - bellow_ass->AddNode(sub_s_plate8, 1, tr_side_left_4a); - bellow_ass->AddNode(sub_s_plate9, 1, tr_side_left_5a); - bellow_ass->AddNode(sub_s_plate10, 1, tr_side_left_5a); - - //---------------RIGHT plate-------------------------------- - bellow_ass->AddNode(sub_s_plate1, 2, tr_side_right_0a); - bellow_ass->AddNode(sub_s_plate2, 2, tr_side_right_1a); - bellow_ass->AddNode(sub_s_plate3, 2, tr_side_right_2a); - bellow_ass->AddNode(sub_s_plate4, 2, tr_side_right_2a); - bellow_ass->AddNode(sub_s_plate5, 2, tr_side_right_3a); - bellow_ass->AddNode(sub_s_plate6, 2, tr_side_right_3a); - bellow_ass->AddNode(sub_s_plate7, 2, tr_side_right_4a); - bellow_ass->AddNode(sub_s_plate8, 2, tr_side_right_4a); - bellow_ass->AddNode(sub_s_plate9, 2, tr_side_right_5a); - bellow_ass->AddNode(sub_s_plate10, 2, tr_side_right_5a); - - //------------------RAIL------------------------------------- - bellow_ass->AddNode(sub_rail, 1, combi_rail_top); - bellow_ass->AddNode(sub_rail, 2, combi_rail_bott); - - //----------------Bellow with flanges----------------------------- - bellow_ass->AddNode(bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); - bellow_ass->AddNode(bellow_1, 1, ctr_s1); - bellow_ass->AddNode(bellow_2, 1, ctr_s2); - bellow_ass->AddNode(bellow_3, 1, ctr_s3); - bellow_ass->AddNode(bellow_4, 1, ctr_s4); - bellow_ass->AddNode(bellow_flange_1, 1, ctr_s5); - - //-----------------Vacuum in bellow and flanges - vacuum_bellow_ass->AddNode(vacuum_bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); - vacuum_bellow_ass->AddNode(vacuum_bellow_1, 1, ctr_s1); - vacuum_bellow_ass->AddNode(vacuum_bellow_2, 1, ctr_s2); - vacuum_bellow_ass->AddNode(vacuum_bellow_3, 1, ctr_s3); - vacuum_bellow_ass->AddNode(vacuum_bellow_4, 1, ctr_s4); - vacuum_bellow_ass->AddNode(vacuum_bellow_flange_1, 1, ctr_s5); - - //------------------DRIVE assembly-------------------------------------- - bellow_ass->AddNode(roll_plate, 1, ctr_plate_up); - bellow_ass->AddNode(roll_plate, 2, ctr_plate_down); - bellow_ass->AddNode(lead_screw_nut, 1, ctr_lsn); - bellow_ass->AddNode(motor, 1, mot_transl); - - //-------------------CONICAL section-------------------------------------------------- - conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); - // conical_beam_pipe->AddNode(conical_beam_pipe_volume, 1, new TGeoTranslation(0, 0, -1585 * mm)); - conical_beam_pipe->AddNode(conus_volume, 1, new TGeoTranslation(0, 0, 0)); - conical_beam_pipe->AddNode(tube_connection_volume, 1, ctr_sts_conus_connection); - //conical_beam_pipe->AddNode(tube_connection_sts_volume, 1, ctr_sts_tube); //unexplained "nonexisting" overlap - - //-------------------VACUUM in CONICAL section-------------------------------------------------- - //vacuum_conical_beam_pipe->AddNode(vacuum_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); // not needed - vacuum_conical_beam_pipe->AddNode(vacuum_conus_volume, 1, new TGeoTranslation(0, 0, 0)); - vacuum_conical_beam_pipe->AddNode(vacuum_tube_connection_volume, 1, ctr_sts_conus_connection); - - //------------------INSERT into top volume - full_assembly->AddNode(conical_beam_pipe, 1, origin_combi_cone); - full_assembly->AddNode(bellow_ass, 1, origin_combi); - full_assembly->AddNode(psd_tube, 1, ctr_psd_tube); - full_assembly->AddNode(vacuum_conical_beam_pipe, 1, origin_combi_cone); - full_assembly->AddNode(vacuum_bellow_ass, 1, origin_combi); - full_assembly->AddNode(vacuum_psd_tube, 1, ctr_psd_tube); - - //beampipe->AddNode(full_assembly,1, new TGeoTranslation(0, 0, 0*mm)); - // --- close the geometry - geom->CloseGeometry(); - - //--- draw the ROOT box - geom->SetVisLevel(4); - full_assembly->Draw(); - if (gPad && !gROOT->IsBatch()) gPad->GetViewer3D(); - - // --------------- Finish ----------------------------------------------- - TString geo_bin_filename = "pipe_"; - TString geo_name = geo_bin_filename + geoTag; - geo_bin_filename = geo_bin_filename + geoTag + ".geo.root"; - TFile* binfile; - binfile = new TFile(geo_bin_filename, "RECREATE"); - geom->GetTopVolume()->Write(geo_name); // outputting on the top volume - TGeoTranslation* trans = new TGeoTranslation(0.0, 0.0, 82.0); - trans->Write("trans"); - cout << endl; - cout << "Geometry " << geom->GetTopVolume()->GetName() << " written to " << geo_bin_filename << endl; - binfile->Close(); - //--- close the geometry - geom->CloseGeometry(); - //gGeoManager->CheckOverlaps(0.000001); - //gGeoManager->GetListOfOverlaps()->Print(); -} diff --git a/macro/pipe/fair/create_bpipe_geometry_v21e.C b/macro/pipe/fair/create_bpipe_geometry_v21e.C index f3cac70df1a99ba9402c18ab1506e5432101efd6..722e557643721681509e01c868bc30170f8f30bd 100644 --- a/macro/pipe/fair/create_bpipe_geometry_v21e.C +++ b/macro/pipe/fair/create_bpipe_geometry_v21e.C @@ -24,7 +24,6 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") gSystem->Load("libGeom"); TGeoManager* geom = new TGeoManager("beampipe_v21e", "Beampipe for maximum deflection"); - //--- define some materials TGeoMixture* matCarbonFiber = new TGeoMixture("BP_carbonfiber", 4, 1.5); matCarbonFiber->AddElement(12.001, 6.0, 0.8926); @@ -59,14 +58,13 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") Double_t rmin2 = 125 * mm; Double_t rmax2 = 126 * mm; - Double_t rail_cord[] = {23.1, 0, 4.5, 21.5, 2.8, 4.5}; + Double_t rail_cord[] = {23.0, 0, 4.5, 21.4, 2.8, 4.5}; Double_t top_plate_cord[] = {10, 0, 2.1, 10.15, 0, 4.05, 11.75, 2.15, 4.0, 15.3, 4.28, 2.85, 18.1, 5.27, 2.85, 19.75, 5.65, 5.0, 21.1, 5.65, 0}; Double_t side_plate_cord[] = {11.3, 0, 2, 11.3, 0, 7.55, 16, 6.8, 4.6, 8.7, 6.8, 4.6, 19.8, 8.3, 2.35, 13.6, 8.3, 2.35, 20.8, 7.9, 3.0, 14.8, 7.9, 3.0, 21.3, 6.8, 1.5, 16.3, 6.8, 1.5, 21.3, 6.3, 0, 17.4, 6.3, 0}; - //-----------------------DEFINITION OF TRANSFORMATIONS-------------------------------------------------------------------------------------- TGeoRotation* rot_top = new TGeoRotation("rot_top"); @@ -91,25 +89,8 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") TGeoRotation* ident_rotation = new TGeoRotation("ident_rotation"); ident_rotation->RotateY(0); - ident_rotation->RotateY(0); ident_rotation->RegisterYourself(); - TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); - //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); - - - TGeoRotation orig_rotation("orig_rotation"); - orig_rotation.RotateY(1.2); - //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); - //orig_rotation->RegisterYourself(); - - - //TGeoHMatrix orig_combi = orig_translation * orig_rotation; - TGeoHMatrix orig_combi = orig_rotation * orig_translation; - - TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); - - TGeoRotation* rot_left = new TGeoRotation("rot_left"); rot_left->SetAngles(90, 0, 0); TGeoCombiTrans* combi_left = new TGeoCombiTrans(-15.2, 0, 0, rot_left); @@ -198,13 +179,13 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") rot_right); TGeoRotation* rot_sts_conus_connection = new TGeoRotation("rot_sts_conus_connection"); - rot_sts_conus_connection->RotateZ(180); - TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -3185 * mm, rot_sts_conus_connection); + //rot_sts_conus_connection->RotateZ(180); + TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -1600.00 * mm, rot_sts_conus_connection); TGeoRotation* rotation_of_sts_tube = new TGeoRotation("rotation_of_sts_tube"); - rotation_of_sts_tube->RotateZ(180); + //rotation_of_sts_tube->RotateZ(180); rotation_of_sts_tube->RotateY(-1.2); - TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -3214.99917754 * mm, rotation_of_sts_tube); + TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -1630.50 * mm, rotation_of_sts_tube); TGeoRotation* rot_global = new TGeoRotation("rot_global"); rot_global->RotateY(1.2); @@ -251,6 +232,30 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") TGeoTranslation* mot_transl = new TGeoTranslation("mot_transl", -286.5 * mm, -159.5 * mm, 534. * mm); + TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); + + TGeoTranslation orig_translation_cone("orig_translation_cone", -0.15707676 * mm, 0, 1645 * mm); + //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); + + + TGeoRotation orig_rotation("orig_rotation"); + orig_rotation.RotateY(1.2); + //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); + //orig_rotation->RegisterYourself(); + + + //TGeoHMatrix orig_combi = orig_translation * orig_rotation; + TGeoHMatrix orig_combi = orig_rotation * orig_translation; + + TGeoHMatrix orig_combi_cone = orig_rotation * orig_translation_cone; + + TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); + + TGeoHMatrix* origin_combi_cone = new TGeoHMatrix(orig_combi_cone); + + + //TGeoTranslation* cone_transl = new TGeoTranslation("cone_transl", -286.5 * mm, -159.5 * mm, 534. * mm); + TGeoRotation* rot_psd_tube = new TGeoRotation("rot_psd_tube"); rot_psd_tube->RotateY(2.15); TGeoCombiTrans* ctr_psd_tube = @@ -266,17 +271,27 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") //------------------------------------DEFINITIONS OF VOLUMES---------------------------------------- //--- make the top container volume - Double_t worldx = 320 * mm; + Double_t worldx = 800 * mm; Double_t worldy = 220 * mm; - Double_t worldz = 18100 * mm; - TGeoVolume* full_assembly = geom->MakeBox("pipe_v21e", Vacuum, worldx, worldy, worldz); + Double_t worldz = 18200 * mm; + //TGeoVolume* full_assembly = geom->MakeBox("pipe_v21e", Vacuum, worldx, worldy, worldz); + TGeoVolumeAssembly* full_assembly = new TGeoVolumeAssembly("pipe_v21e"); geom->SetTopVolume(full_assembly); full_assembly->SetVisibility(kTRUE); - TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 3650 * mm); + //TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 1825 * mm); + TGeoVolume* conical_beam_pipe = new TGeoVolumeAssembly("conical_beam_pipe"); conical_beam_pipe->SetVisibility(kFALSE); - TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 320 * mm, 220 * mm, 240 * mm); + + TGeoVolume* vacuum_conical_beam_pipe = new TGeoVolumeAssembly("vacuum_conical_beam_pipe"); + vacuum_conical_beam_pipe->SetVisibility(kFALSE); + + //TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 350 * mm, 220 * mm, 600 * mm); + TGeoVolume* bellow_ass = new TGeoVolumeAssembly("Bellow assembly"); bellow_ass->SetVisibility(kFALSE); + TGeoVolume* vacuum_bellow_ass = new TGeoVolumeAssembly("Vacuum_bellow assembly"); + vacuum_bellow_ass->SetVisibility(kFALSE); + // TOP PLATE-------------------------------------------------------------------------------------- TGeoVolume* sub_t_plate1 = geom->MakeArb8("sub_t_plate1", CF, top_plate_cord[2]); sub_t_plate1->SetLineColor(kGray); @@ -486,35 +501,47 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") r_arb1->SetVertex(7, rail_cord[3], rail_cord[1] + rail_cord[4]); TGeoBBox* flange_box = new TGeoBBox("flange_box", 15.2, 15.2, 1.5); - TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 2.5); + TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 1.6); // DOWNSTREAM_CARBON-FIBRE_RICH_MUCH_FLANGE_TO_BELLOW_ASS------------------------------------------------------------------------------------ TGeoBBox* rich_much_flange_box = new TGeoBBox("rich_much_flange_box", 15.2, 15.2, 1.5); - TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.5, 2.5); + TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.55, 1.6); TGeoCompositeShape* rich_much_flange_composite = new TGeoCompositeShape("flange_composite_rich", "rich_much_flange_box-rich_much_flange_hole"); TGeoVolume* rich_much_downstream_flange = new TGeoVolume("rich_much_downstream_flange", rich_much_flange_composite, CF); rich_much_downstream_flange->SetLineColor(kGray); - // CONICAL_BEAM_PIPE WITH CARBONE-FIBRE FLANGE AND TILTED END PIECE OF TUBE TO STS SECTION------------------------------------------------------------------------------------ - TGeoCone* conus = new TGeoCone("conical_beam_pipe", conus_lenght, rmin1, rmax1, rmin2, rmax2); - TGeoVolume* conical_beam_pipe_volume = new TGeoVolume("conical_beam_pipe_volume", conus, CF); - conical_beam_pipe_volume->SetLineColor(kGray); - - TGeoCtub* rich_much_upstream_tube_connection = - new TGeoCtub("rich_much_upstream_tube_connection", 55. * mm, 56. * mm, 15. * mm, 360., 360., 0.05235892, 0., - 4.99972585, 0., 0., 1.); - TGeoVolume* rich_much_upstream_tube_connection_volume = - new TGeoVolume("rich_much_upstream_tube_connection_volume", rich_much_upstream_tube_connection, CF); - rich_much_upstream_tube_connection_volume->SetLineColor(kGray); - - TGeoCtub* rich_much_upstream_tube_connection_to_sts = - new TGeoCtub("rich_much_upstream_tube_connection_to_sts", 55. * mm, 56. * mm, 15. * mm, 360., 360., 0., 0., 1., - -0.05235892, 0., 4.99972585); - TGeoVolume* rich_much_upstream_tube_connection_to_sts_volume = - new TGeoVolume("rich_much_upstream_tube_connection_to_sts_volume", rich_much_upstream_tube_connection_to_sts, CF); - rich_much_upstream_tube_connection_to_sts_volume->SetLineColor(kGray); + // VACUUM IN THE FLANGE---------------------------------------------------------------------------------------------- + TGeoTube* vacuum_flange_hole = new TGeoTube("vacuum_flange_hole", 0., 12.5, 1.5); + TGeoVolume* vacuum_downstream_flange = + new TGeoVolume("vacuum_downstream_flange", vacuum_flange_hole, Vacuum); + vacuum_downstream_flange->SetLineColor(kRed); + + // CONICAL_BEAM_PIPE---------------------------------------------------------------------------------------------------------- + TGeoCone* conus = new TGeoCone("conus", conus_lenght, rmin1, rmax1, rmin2, rmax2); + TGeoVolume* conus_volume = new TGeoVolume("conus_volume", conus, CF); + conus_volume->SetLineColor(kGray); + + //-------------------------------VACUUM IN CONE------------------------------------------------------------------- + TGeoCone* vacuum_conus = new TGeoCone("vacuum_conus", conus_lenght, 0, rmin1, 0, rmin2); + TGeoVolume* vacuum_conus_volume = new TGeoVolume("vacuum_conus_volume", vacuum_conus, Vacuum); + vacuum_conus_volume->SetLineColor(kGreen); + + // CONNECTING TUBE-------------------------------------------------------------------------------------------------------------------------------------------------------- + TGeoCtub* tube_connection = new TGeoCtub("tube_connection", 55. * mm, 56. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); + TGeoVolume* tube_connection_volume = new TGeoVolume("tube_connection_volume", tube_connection, CF); + tube_connection_volume->SetLineColor(kGray); + + //------------------------VACUUM IN THE CONNECTING TUBE-------------------------------------------------------------- + TGeoCtub* vacuum_tube_connection = new TGeoCtub("vacuum_tube_connection", 0. * mm, 55. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); + TGeoVolume* vacuum_tube_connection_volume = new TGeoVolume("vacuum_tube_connection_volume", vacuum_tube_connection, Vacuum); + vacuum_tube_connection_volume->SetLineColor(kGreen); + + // STS tube----------------------------------------------------------------------------------------------------- + TGeoCtub* tube_connection_sts = new TGeoCtub("tube_connection_sts", 55. * mm, 56. * mm, 15. * mm, 0., 360., 0., 0., 1., 0.05235892, 0., 4.99972585); + TGeoVolume* tube_connection_sts_volume = new TGeoVolume("tube_connection_sts_volume", tube_connection_sts, CF); + tube_connection_sts_volume->SetLineColor(kGray); //-------------------------------BELLOW DEFINITION---------------------------------------------------------------- TGeoCompositeShape* flange_composite = new TGeoCompositeShape("flange_composite", "flange_box-flange_hole"); @@ -536,23 +563,50 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") TGeoVolume* bellow_3 = new TGeoVolume("bellow_s3", bellow_s3, Stainless); bellow_3->SetLineColor(kRed); - TGeoCtub* bellow_s4 = new TGeoCtub("bellow_s4", 124. * mm, 142. * mm, 25.30673722 * mm, 0., 360., -0.024210927, 0., + TGeoCtub* bellow_s4 = new TGeoCtub("bellow_s4", 124. * mm, 142. * mm, 25.306 * mm, 0., 360., -0.024210927, 0., -0.999706873, -0.083697266, 0., 0.996491228); TGeoVolume* bellow_4 = new TGeoVolume("bellow_s3", bellow_s4, Stainless); bellow_4->SetLineColor(kRed); + //-------------------------------VACUUM BELLOW DEFINITION---------------------------------------------------------------- + TGeoVolume* vacuum_bellow_flange_0 = new TGeoVolume("vacuum_bellow_flange_0", vacuum_flange_hole, Vacuum); + vacuum_bellow_flange_0->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s1 = new TGeoCtub("vacuum_bellow_s1", 0. * mm, 123.8 * mm, 29.87452196 * mm, 0., 360., -0.083697266, 0., + -0.996491228, -0.122217128, 0., 0.992503387); + TGeoVolume* vacuum_bellow_1 = new TGeoVolume("vacuum_bellow_s1", vacuum_bellow_s1, Vacuum); + vacuum_bellow_1->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s2 = new TGeoCtub("vacuum_bellow_s1", 0. * mm, 123.8 * mm, 96.682942995 * mm, 0., 360., -0.122217128, 0., + -0.992503387, 0.089898314, 0, 0.995950949); + TGeoVolume* vacuum_bellow_2 = new TGeoVolume("vacuum_bellow_s2", vacuum_bellow_s2, Vacuum); + vacuum_bellow_2->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s3 = new TGeoCtub("vacuum_bellow_s3", 0. * mm, 123.8 * mm, 22.10506784 * mm, 0., 360., -0.089898314, 0., + -0.995950949, -0.024210927, 0., 0.999706873); + TGeoVolume* vacuum_bellow_3 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s3, Vacuum); + vacuum_bellow_3->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s4 = new TGeoCtub("vacuum_bellow_s4", 0. * mm, 123.8 * mm, 25.306 * mm, 0., 360., -0.024210927, 0., + -0.999706873, -0.083697266, 0., 0.996491228); + TGeoVolume* vacuum_bellow_4 = new TGeoVolume("vacuum_bellow_s4", vacuum_bellow_s4, Vacuum); + vacuum_bellow_4->SetLineColor(kGreen); TGeoBBox* roll_plate_s = new TGeoBBox("roll_plate_s", 75. * mm, 12.5 * mm, 90. * mm); TGeoVolume* roll_plate = new TGeoVolume("roll_plate", roll_plate_s, Al); roll_plate->SetLineColor(kBlue); TGeoTube* flange_cyl = new TGeoTube("flange_cyl", 0., 15., 1.5); - TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 2.5); + TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 1.6); TGeoCompositeShape* flange_cyl_composite = new TGeoCompositeShape( "flange_cyl_composite", "((flange_cyl-flange_cyl_hole)-roll_plate_s:tr_plate_up)-roll_plate_s:tr_plate_down"); TGeoVolume* bellow_flange_1 = new TGeoVolume("bellow_flange_1", flange_cyl_composite, Stainless); bellow_flange_1->SetLineColor(kRed); + //-------------------------------VACUUM FLANGE BELLOW------------------------------------------------------------------ + TGeoTube* vacuum_flange_cyl_hole = new TGeoTube("vacuum_flange_cyl_hole", 0., 8.9, 1.5); + TGeoVolume* vacuum_bellow_flange_1 = new TGeoVolume("vacuum_bellow_flange_1", vacuum_flange_cyl_hole, Vacuum); + vacuum_bellow_flange_1->SetLineColor(kGreen); TGeoTube* lead_screw_s = new TGeoTube("lead_screw_s", 0. * mm, 6. * mm, 205. * mm); TGeoTube* nut_small_s = new TGeoTube("nut_small_s", 6. * mm, 14. * mm, 50. * mm); @@ -573,6 +627,11 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") TGeoVolume* psd_tube = new TGeoVolume("psd_tube", psd_tube_s, CF); psd_tube->SetLineColor(kGray); + //------------------------------VACUUM PSD TUBE------------------------------------------------------------------------- + TGeoTube* vacuum_psd_tube_s = new TGeoTube("vacuum_psd_tube_s", 0. * mm, 90. * mm, 7230. * mm); + TGeoVolume* vacuum_psd_tube = new TGeoVolume("vacuum_psd_tube", vacuum_psd_tube_s, Vacuum); + vacuum_psd_tube->SetLineColor(kGreen); + //------------------TOP plate------------------------------ bellow_ass->AddNode(sub_t_plate1, 1, tr_top_0a); bellow_ass->AddNode(sub_t_plate2, 1, tr_top_1a); @@ -625,6 +684,15 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") bellow_ass->AddNode(bellow_4, 1, ctr_s4); bellow_ass->AddNode(bellow_flange_1, 1, ctr_s5); + //-----------------Vacuum in bellow and flanges + vacuum_bellow_ass->AddNode(vacuum_bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); + vacuum_bellow_ass->AddNode(vacuum_bellow_1, 1, ctr_s1); + vacuum_bellow_ass->AddNode(vacuum_bellow_2, 1, ctr_s2); + vacuum_bellow_ass->AddNode(vacuum_bellow_3, 1, ctr_s3); + vacuum_bellow_ass->AddNode(vacuum_bellow_4, 1, ctr_s4); + vacuum_bellow_ass->AddNode(vacuum_bellow_flange_1, 1, ctr_s5); + + //------------------DRIVE assembly-------------------------------------- bellow_ass->AddNode(roll_plate, 1, ctr_plate_up); bellow_ass->AddNode(roll_plate, 2, ctr_plate_down); @@ -632,16 +700,24 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") bellow_ass->AddNode(motor, 1, mot_transl); //-------------------CONICAL section-------------------------------------------------- - conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, -15 * mm)); - conical_beam_pipe->AddNode(conical_beam_pipe_volume, 1, new TGeoTranslation(0, 0, -1585 * mm)); - conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_volume, 1, ctr_sts_conus_connection); - conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_to_sts_volume, 1, ctr_sts_tube); - - + conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); + conical_beam_pipe->AddNode(conus_volume, 1, new TGeoTranslation(0, 0, 0)); + conical_beam_pipe->AddNode(tube_connection_volume, 1, ctr_sts_conus_connection); + //conical_beam_pipe->AddNode(tube_connection_sts_volume, 1, ctr_sts_tube); //unexplained "nonexisting" overlap + //conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_volume, 1, ctr_sts_tube); + + //-------------------VACUUM in CONICAL section-------------------------------------------------- + //vacuum_conical_beam_pipe->AddNode(vacuum_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); // not needed + vacuum_conical_beam_pipe->AddNode(vacuum_conus_volume, 1, new TGeoTranslation(0, 0, 0)); + vacuum_conical_beam_pipe->AddNode(vacuum_tube_connection_volume, 1, ctr_sts_conus_connection); + //------------------INSERT into top volume - full_assembly->AddNode(conical_beam_pipe, 1, origin_combi); + full_assembly->AddNode(conical_beam_pipe, 1, origin_combi_cone); full_assembly->AddNode(bellow_ass, 1, origin_combi); full_assembly->AddNode(psd_tube, 1, ctr_psd_tube); + full_assembly->AddNode(vacuum_conical_beam_pipe, 1, origin_combi_cone); + full_assembly->AddNode(vacuum_bellow_ass, 1, origin_combi); + full_assembly->AddNode(vacuum_psd_tube, 1, ctr_psd_tube); //beampipe->AddNode(full_assembly,1, new TGeoTranslation(0, 0, 0*mm)); // --- close the geometry @@ -662,8 +738,10 @@ void create_bpipe_geometry_v21e(const char* geoTag = "v21e") TGeoTranslation* trans = new TGeoTranslation(0.0, 0.0, 82.0); trans->Write("trans"); cout << endl; - cout << "Geometry " << geom->GetTopVolume()->GetName() << " written to " << geo_bin_filename << std::endl; + cout << "Geometry " << geom->GetTopVolume()->GetName() << " written to " << geo_bin_filename << endl; binfile->Close(); //--- close the geometry geom->CloseGeometry(); + //gGeoManager->CheckOverlaps(0.000001); + //gGeoManager->GetListOfOverlaps()->Print(); } diff --git a/macro/pipe/fair/create_bpipe_geometry_v21f.C b/macro/pipe/fair/create_bpipe_geometry_v21f.C index 7f289444776c58741a74ec8659eb0e076fbf3301..97e0c451605c0f2b5ccd2ce452dc0b24d61a2c72 100644 --- a/macro/pipe/fair/create_bpipe_geometry_v21f.C +++ b/macro/pipe/fair/create_bpipe_geometry_v21f.C @@ -18,15 +18,12 @@ using namespace std; using namespace TGeoUnit; - void create_bpipe_geometry_v21f(const char* geoTag = "v21f") { //--- Definition of a simple geometry gSystem->Load("libGeom"); TGeoManager* geom = new TGeoManager("beampipe_v21f", "Beampipe for no magnetic field"); - // fair root mediafile google it - //--- define some materials TGeoMixture* matCarbonFiber = new TGeoMixture("BP_carbonfiber", 4, 1.5); matCarbonFiber->AddElement(12.001, 6.0, 0.8926); @@ -61,14 +58,13 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") Double_t rmin2 = 125 * mm; Double_t rmax2 = 126 * mm; - Double_t rail_cord[] = {23.1, 0, 4.5, 21.5, 2.8, 4.5}; + Double_t rail_cord[] = {23.0, 0, 4.5, 21.4, 2.8, 4.5}; Double_t top_plate_cord[] = {10, 0, 2.1, 10.15, 0, 4.05, 11.75, 2.15, 4.0, 15.3, 4.28, 2.85, 18.1, 5.27, 2.85, 19.75, 5.65, 5.0, 21.1, 5.65, 0}; Double_t side_plate_cord[] = {11.3, 0, 2, 11.3, 0, 7.55, 16, 6.8, 4.6, 8.7, 6.8, 4.6, 19.8, 8.3, 2.35, 13.6, 8.3, 2.35, 20.8, 7.9, 3.0, 14.8, 7.9, 3.0, 21.3, 6.8, 1.5, 16.3, 6.8, 1.5, 21.3, 6.3, 0, 17.4, 6.3, 0}; - //-----------------------DEFINITION OF TRANSFORMATIONS-------------------------------------------------------------------------------------- TGeoRotation* rot_top = new TGeoRotation("rot_top"); @@ -96,22 +92,6 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") ident_rotation->RotateY(0); ident_rotation->RegisterYourself(); - TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); - //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); - - - TGeoRotation orig_rotation("orig_rotation"); - orig_rotation.RotateY(1.2); - //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); - //orig_rotation->RegisterYourself(); - - - //TGeoHMatrix orig_combi = orig_translation * orig_rotation; - TGeoHMatrix orig_combi = orig_rotation * orig_translation; - - TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); - - TGeoRotation* rot_left = new TGeoRotation("rot_left"); rot_left->SetAngles(90, 0, 0); TGeoCombiTrans* combi_left = new TGeoCombiTrans(-15.2, 0, 0, rot_left); @@ -201,12 +181,12 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TGeoRotation* rot_sts_conus_connection = new TGeoRotation("rot_sts_conus_connection"); rot_sts_conus_connection->RotateZ(180); - TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -3185 * mm, rot_sts_conus_connection); + TGeoCombiTrans* ctr_sts_conus_connection = new TGeoCombiTrans(0, 0, -1600 * mm, rot_sts_conus_connection); TGeoRotation* rotation_of_sts_tube = new TGeoRotation("rotation_of_sts_tube"); rotation_of_sts_tube->RotateZ(180); rotation_of_sts_tube->RotateY(-1.2); - TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -3214.99917754 * mm, rotation_of_sts_tube); + TGeoCombiTrans* ctr_sts_tube = new TGeoCombiTrans(0.15707676 * mm, 0, -1630.001 * mm, rotation_of_sts_tube); TGeoRotation* rot_global = new TGeoRotation("rot_global"); rot_global->RotateY(1.2); @@ -214,23 +194,23 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TGeoRotation* rot_s1 = new TGeoRotation("rot_s1"); rot_s1->RotateY(-11.888); - TGeoCombiTrans* ctr_s1 = new TGeoCombiTrans("ctr_s1", -11.46294558 * mm, 0, 84.45109099 * mm, rot_s1); + TGeoCombiTrans* ctr_s1 = new TGeoCombiTrans("ctr_s1", -11.46294558 * mm, 0, 84.6 * mm, rot_s1); TGeoRotation* rot_s2 = new TGeoRotation("rot_s2"); rot_s2->RotateY(-26.4732337); - TGeoCombiTrans* ctr_s2 = new TGeoCombiTrans("ctr_s2", (-48.92189672) * mm, 0, (191.10295277) * mm, rot_s2); + TGeoCombiTrans* ctr_s2 = new TGeoCombiTrans("ctr_s2", (-48.92189672) * mm, 0, (191.30295277) * mm, rot_s2); TGeoRotation* rot_s3 = new TGeoRotation("rot_s3"); rot_s3->RotateZ(180.); rot_s3->RotateY(-15.505); - TGeoCombiTrans* ctr_s3 = new TGeoCombiTrans("ctr_s3", (-85.745) * mm, 0, (282.33) * mm, rot_s3); + TGeoCombiTrans* ctr_s3 = new TGeoCombiTrans("ctr_s3", (-85.745) * mm, 0, (282.6) * mm, rot_s3); TGeoRotation* rot_s4 = new TGeoRotation("rot_s4"); rot_s4->RotateZ(180.); rot_s4->RotateY(-4.217); - TGeoCombiTrans* ctr_s4 = new TGeoCombiTrans("ctr_s4", (-98.226) * mm, 0, 343.795 * mm, rot_s4); + TGeoCombiTrans* ctr_s4 = new TGeoCombiTrans("ctr_s4", (-98.226) * mm, 0, 344.15 * mm, rot_s4); TGeoRotation* rot_plate = new TGeoRotation("rot_plate"); @@ -251,32 +231,65 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TGeoTranslation* mot_transl = new TGeoTranslation("mot_transl", -286.5 * mm, -159.5 * mm, 534. * mm); + TGeoTranslation orig_translation("orig_translation", -0.15707676 * mm, 0, 3230 * mm); + + TGeoTranslation orig_translation_cone("orig_translation_cone", -0.15707676 * mm, 0, 1645 * mm); + //TGeoCombiTrans *origin_translation = new TGeoCombiTrans(orig_translation,ident); + + + TGeoRotation orig_rotation("orig_rotation"); + orig_rotation.RotateY(1.2); + //TGeoCombiTrans *origin_rotation = new TGeoCombiTrans(0,orig_rotation); + //orig_rotation->RegisterYourself(); + + + //TGeoHMatrix orig_combi = orig_translation * orig_rotation; + TGeoHMatrix orig_combi = orig_rotation * orig_translation; + + TGeoHMatrix orig_combi_cone = orig_rotation * orig_translation_cone; + + TGeoHMatrix* origin_combi = new TGeoHMatrix(orig_combi); + + TGeoHMatrix* origin_combi_cone = new TGeoHMatrix(orig_combi_cone); + + + //TGeoTranslation* cone_transl = new TGeoTranslation("cone_transl", -286.5 * mm, -159.5 * mm, 534. * mm); + TGeoRotation* rot_psd_tube = new TGeoRotation("rot_psd_tube"); rot_psd_tube->RotateY(0); - TGeoCombiTrans* ctr_psd_tube = new TGeoCombiTrans("ctr_psd_tube", -24.7 * mm, 0. * mm, 10857.77 * mm, rot_psd_tube); + TGeoCombiTrans* ctr_psd_tube = new TGeoCombiTrans("ctr_psd_tube", -24.7 * mm, 0. * mm, 10858.02 * mm, rot_psd_tube); TGeoRotation* rot_s5 = new TGeoRotation("rot_s5"); //rot_s5->RotateZ(180.); rot_s5->RotateY(-1.2); - TGeoCombiTrans* ctr_s5 = new TGeoCombiTrans("ctr_s5", (-100.194) * mm, 0, 381.231 * mm, rot_s5); + TGeoCombiTrans* ctr_s5 = new TGeoCombiTrans("ctr_s5", (-100.194) * mm, 0, 381.7 * mm, rot_s5); TGeoTranslation* nut_transl = new TGeoTranslation("nut_transl", 0. * mm, 0. * mm, 80. * mm); nut_transl->RegisterYourself(); - //------------------------------------DEFINITIONS OF VOLUMES---------------------------------------- //--- make the top container volume - Double_t worldx = 320 * mm; + Double_t worldx = 800 * mm; Double_t worldy = 220 * mm; Double_t worldz = 18100 * mm; - TGeoVolume* full_assembly = geom->MakeBox("pipe_v21f", Vacuum, worldx, worldy, worldz); + //TGeoVolume* full_assembly = geom->MakeBox("pipe_v21f", Vacuum, worldx, worldy, worldz); + TGeoVolumeAssembly* full_assembly = new TGeoVolumeAssembly("pipe_v21f"); geom->SetTopVolume(full_assembly); full_assembly->SetVisibility(kTRUE); - TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 3650 * mm); + //TGeoVolume* conical_beam_pipe = geom->MakeBox("conical_beam_pipe", Vacuum, 220 * mm, 220 * mm, 1825 * mm); + TGeoVolume* conical_beam_pipe = new TGeoVolumeAssembly("conical_beam_pipe"); conical_beam_pipe->SetVisibility(kFALSE); - TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 320 * mm, 220 * mm, 240 * mm); + + TGeoVolume* vacuum_conical_beam_pipe = new TGeoVolumeAssembly("vacuum_conical_beam_pipe"); + vacuum_conical_beam_pipe->SetVisibility(kFALSE); + + //TGeoVolume* bellow_ass = geom->MakeBox("Bellow assembly", Vacuum, 350 * mm, 220 * mm, 600 * mm); + TGeoVolume* bellow_ass = new TGeoVolumeAssembly("Bellow assembly"); bellow_ass->SetVisibility(kFALSE); + TGeoVolume* vacuum_bellow_ass = new TGeoVolumeAssembly("Vacuum_bellow assembly"); + vacuum_bellow_ass->SetVisibility(kFALSE); + // TOP PLATE-------------------------------------------------------------------------------------- TGeoVolume* sub_t_plate1 = geom->MakeArb8("sub_t_plate1", CF, top_plate_cord[2]); sub_t_plate1->SetLineColor(kGray); @@ -486,37 +499,49 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") r_arb1->SetVertex(7, rail_cord[3], rail_cord[1] + rail_cord[4]); TGeoBBox* flange_box = new TGeoBBox("flange_box", 15.2, 15.2, 1.5); - TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 2.5); + TGeoTube* flange_hole = new TGeoTube("flange_hole", 0., 12.5, 1.6); // DOWNSTREAM_CARBON-FIBRE_RICH_MUCH_FLANGE_TO_BELLOW_ASS------------------------------------------------------------------------------------ TGeoBBox* rich_much_flange_box = new TGeoBBox("rich_much_flange_box", 15.2, 15.2, 1.5); - TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.5, 2.5); + TGeoTube* rich_much_flange_hole = new TGeoTube("rich_much_flange_hole", 0., 12.55, 1.6); TGeoCompositeShape* rich_much_flange_composite = new TGeoCompositeShape("flange_composite_rich", "rich_much_flange_box-rich_much_flange_hole"); TGeoVolume* rich_much_downstream_flange = new TGeoVolume("rich_much_downstream_flange", rich_much_flange_composite, CF); rich_much_downstream_flange->SetLineColor(kGray); - // CONICAL_BEAM_PIPE WITH CARBONE-FIBRE FLANGE AND TILTED END PIECE OF TUBE TO STS SECTION------------------------------------------------------------------------------------ - TGeoCone* conus = new TGeoCone("conical_beam_pipe", conus_lenght, rmin1, rmax1, rmin2, rmax2); - TGeoVolume* conical_beam_pipe_volume = new TGeoVolume("conical_beam_pipe_volume", conus, CF); - conical_beam_pipe_volume->SetLineColor(kGray); - - TGeoCtub* rich_much_upstream_tube_connection = - new TGeoCtub("rich_much_upstream_tube_connection", 55. * mm, 56. * mm, 15. * mm, 360., 360., 0.05235892, 0., - 4.99972585, 0., 0., 1.); - TGeoVolume* rich_much_upstream_tube_connection_volume = - new TGeoVolume("rich_much_upstream_tube_connection_volume", rich_much_upstream_tube_connection, CF); - rich_much_upstream_tube_connection_volume->SetLineColor(kGray); - - TGeoCtub* rich_much_upstream_tube_connection_to_sts = - new TGeoCtub("rich_much_upstream_tube_connection_to_sts", 55. * mm, 56. * mm, 15. * mm, 360., 360., 0., 0., 1., - -0.05235892, 0., 4.99972585); - TGeoVolume* rich_much_upstream_tube_connection_to_sts_volume = - new TGeoVolume("rich_much_upstream_tube_connection_to_sts_volume", rich_much_upstream_tube_connection_to_sts, CF); - rich_much_upstream_tube_connection_to_sts_volume->SetLineColor(kGray); - - + // VACUUM IN THE FLANGE---------------------------------------------------------------------------------------------- + TGeoTube* vacuum_flange_hole = new TGeoTube("vacuum_flange_hole", 0., 12.5, 1.5); + TGeoVolume* vacuum_downstream_flange = + new TGeoVolume("vacuum_downstream_flange", vacuum_flange_hole, Vacuum); + vacuum_downstream_flange->SetLineColor(kRed); + + // CONICAL_BEAM_PIPE---------------------------------------------------------------------------------------------------------- + TGeoCone* conus = new TGeoCone("conus", conus_lenght, rmin1, rmax1, rmin2, rmax2); + TGeoVolume* conus_volume = new TGeoVolume("conus_volume", conus, CF); + conus_volume->SetLineColor(kGray); + + //-------------------------------VACUUM IN CONE------------------------------------------------------------------- + TGeoCone* vacuum_conus = new TGeoCone("vacuum_conus", conus_lenght, 0, rmin1, 0, rmin2); + TGeoVolume* vacuum_conus_volume = new TGeoVolume("vacuum_conus_volume", vacuum_conus, Vacuum); + vacuum_conus_volume->SetLineColor(kGreen); + + // CONNECTING TUBE-------------------------------------------------------------------------------------------------------------------------------------------------------- + TGeoCtub* tube_connection = new TGeoCtub("tube_connection", 55. * mm, 56. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); + TGeoVolume* tube_connection_volume = new TGeoVolume("tube_connection_volume", tube_connection, CF); + tube_connection_volume->SetLineColor(kGray); + + //------------------------VACUUM IN THE CONNECTING TUBE-------------------------------------------------------------- + TGeoCtub* vacuum_tube_connection = new TGeoCtub("vacuum_tube_connection", 0. * mm, 55. * mm, 15. * mm, 0., 360., -0.05235892, 0., 4.99972585, 0., 0., 1.); + TGeoVolume* vacuum_tube_connection_volume = new TGeoVolume("vacuum_tube_connection_volume", vacuum_tube_connection, Vacuum); + vacuum_tube_connection_volume->SetLineColor(kGreen); + + // STS tube----------------------------------------------------------------------------------------------------- + TGeoCtub* tube_connection_sts = new TGeoCtub("tube_connection_sts", 55. * mm, 56. * mm, 15. * mm, 0., 360., 0., 0., 1., 0.05235892, 0., 4.99972585); + TGeoVolume* tube_connection_sts_volume = new TGeoVolume("tube_connection_sts_volume", tube_connection_sts, CF); + tube_connection_sts_volume->SetLineColor(kGray); + + //-------------------------------BELLOW DEFINITION---------------------------------------------------------------- TGeoCompositeShape* flange_composite = new TGeoCompositeShape("flange_composite", "flange_box-flange_hole"); TGeoVolume* bellow_flange_0 = new TGeoVolume("bellow_flange_0", flange_composite, Stainless); bellow_flange_0->SetLineColor(kRed); @@ -541,18 +566,46 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TGeoVolume* bellow_4 = new TGeoVolume("bellow_s3", bellow_s4, Stainless); bellow_4->SetLineColor(kRed); + //-------------------------------VACUUM BELLOW DEFINITION---------------------------------------------------------------- + TGeoVolume* vacuum_bellow_flange_0 = new TGeoVolume("vacuum_bellow_flange_0", vacuum_flange_hole, Vacuum); + vacuum_bellow_flange_0->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s1 = new TGeoCtub("vacuum_bellow_s1", 0 * mm, 121.9435 * mm, 55.64459032 * mm, 0., 360., -0.206, 0., + -0.979, -0.206, 0., 0.979); + TGeoVolume* vacuum_bellow_1 = new TGeoVolume("vacuum_bellow_s1", vacuum_bellow_s1, Vacuum); + vacuum_bellow_1->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s2 = new TGeoCtub("vacuum_bellow_s2", 0 * mm, 124.842 * mm, 58.3156 * mm, 0., 360., -0.04705248, 0., + -0.998892419, 0.04705248, 0, 0.998892419); + TGeoVolume* vacuum_bellow_2 = new TGeoVolume("vacuum_bellow_s2", vacuum_bellow_s2, Vacuum); + vacuum_bellow_2->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s3 = new TGeoCtub("vacuum_bellow_s3", 0 * mm, 123.5175 * mm, 40.5 * mm, 0., 360., -0.1439, 0., + -0.9896, -0.1439, 0., 0.9896); + TGeoVolume* vacuum_bellow_3 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s3, Vacuum); + vacuum_bellow_3->SetLineColor(kGreen); + + TGeoCtub* vacuum_bellow_s4 = new TGeoCtub("vacuum_bellow_s4", 0 * mm, 124.8025 * mm, 22.5 * mm, 0., 360., -0.0526, 0., + -0.9972, -0.0526, 0., 0.9972); + TGeoVolume* vacuum_bellow_4 = new TGeoVolume("vacuum_bellow_s3", vacuum_bellow_s4, Vacuum); + vacuum_bellow_4->SetLineColor(kGreen); + TGeoBBox* roll_plate_s = new TGeoBBox("roll_plate_s", 75. * mm, 12.5 * mm, 90. * mm); TGeoVolume* roll_plate = new TGeoVolume("roll_plate", roll_plate_s, Al); roll_plate->SetLineColor(kBlue); TGeoTube* flange_cyl = new TGeoTube("flange_cyl", 0., 15., 1.5); - TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 2.5); + TGeoTube* flange_cyl_hole = new TGeoTube("flange_cyl_hole", 0., 8.9, 1.6); TGeoCompositeShape* flange_cyl_composite = new TGeoCompositeShape( "flange_cyl_composite", "((flange_cyl-flange_cyl_hole)-roll_plate_s:tr_plate_up)-roll_plate_s:tr_plate_down"); TGeoVolume* bellow_flange_1 = new TGeoVolume("bellow_flange_1", flange_cyl_composite, Stainless); bellow_flange_1->SetLineColor(kRed); + //-------------------------------VACUUM FLANGE BELLOW------------------------------------------------------------------ + TGeoTube* vacuum_flange_cyl_hole = new TGeoTube("vacuum_flange_cyl_hole", 0., 8.9, 1.5); + TGeoVolume* vacuum_bellow_flange_1 = new TGeoVolume("vacuum_bellow_flange_1", vacuum_flange_cyl_hole, Vacuum); + vacuum_bellow_flange_1->SetLineColor(kGreen); TGeoTube* lead_screw_s = new TGeoTube("lead_screw_s", 0. * mm, 6. * mm, 205. * mm); TGeoTube* nut_small_s = new TGeoTube("nut_small_s", 6. * mm, 14. * mm, 50. * mm); @@ -573,6 +626,10 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TGeoVolume* psd_tube = new TGeoVolume("psd_tube", psd_tube_s, CF); psd_tube->SetLineColor(kGray); + //------------------------------VACUUM PSD TUBE------------------------------------------------------------------------- + TGeoTube* vacuum_psd_tube_s = new TGeoTube("vacuum_psd_tube_s", 0. * mm, 90. * mm, 7230. * mm); + TGeoVolume* vacuum_psd_tube = new TGeoVolume("vacuum_psd_tube", vacuum_psd_tube_s, Vacuum); + vacuum_psd_tube->SetLineColor(kGreen); //------------------TOP plate------------------------------ bellow_ass->AddNode(sub_t_plate1, 1, tr_top_0a); @@ -626,6 +683,14 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") bellow_ass->AddNode(bellow_4, 1, ctr_s4); bellow_ass->AddNode(bellow_flange_1, 1, ctr_s5); + //-----------------Vacuum in bellow and flanges + vacuum_bellow_ass->AddNode(vacuum_bellow_flange_0, 1, new TGeoTranslation(0, 0, 1.5)); + vacuum_bellow_ass->AddNode(vacuum_bellow_1, 1, ctr_s1); + vacuum_bellow_ass->AddNode(vacuum_bellow_2, 1, ctr_s2); + vacuum_bellow_ass->AddNode(vacuum_bellow_3, 1, ctr_s3); + vacuum_bellow_ass->AddNode(vacuum_bellow_4, 1, ctr_s4); + vacuum_bellow_ass->AddNode(vacuum_bellow_flange_1, 1, ctr_s5); + //------------------DRIVE assembly-------------------------------------- bellow_ass->AddNode(roll_plate, 1, ctr_plate_up); bellow_ass->AddNode(roll_plate, 2, ctr_plate_down); @@ -633,18 +698,28 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") bellow_ass->AddNode(motor, 1, mot_transl); //-------------------CONICAL section-------------------------------------------------- - conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, -15 * mm)); - conical_beam_pipe->AddNode(conical_beam_pipe_volume, 1, new TGeoTranslation(0, 0, -1585 * mm)); - conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_volume, 1, ctr_sts_conus_connection); - conical_beam_pipe->AddNode(rich_much_upstream_tube_connection_to_sts_volume, 1, ctr_sts_tube); - - + conical_beam_pipe->AddNode(rich_much_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); + // conical_beam_pipe->AddNode(conical_beam_pipe_volume, 1, new TGeoTranslation(0, 0, -1585 * mm)); + conical_beam_pipe->AddNode(conus_volume, 1, new TGeoTranslation(0, 0, 0)); + conical_beam_pipe->AddNode(tube_connection_volume, 1, ctr_sts_conus_connection); + //conical_beam_pipe->AddNode(tube_connection_sts_volume, 1, ctr_sts_tube); //unexplained "nonexisting" overlap + + //-------------------VACUUM in CONICAL section-------------------------------------------------- + //vacuum_conical_beam_pipe->AddNode(vacuum_downstream_flange, 1, new TGeoTranslation(0, 0, 1570 * mm)); // not needed + vacuum_conical_beam_pipe->AddNode(vacuum_conus_volume, 1, new TGeoTranslation(0, 0, 0)); + vacuum_conical_beam_pipe->AddNode(vacuum_tube_connection_volume, 1, ctr_sts_conus_connection); + //------------------INSERT into top volume - full_assembly->AddNode(conical_beam_pipe, 1, origin_combi); + full_assembly->AddNode(conical_beam_pipe, 1, origin_combi_cone); full_assembly->AddNode(bellow_ass, 1, origin_combi); full_assembly->AddNode(psd_tube, 1, ctr_psd_tube); + full_assembly->AddNode(vacuum_conical_beam_pipe, 1, origin_combi_cone); + full_assembly->AddNode(vacuum_bellow_ass, 1, origin_combi); + full_assembly->AddNode(vacuum_psd_tube, 1, ctr_psd_tube); //beampipe->AddNode(full_assembly,1, new TGeoTranslation(0, 0, 0*mm)); + // --- close the geometry + geom->CloseGeometry(); //--- draw the ROOT box geom->SetVisLevel(4); @@ -655,19 +730,16 @@ void create_bpipe_geometry_v21f(const char* geoTag = "v21f") TString geo_bin_filename = "pipe_"; TString geo_name = geo_bin_filename + geoTag; geo_bin_filename = geo_bin_filename + geoTag + ".geo.root"; - TFile* binfile; binfile = new TFile(geo_bin_filename, "RECREATE"); - geom->GetTopVolume()->Write(geo_name); // outputting on the top volume - TGeoTranslation* trans = new TGeoTranslation(0.0, 0.0, 82.0); trans->Write("trans"); - cout << endl; cout << "Geometry " << geom->GetTopVolume()->GetName() << " written to " << geo_bin_filename << endl; binfile->Close(); - //--- close the geometry geom->CloseGeometry(); + //gGeoManager->CheckOverlaps(0.000001); + //gGeoManager->GetListOfOverlaps()->Print(); } diff --git a/macro/passive/fair/create_bpipe_geometry_v21g.C b/macro/pipe/fair/create_bpipe_geometry_v21g.C similarity index 100% rename from macro/passive/fair/create_bpipe_geometry_v21g.C rename to macro/pipe/fair/create_bpipe_geometry_v21g.C diff --git a/macro/passive/fair/create_bpipe_geometry_v21h.C b/macro/pipe/fair/create_bpipe_geometry_v21h.C similarity index 100% rename from macro/passive/fair/create_bpipe_geometry_v21h.C rename to macro/pipe/fair/create_bpipe_geometry_v21h.C diff --git a/pipe/pipe_v21e.geo.info b/pipe/pipe_v21e.geo.info index 557af25e911994ad92238ef5d08068a6cb6b97a5..22fc00a1340e9a8dc5986a56b079ad5638f1d584 100644 --- a/pipe/pipe_v21e.geo.info +++ b/pipe/pipe_v21e.geo.info @@ -2,3 +2,5 @@ Created by create_bpipe_geometry_v21e.C The downstream section has maximum deflection at the bellows. +May be used for low beam energies from 5 AGeV gold-gold collisions +at 100% MF and below. diff --git a/pipe/pipe_v21e.geo.root b/pipe/pipe_v21e.geo.root new file mode 100644 index 0000000000000000000000000000000000000000..86e89ea7ed3e3dc5f38f861c7a9442c61c0d6341 Binary files /dev/null and b/pipe/pipe_v21e.geo.root differ diff --git a/pipe/pipe_v21f.geo.root b/pipe/pipe_v21f.geo.root new file mode 100644 index 0000000000000000000000000000000000000000..3bebc600ddd9b3b015d2cd6f21a03028349f38c6 Binary files /dev/null and b/pipe/pipe_v21f.geo.root differ diff --git a/pipe/pipe_v21g.geo.info b/pipe/pipe_v21g.geo.info new file mode 100644 index 0000000000000000000000000000000000000000..5b815c8945b937034107e2332ca132930d62c499 --- /dev/null +++ b/pipe/pipe_v21g.geo.info @@ -0,0 +1,2 @@ +Created from macro of the same name +in macro/pipes folder of this repository. diff --git a/pipe/pipe_v21g.geo.root b/pipe/pipe_v21g.geo.root new file mode 100644 index 0000000000000000000000000000000000000000..c5e2bbdbe82e446abea201ec4c5abc8b5ee80977 Binary files /dev/null and b/pipe/pipe_v21g.geo.root differ diff --git a/pipe/pipe_v21h.geo.info b/pipe/pipe_v21h.geo.info new file mode 100644 index 0000000000000000000000000000000000000000..b3faf1203b16b2809f63c8257cf33c91d2d12742 --- /dev/null +++ b/pipe/pipe_v21h.geo.info @@ -0,0 +1,4 @@ +created from macro of same name. + +Intended for simulation of 12 AGeV/c gold beam +with 100% magnetic field. diff --git a/pipe/pipe_v21h.geo.root b/pipe/pipe_v21h.geo.root new file mode 100644 index 0000000000000000000000000000000000000000..2bcfe8afba26b6d44e3387a03ba50c7d52c42f99 Binary files /dev/null and b/pipe/pipe_v21h.geo.root differ