15 #include "CLHEP/Units/GlobalSystemOfUnits.h"
17 #include <CLHEP/Geometry/Point3D.h>
18 #include <CLHEP/Geometry/Vector3D.h>
19 #include <CLHEP/Geometry/Transform3D.h>
30 #include "CLHEP/Geometry/Transform3D.h"
35 typedef HepGeom::Point3D<double>
Pt3D;
36 typedef HepGeom::Transform3D
Tf3D;
37 typedef HepGeom::ReflectZ3D
RfZ3D;
38 typedef HepGeom::Translate3D
Tl3D;
39 typedef HepGeom::Rotate3D
Ro3D;
40 typedef HepGeom::RotateZ3D
RoZ3D;
41 typedef HepGeom::RotateY3D
RoY3D;
42 typedef HepGeom::RotateX3D
RoX3D;
44 typedef CLHEP::Hep3Vector
Vec3;
45 typedef CLHEP::HepRotation
Rota;
391 void web(
unsigned int iWeb,
845 m_vecIlyPipeLength(),
861 m_IlyFanOutLength(0),
862 m_IlyFanOutHeight(0),
912 m_BackPlateLength(0),
916 m_BackPlate2Name(
""),
917 m_BackPlate2Thick(0),
927 m_GrEdgeSlotName(
""),
930 m_GrEdgeSlotHeight(0),
931 m_GrEdgeSlotWidth(0),
937 m_vecGrMidSlotHeight(),
941 m_vecBackPipeThick(),
943 m_BackPipeWaterMat(
""),
947 m_BackCoolBarHere(0),
948 m_BackCoolBarWidth(0),
949 m_BackCoolBarHeight(0),
951 m_BackCoolBarName(
""),
952 m_BackCoolBarThick(0),
953 m_BackCoolBarMat(
""),
954 m_BackCoolBarSSName(
""),
955 m_BackCoolBarSSThick(0),
956 m_BackCoolBarSSMat(
""),
957 m_BackCoolBarWaName(
""),
958 m_BackCoolBarWaThick(0),
959 m_BackCoolBarWaMat(
""),
960 m_BackCoolVFEHere(0),
961 m_BackCoolVFEName(
""),
962 m_BackCoolVFEMat(
""),
965 m_vecBackVFELyrThick(),
966 m_vecBackVFELyrName(),
967 m_vecBackVFELyrMat(),
969 m_vecBackCoolSecSep(),
970 m_vecBackCoolNPerSec(),
973 m_vecBackMiscThick(),
978 m_PatchPanelName(
""),
979 m_vecPatchPanelThick(),
980 m_vecPatchPanelNames(),
981 m_vecPatchPanelMat(),
982 m_BackCoolTankHere(0),
983 m_BackCoolTankName(
""),
984 m_BackCoolTankWidth(0),
985 m_BackCoolTankThick(0),
986 m_BackCoolTankMat(
""),
987 m_BackCoolTankWaName(
""),
988 m_BackCoolTankWaWidth(0),
989 m_BackCoolTankWaMat(
""),
990 m_BackBracketName(
""),
991 m_BackBracketHeight(0),
992 m_BackBracketMat(
""),
995 m_DryAirTubeName(
""),
997 m_DryAirTubeInnDiam(0),
998 m_DryAirTubeOutDiam(0),
1000 m_MBCoolTubeHere(0),
1001 m_MBCoolTubeName(
""),
1002 m_MBCoolTubeInnDiam(0),
1003 m_MBCoolTubeOutDiam(0),
1004 m_MBCoolTubeMat(
""),
1007 m_MBManifInnDiam(0),
1008 m_MBManifOutDiam(0),
1016 m_PincerRodName(
""),
1018 m_vecPincerRodAzimuth(),
1019 m_PincerEnvName(
""),
1021 m_PincerEnvWidth(0),
1022 m_PincerEnvHeight(0),
1023 m_PincerEnvLength(0),
1024 m_vecPincerEnvZOff(),
1025 m_PincerBlkName(
""),
1027 m_PincerBlkLength(0),
1028 m_PincerShim1Name(
""),
1029 m_PincerShimHeight(0),
1030 m_PincerShim2Name(
""),
1031 m_PincerShimMat(
""),
1032 m_PincerShim1Width(0),
1033 m_PincerShim2Width(0),
1034 m_PincerCutName(
""),
1036 m_PincerCutWidth(0),
1037 m_PincerCutHeight(0)
1040 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance";
1050 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Initialize";
1077 m_SpmNPerHalf =
static_cast<unsigned int>(nArgs[
"SpmNPerHalf"]);
1128 m_NCryTypes =
static_cast<unsigned int>(nArgs[
"NCryTypes"]);
1219 m_NFawPerSupm =
static_cast<unsigned int>(nArgs[
"NFawPerSupm"]);
1374 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: end initialize";
1382 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl;
1385 const unsigned int copyOne(1);
1386 const unsigned int copyTwo(2);
1415 const std::vector<double>& cutBoxParms(spmCutBox.
parameters());
1430 const std::vector<double>& sideParms(sideSolid.
parameters());
1435 for (
unsigned int icopy(1); icopy <= 2; ++icopy) {
1439 const Tl3D tr(tvec[0], tvec[1], tvec[2]);
1440 const RoZ3D ro(rang);
1449 const Tl3D trSide(tvec[0],
1450 tvec[1] + (1 == icopy ? 1. : -1.) * (cutBoxParms[1] + sideParms[1]) +
1453 const RoZ3D roSide(rang);
1478 const double dphi(360. * deg / (1. *
spmNPerHalf()));
1479 for (
unsigned int iphi(0); iphi < 2 *
spmNPerHalf(); ++iphi) {
1492 const unsigned int offr(4 * iphi);
1493 const unsigned int offt(3 * iphi);
1500 const Tf3D both(rotaExtra * rotaBase);
1506 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
1516 for (
unsigned int ilyx(0); ilyx !=
vecIlyThick().size(); ++ilyx) {
1528 for (
unsigned int iPipeType(0); iPipeType !=
vecIlyPipeLength().size(); ++iPipeType) {
1574 for (
unsigned int ily(0); ily !=
vecIlyThick().size(); ++ily) {
1575 const double ilyRMax(ilyRMin +
vecIlyThick()[ily]);
1585 unsigned int copyNum[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1589 unsigned int ptmCopy(0);
1590 for (
unsigned int ilyPTM(0); ilyPTM !=
vecIlyPTMZ().size(); ++ilyPTM) {
1593 const double yy(radius *
sin(phi));
1594 const double xx(radius *
cos(phi));
1600 myrot(ilyPTMLog.
name().
name() +
"_rot" + std::to_string(ptmCopy), CLHEP::HepRotationZ(phi)));
1604 unsigned int fanOutCopy(0);
1605 for (
unsigned int ilyFO(0); ilyFO !=
vecIlyFanOutZ().size(); ++ilyFO) {
1608 const double yy(radius *
sin(phi));
1609 const double xx(radius *
cos(phi));
1615 myrot(ilyFanOutLog.
name().
name() +
"_rot" + std::to_string(fanOutCopy),
1616 CLHEP::HepRotationZ(phi) * CLHEP::HepRotationY(180 * deg)));
1618 unsigned int femCopy(0);
1619 for (
unsigned int ilyFEM(0); ilyFEM !=
vecIlyFEMZ().size(); ++ilyFEM) {
1622 const double yy(radius *
sin(phi));
1623 const double xx(radius *
cos(phi));
1629 myrot(ilyFEMLog.
name().
name() +
"_rot" + std::to_string(femCopy), CLHEP::HepRotationZ(phi)));
1632 for (
unsigned int iPipe(0); iPipe !=
vecIlyPipePhi().size(); ++iPipe) {
1637 for (
unsigned int ly(0); ly != 2; ++ly) {
1640 const double yy(radius *
sin(phi));
1641 const double xx(radius *
cos(phi));
1649 :
myrot(ilyPipeLog[type].
name().
name() +
"_rot" + std::to_string(copyNum[type]),
1650 Rota(
Vec3(xx, yy, 0), 90 * deg))));
1660 std::vector<double> cri;
1661 std::vector<double> cro;
1662 std::vector<double> czz;
1694 const double beta1(atan((BNom1 - bNom1) / LNom1));
1696 const double sinbeta1(
sin(beta1));
1698 const double tana_hawR((BNom1 - bNom1) / LNom1);
1702 const double a_hawR(bNom1 + sClr1 + 2 * sWrap1 + 2 * sWall1 - sinbeta1 * (fClr1 + fWrap1 + fWall1));
1703 const double B_hawR(a_hawR + H_hawR * tana_hawR);
1704 const double b_hawR(a_hawR + h_hawR * tana_hawR);
1707 const Trap trapHAWR(a_hawR / 2.,
1722 const double al1_fawR(atan((B_hawR - a_hawR) / H_hawR) +
M_PI_2);
1725 const Trap trapFAW(a_hawR,
1743 const double hawBoxClr(1 * mm);
1748 const std::vector<double>& hawBoxParms(hawCutBox.
parameters());
1751 const Pt3D b1(hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1752 const Pt3D b2(-hawBoxParms[0], hawBoxParms[1], hawBoxParms[2]);
1753 const Pt3D b3(-hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2]);
1757 const Tf3D hawCutForm(b1,
1762 Pt3D(vHAW[0].
x() - hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel));
1769 hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1770 myrot(hawCutName.
name() +
"R", hawCutForm.getRotation())));
1777 const std::vector<double>& fawBoxParms(fawCutBox.
parameters());
1780 const Pt3D bb1(fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1781 const Pt3D bb2(-fawBoxParms[0], fawBoxParms[1], fawBoxParms[2]);
1782 const Pt3D bb3(-fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2]);
1784 const Tf3D fawCutForm(bb1,
1787 vFAW[2] +
Pt3D(2 * hawBoxClr, -5 * mm, 0),
1788 vFAW[1] +
Pt3D(-2 * hawBoxClr, -5 * mm, 0),
1789 Pt3D(vFAW[1].
x() - 2 * hawBoxClr, vFAW[1].
y() - trapFAW.
h(), vFAW[1].z() - zDel));
1796 fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()),
1797 myrot(fawCutName.
name() +
"R", fawCutForm.getRotation())));
1800 const Tf3D hawRform(vHAW[3],
1804 0.5 * (vFAW[0] + vFAW[3]),
1805 0.5 * (vFAW[1] + vFAW[2]));
1810 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1817 DDTranslation(-hawRform.getTranslation().x(), -hawRform.getTranslation().y(), -hawRform.getTranslation().z()),
1819 CLHEP::HepRotationY(180 * deg) *
1820 CLHEP::HepRep3x3(1, 0, 0, 0, 1, 0, 0, 0, -1)));
1831 for (
unsigned int iPhi(1); iPhi <=
nFawPerSupm(); ++iPhi) {
1841 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z()),
1842 myrot(
fawName().
name() +
"_Rot" + std::to_string(iPhi), fawform.getRotation()));
1851 const Trap trapGrid((B_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1852 (b_hawR - h_Grid * (B_hawR - a_hawR) / H_hawR) / 2,
1856 (L_hawR - 8 * cm) / 2.,
1867 const Tf3D gridForm(vGrid[4],
1870 vHAW[5] -
Pt3D(0, h_Grid, 0),
1879 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z()),
1910 double theta(90 * deg);
1912 double side(0 * mm);
1913 double zeta(0 * deg);
1915 for (
unsigned int cryType(1); cryType <=
nCryTypes(); ++cryType) {
1918 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType;
1925 const double alfCry(90 * deg + atan((bNom - bUnd - aNom + aUnd) / (hNom - hUnd)));
1927 const Trap trapCry((ANom - AUnd) / 2.,
1934 aNom - aUnd - ANom + AUnd,
1935 hNom - hUnd - HNom + HUnd
1964 unsigned int copyAPD(0);
1967 const double delta(atan((HNom - hNom) / LNom));
1969 const double sindelta(
sin(delta));
1971 const double gamma(atan((ANom - aNom) / LNom));
1973 const double singamma(
sin(gamma));
1975 const double beta(atan((BNom - bNom) / LNom));
1977 const double sinbeta(
sin(beta));
1980 const double alfClr(90 * deg + atan((bNom - aNom) / (hNom + sClr)));
1982 const Trap trapClr((ANom + sClr + rClr * singamma) / 2.,
1983 (aNom + sClr - fClr * singamma) / 2.,
1984 (bNom + sClr - fClr * sinbeta) / 2.,
1985 (HNom + sClr + rClr * sindelta) / 2.,
1986 (hNom + sClr - fClr * sindelta) / 2.,
1987 (LNom + fClr + rClr) / 2.,
1999 const double alfWrap(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap)));
2001 const Trap trapWrap((trapClr.
A() + 2 * sWrap + rWrap * singamma) / 2,
2002 (trapClr.
a() + 2 * sWrap - fWrap * singamma) / 2,
2003 (trapClr.
b() + 2 * sWrap - fWrap * sinbeta) / 2,
2004 (trapClr.
H() + 2 * sWrap + rWrap * sindelta) / 2,
2005 (trapClr.
h() + 2 * sWrap - fWrap * sindelta) / 2,
2006 (trapClr.
L() + fWrap + rWrap) / 2.,
2008 aNom - ANom - (cryType > 9 ? 0 : 0.020 * mm),
2013 const DDSolid wrapSolid(
mytrap(wrapDDName.name(), trapWrap));
2018 const double alfWall(90 * deg + atan((bNom - aNom) / (hNom + sClr + 2 * sWrap + 2 * sWall)));
2020 const Trap trapWall((trapWrap.A() + 2 * sWall + rWall * singamma) / 2,
2021 (trapWrap.a() + 2 * sWall - fWall * singamma) / 2,
2022 (trapWrap.b() + 2 * sWall - fWall * sinbeta) / 2,
2023 (trapWrap.H() + 2 * sWall + rWall * sindelta) / 2,
2024 (trapWrap.h() + 2 * sWall - fWall * sindelta) / 2,
2025 (trapWrap.L() + fWall + rWall) / 2.,
2027 aNom - ANom - (cryType < 10 ? 0.150 * mm : 0.100 * mm),
2032 const DDSolid wallSolid(
mytrap(wallDDName.name(), trapWall));
2079 const Vec3 cryToClr(0, 0, (rClr - fClr) / 2);
2104 const Vec3 clrToWrap(0, 0, (rWrap - fWrap) / 2);
2113 const Vec3 wrapToWall1(0, 0, (rWall - fWall) / 2);
2114 const Vec3 wrapToWall(
Vec3((cryType > 9 ? 0 : 0.005 * mm), 0, 0) + wrapToWall1);
2125 const double sidePrime((trapWall.a() - trapCry.
a()) / 2);
2126 const double frontPrime(fWall + fWrap + fClr + LUnd / 2);
2147 for (
unsigned int etaAlv(1); etaAlv <=
nCryPerAlvEta(); ++etaAlv) {
2148 LogDebug(
"EcalGeom") <<
"theta=" << theta / deg <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
2149 <<
", zeta=" << zeta <<
", delta=" << delta <<
", zee=" << zee;
2151 zee += 0.075 * mm + (side *
cos(zeta) + trapWall.h() - sidePrime) /
sin(theta);
2153 LogDebug(
"EcalGeom") <<
"New zee=" << zee;
2157 const Pt3D trap2(vCry[2] + cryToClr + clrToWrap + wrapToWall);
2159 const Pt3D trap3(trap2 +
Pt3D(0, -trapCry.
h(), 0));
2160 const Pt3D trap1(trap3 +
Pt3D(-trapCry.
a(), 0, 0));
2163 const Pt3D wedge2(wedge3 +
Pt3D(0, trapCry.
h() *
cos(theta), -trapCry.
h() *
sin(theta)));
2164 const Pt3D wedge1(wedge3 +
Pt3D(trapCry.
a(), 0, 0));
2166 const Tf3D tForm1(trap1, trap2, trap3, wedge1, wedge2, wedge3);
2168 const double xx(0.050 * mm);
2170 const Tf3D tForm(HepGeom::Translate3D(xx, 0, 0) * tForm1);
2175 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2176 myrot(wallLog.
name().
name() +
"_" + std::to_string(etaAlv), tForm.getRotation()));
2182 if (5 == cryType || 9 == cryType || 13 == cryType || 17 == cryType)
2184 const unsigned int webIndex(cryType / 4);
2229 const std::vector<double>& backPlateParms(backPlateSolid.
parameters());
2247 outtra + backPlateTra,
2282 outtra + backSideTra1,
2283 myrot(
backSideName().
name() +
"Rot8", CLHEP::HepRotationX(180 * deg) * CLHEP::HepRotationZ(90 * deg)));
2289 outtra + backSideTra2,
2307 const double manifCut(2 * mm);
2315 mBManifWaName, backCoolWidth / 2. - manifCut, 0,
mBManifInnDiam() / 2, 0 * deg, 360 * deg));
2331 const double deltaY(-5 * mm);
2337 unsigned int edgeSlotCopy(0);
2338 unsigned int midSlotCopy(0);
2351 const DDTranslation gTra(outtra + backPlateTra + grilleTra);
2354 if (0 == (iGr - 1) % 2) {
2360 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2366 cpv.
position(grMidSlotLog[(iGr - 1) / 2],
2468 offTra += 2 * backVFELyrTra;
2512 unsigned int iCVFECopy(1);
2513 unsigned int iSep(0);
2514 unsigned int iNSec(0);
2516 for (
unsigned int iMod(0); iMod != 4; ++iMod) {
2519 const double pipeZPos(
vecGrilleZOff()[2 * iMod + 1] - pipeLength / 2 - 1.5 * mm);
2524 for (
unsigned int iMisc(0); iMisc != nMisc; ++iMisc) {
2528 for (
unsigned int iMB(0); iMB !=
vecMBLyrThick().size(); ++iMB) {
2548 const double halfZTank(halfZBCool - 5 * cm);
2558 DDTranslation(-backCoolHeight / 2 + backCoolTankHeight / 2. + bottomThick,
2594 for (
unsigned int j(0);
j != nMisc; ++
j)
2610 bSumTra += 2 * bTra;
2651 -backCoolHeight / 2.0 +
mBCoolTubeOutDiam() / 2., -bHalfWidth + (
j + 1) * bHalfWidth / 5, 0),
2720 dryAirTubeTra1.z());
2733 const unsigned int numSec(static_cast<unsigned int>(
vecBackCoolNSec()[iMod]));
2734 for (
unsigned int jSec(0); jSec != numSec; ++jSec) {
2736 for (
unsigned int iBar(0); iBar != nMax; ++iBar) {
2741 if (jSec != numSec - 1)
2763 double patchHeight(0);
2773 const std::vector<double>& patchParms(patchSolid.
parameters());
2818 const std::vector<double>& envParms(envSolid.
parameters());
2823 const std::vector<double>& blkParms(blkSolid.parameters());
2833 const std::vector<double>& cutParms(cutSolid.
parameters());
2845 const std::vector<double>& shim2Parms(shim2Solid.
parameters());
2849 DDTranslation(+cutParms[0] - shim2Parms[0], -cutParms[1] + shim2Parms[1], 0),
2858 const std::vector<double>& shim1Parms(shim1Solid.
parameters());
2863 DDTranslation(+envParms[0] - shim1Parms[0], -envParms[1] + shim1Parms[1], -envParms[2] + shim1Parms[2]),
2900 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it...";
2907 std::make_unique<DDRotationMatrix>(r.xx(), r.xy(), r.xz(), r.yx(), r.yy(), r.yz(), r.zx(), r.zy(), r.zz()));
2913 const pair<std::string, std::string>
temp(
DDSplit(s));
2914 if (temp.second.empty()) {
2917 return DDName(temp.first, temp.second);
2923 ddname(s), t.
dz(), t.
theta(), t.
phi(), t.
h1(), t.
bl1(), t.
tl1(), t.
alp1(), t.
h2(), t.
bl2(), t.
tl2(), t.
alp2());
2931 const HepGeom::Point3D<double>& corner,
2938 const unsigned int copyOne(1);
2942 const double BWebx(bWeb + (BWeb - bWeb) * LWebx / LWeb);
2945 const Trap trapWebClr(BWebx / 2,
2959 const Trap trapWebPl(trapWebClr.
A() / 2,
2964 trapWebClr.
L() / 2.,
2966 trapWebClr.
b() - trapWebClr.
B(),
2970 const DDSolid webPlSolid(
mytrap(webPlDDName.fullname(), trapWebPl));
2981 zee += trapWebClr.
h() /
sin(theta);
2983 const double beta(theta + delta);
2985 const double zWeb(zee - front *
cos(beta) + side *
sin(beta));
2986 const double yWeb(front *
sin(beta) + side *
cos(beta));
2988 const Pt3D wedge3(corner +
Pt3D(0, -yWeb, zWeb));
2989 const Pt3D wedge2(wedge3 +
Pt3D(0, trapWebClr.
h() *
cos(theta), -trapWebClr.
h() *
sin(theta)));
2990 const Pt3D wedge1(wedge3 +
Pt3D(trapWebClr.
a(), 0, 0));
2992 LogDebug(
"EcalGeom") <<
"trap1=" << vWeb[0] <<
", trap2=" << vWeb[2] <<
", trap3=" << vWeb[3];
2994 LogDebug(
"EcalGeom") <<
"wedge1=" << wedge1 <<
", wedge2=" << wedge2 <<
", wedge3=" << wedge3;
2996 const Tf3D tForm(vWeb[0], vWeb[2], vWeb[3], wedge1, wedge2, wedge3);
3002 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
3003 myrot(webClrLog.
name().
name() + std::to_string(iWeb), tForm.getRotation()));
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
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 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