{ float sila_dim[3] = { 0.7, 2.5, 0.1 }; float silb_dim[3] = { 4.0, 6.0, 0.1 }; float sil_rot1[9] = {0., 0., 0., 0., 0., 0., 0., 90., 90.} ; float sil_rot2[9] = {0., 0., 0., 0., 0., 0., 0., 0., 0.} ; float sil_rot3[9] = {0., 0., 0., 0., 0., 0., 0., 0., 0.} ; float sil_pos1[9] = {0., -4., 0., 4.,-4., 0., 4., -5., 5.}; float sil_pos2[9] = {0., 5., 5., 5., -5., -5., -5., 0., 0.} ; float sil_pos3[9] = {4., 15.4, 15.7, 16.0, 16.0, 15.7., 15.4., 14.9, 14.9.} ; int silvioa_medium = 10; int silviob_medium = 10; int sbox_medium = 35; int sboxc_medium = 15; int sew_medium = 26; int fpcb_medium = 35; int pvcf_medium = 35; float sbox_layer_thickness = 0.19 ; float sbox_inner_radius = 13.5; float sbox_total_length = 13.5; float sbox_front_frame_length = 0.5; float sbox_back_frame_length = 0.5; float sbox_front_frame_thickness = 1.4; float sbox_back_frame_thickness = 1.4; float sbox_copper_layer_thickness = 0.01 ; float pvc_pvcf_thickness = 0.2 ; float pvc_pvcf_frame_thickness = 0.4 ; float sbox_front_edge[3] = { sil_pos1[0] , sil_pos2[0] , sil_pos3[0]-pvc_pvcf_thickness-0.25 } ; float pcb_back_pos[3] = { 0. , 0. , 12.8 } ; float pcb_back_dim[3] = { 6. , 10.0 , 0.164 } ; float sil_sew_thickness = 0.1 ; float sil_fpcb_thickness = 0.1 ; float sil_fpcb_hole = 2.5 ; float sil_boxparameters[20] = { 0. , 360. , sbox_total_length , sbox_inner_radius , sbox_inner_radius + sbox_front_frame_thickness , sbox_total_length - sbox_back_frame_length , sbox_inner_radius , sbox_inner_radius + sbox_front_frame_thickness , sbox_total_length - sbox_back_frame_length -0.00001 , sbox_inner_radius , sbox_inner_radius+sbox_layer_thickness , sbox_front_frame_length + 0.000001 , sbox_inner_radius , sbox_inner_radius+sbox_layer_thickness , sbox_front_frame_length , sbox_inner_radius , sbox_inner_radius + sbox_back_frame_thickness , 0., sbox_inner_radius , sbox_inner_radius + sbox_back_frame_thickness } ; float sbox_pos[3] = { sbox_front_edge[0] , sbox_front_edge[1], sbox_front_edge[2] }; TGeoVolume *SIA = gGeoManager -> MakeTube("SIA",medium[silvioa_medium-1],sila_dim[0],sila_dim[1],sila_dim[2]/2); TGeoVolume *SIB = gGeoManager -> MakeBox("SIB",medium[silviob_medium-1],silb_dim[0]/2,silb_dim[1]/2,silb_dim[2]/2); gGeoManager->SetVolumeAttribute("SIA","seen",1); gGeoManager->SetVolumeAttribute("SIA","colo",3); gGeoManager->SetVolumeAttribute("SIB","seen",1); gGeoManager->SetVolumeAttribute("SIB","colo",3); for(int i=0;i<9;i++) { if(i==0) { STUB->AddNode(SIA,i,new TGeoCombiTrans(sil_pos1[i],sil_pos2[i],sil_pos3[i],new TGeoRotation("rot1",sil_rot1[i],sil_rot2[i],sil_rot3[i]))); } else { STUB->AddNode(SIB,i,new TGeoCombiTrans(sil_pos1[i],sil_pos2[i],sil_pos3[i],new TGeoRotation("rot1",sil_rot1[i],sil_rot2[i],sil_rot3[i]))); } } TGeoPcon *pgonsbox = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,6 ); pgonsbox->DefineSection( 0 , sil_boxparameters[2] , sil_boxparameters[3] , sil_boxparameters[4] ); pgonsbox->DefineSection( 1 , sil_boxparameters[5] , sil_boxparameters[6] , sil_boxparameters[7] ); pgonsbox->DefineSection( 2 , sil_boxparameters[8] , sil_boxparameters[9] , sil_boxparameters[10] ); pgonsbox->DefineSection( 3 , sil_boxparameters[11] , sil_boxparameters[12] , sil_boxparameters[13] ); pgonsbox->DefineSection( 4 , sil_boxparameters[14] , sil_boxparameters[15] , sil_boxparameters[16] ); pgonsbox->DefineSection( 5 , sil_boxparameters[17] , sil_boxparameters[18] , sil_boxparameters[19] ); TGeoVolume *sbox = new TGeoVolume("SBOX", pgonsbox, medium[sbox_medium-1]); gGeoManager->SetVolumeAttribute("SBOX","seen",1); gGeoManager->SetVolumeAttribute("SBOX","colo",3); TGeoPcon *pgonsboxc = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,7 ); pgonsboxc->DefineSection( 0 , sil_boxparameters[2]+sbox_copper_layer_thickness , sil_boxparameters[3] , sil_boxparameters[4] ); pgonsboxc->DefineSection( 1 , sil_boxparameters[2] , sil_boxparameters[4] , sil_boxparameters[4]+sbox_copper_layer_thickness ); pgonsboxc->DefineSection( 2 , sil_boxparameters[5]-sbox_copper_layer_thickness , sil_boxparameters[6] , sil_boxparameters[7]+sbox_copper_layer_thickness ); pgonsboxc->DefineSection( 3 , sil_boxparameters[8]-sbox_copper_layer_thickness , sil_boxparameters[10] , sil_boxparameters[10]+sbox_copper_layer_thickness ); pgonsboxc->DefineSection( 4 , sil_boxparameters[11]+sbox_copper_layer_thickness , sil_boxparameters[13] , sil_boxparameters[13]+sbox_copper_layer_thickness ); pgonsboxc->DefineSection( 5 , sil_boxparameters[14]+sbox_copper_layer_thickness , sil_boxparameters[16] , sil_boxparameters[16]+sbox_copper_layer_thickness ); pgonsboxc->DefineSection( 6 , sil_boxparameters[17] , sil_boxparameters[19] , sil_boxparameters[19]+sbox_copper_layer_thickness ); TGeoVolume *sboxc = new TGeoVolume("SBOXc", pgonsboxc, medium[sboxc_medium-1]); gGeoManager->SetVolumeAttribute("SBOXc","seen",1); gGeoManager->SetVolumeAttribute("SBOXc","colo",3); // Aluminum Exit Window TGeoPcon *pgonsew = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,2 ); pgonsew->DefineSection( 0 , sil_boxparameters[2] , 0. , sil_boxparameters[4] ); pgonsew->DefineSection( 1 , sil_boxparameters[2]+sil_sew_thickness , 0. , sil_boxparameters[4] ); TGeoVolume *sew = new TGeoVolume("SEW", pgonsew, medium[sew_medium-1]); gGeoManager->SetVolumeAttribute("SEW","seen",1); gGeoManager->SetVolumeAttribute("SEW","colo",3); // Aluminum front Window TGeoPcon *pgonsfw = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,2 ); pgonsfw->DefineSection( 0 , sil_boxparameters[17]-sil_fpcb_thickness , 0. ,sil_fpcb_hole ); pgonsfw->DefineSection( 1 , sil_boxparameters[17]-sil_fpcb_thickness-sil_sew_thickness , 0. , sil_fpcb_hole ); TGeoVolume *sfw = new TGeoVolume("SFW", pgonsfw, medium[sew_medium-1]); gGeoManager->SetVolumeAttribute("SFW","seen",1); gGeoManager->SetVolumeAttribute("SFW","colo",3); // PVC Front Frame TGeoPcon *pgonpvcf = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,2 ); pgonpvcf->DefineSection( 0 , sil_boxparameters[17]-sil_fpcb_thickness , sil_fpcb_hole-pvc_pvcf_frame_thickness/2 ,sil_fpcb_hole+pvc_pvcf_frame_thickness/2 ); pgonpvcf->DefineSection( 1 , sil_boxparameters[17]-sil_fpcb_thickness-pvc_pvcf_frame_thickness , sil_fpcb_hole-pvc_pvcf_frame_thickness/2 ,sil_fpcb_hole+pvc_pvcf_frame_thickness/2 ); TGeoVolume *spvcf = new TGeoVolume("SPVCF", pgonpvcf, medium[pvcf_medium-1]); gGeoManager->SetVolumeAttribute("SPVCF","seen",1); gGeoManager->SetVolumeAttribute("SPVCF","colo",13); // Aluminum Front Frame // Front PCB TGeoPcon *pgonfpcb = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,2 ); pgonfpcb->DefineSection( 0 , sil_boxparameters[17] , sil_fpcb_hole , sil_boxparameters[19] ); pgonfpcb->DefineSection( 1 , sil_boxparameters[17]-sil_fpcb_thickness , sil_fpcb_hole , sil_boxparameters[19] ); TGeoVolume *fpcb = new TGeoVolume("Fpcb", pgonfpcb, medium[fpcb_medium-1]); gGeoManager->SetVolumeAttribute("Fpcb","seen",1); gGeoManager->SetVolumeAttribute("Fpcb","colo",3); // Back PVB TGeoPcon *pgonbpcb = new TGeoPgon(sil_boxparameters[0] , sil_boxparameters[1] , 8 ,2 ); cout<DefineSection( 0 , pcb_back_pos[2] , pcb_back_dim[0] , pcb_back_dim[1] ); pgonbpcb->DefineSection( 1 , pcb_back_pos[2]+pcb_back_dim[2] , pcb_back_dim[0] , pcb_back_dim[1] ); TGeoVolume *bpcb = new TGeoVolume("Bpcb", pgonbpcb, medium[fpcb_medium-1]); gGeoManager->SetVolumeAttribute("Bpcb","seen",1); gGeoManager->SetVolumeAttribute("Bpcb","colo",3); STUB->AddNode(sew,1.,new TGeoCombiTrans( sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(sfw,1.,new TGeoCombiTrans( sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(fpcb,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(bpcb,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(spvcf,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(sbox,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); STUB->AddNode(sboxc,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); /// Define Beampipe /* TGeoVolume *beam = gGeoManager->MakeBox("Beam",medium[18], 500., 500., 500.); int pipe_medium = 17; int pipe_exw_medium = 17; int pipe_vac_medium = 16; float pipe_flansch_length = 3. ; float pipe_distance_silvio = 0.2 ; float pipe_inner_radius = 10.; float pipe_thickness = 1.; float pipe_flansch_thickness = 2. ; float pipe_length = 200.; float pipe_exw_thickness = 0.005 ; float pip_dim[15]; pip_dim[0] = 90.; pip_dim[1] = 180. ; pip_dim[2] = 4.; pip_dim[3] = sbox_front_edge[2]-pipe_distance_silvio; pip_dim[4] = pipe_inner_radius; pip_dim[5] = pip_dim[4]+pipe_flansch_thickness; pip_dim[6] = pip_dim[3]-pipe_flansch_length; pip_dim[7] = pipe_inner_radius; pip_dim[8] = pip_dim[4]+pipe_flansch_thickness; pip_dim[9] = pip_dim[6]-0.0001; pip_dim[10] = pipe_inner_radius; pip_dim[11] = pip_dim[10]+pipe_thickness; pip_dim[12] = pip_dim[9]-(pipe_length-0.0001-pipe_flansch_length); pip_dim[13] = pipe_inner_radius; pip_dim[14] = pip_dim[10]+pipe_thickness; TGeoPcon *pconexw = new TGeoPcon(pip_dim[0] , pip_dim[1] , 2); pconexw->DefineSection( 0 , pip_dim[3]-pipe_flansch_thickness/2, 0. , pip_dim[4] ); pconexw->DefineSection( 1 , pip_dim[3]-pipe_flansch_thickness/2-pipe_exw_thickness, 0. , pip_dim[4] ); TGeoVolume *exw = new TGeoVolume("Exw", pconexw, medium[pipe_exw_medium-1]); TGeoPcon *pconpipe = new TGeoPcon(pip_dim[0] , pip_dim[1] , int(pip_dim[2])); for(int i=0;iDefineSection( i , z , ri , ra ); } TGeoVolume *pipe = new TGeoVolume("Pipe", pconpipe, medium[pipe_medium-1]); TGeoVolume *pipevac = gGeoManager -> MakeTube("SIA",medium[pipe_vac_medium-1],0.,pip_dim[4],(pipe_length-(pipe_flansch_thickness/2-pipe_exw_thickness))/2); pipe->SetLineColor(17); exw->SetLineColor(18); pipevac->SetLineColor(0); beam->AddNode(pipevac, 1. , new TGeoTranslation( 0. , 0. , pip_dim[3]-pipe_flansch_thickness/2-pipe_exw_thickness-(pipe_length-(pipe_flansch_thickness/2-pipe_exw_thickness))/2 )); beam->AddNode(exw, 1. , new TGeoTranslation( 0. , 0. , 0. )); beam->AddNode(pipe, 1. , new TGeoTranslation( 0. , 0. , 0. )); */ }