1792 std::string
id =
"FrontBoard";
1794 std::string
idx =
id +
"I";
1797 double rmax = getNumber(
m_DB_tubes, tubes,
idx,
"RMAX", 1025.-4. - 15.);
1799 double rmin = getNumber(
m_DB_tubes, tubes,
idx,
"RMIN", 614.-2. + 57.);
1800 double dz_boards = getNumber(
m_DB_tubes, tubes,
idx,
"DZ", 1.);
1801 double phi_size =
M_PI / getNumber(
m_DB_numbers, fbn,
"PhiSizeDiv",
"PARVALUE", 16.);
1802 double phi_start = -0.5 * phi_size;
1803 GeoTubs *bi_shape =
new GeoTubs(rmin, rmax, dz_boards, phi_start, phi_size);
1804 GeoLogVol *bi_l =
new GeoLogVol(
name, bi_shape,
m_Gten);
1805 GeoIntrusivePtr<GeoPhysVol>bi_phys =
new GeoPhysVol(bi_l);
1806 double z_boards = getNumber(
m_DB_numbers, fbn,
"Zdist",
"PARVALUE", 29.) - dz_boards;
1810 rmin = getNumber(
m_DB_tubes, tubes,
idx,
"RMIN", 1025.-4. + 15.);
1811 rmax = getNumber(
m_DB_tubes, tubes,
idx,
"RMAX", (1565.-5. - 15.));
1813 GeoTubs *bm_shape =
new GeoTubs(rmin, rmax, dz_boards, phi_start, phi_size);
1814 GeoLogVol *bm_l =
new GeoLogVol(
name, bm_shape,
m_Gten);
1815 GeoIntrusivePtr<GeoPhysVol>bm_phys =
new GeoPhysVol(bm_l);
1819 rmin = getNumber(
m_DB_tubes, tubes,
idx,
"RMIN", (1565.-5. + 15.));
1820 rmax = getNumber(
m_DB_tubes, tubes,
idx,
"RMAX", (1961.-7.));
1822 GeoTubs *bo_shape =
new GeoTubs(rmin, rmax, dz_boards, phi_start, phi_size);
1823 GeoLogVol *bo_l =
new GeoLogVol(
name, bo_shape,
m_Gten);
1824 GeoIntrusivePtr<GeoPhysVol>bo_phys =
new GeoPhysVol(bo_l);
1828 double z_mb = z_boards - dz_boards;
1829 std::string mb_n[5] = {
"F1",
"F2",
"F3",
"F4",
"F5" };
1830 const double mb_dy[5] = { 74., 57., 57., 60., 44. };
1831 const double mb_dx[5] = { 38.5, 60., 138.5, 100., 165. };
1832 const double mb_dz_cu[5] = { .1, .15, .15, .15, .2 };
1834 double mb_r[5] = { (1739.-5.) , (1640.-5.), (1400.-4.), (1140. - 4.), (835.-1.)};
1835 double mb_dz[5] = { 1.4, 1.1, 1.25, 1.1, 1.25 };
1837 GeoIntrusivePtr<GeoPhysVol>mb_p[5];
1838 for(
int i = 0;
i < 5; ++
i){
1839 idx =
id +
"::" + mb_n[
i];
1844 GeoBox *mb_s =
new GeoBox(
dx,
dy, mb_dz[
i]);
1845 GeoLogVol *mb_l =
new GeoLogVol(
name, mb_s,
m_Gten);
1846 mb_p[
i] =
new GeoPhysVol(mb_l);
1849 std::ostringstream
tmp;
1850 tmp <<
"Cu" << (
i + 1) <<
"z";
1851 double dz1 = getNumber(
m_DB_numbers, mbn,
tmp.str(),
"PARVALUE", mb_dz_cu[
i]);
1852 GeoBox *cu =
new GeoBox(
dx,
dy, dz1);
1854 GeoIntrusivePtr<GeoPhysVol>cup =
new GeoPhysVol(cul);
1855 mb_p[
i]->add(
new GeoTransform(GeoTrf::TranslateZ3D(dz1 - mb_dz[
i])));
1859 tmp <<
"R" << (
i + 1);
1865 idx =
id +
"::Outer";
1871 GeoTubs *oc_s =
new GeoTubs(rmin, rmax, dz_oc, phi_start, phi_size);
1872 GeoLogVol *oc_l =
new GeoLogVol(
name, oc_s,
m_Cable);
1873 GeoIntrusivePtr<GeoPhysVol>oc_p =
new GeoPhysVol(oc_l);
1874 double z_oc = z_boards - dz_boards - dz_oc;
1876 idx =
id +
"::SideOuter";
1878 double dz_soc = getNumber(
m_DB_tubes, tubes,
idx,
"DZ", 1.2);
1881 double dphi_sc = getNumber(
m_DB_numbers, fcson,
"Width",
"PARVALUE", 100.) / rmax;
1882 GeoTubs *soc_s =
new GeoTubs(rmin, rmax, dz_soc, -0.5 * dphi_sc, dphi_sc);
1883 GeoLogVol *soc_l =
new GeoLogVol(
name, soc_s,
m_Cable);
1884 GeoIntrusivePtr<GeoPhysVol>soc_p =
new GeoPhysVol(soc_l);
1886 double z_soc = getNumber(
m_DB_numbers, fcson,
"Zdist",
"PARVALUE", 9.) - dz_soc;
1888 const int number_of_sectors =
m_isModule? 4: 32;
1889 for(
int i = 0;
i < number_of_sectors; ++
i){
1892 GeoIdentifierTag* iTag =
new GeoIdentifierTag(
i);
1894 GeoTransform* xf1 =
new GeoTransform(
GeoTrf::Transform3D(GeoTrf::Translate3D(0., 0., z_oc)*GeoTrf::RotateZ3D(
phi)));
1896 motherPhysical->add(iTag);
1897 motherPhysical->add(xf);
1898 motherPhysical->add(bi_phys);
1900 motherPhysical->add(iTag);
1901 motherPhysical->add(xf);
1902 motherPhysical->add(bm_phys);
1904 motherPhysical->add(iTag);
1905 motherPhysical->add(xf);
1906 motherPhysical->add(bo_phys);
1908 motherPhysical->add(iTag);
1909 motherPhysical->add(xf1);
1910 motherPhysical->add(oc_p);
1912 for(
int j = 0; j < 5; ++ j){
1913 GeoTransform* xf2 =
new GeoTransform(
1915 motherPhysical->add(iTag);
1916 motherPhysical->add(xf2);
1917 motherPhysical->add(mb_p[j]);
1920 GeoTransform* xf3 =
new GeoTransform(
GeoTrf::Transform3D(GeoTrf::Translate3D(0., 0., z_soc)*GeoTrf::RotateZ3D(
m_Position + (
i - 2) * phi_size + 0.5 * dphi_sc)));;
1922 GeoTransform* xf4 =
new GeoTransform(
GeoTrf::Transform3D(GeoTrf::Translate3D(0., 0., z_soc)*GeoTrf::RotateZ3D(
m_Position + (
i - 1) * phi_size - 0.5 * dphi_sc)));
1924 motherPhysical->add(
new GeoIdentifierTag(
i * 2));
1925 motherPhysical->add(xf3);
1926 motherPhysical->add(soc_p);
1928 motherPhysical->add(
new GeoIdentifierTag(
i * 2 + 1));
1929 motherPhysical->add(xf4);
1930 motherPhysical->add(soc_p);