{ float dim_dcif[3] = { 16.3 , 17.3 , 33.675 } ; float pos_dcif[3] = { 0. , 0. , -7.875 } ; int med_dcif = 19 ; float dim_bitr[5] = { 2.35 , 15.2 , 17.3 , 18.1 , 19.2 } ; float pos_bitr[3] = { 0. , 0. , 28.15 } ; int med_bitr = 26 ; float dim_bitl[3] = { 15.5 , 18.1 , 3.75 } ; float pos_bitl[3] = { 0. , 0. , -45.15 } ; int med_bitl = 26 ; float dim_fcbo[3] = { 18.5 , 20.2 , 0.6 } ; float pos_fcbo[3] = { 0. , 0. , 31. } ; int med_fcbo = 24 ; float dim_fcon[5] = { 47.2 , 19.7 , 20.3 , 80. , 80.6 }; float pos_fcon[3] = { 0. , 0. , 78.8 } ; int med_fcon = 24 ; float dim_bcon[5] = { 13.375 , 81.,85. , 15.25 , 19.25 }; float pos_bcon[3] = { 0. , 0. , -56.875 } ; int med_bcon = 24 ; float dim_dcof[3] = { 87. , 90.5 , 103.5}; float pos_dcof[3] = { 0. , 0. , 27.5 } ; int med_dcof = 19 ; float pos_cdcp[3] = { 0. , 0. , 0. } ; float pos_cpse[3] = { 0. , 0. , 0. } ; int med_dcif = 19 ; int med_cdcp = 8 ; int med_cdse = 8 ; float cdc_dim[14]; float cpln_dim[14]; float cdc_z0 = 67.5 ; float cdc_rmax = 80.1 ; float cdc_rmin = 20.7 ; float cdc_alphaback = 22.41 ; float cdc_lmax = 192.5 ; float cdc_lmin = 75. ; float cdc_pangle = 8.0; // CDC inner frame (tube) (DCIF) TGeoVolume *DCIF = gGeoManager -> MakeTube("DCIF",medium[med_dcif-1],dim_dcif[0],dim_dcif[1],dim_dcif[2]); gGeoManager->SetVolumeAttribute("DCIF","seen",1); gGeoManager->SetVolumeAttribute("DCIF","colo",15); // border of inner tube right (z>0) (BITR) and left (BITL) TGeoVolume *BITR = gGeoManager -> MakeCone("BITR",medium[med_bitr-1],dim_bitr[0],dim_bitr[1],dim_bitr[2],dim_bitr[3],dim_bitr[4]); gGeoManager->SetVolumeAttribute("BITR","seen",1); gGeoManager->SetVolumeAttribute("BITR","colo",15); TGeoVolume *BITL = gGeoManager -> MakeTube("BITL",medium[med_bitl-1],dim_bitl[0],dim_bitl[1],dim_bitl[2]); gGeoManager->SetVolumeAttribute("BITL","seen",1); gGeoManager->SetVolumeAttribute("BITL","colo",15); // border of forward conus (FCBO) TGeoVolume *FCBO = gGeoManager -> MakeTube("FCBO",medium[med_fcbo-1],dim_fcbo[0],dim_fcbo[1],dim_fcbo[2]); gGeoManager->SetVolumeAttribute("FCBO","seen",1); gGeoManager->SetVolumeAttribute("FCBO","colo",15); // CDC forward conus (FCON) TGeoVolume *FCON = gGeoManager -> MakeCone("FCON",medium[med_fcon-1],dim_fcon[0],dim_fcon[1],dim_fcon[2],dim_fcon[3],dim_fcon[4]); gGeoManager->SetVolumeAttribute("FCON","seen",1); gGeoManager->SetVolumeAttribute("FCON","colo",15); // CDC rearward conus (BCON) TGeoVolume *BCON = gGeoManager -> MakeCone("BCON",medium[med_bcon-1],dim_bcon[0],dim_bcon[1],dim_bcon[2],dim_bcon[3],dim_bcon[4]); gGeoManager->SetVolumeAttribute("BCON","seen",1); gGeoManager->SetVolumeAttribute("BCON","colo",15); // CDC outer cylinder (DCOF) TGeoVolume *DCOF = gGeoManager -> MakeTube("DCOF",medium[med_dcof-1],dim_dcof[0],dim_dcof[1],dim_dcof[2]); gGeoManager->SetVolumeAttribute("DCOF","seen",0); gGeoManager->SetVolumeAttribute("DCOF","colo",15); // define wire planes cdc_dim[0] = 0. ; // start value of phi cdc_dim[1] = 360. ; // delta phi cdc_dim[2] = - cdc_z0 ; // z position of 1. plane cdc_dim[3] = cdc_rmax ; // inner radius at 1. plane cdc_dim[4] = cdc_rmax ; // outer radius at 1. plane // ! z position of 2. plane cdc_dim[5] = - cdc_z0 + (cdc_rmax-cdc_rmin)*tan(cdc_alphaback*3.14/180); cdc_dim[6] = cdc_rmin ; // inner radius at 2. plane cdc_dim[7] = cdc_rmax ; // outer radius at 2. plane cdc_dim[8] = cdc_dim[5] + cdc_lmin ; // z pos of 3. plane cdc_dim[9] = cdc_rmin ; // inner radius at 3. plane cdc_dim[10] = cdc_rmax ; // outer radius at 3. plane cdc_dim[11] = cdc_lmax - cdc_z0 ; // z pos of 4. plane cdc_dim[12] = cdc_rmax ; // inner radius at 4. plane cdc_dim[13] = cdc_rmax ; // outer radius at 4. plane TGeoPcon *pconcdcp = new TGeoPcon(cdc_dim[0] , cdc_dim[1] , 4 ); pconcdcp->DefineSection( 0 , cdc_dim[2] , cdc_dim[3] , cdc_dim[4] ); pconcdcp->DefineSection( 1 , cdc_dim[5] , cdc_dim[6] , cdc_dim[7] ); pconcdcp->DefineSection( 2 , cdc_dim[8] , cdc_dim[9] , cdc_dim[10] ); pconcdcp->DefineSection( 3 , cdc_dim[11] , cdc_dim[12] , cdc_dim[13] ); TGeoVolume *CDC = new TGeoVolume("CDC", pconcdcp, medium[med_cdcp-1]); gGeoManager->SetVolumeAttribute("DCOF","seen",1); gGeoManager->SetVolumeAttribute("DCOF","colo",15); CTUB->AddNode( DCIF , 1 , new TGeoTranslation( pos_dcif[0] , pos_dcif[1] , pos_dcif[2] ) ); // CDC inner frame (tube) (DCIF) CTUB->AddNode( BITR , 1 , new TGeoTranslation( pos_bitr[0] , pos_bitr[1] , pos_bitr[2] ) ); // border of inner tube right (z>0) (BITR) and left (BITL) CTUB->AddNode( BITL , 1 , new TGeoTranslation( pos_bitl[0] , pos_bitl[1] , pos_bitl[2] ) ); // border of inner tube right (z>0) (BITR) and left (BITL) CTUB->AddNode( FCBO , 1 , new TGeoTranslation( pos_fcbo[0] , pos_fcbo[1] , pos_fcbo[2] ) ); // border of forward conus (FCBO) CTUB->AddNode( FCON , 1 , new TGeoTranslation( pos_fcon[0] , pos_fcon[1] , pos_fcon[2] ) ); // CDC forward conus (FCON) CTUB->AddNode( BCON , 1 , new TGeoTranslation( pos_bcon[0] , pos_bcon[1] , pos_bcon[2] ) ); // CDC rearward conus (BCON) CTUB->AddNode( DCOF , 1 , new TGeoTranslation( pos_dcof[0] , pos_dcof[1] , pos_dcof[2] ) ); // CDC outer cylinder (DCOF) CTUB->AddNode( CDC , 1 , new TGeoTranslation( pos_cdcp[0] , pos_cdcp[1] , pos_cdcp[2] ) ); // Wire planes }