{ TGeoVolume *silvio = gGeoManager->MakeBox("Silvio",medium[18], 500., 500., 500.); 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 = 1. ; 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); for(int i=0;i<9;i++) { if(i==0) { silvio->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 { silvio->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]); 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]); // 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]); // 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]); // 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]); // 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]); // 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]); silvio->AddNode(sew,1.,new TGeoCombiTrans( sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(sfw,1.,new TGeoCombiTrans( sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(fpcb,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(bpcb,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(spvcf,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(sbox,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); silvio->AddNode(sboxc,1.,new TGeoCombiTrans(sbox_pos[0] , sbox_pos[1] , sbox_pos[2] ,new TGeoRotation("rot1", 0. , 0. , 45./2. ))); }