14 #include "CLHEP/Units/GlobalSystemOfUnits.h"
16 #include <CLHEP/Geometry/Point3D.h>
17 #include <CLHEP/Geometry/Vector3D.h>
18 #include <CLHEP/Geometry/Transform3D.h>
29 #include "CLHEP/Geometry/Transform3D.h"
36 typedef HepGeom::Point3D<double>
Pt3D;
37 typedef HepGeom::Transform3D
Tf3D;
38 typedef HepGeom::ReflectZ3D
RfZ3D;
39 typedef HepGeom::Translate3D
Tl3D;
40 typedef HepGeom::Rotate3D
Ro3D;
41 typedef HepGeom::RotateZ3D
RoZ3D;
42 typedef HepGeom::RotateY3D
RoY3D;
43 typedef HepGeom::RotateX3D
RoX3D;
45 typedef CLHEP::Hep3Vector
Vec3;
46 typedef CLHEP::HepRotation
Rota;
392 void web(
unsigned int iWeb,
846 m_vecIlyPipeLength(),
862 m_IlyFanOutLength(0),
863 m_IlyFanOutHeight(0),
913 m_BackPlateLength(0),
917 m_BackPlate2Name(
""),
918 m_BackPlate2Thick(0),
928 m_GrEdgeSlotName(
""),
931 m_GrEdgeSlotHeight(0),
932 m_GrEdgeSlotWidth(0),
938 m_vecGrMidSlotHeight(),
942 m_vecBackPipeThick(),
944 m_BackPipeWaterMat(
""),
948 m_BackCoolBarHere(0),
949 m_BackCoolBarWidth(0),
950 m_BackCoolBarHeight(0),
952 m_BackCoolBarName(
""),
953 m_BackCoolBarThick(0),
954 m_BackCoolBarMat(
""),
955 m_BackCoolBarSSName(
""),
956 m_BackCoolBarSSThick(0),
957 m_BackCoolBarSSMat(
""),
958 m_BackCoolBarWaName(
""),
959 m_BackCoolBarWaThick(0),
960 m_BackCoolBarWaMat(
""),
961 m_BackCoolVFEHere(0),
962 m_BackCoolVFEName(
""),
963 m_BackCoolVFEMat(
""),
966 m_vecBackVFELyrThick(),
967 m_vecBackVFELyrName(),
968 m_vecBackVFELyrMat(),
970 m_vecBackCoolSecSep(),
971 m_vecBackCoolNPerSec(),
974 m_vecBackMiscThick(),
979 m_PatchPanelName(
""),
980 m_vecPatchPanelThick(),
981 m_vecPatchPanelNames(),
982 m_vecPatchPanelMat(),
983 m_BackCoolTankHere(0),
984 m_BackCoolTankName(
""),
985 m_BackCoolTankWidth(0),
986 m_BackCoolTankThick(0),
987 m_BackCoolTankMat(
""),
988 m_BackCoolTankWaName(
""),
989 m_BackCoolTankWaWidth(0),
990 m_BackCoolTankWaMat(
""),
991 m_BackBracketName(
""),
992 m_BackBracketHeight(0),
993 m_BackBracketMat(
""),
996 m_DryAirTubeName(
""),
998 m_DryAirTubeInnDiam(0),
999 m_DryAirTubeOutDiam(0),
1000 m_DryAirTubeMat(
""),
1001 m_MBCoolTubeHere(0),
1002 m_MBCoolTubeName(
""),
1003 m_MBCoolTubeInnDiam(0),
1004 m_MBCoolTubeOutDiam(0),
1005 m_MBCoolTubeMat(
""),
1008 m_MBManifInnDiam(0),
1009 m_MBManifOutDiam(0),
1017 m_PincerRodName(
""),
1019 m_vecPincerRodAzimuth(),
1020 m_PincerEnvName(
""),
1022 m_PincerEnvWidth(0),
1023 m_PincerEnvHeight(0),
1024 m_PincerEnvLength(0),
1025 m_vecPincerEnvZOff(),
1026 m_PincerBlkName(
""),
1028 m_PincerBlkLength(0),
1029 m_PincerShim1Name(
""),
1030 m_PincerShimHeight(0),
1031 m_PincerShim2Name(
""),
1032 m_PincerShimMat(
""),
1033 m_PincerShim1Width(0),
1034 m_PincerShim2Width(0),
1035 m_PincerCutName(
""),
1037 m_PincerCutWidth(0),
1038 m_PincerCutHeight(0)
1042 edm::LogVerbatim(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance";
1082 m_SpmNPerHalf =
static_cast<unsigned int>(nArgs[
"SpmNPerHalf"]);
1133 m_NCryTypes =
static_cast<unsigned int>(nArgs[
"NCryTypes"]);
1224 m_NFawPerSupm =
static_cast<unsigned int>(nArgs[
"NFawPerSupm"]);
1390 edm::LogVerbatim(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl;
1393 const unsigned int copyOne(1);
1394 const unsigned int copyTwo(2);
1423 const std::vector<double>& cutBoxParms(spmCutBox.
parameters());
1438 const std::vector<double>& sideParms(sideSolid.
parameters());
1443 for (
unsigned int icopy(1); icopy <= 2; ++icopy) {
1447 const Tl3D tr(tvec[0], tvec[1], tvec[2]);
1448 const RoZ3D ro(rang);
1457 const Tl3D trSide(tvec[0],
1458 tvec[1] + (1 == icopy ? 1. : -1.) * (cutBoxParms[1] + sideParms[1]) +
1461 const RoZ3D roSide(rang);
1486 const double dphi(360. * deg / (1. *
spmNPerHalf()));
1487 for (
unsigned int iphi(0); iphi < 2 *
spmNPerHalf(); ++iphi) {
1500 const unsigned int offr(4 * iphi);
1501 const unsigned int offt(3 * iphi);
1508 const Tf3D both(rotaExtra * rotaBase);
1514 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
1524 for (
unsigned int ilyx(0); ilyx !=
vecIlyThick().size(); ++ilyx) {
1536 for (
unsigned int iPipeType(0); iPipeType !=
vecIlyPipeLength().size(); ++iPipeType) {
1582 for (
unsigned int ily(0); ily !=
vecIlyThick().size(); ++ily) {
1583 const double ilyRMax(ilyRMin +
vecIlyThick()[ily]);
1593 unsigned int copyNum[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1597 unsigned int ptmCopy(0);
1598 for (
unsigned int ilyPTM(0); ilyPTM !=
vecIlyPTMZ().size(); ++ilyPTM) {
1601 const double yy(radius *
sin(phi));
1602 const double xx(radius *
cos(phi));
1612 unsigned int fanOutCopy(0);
1613 for (
unsigned int ilyFO(0); ilyFO !=
vecIlyFanOutZ().size(); ++ilyFO) {
1616 const double yy(radius *
sin(phi));
1617 const double xx(radius *
cos(phi));
1624 CLHEP::HepRotationZ(phi) * CLHEP::HepRotationY(180 * deg)));
1626 unsigned int femCopy(0);
1627 for (
unsigned int ilyFEM(0); ilyFEM !=
vecIlyFEMZ().size(); ++ilyFEM) {
1630 const double yy(radius *
sin(phi));
1631 const double xx(radius *
cos(phi));
1640 for (
unsigned int iPipe(0); iPipe !=
vecIlyPipePhi().size(); ++iPipe) {
1647 for (
unsigned int ly(0); ly != 2; ++ly) {
1650 const double yy(radius *
sin(phi));
1651 const double xx(radius *
cos(phi));
1660 Rota(
Vec3(xx, yy, 0), 90 * deg))));
1670 std::vector<double> cri;
1671 std::vector<double> cro;
1672 std::vector<double> czz;
1704 const double beta1(atan((BNom1 - bNom1) / LNom1));
1706 const double sinbeta1(
sin(beta1));
1708 const double tana_hawR((BNom1 - bNom1) / LNom1);
1712 const double a_hawR(bNom1 + sClr1 + 2 * sWrap1 + 2 * sWall1 - sinbeta1 * (fClr1 + fWrap1 + fWall1));
1713 const double B_hawR(a_hawR + H_hawR * tana_hawR);
1714 const double b_hawR(a_hawR + h_hawR * tana_hawR);
1717 const Trap trapHAWR(a_hawR / 2.,
1732 const double al1_fawR(atan((B_hawR - a_hawR) / H_hawR) +
M_PI_2);
1735 const Trap trapFAW(a_hawR,
1753 const double hawBoxClr(1 * mm);
1758 const std::vector<double>& hawBoxParms(hawCutBox.
parameters());
1761 const Pt3D b1(hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1762 const Pt3D b2(-hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1763 const Pt3D b3(-hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2]);
1767 const Tf3D hawCutForm(b1,
1772 Pt3D(vHAW[0].
x() - hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel));
1779 hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1780 myrot(hawCutName.
name() +
"R", hawCutForm.getRotation())));
1787 const std::vector<double>& fawBoxParms(fawCutBox.
parameters());
1790 const Pt3D bb1(fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1791 const Pt3D bb2(-fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1792 const Pt3D bb3(-fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2]);
1794 const Tf3D fawCutForm(bb1,
1797 vFAW[2] +
Pt3D(2 * hawBoxClr, -5 * mm, 0),
1798 vFAW[1] +
Pt3D(-2 * hawBoxClr, -5 * mm, 0),
1799 Pt3D(vFAW[1].
x() - 2 * hawBoxClr, vFAW[1].
y() - trapFAW.
h(), vFAW[1].z() - zDel));
1806 fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()),
1807 myrot(fawCutName.
name() +
"R", fawCutForm.getRotation())));
1810 const Tf3D hawRform(vHAW[3],
1814 0.5 * (vFAW[0] + vFAW[3]),
1815 0.5 * (vFAW[1] + vFAW[2]));
1820 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1827 DDTranslation(-hawRform.getTranslation().x(), -hawRform.getTranslation().y(), -hawRform.getTranslation().z()),
1829 CLHEP::HepRotationY(180 * deg) *
1830 CLHEP::HepRep3x3(1, 0, 0, 0, 1, 0, 0, 0, -1)));
1841 for (
unsigned int iPhi(1); iPhi <=
nFawPerSupm(); ++iPhi) {
1851 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z()),
1861 const Trap trapGrid((B_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1862 (b_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1866 (L_hawR - 8 * cm) / 2.,
1877 const Tf3D gridForm(vGrid[4],
1880 vHAW[5] -
Pt3D(0, h_Grid, 0),
1889 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z()),
1920 double theta(90 * deg);
1922 double side(0 * mm);
1923 double zeta(0 * deg);
1925 for (
unsigned int cryType(1); cryType <=
nCryTypes(); ++cryType) {
1937 const double alfCry(90 * deg + atan((bNom - bUnd - aNom + aUnd) / (hNom - hUnd)));
1939 const Trap trapCry((ANom - AUnd) / 2.,
1946 aNom - aUnd - ANom + AUnd,
1947 hNom - hUnd - HNom + HUnd
1976 unsigned int copyAPD(0);
1979 const double delta(atan((HNom - hNom) / LNom));
1981 const double sindelta(
sin(delta));
1983 const double gamma(atan((ANom - aNom) / LNom));
1985 const double singamma(
sin(gamma));
1987 const double beta(atan((BNom - bNom) / LNom));
1989 const double sinbeta(
sin(beta));
1992 const double alfClr(90 * deg + atan((bNom - aNom) / (hNom + sClr)));
1994 const Trap trapClr((ANom + sClr + rClr * singamma) / 2.,
1995 (aNom + sClr - fClr * singamma) / 2.,
1996 (bNom + sClr - fClr * sinbeta) / 2.,
1997 (HNom + sClr + rClr * sindelta) / 2.,
1998 (hNom + sClr - fClr * sindelta) / 2.,
1999 (LNom + fClr + rClr) / 2.,
2011 const double alfWrap(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap)));
2013 const Trap trapWrap((trapClr.
A() + 2 * sWrap + rWrap * singamma) / 2,
2014 (trapClr.
a() + 2 * sWrap - fWrap * singamma) / 2,
2015 (trapClr.
b() + 2 * sWrap - fWrap * sinbeta) / 2,
2016 (trapClr.
H() + 2 * sWrap + rWrap * sindelta) / 2,
2017 (trapClr.
h() + 2 * sWrap - fWrap * sindelta) / 2,
2018 (trapClr.
L() + fWrap + rWrap) / 2.,
2020 aNom - ANom - (cryType > 9 ? 0 : 0.020 * mm),
2025 const DDSolid wrapSolid(
mytrap(wrapDDName.name(), trapWrap));
2030 const double alfWall(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap + 2 * sWall)));
2032 const Trap trapWall((trapWrap.A() + 2 * sWall + rWall * singamma) / 2,
2033 (trapWrap.a() + 2 * sWall - fWall * singamma) / 2,
2034 (trapWrap.b() + 2 * sWall - fWall * sinbeta) / 2,
2035 (trapWrap.H() + 2 * sWall + rWall * sindelta) / 2,
2036 (trapWrap.h() + 2 * sWall - fWall * sindelta) / 2,
2037 (trapWrap.L() + fWall + rWall) / 2.,
2039 aNom - ANom - (cryType < 10 ? 0.150 * mm : 0.100 * mm),
2044 const DDSolid wallSolid(
mytrap(wallDDName.name(), trapWall));
2048 edm::LogVerbatim(
"EcalGeom") <<
"Traps:\n a: " << trapCry.
a() <<
", " << trapClr.
a() <<
", " << trapWrap.a()
2049 <<
", " << trapWall.a() <<
"\n b: " << trapCry.
b() <<
", " << trapClr.
b() <<
", "
2050 << trapWrap.b() <<
", " << trapWall.b() <<
"\n A: " << trapCry.
A() <<
", "
2051 << trapClr.
A() <<
", " << trapWrap.A() <<
", " << trapWall.A()
2052 <<
"\n B: " << trapCry.
B() <<
", " << trapClr.
B() <<
", " << trapWrap.B() <<
", "
2053 << trapWall.B() <<
"\n h: " << trapCry.
h() <<
", " << trapClr.
h() <<
", "
2054 << trapWrap.h() <<
", " << trapWall.h() <<
"\n H: " << trapCry.
H() <<
", "
2055 << trapClr.
H() <<
", " << trapWrap.H() <<
", " << trapWall.H()
2056 <<
"\n a1: " << trapCry.
a1() / deg <<
", " << trapClr.
a1() / deg <<
", "
2057 << trapWrap.a1() / deg <<
", " << trapWall.a1() / deg
2058 <<
"\n a4: " << trapCry.
a4() / deg <<
", " << trapClr.
a4() / deg <<
", "
2059 << trapWrap.a4() / deg <<
", " << trapWall.a4() / deg <<
"\n x15: " << trapCry.
x15()
2060 <<
", " << trapClr.
x15() <<
", " << trapWrap.x15() <<
", " << trapWall.x15()
2061 <<
"\n y15: " << trapCry.
y15() <<
", " << trapClr.
y15() <<
", " << trapWrap.y15()
2062 <<
", " << trapWall.y15();
2065 const Vec3 cryToClr(0, 0, (rClr - fClr) / 2);
2090 const Vec3 clrToWrap(0, 0, (rWrap - fWrap) / 2);
2099 const Vec3 wrapToWall1(0, 0, (rWall - fWall) / 2);
2100 const Vec3 wrapToWall(
Vec3((cryType > 9 ? 0 : 0.005 * mm), 0, 0) + wrapToWall1);
2111 const double sidePrime((trapWall.a() - trapCry.
a()) / 2);
2112 const double frontPrime(fWall + fWrap + fClr + LUnd / 2);
2133 for (
unsigned int etaAlv(1); etaAlv <=
nCryPerAlvEta(); ++etaAlv) {
2135 edm::LogVerbatim(
"EcalGeom") <<
"theta=" << theta / deg <<
", sidePrime=" << sidePrime
2136 <<
", frontPrime=" << frontPrime <<
", zeta=" << zeta <<
", delta=" << delta
2139 zee += 0.075 * mm + (side *
cos(zeta) + trapWall.h() - sidePrime) /
sin(theta);
2147 const Pt3D trap2(vCry[2] + cryToClr + clrToWrap + wrapToWall);
2149 const Pt3D trap3(trap2 +
Pt3D(0, -trapCry.
h(), 0));
2150 const Pt3D trap1(trap3 +
Pt3D(-trapCry.
a(), 0, 0));
2153 const Pt3D wedge2(wedge3 +
Pt3D(0, trapCry.
h() *
cos(theta), -trapCry.
h() *
sin(theta)));
2154 const Pt3D wedge1(wedge3 +
Pt3D(trapCry.
a(), 0, 0));
2156 const Tf3D tForm1(trap1, trap2, trap3, wedge1, wedge2, wedge3);
2158 const double xx(0.050 * mm);
2160 const Tf3D tForm(HepGeom::Translate3D(xx, 0, 0) * tForm1);
2165 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2172 if (5 == cryType || 9 == cryType || 13 == cryType || 17 == cryType)
2174 const unsigned int webIndex(cryType / 4);
2219 const std::vector<double>& backPlateParms(backPlateSolid.
parameters());
2237 outtra + backPlateTra,
2272 outtra + backSideTra1,
2273 myrot(
backSideName().
name() +
"Rot8", CLHEP::HepRotationX(180 * deg) * CLHEP::HepRotationZ(90 * deg)));
2279 outtra + backSideTra2,
2297 const double manifCut(2 * mm);
2305 mBManifWaName, backCoolWidth / 2. - manifCut, 0,
mBManifInnDiam() / 2, 0 * deg, 360 * deg));
2321 const double deltaY(-5 * mm);
2327 unsigned int edgeSlotCopy(0);
2328 unsigned int midSlotCopy(0);
2341 const DDTranslation gTra(outtra + backPlateTra + grilleTra);
2344 if (0 == (iGr - 1) % 2) {
2350 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2356 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2458 offTra += 2 * backVFELyrTra;
2502 unsigned int iCVFECopy(1);
2503 unsigned int iSep(0);
2504 unsigned int iNSec(0);
2506 for (
unsigned int iMod(0); iMod != 4; ++iMod) {
2509 const double pipeZPos(
vecGrilleZOff()[2 * iMod + 1] - pipeLength / 2 - 1.5 * mm);
2514 for (
unsigned int iMisc(0); iMisc != nMisc; ++iMisc) {
2518 for (
unsigned int iMB(0); iMB !=
vecMBLyrThick().size(); ++iMB) {
2538 const double halfZTank(halfZBCool - 5 * cm);
2548 DDTranslation(-backCoolHeight / 2 + backCoolTankHeight / 2. + bottomThick,
2584 for (
unsigned int j(0);
j != nMisc; ++
j)
2600 bSumTra += 2 * bTra;
2641 -backCoolHeight / 2.0 +
mBCoolTubeOutDiam() / 2., -bHalfWidth + (
j + 1) * bHalfWidth / 5, 0),
2710 dryAirTubeTra1.z());
2723 const unsigned int numSec(static_cast<unsigned int>(
vecBackCoolNSec()[iMod]));
2724 for (
unsigned int jSec(0); jSec != numSec; ++jSec) {
2726 for (
unsigned int iBar(0); iBar != nMax; ++iBar) {
2731 if (jSec != numSec - 1)
2753 double patchHeight(0);
2763 const std::vector<double>& patchParms(patchSolid.
parameters());
2808 const std::vector<double>& envParms(envSolid.
parameters());
2813 const std::vector<double>& blkParms(blkSolid.parameters());
2823 const std::vector<double>& cutParms(cutSolid.
parameters());
2835 const std::vector<double>& shim2Parms(shim2Solid.
parameters());
2839 DDTranslation(+cutParms[0] - shim2Parms[0], -cutParms[1] + shim2Parms[1], 0),
2848 const std::vector<double>& shim1Parms(shim1Solid.
parameters());
2853 DDTranslation(+envParms[0] - shim1Parms[0], -envParms[1] + shim1Parms[1], -envParms[2] + shim1Parms[2]),
2891 edm::LogVerbatim(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it...";
2899 std::make_unique<DDRotationMatrix>(r.xx(), r.xy(), r.xz(), r.yx(), r.yy(), r.yz(), r.zx(), r.zy(), r.zz()));
2905 const pair<std::string, std::string>
temp(
DDSplit(s));
2906 if (temp.second.empty()) {
2909 return DDName(temp.first, temp.second);
2915 ddname(s), t.
dz(), t.
theta(), t.
phi(), t.
h1(), t.
bl1(), t.
tl1(), t.
alp1(), t.
h2(), t.
bl2(), t.
tl2(), t.
alp2());
2923 const HepGeom::Point3D<double>& corner,
2930 const unsigned int copyOne(1);
2934 const double BWebx(bWeb + (BWeb - bWeb) * LWebx / LWeb);
2937 const Trap trapWebClr(BWebx / 2,
2951 const Trap trapWebPl(trapWebClr.
A() / 2,
2956 trapWebClr.
L() / 2.,
2958 trapWebClr.
b() - trapWebClr.
B(),
2962 const DDSolid webPlSolid(
mytrap(webPlDDName.fullname(), trapWebPl));
2973 zee += trapWebClr.
h() /
sin(theta);
2975 const double beta(theta + delta);
2977 const double zWeb(zee - front *
cos(beta) + side *
sin(beta));
2978 const double yWeb(front *
sin(beta) + side *
cos(beta));
2980 const Pt3D wedge3(corner +
Pt3D(0, -yWeb, zWeb));
2981 const Pt3D wedge2(wedge3 +
Pt3D(0, trapWebClr.
h() *
cos(theta), -trapWebClr.
h() *
sin(theta)));
2982 const Pt3D wedge1(wedge3 +
Pt3D(trapWebClr.
a(), 0, 0));
2985 edm::LogVerbatim(
"EcalGeom") <<
"trap1=" << vWeb[0] <<
", trap2=" << vWeb[2] <<
", trap3=" << vWeb[3];
2987 edm::LogVerbatim(
"EcalGeom") <<
"wedge1=" << wedge1 <<
", wedge2=" << wedge2 <<
", wedge3=" << wedge3;
2989 const Tf3D tForm(vWeb[0], vWeb[2], vWeb[3], wedge1, wedge2, wedge3);
2995 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
std::vector< double > m_vecSpmBRota
double grMidSlotXOff() const
double m_BackCoolBarWidth
const std::vector< std::string > & vecBackMiscName() const
unsigned int spmNPerHalf() const
double patchPanelHere() const
const std::string & backCoolTankName() const
double backCoolTankWaWidth() const
Log< level::Info, true > LogVerbatim
DDMaterial ilyBndlMat() const
unsigned int m_MBCoolTubeNum
std::string m_BackCoolTankMat
const std::vector< double > & vecSpmTran() const
const std::vector< std::string > & vecMBLyrName() const
unsigned int m_SpmNPerHalf
HepGeom::Transform3D Tf3D
const std::vector< double > & vecSpmRMin() const
const std::string & clrName() const
double ilyFEMWidth() const
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
~DDEcalBarrelAlgo() override
const std::vector< double > & vecBackCoolNSec() const
DDMaterial ilyDiffMat() const
DDMaterial backSideMat() const
double backPlate2Thick() const
DDMaterial mBManifMat() const
double m_PincerShim1Width
const std::string & backPipeName() const
const std::vector< double > & vecIlyPipeLength() const
double pincerEnvLength() const
double grilleZSpace() const
std::string m_BackVFEName
DDMaterial ilyFEMMat() const
double backPlateThick() const
void execute(DDCompactView &cpv) override
double m_GrEdgeSlotHeight
DDName mBManifName() const
std::string m_BackCoolTankWaName
std::vector< double > m_vecIlyPipeLength
double backPlateHere() const
std::string m_BackPipeMat
std::vector< double > m_vecIlyFanOutPhi
const std::vector< double > & vecBackCoolSecSep() const
double grEdgeSlotHere() const
EcalTrapezoidParameters Trap
double hawRCutDelY() const
double pincerBlkLength() const
const std::vector< double > & vecNomCryDimBR() const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
double m_PincerShim2Width
std::string m_IlyDiffName
double spmCutThick() const
std::string m_IlyFanOutName
DDName pincerRodName() const
std::vector< double > m_vecWebLength
double ilyDiffLength() const
std::string m_DryAirTubeMat
DDMaterial webPlMat() const
unsigned int nCryPerAlvEta() const
DDMaterial spmSideMat() const
double backMiscHere() const
DDMaterial is used to define and access material information.
DDMaterial grEdgeSlotMat() const
DDMaterial backCoolTankMat() const
const std::vector< std::string > & vecBackVFELyrName() const
const std::string & mBCoolTubeName() const
VertexList vertexList() const
std::string m_BackCoolBarSSName
const std::string & backCoolTankWaName() const
std::vector< double > m_vecSpmZPts
DDRotation myrot(const std::string &s, const CLHEP::HepRotation &r) const
Create a DDRotation from a string converted to DDName and CLHEP::HepRotation converted to DDRotationM...
double backSideYOff2() const
double grilleHere() const
static DDSolid polycone(const DDName &name, double startPhi, double deltaPhi, const std::vector< double > &z, const std::vector< double > &rmin, const std::vector< double > &rmax)
Creates a polycone (refere to Geant3 or Geant4 documentation)
std::vector< std::string > m_vecPatchPanelMat
Sin< T >::type sin(const T &t)
DDMaterial ddmat(const std::string &s) const
std::vector< double > m_vecBarZPts
double backCoolBarHeight() const
std::vector< double > m_vecBackMiscThick
double backSideHere() const
double ilyBndlLength() const
DDMaterial grilleMat() const
Geom::Theta< T > theta() const
DDMaterial backCoolBarSSMat() const
double backCoolVFEHere() const
const std::vector< double > & vecSpmRMax() const
double backPipeHere() const
std::string m_PincerShim2Name
double grilleWidth() const
DDName is used to identify DDD entities uniquely.
std::vector< double > m_vecSpmRMin
const std::vector< double > & vecBarRota3() const
std::vector< double > m_vecGrilleZOff
std::string to_string(const V &value)
std::string m_BackPipeWaterMat
double m_BackCoolBarHeight
std::string m_PincerShim1Name
DDMaterial backCoolTankWaMat() const
std::vector< double > m_vecGrilleHeight
std::string m_SpmSideName
std::vector< std::string > m_vecBackVFELyrMat
std::vector< double > m_vecIlyFEMPhi
static std::string & ns()
DDName backCoolBarSSName() const
std::string m_BackSideName
double backSideLength() const
double m_BackCoolBarWaThick
DDMaterial barMat() const
DDMaterial apdMat() const
DDName pincerEnvName() const
DDMaterial backVFEMat() const
double pincerRodHere() const
DDName backVFEName() const
double mBManifOutDiam() const
double ilyFanOutHere() const
const std::vector< double > & vecNomCryDimBF() const
const std::vector< std::string > & vecPatchPanelNames() const
Compact representation of the geometrical detector hierarchy.
DDName backPlate2Name() const
DDName grEdgeSlotName() const
std::string m_PincerRodMat
std::vector< double > m_vecBarRMax
std::string m_PincerCutMat
DDMaterial mBCoolTubeMat() const
A DDSolid represents the shape of a part.
std::string m_GrEdgeSlotMat
DDName backSideName() const
double mBCoolTubeNum() const
double backPlateLength() const
std::vector< double > m_vecSpmTran
double m_DryAirTubeInnDiam
HepGeom::Point3D< double > Pt3D
const std::string & grilleName() const
std::vector< double > m_vecIlyPTMZ
const std::vector< double > & vecIlyPTMZ() const
std::string m_BackPlate2Name
unsigned int m_NFawPerSupm
Represents a uniquely identifyable rotation matrix.
std::vector< double > m_vecBarRota2
std::string m_BackPipeName
double nomCryDimLZ() const
const std::vector< double > & vecSpmBTran() const
std::string m_idNameSpace
DDName ilyFEMName() const
double ilyPTMHere() const
std::string m_IlyFanOutMat
std::string m_PincerShimMat
std::vector< double > m_vecBackCoolNPerSec
std::vector< double > m_vecSpmCutTM
const std::vector< double > & vecMBLyrThick() const
DDSolid mytrap(const std::string &s, const Trap &t) const
std::vector< double > m_vecWebClrTh
DDMaterial backPipeMat() const
double pincerShim2Width() const
double backSideAngle() const
double ilyPipeHere() const
std::string m_GrMidSlotMat
double mBManifInnDiam() const
unsigned int m_NCryPerAlvEta
double m_BackCoolTankHere
std::vector< double > m_vecBarRota
std::vector< double > m_vecBackCoolNSec
double ilyDiffOff() const
double backCoolBarWaThick() const
std::vector< double > m_vecNomCryDimCR
double backSideWidth() const
double spmSideYOffM() const
double ilyFanOutHeight() const
double hawYOffCry() const
unsigned int nCryTypes() const
std::vector< double > m_vecPatchPanelThick
std::string m_BackPlate2Mat
const std::string & webClrName() const
double grilleThick() const
DDMaterial pincerCutMat() const
std::vector< double > m_vecNomCryDimAR
const std::vector< std::string > & vecBackCoolName() const
std::vector< std::string > m_vecIlyMat
DDMaterial webClrMat() const
std::vector< double > m_vecBackPipeThick
double pincerCutWidth() const
std::string m_IlyPipeName
DDMaterial backCoolBarWaMat() const
DDName ilyBndlName() const
const std::string & backBracketName() const
const std::vector< double > & vecBackCoolNPerSec() const
const std::string & ilyPipeName() const
double grMidSlotHere() const
double mBCoolTubeInnDiam() const
double spmExpYOff() const
double mBCoolTubeHere() const
double backCoolTankHere() const
DDMaterial backPlateMat() const
DDName pincerShim1Name() const
double backSideYOff1() const
double m_BackCoolTankThick
std::string m_MBCoolTubeMat
Cos< T >::type cos(const T &t)
std::vector< double > m_vecPincerRodAzimuth
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
const std::vector< double > & vecBackPipeDiam() const
const std::vector< std::string > & vecBackVFELyrMat() const
double pincerEnvWidth() const
double mBCoolTubeOutDiam() const
const std::vector< double > & vecIlyFanOutPhi() const
std::vector< std::string > m_vecMBLyrMat
const std::vector< double > & vecBarTran() const
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
double m_BackCoolTankWidth
const std::vector< double > & vecSpmCutTM() const
double m_PincerShimHeight
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
const std::vector< double > & vecNomCryDimCR() const
double grMidSlotWidth() const
double ilyFEMHeight() const
DDMaterial ilyFanOutMat() const
std::vector< double > m_vecIlyThick
const std::vector< double > & vecIlyPTMPhi() const
unsigned int nFawPerSupm() const
DDMaterial backBracketMat() const
double nomCryDimAF() const
std::vector< double > m_vecIlyPipePhi
double spmExpWide() const
double dryAirTubeInnDiam() const
const std::vector< double > & vecBarRota() const
DDName ilyPTMName() const
static DDSolid trap(const DDName &name, double pDz, double pTheta, double pPhi, double pDy1, double pDx1, double pDx2, double pAlp1, double pDy2, double pDx3, double pDx4, double pAlp2)
double spmExpThick() const
double m_BackCoolTankWaWidth
std::string m_BackPlateMat
static DDSolid box(const DDName &name, double xHalf, double yHalf, double zHalf)
Creates a box with side length 2*xHalf, 2*yHalf, 2*zHalf.
std::string m_PincerCutName
const std::vector< double > & vecBackPipeThick() const
DDMaterial pincerEnvMat() const
std::string m_MBCoolTubeName
double ilyFanOutLength() const
std::string m_BackCoolVFEName
std::vector< std::string > m_vecBackVFELyrName
double grEdgeSlotWidth() const
std::vector< double > m_vecPincerEnvZOff
const std::string & webPlName() const
const std::string & idNameSpace() const
const std::vector< double > & vecSpmHere() const
std::string m_PincerEnvName
const std::vector< double > & vecNomCryDimCF() const
double m_BackBracketHeight
std::vector< double > m_vecBackVFELyrThick
std::string m_BackCoolTankWaMat
std::vector< double > m_vecBackCoolSecSep
const std::string & wrapName() const
double grEdgeSlotHeight() const
const std::vector< double > & vecBarRMax() const
std::vector< double > m_vecNomCryDimBF
CaloCellGeometry::Pt3D Pt3D
const std::string & wallName() const
std::string m_BackBracketName
std::string m_BackCoolMat
DDName backCoolBarWaName() const
std::string m_PincerRodName
double backSideHeight() const
double ilyFEMLength() const
std::string m_BackCoolTankName
const std::vector< double > & vecBarRota2() const
DDMaterial ilyPTMMat() const
const std::string & grMidSlotName() const
DDMaterial backCoolBarMat() const
double m_MBCoolTubeOutDiam
const std::vector< std::string > & vecIlyMat() const
std::string m_BackCoolBarSSMat
double mBManifHere() const
std::string m_BackCoolBarName
std::vector< double > m_vecBarRMin
DDMaterial wrapMat() const
std::vector< double > m_vecNomCryDimBR
const std::vector< double > & vecIlyPipeZ() const
std::vector< double > m_vecNomCryDimCF
std::vector< std::string > m_vecBackMiscMat
std::vector< std::string > m_vecMBLyrName
std::vector< double > m_vecIlyFanOutZ
const std::vector< double > & vecBarRMin() const
const std::string & dryAirTubeName() const
DDMaterial wallMat() const
std::vector< double > m_vecIlyPipeZ
const std::vector< double > & vecBackMiscThick() const
double backCoolBarHere() const
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
const std::vector< double > & vecSpmZPts() const
const std::vector< double > & vecIlyFEMZ() const
double m_BackCoolBarThick
std::vector< double > m_vecSpmCutTP
DDMaterial gridMat() const
const std::vector< double > & vecSpmCutTP() const
const std::string & ilyName() const
DDMaterial grMidSlotMat() const
std::string m_PincerBlkMat
const std::vector< double > & vecSpmRota() const
std::vector< std::string > m_vecPatchPanelNames
const std::string & cryName() const
double ilyPTMHeight() const
const std::vector< double > & vecNomCryDimAR() const
std::vector< double > m_vecSpmRMax
double pincerShimHeight() const
std::vector< double > m_vecSpmBTran
double spmSideYOffP() const
DDName backPlateName() const
std::vector< double > m_vecIlyPTMPhi
std::string m_GrEdgeSlotName
const std::vector< std::string > & vecPatchPanelMat() const
DDName backCoolVFEName() const
DDName spmSideName() const
std::string m_PincerBlkName
std::string m_BackCoolBarWaMat
DDMaterial backPlate2Mat() const
HepGeom::ReflectZ3D RfZ3D
double m_MBCoolTubeInnDiam
std::string m_IlyBndlName
DDMaterial backCoolMat() const
std::string m_BackPlateName
double backCoolBarSSThick() const
std::vector< double > m_vecIlyPipeType
const std::vector< std::string > & vecBackMiscMat() const
std::vector< double > m_vecGapAlvEta
DDMaterial dryAirTubeMat() const
std::string m_PincerEnvMat
DDMaterial spmMat() const
std::vector< double > m_vecWebPlTh
DDName ddname(const std::string &s) const
double backCBStdSep() const
double dryAirTubeHere() const
double m_BackCoolBarSSThick
std::string m_BackCoolVFEMat
const std::vector< double > & vecIlyPipeType() const
std::vector< double > m_vecMBLyrThick
DDMaterial pincerShimMat() const
std::vector< double > m_vecGrMidSlotHeight
std::string m_BackCoolBarMat
std::string m_BackSideMat
const std::vector< double > & vecWebClrTh() const
std::vector< double > vecPincerRodAzimuth() const
DDMaterial pincerBlkMat() const
std::vector< double > m_vecIlyFEMZ
double backBracketHeight() const
#define DEFINE_EDM_PLUGIN(factory, type, name)
std::string m_MBManifName
const std::vector< double > & vecBackVFELyrThick() const
std::string m_GrMidSlotName
double backCoolTankWidth() const
const std::vector< double > & vecGapAlvEta() const
const std::vector< double > & vecSpmBRota() const
const std::vector< double > & vecWebLength() const
double backCoolTankThick() const
static constexpr float b2
double backCoolHere() const
DDMaterial cryMat() const
DDName pincerCutName() const
double ilyBndlOff() const
DDName pincerBlkName() const
const std::vector< double > & vecIlyFanOutZ() const
const std::vector< double > & vecGrilleHeight() const
const std::vector< double > & vecGrMidSlotHeight() const
double spmSideHigh() const
double pincerShim1Width() const
std::vector< double > vecPincerEnvZOff() const
DDMaterial backCoolVFEMat() const
std::vector< std::string > m_vecBackMiscName
std::string m_PatchPanelName
std::string m_DryAirTubeName
const std::vector< std::string > & vecMBLyrMat() const
double backPlateWidth() const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
DDMaterial clrMat() const
std::string m_BackCoolBarWaName
DDMaterial ilyPipeMat() const
double backCoolBarWidth() const
const std::vector< double > & vecBarZPts() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
const std::vector< double > & vecIlyThick() const
DDName spmCutName() const
std::vector< double > m_vecSpmRota
DDName backCoolBarName() const
double dryAirTubeOutDiam() const
double pincerCutHeight() const
std::vector< double > m_vecBackPipeDiam
CaloCellGeometry::Pt3DVec VertexList
const std::vector< double > & vecGrilleZOff() const
const std::string & name() const
Returns the name.
tuple size
Write out results.
const std::vector< double > & vecIlyPipePhi() const
double ilyPTMLength() const
double backCoolBarThick() const
DDName ilyDiffName() const
std::vector< double > m_vecSpmHere
HepGeom::Translate3D Tl3D
DDName ilyFanOutName() const
void web(unsigned int iWeb, double bWeb, double BWeb, double LWeb, double theta, const Pt3D &corner, const DDLogicalPart &logPar, double &zee, double side, double front, double delta, DDCompactView &cpv)
double pincerEnvHeight() const
double ilyFanOutWidth() const
std::string m_BackBracketMat
static constexpr float b1
std::vector< double > m_vecBarRota3
DDName pincerShim2Name() const
std::vector< double > m_vecBarTran
DDName patchPanelName() const
const std::vector< double > & vecPatchPanelThick() const
double ilyPTMWidth() const
double m_DryAirTubeOutDiam
const std::vector< double > & vecWebPlTh() const
DDMaterial backPipeWaterMat() const
double spmSideThick() const
const std::vector< double > & vecIlyFEMPhi() const
DDMaterial pincerRodMat() const
std::vector< std::string > m_vecBackCoolName