14 #include <CLHEP/Units/SystemOfUnits.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> 39 typedef HepGeom::Point3D<double>
Pt3D;
40 typedef HepGeom::Transform3D
Tf3D;
41 typedef HepGeom::ReflectZ3D
RfZ3D;
42 typedef HepGeom::Translate3D
Tl3D;
43 typedef HepGeom::Rotate3D
Ro3D;
44 typedef HepGeom::RotateZ3D
RoZ3D;
45 typedef HepGeom::RotateY3D
RoY3D;
46 typedef HepGeom::RotateX3D
RoX3D;
48 typedef CLHEP::Hep3Vector
Vec3;
49 typedef CLHEP::HepRotation
Rota;
395 void web(
unsigned int iWeb,
849 m_vecIlyPipeLength(),
865 m_IlyFanOutLength(0),
866 m_IlyFanOutHeight(0),
916 m_BackPlateLength(0),
920 m_BackPlate2Name(
""),
921 m_BackPlate2Thick(0),
931 m_GrEdgeSlotName(
""),
934 m_GrEdgeSlotHeight(0),
935 m_GrEdgeSlotWidth(0),
941 m_vecGrMidSlotHeight(),
945 m_vecBackPipeThick(),
947 m_BackPipeWaterMat(
""),
951 m_BackCoolBarHere(0),
952 m_BackCoolBarWidth(0),
953 m_BackCoolBarHeight(0),
955 m_BackCoolBarName(
""),
956 m_BackCoolBarThick(0),
957 m_BackCoolBarMat(
""),
958 m_BackCoolBarSSName(
""),
959 m_BackCoolBarSSThick(0),
960 m_BackCoolBarSSMat(
""),
961 m_BackCoolBarWaName(
""),
962 m_BackCoolBarWaThick(0),
963 m_BackCoolBarWaMat(
""),
964 m_BackCoolVFEHere(0),
965 m_BackCoolVFEName(
""),
966 m_BackCoolVFEMat(
""),
969 m_vecBackVFELyrThick(),
970 m_vecBackVFELyrName(),
971 m_vecBackVFELyrMat(),
973 m_vecBackCoolSecSep(),
974 m_vecBackCoolNPerSec(),
977 m_vecBackMiscThick(),
982 m_PatchPanelName(
""),
983 m_vecPatchPanelThick(),
984 m_vecPatchPanelNames(),
985 m_vecPatchPanelMat(),
986 m_BackCoolTankHere(0),
987 m_BackCoolTankName(
""),
988 m_BackCoolTankWidth(0),
989 m_BackCoolTankThick(0),
990 m_BackCoolTankMat(
""),
991 m_BackCoolTankWaName(
""),
992 m_BackCoolTankWaWidth(0),
993 m_BackCoolTankWaMat(
""),
994 m_BackBracketName(
""),
995 m_BackBracketHeight(0),
996 m_BackBracketMat(
""),
999 m_DryAirTubeName(
""),
1001 m_DryAirTubeInnDiam(0),
1002 m_DryAirTubeOutDiam(0),
1003 m_DryAirTubeMat(
""),
1004 m_MBCoolTubeHere(0),
1005 m_MBCoolTubeName(
""),
1006 m_MBCoolTubeInnDiam(0),
1007 m_MBCoolTubeOutDiam(0),
1008 m_MBCoolTubeMat(
""),
1011 m_MBManifInnDiam(0),
1012 m_MBManifOutDiam(0),
1020 m_PincerRodName(
""),
1022 m_vecPincerRodAzimuth(),
1023 m_PincerEnvName(
""),
1025 m_PincerEnvWidth(0),
1026 m_PincerEnvHeight(0),
1027 m_PincerEnvLength(0),
1028 m_vecPincerEnvZOff(),
1029 m_PincerBlkName(
""),
1031 m_PincerBlkLength(0),
1032 m_PincerShim1Name(
""),
1033 m_PincerShimHeight(0),
1034 m_PincerShim2Name(
""),
1035 m_PincerShimMat(
""),
1036 m_PincerShim1Width(0),
1037 m_PincerShim2Width(0),
1038 m_PincerCutName(
""),
1040 m_PincerCutWidth(0),
1041 m_PincerCutHeight(0)
1045 edm::LogVerbatim(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance";
1085 m_SpmNPerHalf =
static_cast<unsigned int>(nArgs[
"SpmNPerHalf"]);
1136 m_NCryTypes =
static_cast<unsigned int>(nArgs[
"NCryTypes"]);
1227 m_NFawPerSupm =
static_cast<unsigned int>(nArgs[
"NFawPerSupm"]);
1393 edm::LogVerbatim(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl;
1396 const unsigned int copyOne(1);
1397 const unsigned int copyTwo(2);
1426 const std::vector<double>& cutBoxParms(spmCutBox.
parameters());
1441 const std::vector<double>& sideParms(sideSolid.
parameters());
1446 for (
unsigned int icopy(1); icopy <= 2; ++icopy) {
1450 const Tl3D tr(tvec[0], tvec[1], tvec[2]);
1451 const RoZ3D ro(rang);
1460 const Tl3D trSide(tvec[0],
1461 tvec[1] + (1 == icopy ? 1. : -1.) * (cutBoxParms[1] + sideParms[1]) +
1464 const RoZ3D roSide(rang);
1489 const double dphi(360. * deg / (1. *
spmNPerHalf()));
1503 const unsigned int offr(4 *
iphi);
1504 const unsigned int offt(3 *
iphi);
1511 const Tf3D both(rotaExtra * rotaBase);
1527 for (
unsigned int ilyx(0); ilyx !=
vecIlyThick().size(); ++ilyx) {
1539 for (
unsigned int iPipeType(0); iPipeType !=
vecIlyPipeLength().size(); ++iPipeType) {
1585 for (
unsigned int ily(0); ily !=
vecIlyThick().size(); ++ily) {
1586 const double ilyRMax(ilyRMin +
vecIlyThick()[ily]);
1596 unsigned int copyNum[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1600 unsigned int ptmCopy(0);
1601 for (
unsigned int ilyPTM(0); ilyPTM !=
vecIlyPTMZ().size(); ++ilyPTM) {
1615 unsigned int fanOutCopy(0);
1616 for (
unsigned int ilyFO(0); ilyFO !=
vecIlyFanOutZ().size(); ++ilyFO) {
1627 CLHEP::HepRotationZ(
phi) * CLHEP::HepRotationY(180 * deg)));
1629 unsigned int femCopy(0);
1630 for (
unsigned int ilyFEM(0); ilyFEM !=
vecIlyFEMZ().size(); ++ilyFEM) {
1643 for (
unsigned int iPipe(0); iPipe !=
vecIlyPipePhi().size(); ++iPipe) {
1650 for (
unsigned int ly(0); ly != 2; ++ly) {
1673 std::vector<double> cri;
1674 std::vector<double> cro;
1675 std::vector<double> czz;
1707 const double beta1(atan((BNom1 - bNom1) / LNom1));
1709 const double sinbeta1(
sin(beta1));
1711 const double tana_hawR((BNom1 - bNom1) / LNom1);
1715 const double a_hawR(bNom1 + sClr1 + 2 * sWrap1 + 2 * sWall1 - sinbeta1 * (fClr1 + fWrap1 + fWall1));
1716 const double B_hawR(a_hawR + H_hawR * tana_hawR);
1717 const double b_hawR(a_hawR + h_hawR * tana_hawR);
1720 const Trap trapHAWR(a_hawR / 2.,
1735 const double al1_fawR(atan((B_hawR - a_hawR) / H_hawR) +
M_PI_2);
1738 const Trap trapFAW(a_hawR,
1756 const double hawBoxClr(1 * mm);
1761 const std::vector<double>& hawBoxParms(hawCutBox.
parameters());
1764 const Pt3D b1(hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1765 const Pt3D b2(-hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1766 const Pt3D b3(-hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2]);
1770 const Tf3D hawCutForm(
b1,
1775 Pt3D(vHAW[0].
x() - hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel));
1782 hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1783 myrot(hawCutName.
name() +
"R", hawCutForm.getRotation())));
1790 const std::vector<double>& fawBoxParms(fawCutBox.
parameters());
1793 const Pt3D bb1(fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1794 const Pt3D bb2(-fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1795 const Pt3D bb3(-fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2]);
1797 const Tf3D fawCutForm(bb1,
1800 vFAW[2] +
Pt3D(2 * hawBoxClr, -5 * mm, 0),
1801 vFAW[1] +
Pt3D(-2 * hawBoxClr, -5 * mm, 0),
1802 Pt3D(vFAW[1].
x() - 2 * hawBoxClr, vFAW[1].
y() - trapFAW.
h(), vFAW[1].z() - zDel));
1809 fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()),
1810 myrot(fawCutName.
name() +
"R", fawCutForm.getRotation())));
1813 const Tf3D hawRform(vHAW[3],
1817 0.5 * (vFAW[0] + vFAW[3]),
1818 0.5 * (vFAW[1] + vFAW[2]));
1823 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1830 DDTranslation(-hawRform.getTranslation().x(), -hawRform.getTranslation().y(), -hawRform.getTranslation().z()),
1832 CLHEP::HepRotationY(180 * deg) *
1833 CLHEP::HepRep3x3(1, 0, 0, 0, 1, 0, 0, 0, -1)));
1844 for (
unsigned int iPhi(1); iPhi <=
nFawPerSupm(); ++iPhi) {
1854 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z()),
1864 const Trap trapGrid((B_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1865 (b_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1869 (L_hawR - 8 * cm) / 2.,
1880 const Tf3D gridForm(vGrid[4],
1883 vHAW[5] -
Pt3D(0, h_Grid, 0),
1892 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z()),
1923 double theta(90 * deg);
1925 double side(0 * mm);
1926 double zeta(0 * deg);
1928 for (
unsigned int cryType(1); cryType <=
nCryTypes(); ++cryType) {
1940 const double alfCry(90 * deg + atan((bNom - bUnd - aNom + aUnd) / (hNom - hUnd)));
1942 const Trap trapCry((ANom - AUnd) / 2.,
1949 aNom - aUnd - ANom + AUnd,
1950 hNom - hUnd - HNom + HUnd
1979 unsigned int copyAPD(0);
1982 const double delta(atan((HNom - hNom) / LNom));
1986 const double gamma(atan((ANom - aNom) / LNom));
1990 const double beta(atan((BNom - bNom) / LNom));
1992 const double sinbeta(
sin(
beta));
1995 const double alfClr(90 * deg + atan((bNom - aNom) / (hNom + sClr)));
1997 const Trap trapClr((ANom + sClr + rClr * singamma) / 2.,
1998 (aNom + sClr - fClr * singamma) / 2.,
1999 (bNom + sClr - fClr * sinbeta) / 2.,
2000 (HNom + sClr + rClr * sindelta) / 2.,
2001 (hNom + sClr - fClr * sindelta) / 2.,
2002 (LNom + fClr + rClr) / 2.,
2014 const double alfWrap(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap)));
2016 const Trap trapWrap((trapClr.
A() + 2 * sWrap + rWrap * singamma) / 2,
2017 (trapClr.
a() + 2 * sWrap - fWrap * singamma) / 2,
2018 (trapClr.
b() + 2 * sWrap - fWrap * sinbeta) / 2,
2019 (trapClr.
H() + 2 * sWrap + rWrap * sindelta) / 2,
2020 (trapClr.
h() + 2 * sWrap - fWrap * sindelta) / 2,
2021 (trapClr.
L() + fWrap + rWrap) / 2.,
2023 aNom - ANom - (cryType > 9 ? 0 : 0.020 * mm),
2028 const DDSolid wrapSolid(
mytrap(wrapDDName.name(), trapWrap));
2033 const double alfWall(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap + 2 * sWall)));
2035 const Trap trapWall((trapWrap.A() + 2 * sWall + rWall * singamma) / 2,
2036 (trapWrap.a() + 2 * sWall - fWall * singamma) / 2,
2037 (trapWrap.b() + 2 * sWall - fWall * sinbeta) / 2,
2038 (trapWrap.H() + 2 * sWall + rWall * sindelta) / 2,
2039 (trapWrap.h() + 2 * sWall - fWall * sindelta) / 2,
2040 (trapWrap.L() + fWall + rWall) / 2.,
2042 aNom - ANom - (cryType < 10 ? 0.150 * mm : 0.100 * mm),
2047 const DDSolid wallSolid(
mytrap(wallDDName.name(), trapWall));
2051 edm::LogVerbatim(
"EcalGeom") <<
"Traps:\n a: " << trapCry.
a() <<
", " << trapClr.
a() <<
", " << trapWrap.a()
2052 <<
", " << trapWall.a() <<
"\n b: " << trapCry.
b() <<
", " << trapClr.
b() <<
", " 2053 << trapWrap.b() <<
", " << trapWall.b() <<
"\n A: " << trapCry.
A() <<
", " 2054 << trapClr.
A() <<
", " << trapWrap.A() <<
", " << trapWall.A()
2055 <<
"\n B: " << trapCry.
B() <<
", " << trapClr.
B() <<
", " << trapWrap.B() <<
", " 2056 << trapWall.B() <<
"\n h: " << trapCry.
h() <<
", " << trapClr.
h() <<
", " 2057 << trapWrap.h() <<
", " << trapWall.h() <<
"\n H: " << trapCry.
H() <<
", " 2058 << trapClr.
H() <<
", " << trapWrap.H() <<
", " << trapWall.H()
2059 <<
"\n a1: " << trapCry.
a1() / deg <<
", " << trapClr.
a1() / deg <<
", " 2060 << trapWrap.a1() / deg <<
", " << trapWall.a1() / deg
2061 <<
"\n a4: " << trapCry.
a4() / deg <<
", " << trapClr.
a4() / deg <<
", " 2062 << trapWrap.a4() / deg <<
", " << trapWall.a4() / deg <<
"\n x15: " << trapCry.
x15()
2063 <<
", " << trapClr.
x15() <<
", " << trapWrap.x15() <<
", " << trapWall.x15()
2064 <<
"\n y15: " << trapCry.
y15() <<
", " << trapClr.
y15() <<
", " << trapWrap.y15()
2065 <<
", " << trapWall.y15();
2068 const Vec3 cryToClr(0, 0, (rClr - fClr) / 2);
2093 const Vec3 clrToWrap(0, 0, (rWrap - fWrap) / 2);
2102 const Vec3 wrapToWall1(0, 0, (rWall - fWall) / 2);
2103 const Vec3 wrapToWall(
Vec3((cryType > 9 ? 0 : 0.005 * mm), 0, 0) + wrapToWall1);
2114 const double sidePrime((trapWall.a() - trapCry.
a()) / 2);
2115 const double frontPrime(fWall + fWrap + fClr + LUnd / 2);
2136 for (
unsigned int etaAlv(1); etaAlv <=
nCryPerAlvEta(); ++etaAlv) {
2139 <<
", frontPrime=" << frontPrime <<
", zeta=" << zeta <<
", delta=" <<
delta 2142 zee += 0.075 * mm + (
side *
cos(zeta) + trapWall.h() - sidePrime) /
sin(
theta);
2150 const Pt3D trap2(vCry[2] + cryToClr + clrToWrap + wrapToWall);
2152 const Pt3D trap3(trap2 +
Pt3D(0, -trapCry.
h(), 0));
2153 const Pt3D trap1(trap3 +
Pt3D(-trapCry.
a(), 0, 0));
2157 const Pt3D wedge1(wedge3 +
Pt3D(trapCry.
a(), 0, 0));
2159 const Tf3D tForm1(trap1, trap2, trap3, wedge1, wedge2, wedge3);
2161 const double xx(0.050 * mm);
2163 const Tf3D tForm(HepGeom::Translate3D(
xx, 0, 0) * tForm1);
2168 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2175 if (5 == cryType || 9 == cryType || 13 == cryType || 17 == cryType)
2177 const unsigned int webIndex(cryType / 4);
2222 const std::vector<double>& backPlateParms(backPlateSolid.
parameters());
2240 outtra + backPlateTra,
2275 outtra + backSideTra1,
2276 myrot(
backSideName().
name() +
"Rot8", CLHEP::HepRotationX(180 * deg) * CLHEP::HepRotationZ(90 * deg)));
2282 outtra + backSideTra2,
2300 const double manifCut(2 * mm);
2308 mBManifWaName, backCoolWidth / 2. - manifCut, 0,
mBManifInnDiam() / 2, 0 * deg, 360 * deg));
2324 const double deltaY(-5 * mm);
2330 unsigned int edgeSlotCopy(0);
2331 unsigned int midSlotCopy(0);
2344 const DDTranslation gTra(outtra + backPlateTra + grilleTra);
2347 if (0 == (iGr - 1) % 2) {
2353 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2359 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2461 offTra += 2 * backVFELyrTra;
2505 unsigned int iCVFECopy(1);
2506 unsigned int iSep(0);
2507 unsigned int iNSec(0);
2509 for (
unsigned int iMod(0); iMod != 4; ++iMod) {
2512 const double pipeZPos(
vecGrilleZOff()[2 * iMod + 1] - pipeLength / 2 - 1.5 * mm);
2517 for (
unsigned int iMisc(0); iMisc != nMisc; ++iMisc) {
2521 for (
unsigned int iMB(0); iMB !=
vecMBLyrThick().size(); ++iMB) {
2541 const double halfZTank(halfZBCool - 5 * cm);
2551 DDTranslation(-backCoolHeight / 2 + backCoolTankHeight / 2. + bottomThick,
2587 for (
unsigned int j(0);
j != nMisc; ++
j)
2603 bSumTra += 2 * bTra;
2644 -backCoolHeight / 2.0 +
mBCoolTubeOutDiam() / 2., -bHalfWidth + (
j + 1) * bHalfWidth / 5, 0),
2713 dryAirTubeTra1.z());
2726 const unsigned int numSec(static_cast<unsigned int>(
vecBackCoolNSec()[iMod]));
2727 for (
unsigned int jSec(0); jSec != numSec; ++jSec) {
2729 for (
unsigned int iBar(0); iBar !=
nMax; ++iBar) {
2734 if (jSec != numSec - 1)
2756 double patchHeight(0);
2766 const std::vector<double>& patchParms(patchSolid.
parameters());
2811 const std::vector<double>& envParms(envSolid.
parameters());
2816 const std::vector<double>& blkParms(blkSolid.parameters());
2826 const std::vector<double>& cutParms(cutSolid.
parameters());
2838 const std::vector<double>& shim2Parms(shim2Solid.
parameters());
2842 DDTranslation(+cutParms[0] - shim2Parms[0], -cutParms[1] + shim2Parms[1], 0),
2851 const std::vector<double>& shim1Parms(shim1Solid.
parameters());
2856 DDTranslation(+envParms[0] - shim1Parms[0], -envParms[1] + shim1Parms[1], -envParms[2] + shim1Parms[2]),
2894 edm::LogVerbatim(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it...";
2902 std::make_unique<DDRotationMatrix>(
r.xx(),
r.xy(),
r.xz(),
r.yx(),
r.yy(),
r.yz(),
r.zx(),
r.zy(),
r.zz()));
2909 if (
temp.second.empty()) {
2918 ddname(
s),
t.dz(),
t.theta(),
t.phi(),
t.h1(),
t.bl1(),
t.tl1(),
t.alp1(),
t.h2(),
t.bl2(),
t.tl2(),
t.alp2());
2926 const HepGeom::Point3D<double>&
corner,
2933 const unsigned int copyOne(1);
2937 const double BWebx(bWeb + (BWeb - bWeb) * LWebx / LWeb);
2940 const Trap trapWebClr(BWebx / 2,
2954 const Trap trapWebPl(trapWebClr.
A() / 2,
2959 trapWebClr.
L() / 2.,
2961 trapWebClr.
b() - trapWebClr.
B(),
2965 const DDSolid webPlSolid(
mytrap(webPlDDName.fullname(), trapWebPl));
2985 const Pt3D wedge1(wedge3 +
Pt3D(trapWebClr.
a(), 0, 0));
2988 edm::LogVerbatim(
"EcalGeom") <<
"trap1=" << vWeb[0] <<
", trap2=" << vWeb[2] <<
", trap3=" << vWeb[3];
2990 edm::LogVerbatim(
"EcalGeom") <<
"wedge1=" << wedge1 <<
", wedge2=" << wedge2 <<
", wedge3=" << wedge3;
2992 const Tf3D tForm(vWeb[0], vWeb[2], vWeb[3], wedge1, wedge2, wedge3);
2998 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
std::vector< double > m_vecSpmBRota
double m_BackCoolBarWidth
double backCoolBarWaThick() const
VertexList vertexList() const
const std::string & backCoolTankWaName() const
DDMaterial grMidSlotMat() const
Log< level::Info, true > LogVerbatim
unsigned int m_MBCoolTubeNum
DDName ilyFEMName() const
std::string m_BackCoolTankMat
unsigned int m_SpmNPerHalf
HepGeom::Transform3D Tf3D
double spmSideYOffP() const
~DDEcalBarrelAlgo() override
DDName backCoolBarWaName() const
const std::string & webClrName() const
DDMaterial grilleMat() const
DDMaterial barMat() const
double backSideWidth() const
double m_PincerShim1Width
DDName pincerEnvName() const
std::string m_BackVFEName
const std::vector< double > & vecBackMiscThick() const
void execute(DDCompactView &cpv) override
double m_GrEdgeSlotHeight
const std::vector< double > & vecBarRota2() const
std::string m_BackCoolTankWaName
std::vector< double > m_vecIlyPipeLength
const std::string & webPlName() const
const std::vector< double > & vecNomCryDimAR() const
std::string m_BackPipeMat
std::vector< double > m_vecIlyFanOutPhi
double ilyBndlLength() const
EcalTrapezoidParameters Trap
const std::vector< double > & vecBackCoolNPerSec() const
DDMaterial backPlateMat() const
const std::string & ilyPipeName() const
double backCBStdSep() const
DDMaterial backCoolBarMat() const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=nullptr)
const std::vector< double > & vecBackPipeDiam() const
double m_PincerShim2Width
std::string m_IlyDiffName
DDName backSideName() const
const std::vector< double > & vecGrilleZOff() const
const std::vector< double > & vecNomCryDimCF() const
std::string m_IlyFanOutName
DDMaterial backVFEMat() const
const std::vector< std::string > & vecIlyMat() const
const std::vector< std::string > & vecBackVFELyrMat() const
DDName ilyFanOutName() const
std::vector< double > m_vecWebLength
std::string m_DryAirTubeMat
DDMaterial pincerRodMat() const
DDMaterial is used to define and access material information.
double mBManifHere() const
DDName pincerShim2Name() const
const std::string & wallName() const
DDMaterial pincerCutMat() const
std::string m_BackCoolBarSSName
double spmCutThick() const
double pincerEnvWidth() const
double pincerCutWidth() const
std::vector< double > m_vecSpmZPts
double grilleThick() const
const std::string & wrapName() const
DDName ddname(const std::string &s) 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)
DDSolid mytrap(const std::string &s, const Trap &t) const
const std::vector< double > & vecBarRMax() const
double backPlateThick() const
const std::vector< std::string > & vecBackMiscName() const
double ilyPTMHere() const
std::vector< std::string > m_vecPatchPanelMat
Sin< T >::type sin(const T &t)
const std::vector< double > & vecIlyFEMZ() const
std::vector< double > m_vecBarZPts
std::vector< double > m_vecBackMiscThick
double ilyPTMLength() const
double grEdgeSlotWidth() const
DDMaterial wrapMat() const
double ilyFEMLength() const
const std::vector< double > & vecGrMidSlotHeight() const
const std::string & grMidSlotName() const
unsigned int nCryPerAlvEta() const
double backCoolTankHere() const
ALPAKA_FN_ACC int side(int ieta, int iphi)
std::string m_PincerShim2Name
DDName is used to identify DDD entities uniquely.
std::vector< double > m_vecSpmRMin
DDName spmCutName() const
const std::vector< double > & vecSpmBTran() const
std::vector< double > m_vecGrilleZOff
double dryAirTubeInnDiam() const
DDMaterial spmMat() const
double mBManifInnDiam() const
std::string m_BackPipeWaterMat
double m_BackCoolBarHeight
std::string m_PincerShim1Name
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
std::vector< double > m_vecGrilleHeight
std::string m_SpmSideName
DDMaterial backPipeWaterMat() const
double grilleZSpace() const
std::vector< std::string > m_vecBackVFELyrMat
std::vector< double > m_vecIlyFEMPhi
DDName spmSideName() const
static std::string & ns()
std::string m_BackSideName
const std::string & idNameSpace() const
const std::string & grilleName() const
const std::vector< double > & vecIlyPipeZ() const
const std::vector< double > & vecSpmCutTM() const
double m_BackCoolBarWaThick
double nomCryDimAF() const
double grMidSlotWidth() const
DDName ilyPTMName() const
double grilleWidth() const
const std::string & clrName() const
double pincerEnvLength() const
double pincerBlkLength() const
Compact representation of the geometrical detector hierarchy.
DDMaterial backCoolBarSSMat() const
std::string m_PincerRodMat
std::vector< double > m_vecBarRMax
std::string m_PincerCutMat
const std::vector< std::string > & vecMBLyrName() const
const std::vector< double > & vecSpmHere() const
A DDSolid represents the shape of a part.
static std::string to_string(const XMLCh *ch)
std::string m_GrEdgeSlotMat
std::vector< double > m_vecSpmTran
double m_DryAirTubeInnDiam
const std::vector< double > & vecSpmRMax() const
double spmSideYOffM() const
DDName patchPanelName() const
double nomCryDimLZ() const
HepGeom::Point3D< double > Pt3D
std::vector< double > m_vecIlyPTMZ
DDMaterial ilyBndlMat() const
std::string m_BackPlate2Name
unsigned int m_NFawPerSupm
const std::vector< double > & vecIlyPipeLength() const
Represents a uniquely identifyable rotation matrix.
std::vector< double > m_vecBarRota2
unsigned int nCryTypes() const
double backCoolHere() const
std::string m_BackPipeName
std::string m_idNameSpace
const std::vector< double > & vecWebLength() const
double ilyDiffLength() const
std::string m_IlyFanOutMat
std::string m_PincerShimMat
DDMaterial grEdgeSlotMat() const
DDName ilyBndlName() const
double backMiscHere() const
const std::string & backCoolTankName() const
std::vector< double > m_vecBackCoolNPerSec
std::vector< double > m_vecSpmCutTM
double backPlateLength() const
const std::vector< double > & vecBarZPts() const
std::vector< double > m_vecWebClrTh
double mBCoolTubeHere() const
const std::string & ilyName() const
const std::vector< double > & vecIlyFanOutPhi() const
double ilyFanOutHeight() const
const std::string & backPipeName() const
DDMaterial cryMat() const
std::string m_GrMidSlotMat
DDMaterial ilyDiffMat() const
unsigned int m_NCryPerAlvEta
double m_BackCoolTankHere
std::vector< double > m_vecBarRota
DDMaterial wallMat() const
const std::vector< double > & vecBackVFELyrThick() const
std::vector< double > m_vecBackCoolNSec
const std::vector< double > & vecIlyPTMPhi() const
std::vector< double > m_vecNomCryDimCR
DDMaterial webPlMat() const
const std::string & name() const
Returns the name.
double ilyDiffOff() const
std::vector< double > m_vecPatchPanelThick
std::string m_BackPlate2Mat
double backSideHeight() const
const std::vector< double > & vecNomCryDimBR() const
std::vector< double > m_vecNomCryDimAR
double grMidSlotHere() const
double patchPanelHere() const
DDMaterial pincerShimMat() const
std::vector< std::string > m_vecIlyMat
const std::vector< std::string > & vecPatchPanelMat() const
DDMaterial backPipeMat() const
const std::vector< double > & vecPatchPanelThick() const
std::vector< double > m_vecBackPipeThick
std::string m_IlyPipeName
double mBCoolTubeInnDiam() const
double backCoolBarWidth() const
double m_BackCoolTankThick
std::string m_MBCoolTubeMat
double grEdgeSlotHeight() const
const std::string & mBCoolTubeName() const
Cos< T >::type cos(const T &t)
DDName backCoolVFEName() const
std::vector< double > m_vecPincerRodAzimuth
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
double backCoolTankThick() const
const std::vector< double > & vecBarRota3() const
double dryAirTubeHere() const
const std::vector< std::string > & vecPatchPanelNames() const
double pincerShim2Width() const
double mBManifOutDiam() const
std::vector< std::string > m_vecMBLyrMat
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
double backBracketHeight() const
double backSideHere() const
const std::vector< double > & vecMBLyrThick() const
double m_BackCoolTankWidth
DDMaterial backCoolBarWaMat() const
const std::vector< double > & vecBarTran() const
double pincerShim1Width() const
double m_PincerShimHeight
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
DDName backPlateName() const
std::vector< double > m_vecIlyThick
double pincerCutHeight() const
double backCoolTankWidth() const
std::vector< double > m_vecIlyPipePhi
DDMaterial apdMat() const
double mBCoolTubeNum() const
double backCoolVFEHere() 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)
DDMaterial pincerBlkMat() const
double spmExpWide() const
double m_BackCoolTankWaWidth
const std::vector< double > & vecWebPlTh() const
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.
const std::vector< double > & vecIlyPTMZ() const
std::string m_PincerCutName
double backPlateWidth() const
std::string m_MBCoolTubeName
double hawYOffCry() const
double grMidSlotXOff() const
std::string m_BackCoolVFEName
std::vector< std::string > m_vecBackVFELyrName
DDName backCoolBarSSName() const
const std::vector< double > & vecIlyFEMPhi() const
std::vector< double > m_vecPincerEnvZOff
DDMaterial webClrMat() const
std::string m_PincerEnvName
DDMaterial clrMat() const
double m_BackBracketHeight
std::vector< double > m_vecBackVFELyrThick
std::string m_BackCoolTankWaMat
std::vector< double > m_vecBackCoolSecSep
unsigned int spmNPerHalf() const
DDMaterial ilyPTMMat() const
DDMaterial mBCoolTubeMat() const
double backCoolBarHeight() const
double backPlateHere() const
std::vector< double > m_vecNomCryDimBF
CaloCellGeometry::Pt3D Pt3D
std::string m_BackBracketName
std::string m_BackCoolMat
const std::vector< double > & vecBackCoolNSec() const
DDName backPlate2Name() const
std::string m_PincerRodName
DDMaterial backCoolVFEMat() const
double ilyPTMHeight() const
std::string m_BackCoolTankName
const std::vector< double > & vecBackPipeThick() const
const std::vector< double > & vecIlyPipeType() const
const std::vector< double > & vecWebClrTh() const
DDMaterial ilyFanOutMat() const
double m_MBCoolTubeOutDiam
double spmSideThick() const
double spmSideHigh() const
std::string m_BackCoolBarSSMat
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...
std::string m_BackCoolBarName
const std::vector< double > & vecIlyThick() const
DDMaterial pincerEnvMat() const
std::vector< double > vecPincerRodAzimuth() const
double spmExpYOff() const
DDName pincerShim1Name() const
std::vector< double > m_vecBarRMin
DDName pincerCutName() const
DDName pincerBlkName() const
std::vector< double > m_vecNomCryDimBR
std::vector< double > m_vecNomCryDimCF
std::vector< std::string > m_vecBackMiscMat
std::vector< std::string > m_vecMBLyrName
std::vector< double > m_vecIlyFanOutZ
double hawRCutDelY() const
std::vector< double > m_vecIlyPipeZ
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
double backSideYOff2() const
DDMaterial gridMat() const
double m_BackCoolBarThick
std::vector< double > m_vecSpmCutTP
const std::vector< double > & vecSpmBRota() const
DDName mBManifName() const
DDName backCoolBarName() const
double backPlate2Thick() const
const std::vector< double > & vecSpmCutTP() const
double grilleHere() const
double backCoolBarThick() const
std::string m_PincerBlkMat
std::vector< std::string > m_vecPatchPanelNames
const std::vector< std::string > & vecMBLyrMat() const
double ilyFanOutHere() const
double backCoolBarHere() const
std::vector< double > m_vecSpmRMax
DDMaterial backSideMat() const
std::vector< double > m_vecSpmBTran
double backSideAngle() const
std::vector< double > m_vecIlyPTMPhi
const std::vector< std::string > & vecBackMiscMat() const
std::string m_GrEdgeSlotName
double ilyFanOutLength() const
DDMaterial backCoolTankMat() const
std::string m_PincerBlkName
DDMaterial ilyPipeMat() const
std::string m_BackCoolBarWaMat
HepGeom::ReflectZ3D RfZ3D
double ilyBndlOff() const
const std::vector< double > & vecIlyFanOutZ() const
double m_MBCoolTubeInnDiam
std::string m_IlyBndlName
unsigned int nFawPerSupm() const
const std::vector< double > & vecSpmRota() const
std::string m_BackPlateName
std::vector< double > m_vecIlyPipeType
std::vector< double > m_vecGapAlvEta
double pincerRodHere() const
double backCoolBarSSThick() const
std::string m_PincerEnvMat
std::vector< double > m_vecWebPlTh
double ilyFEMWidth() const
const std::string & cryName() const
double ilyPipeHere() const
const std::vector< double > & vecBarRMin() const
double m_BackCoolBarSSThick
std::string m_BackCoolVFEMat
const std::vector< double > & vecSpmZPts() const
double pincerEnvHeight() const
std::vector< double > m_vecMBLyrThick
const std::vector< double > & vecNomCryDimCR() const
const std::vector< std::string > & vecBackVFELyrName() const
DDName pincerRodName() const
std::vector< double > m_vecGrMidSlotHeight
const std::vector< double > & vecBarRota() const
const std::vector< double > & vecNomCryDimBF() const
std::string m_BackCoolBarMat
std::string m_BackSideMat
DDName backVFEName() const
DDMaterial backBracketMat() const
std::vector< double > m_vecIlyFEMZ
#define DEFINE_EDM_PLUGIN(factory, type, name)
DDMaterial ilyFEMMat() const
DDMaterial ddmat(const std::string &s) const
DDMaterial spmSideMat() const
std::string m_MBManifName
const std::string & dryAirTubeName() const
std::string m_GrMidSlotName
const std::vector< double > & vecIlyPipePhi() const
const std::vector< double > & vecSpmTran() const
DDName ilyDiffName() const
double pincerShimHeight() const
const std::vector< double > & vecGrilleHeight() const
DDName grEdgeSlotName() const
double backSideYOff1() const
DDMaterial mBManifMat() const
double ilyFanOutWidth() const
std::vector< std::string > m_vecBackMiscName
DDMaterial backPlate2Mat() const
DDMaterial dryAirTubeMat() const
double grEdgeSlotHere() const
std::string m_PatchPanelName
std::string m_DryAirTubeName
double spmExpThick() const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
Geom::Theta< T > theta() const
const std::vector< double > & vecGapAlvEta() const
std::string m_BackCoolBarWaName
const std::vector< double > & vecSpmRMin() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
std::vector< double > m_vecSpmRota
double ilyFEMHeight() const
const std::vector< std::string > & vecBackCoolName() const
std::vector< double > m_vecBackPipeDiam
CaloCellGeometry::Pt3DVec VertexList
std::vector< double > vecPincerEnvZOff() const
DDMaterial backCoolMat() const
double backCoolTankWaWidth() const
double dryAirTubeOutDiam() const
const std::string & backBracketName() const
double mBCoolTubeOutDiam() const
double ilyPTMWidth() const
DDMaterial backCoolTankWaMat() const
std::vector< double > m_vecSpmHere
HepGeom::Translate3D Tl3D
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)
std::string m_BackBracketMat
static constexpr float b1
std::vector< double > m_vecBarRota3
std::vector< double > m_vecBarTran
double m_DryAirTubeOutDiam
double backPipeHere() const
const std::vector< double > & vecBackCoolSecSep() const
std::vector< std::string > m_vecBackCoolName
double backSideLength() const