16 #include "CLHEP/Units/GlobalSystemOfUnits.h" 18 #include <CLHEP/Geometry/Point3D.h> 19 #include <CLHEP/Geometry/Vector3D.h> 20 #include <CLHEP/Geometry/Transform3D.h> 22 namespace std{}
using namespace std;
131 m_vecIlyPipeLength (),
143 m_IlyFanOutName (
""),
146 m_IlyFanOutWidth (0),
147 m_IlyFanOutLength(0),
148 m_IlyFanOutHeight(0),
189 m_BackSideLength (0),
190 m_BackSideHeight (0),
196 m_BackPlateName (
""),
198 m_BackPlateLength (0),
199 m_BackPlateThick (0),
200 m_BackPlateWidth (0),
202 m_BackPlate2Name (
""),
203 m_BackPlate2Thick (0),
204 m_BackPlate2Mat (
""),
211 m_vecGrilleHeight (),
213 m_GrEdgeSlotName (
""),
214 m_GrEdgeSlotMat (
""),
215 m_GrEdgeSlotHere (0),
216 m_GrEdgeSlotHeight (0),
217 m_GrEdgeSlotWidth (0),
218 m_GrMidSlotName (
""),
221 m_GrMidSlotWidth (0),
223 m_vecGrMidSlotHeight (),
226 m_vecBackPipeDiam (),
227 m_vecBackPipeThick (),
229 m_BackPipeWaterMat (
""),
231 m_vecBackCoolName (),
233 m_BackCoolBarHere (0),
234 m_BackCoolBarWidth (0),
235 m_BackCoolBarHeight (0),
237 m_BackCoolBarName (
""),
238 m_BackCoolBarThick (0),
239 m_BackCoolBarMat (
""),
240 m_BackCoolBarSSName (
""),
241 m_BackCoolBarSSThick (0),
242 m_BackCoolBarSSMat (
""),
243 m_BackCoolBarWaName (
""),
244 m_BackCoolBarWaThick (0),
245 m_BackCoolBarWaMat (
""),
246 m_BackCoolVFEHere (0),
247 m_BackCoolVFEName (
""),
248 m_BackCoolVFEMat (
""),
251 m_vecBackVFELyrThick (),
252 m_vecBackVFELyrName (),
253 m_vecBackVFELyrMat (),
254 m_vecBackCoolNSec (),
255 m_vecBackCoolSecSep (),
256 m_vecBackCoolNPerSec (),
259 m_vecBackMiscThick (),
260 m_vecBackMiscName (),
263 m_PatchPanelHere (0),
264 m_PatchPanelName (
""),
265 m_vecPatchPanelThick (),
266 m_vecPatchPanelNames (),
267 m_vecPatchPanelMat (),
268 m_BackCoolTankHere (0),
269 m_BackCoolTankName (
""),
270 m_BackCoolTankWidth (0),
271 m_BackCoolTankThick (0),
272 m_BackCoolTankMat (
""),
273 m_BackCoolTankWaName (
""),
274 m_BackCoolTankWaWidth (0),
275 m_BackCoolTankWaMat (
""),
276 m_BackBracketName (
""),
277 m_BackBracketHeight (0),
278 m_BackBracketMat (
""),
280 m_DryAirTubeHere (0),
281 m_DryAirTubeName (
""),
283 m_DryAirTubeInnDiam (0),
284 m_DryAirTubeOutDiam (0),
285 m_DryAirTubeMat (
""),
286 m_MBCoolTubeHere (0),
287 m_MBCoolTubeName (
""),
288 m_MBCoolTubeInnDiam (0),
289 m_MBCoolTubeOutDiam (0),
290 m_MBCoolTubeMat (
""),
293 m_MBManifInnDiam (0),
294 m_MBManifOutDiam (0),
303 m_PincerRodName (
""),
305 m_vecPincerRodAzimuth(),
306 m_PincerEnvName (
""),
308 m_PincerEnvWidth (0),
309 m_PincerEnvHeight (0),
310 m_PincerEnvLength (0),
311 m_vecPincerEnvZOff (),
312 m_PincerBlkName (
""),
314 m_PincerBlkLength (0),
315 m_PincerShim1Name (
""),
316 m_PincerShimHeight (0),
317 m_PincerShim2Name (
""),
318 m_PincerShimMat (
""),
319 m_PincerShim1Width (0),
320 m_PincerShim2Width (0),
321 m_PincerCutName (
""),
323 m_PincerCutWidth (0),
324 m_PincerCutHeight (0)
327 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance" ;
341 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Initialize" ;
368 m_SpmNPerHalf =
static_cast<unsigned int> (nArgs[
"SpmNPerHalf"]) ;
419 m_NCryTypes =
static_cast<unsigned int> ( nArgs[
"NCryTypes"] ) ;
420 m_NCryPerAlvEta =
static_cast<unsigned int> ( nArgs[
"NCryPerAlvEta"] ) ;
510 m_NFawPerSupm=
static_cast<unsigned int> ( nArgs[
"NFawPerSupm"] ) ;
623 m_MBCoolTubeNum =
static_cast<unsigned int> ( nArgs[
"MBCoolTubeNum"] ) ;
667 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: end initialize" ;
676 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl ;
680 const unsigned int copyOne (1) ;
681 const unsigned int copyTwo (2) ;
726 const std::vector<double>& cutBoxParms ( spmCutBox.
parameters() ) ;
732 const double zExp ( fabs(
vecSpmZPts().back() -
750 const std::vector<double>& sideParms ( sideSolid.
parameters() ) ;
755 for(
unsigned int icopy(1); icopy <= 2; ++icopy )
760 const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
761 const RoZ3D ro ( rang ) ;
770 std::to_string(icopy),
771 alltrot.getRotation() ) ) ;
775 const Tl3D trSide ( tvec[0],
776 tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
779 const RoZ3D roSide ( rang ) ;
788 std::to_string(icopy),
789 sideRot.getRotation() ) ) ;
812 spmcut1ddname, spmCutBox,
827 const double dphi ( 360.*deg/(1.*
spmNPerHalf() ) ) ;
828 for(
unsigned int iphi (0); iphi<2*
spmNPerHalf() ; ++iphi )
849 const unsigned int offr ( 4*iphi ) ;
850 const unsigned int offt ( 3*iphi ) ;
861 const Tf3D both ( rotaExtra*rotaBase ) ;
864 both.getRotation() ) );
869 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
882 double ilyThick ( 0 ) ;
883 for(
unsigned int ilyx ( 0 ) ; ilyx !=
vecIlyThick().size() ; ++ilyx )
905 for(
unsigned int iPipeType ( 0 ) ; iPipeType !=
vecIlyPipeLength().size(); ++iPipeType )
908 std::to_string(iPipeType+1) ) ) ;
918 std::to_string(iPipeType+1) ) ) ;
984 for(
unsigned int ily ( 0 ) ; ily !=
vecIlyThick().size() ; ++ily )
986 const double ilyRMax ( ilyRMin +
vecIlyThick()[ily] ) ;
1005 unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1013 unsigned int ptmCopy ( 0 ) ;
1014 for(
unsigned int ilyPTM ( 0 ) ; ilyPTM !=
vecIlyPTMZ().size() ; ++ilyPTM )
1018 const double yy ( radius*
sin(phi) ) ;
1019 const double xx ( radius*
cos(phi) ) ;
1026 std::to_string( ptmCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1031 unsigned int fanOutCopy ( 0 ) ;
1032 for(
unsigned int ilyFO ( 0 ) ; ilyFO !=
vecIlyFanOutZ().size() ; ++ilyFO )
1036 const double yy ( radius*
sin(phi) ) ;
1037 const double xx ( radius*
cos(phi) ) ;
1044 std::to_string( fanOutCopy ) ,
1045 CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1047 unsigned int femCopy ( 0 ) ;
1048 for(
unsigned int ilyFEM ( 0 ) ; ilyFEM !=
vecIlyFEMZ().size() ; ++ilyFEM )
1052 const double yy ( radius*
sin(phi) ) ;
1053 const double xx ( radius*
cos(phi) ) ;
1060 std::to_string( femCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1063 for(
unsigned int iPipe ( 0 ) ; iPipe !=
vecIlyPipePhi().size(); ++iPipe )
1065 const unsigned int type ( static_cast<unsigned int> ( round(
vecIlyPipeType()[iPipe] ) ) ) ;
1070 for(
unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1075 const double yy ( radius*
sin(phi) ) ;
1076 const double xx ( radius*
cos(phi) ) ;
1084 std::to_string( copyNum[type] ) ,
Rota(
Vec3(xx,yy,0), 90*deg) ) ) ) ;
1094 std::vector<double> cri;
1095 std::vector<double> cro;
1096 std::vector<double> czz;
1099 cro.emplace_back(
vecSpmRMin()[0] + 25*mm ) ;
1102 cro.emplace_back(
vecSpmRMin()[2] + 10*mm ) ;
1124 const double sClr1 (
clrThAlv() ) ;
1125 const double fClr1 (
clrFrAlv() ) ;
1128 const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1130 const double sinbeta1 (
sin( beta1 ) ) ;
1132 const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1134 const double H_hawR (
hawRHBIG() ) ;
1135 const double h_hawR (
hawRhsml() ) ;
1136 const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1137 - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1138 const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1139 const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1142 const Trap trapHAWR (
1158 const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) +
M_PI_2 ) ;
1161 const Trap trapFAW (
1180 const double hawBoxClr ( 1*mm ) ;
1186 b_hawR/2 + hawBoxClr,
1189 const std::vector<double>& hawBoxParms ( hawCutBox.
parameters() ) ;
1192 const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1193 const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1194 const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1196 const double zDel (
sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1199 const Tf3D hawCutForm (
1203 Pt3D( vHAW[0].
x() -hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel ) ) ;
1207 hawRSolid1, hawCutBox,
1208 DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1210 hawCutForm.getRotation() ) ) ) ;
1219 hawBoxParms[2] ) ) ;
1221 const std::vector<double>& fawBoxParms ( fawCutBox.
parameters() ) ;
1224 const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1225 const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1226 const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1228 const Tf3D fawCutForm (
1230 vFAW[2] +
Pt3D( 2*hawBoxClr,-5*mm,0),
1231 vFAW[1] +
Pt3D(-2*hawBoxClr,-5*mm,0),
1232 Pt3D( vFAW[1].
x()-2*hawBoxClr, vFAW[1].
y()-trapFAW.
h(), vFAW[1].z() - zDel ) ) ;
1236 fawSolid1, fawCutBox,
1237 DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1239 fawCutForm.getRotation() ) ) ) ;
1243 const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1],
1244 vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1248 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1250 hawRform.getRotation() ) ) ;
1256 -hawRform.getTranslation().y(),
1257 -hawRform.getTranslation().z() ),
1259 CLHEP::HepRotationY(180*deg)*
1260 CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1271 for(
unsigned int iPhi ( 1 ); iPhi <=
nFawPerSupm() ; ++iPhi )
1284 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1286 fawform.getRotation() ) ) ;
1295 const Trap trapGrid (
1296 ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1297 ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1312 const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6],
1313 vHAW[5] -
Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1319 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1321 gridForm.getRotation() ) ) ;
1330 const double AUnd (
underAR() ) ;
1331 const double aUnd (
underAF() ) ;
1333 const double bUnd (
underCF() ) ;
1334 const double HUnd (
underBR() ) ;
1335 const double hUnd (
underBF() ) ;
1336 const double LUnd (
underLZ() ) ;
1351 double theta ( 90*deg ) ;
1352 double zee ( 0*mm ) ;
1353 double side ( 0*mm ) ;
1354 double zeta ( 0*deg ) ;
1356 for(
unsigned int cryType ( 1 ) ; cryType <=
nCryTypes() ; ++cryType )
1360 std::to_string( cryType ) ) ;
1362 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType ;
1369 const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1370 ( hNom - hUnd ) ) ) ;
1372 const Trap trapCry (
1380 aNom - aUnd - ANom + AUnd,
1381 hNom - hUnd - HNom + HUnd
1393 const Trap trapAPD (
1412 unsigned int copyAPD ( 0 ) ;
1416 const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1418 const double sindelta (
sin( delta ) ) ;
1420 const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1422 const double singamma (
sin( gamma ) ) ;
1424 const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1426 const double sinbeta (
sin( beta ) ) ;
1429 const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1431 const Trap trapClr (
1432 ( ANom + sClr + rClr*singamma )/2.,
1433 ( aNom + sClr - fClr*singamma )/2.,
1434 ( bNom + sClr - fClr*sinbeta )/2.,
1435 ( HNom + sClr + rClr*sindelta )/2.,
1436 ( hNom + sClr - fClr*sindelta )/2.,
1437 ( LNom + fClr + rClr )/2.,
1449 const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1450 ( hNom + sClr + 2*sWrap ) ) ) ;
1452 const Trap trapWrap (
1453 ( trapClr.
A() + 2*sWrap + rWrap*singamma )/2,
1454 ( trapClr.
a() + 2*sWrap - fWrap*singamma )/2,
1455 ( trapClr.
b() + 2*sWrap - fWrap*sinbeta )/2,
1456 ( trapClr.
H() + 2*sWrap + rWrap*sindelta )/2,
1457 ( trapClr.
h() + 2*sWrap - fWrap*sindelta )/2,
1458 ( trapClr.
L() + fWrap + rWrap )/2.,
1460 aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1465 const DDSolid wrapSolid (
mytrap( wrapDDName.name(), trapWrap ) ) ;
1470 const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1471 ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1473 const Trap trapWall (
1474 ( trapWrap.A() + 2*sWall + rWall*singamma )/2,
1475 ( trapWrap.a() + 2*sWall - fWall*singamma )/2,
1476 ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2,
1477 ( trapWrap.H() + 2*sWall + rWall*sindelta )/2,
1478 ( trapWrap.h() + 2*sWall - fWall*sindelta )/2,
1479 ( trapWrap.L() + fWall + rWall )/2.,
1481 aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1486 const DDSolid wallSolid (
mytrap( wallDDName.name(), trapWall ) ) ;
1533 const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1548 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2. ),
1555 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2.),
1559 const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1569 const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1570 const Vec3 wrapToWall (
Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1581 const double sidePrime ( ( trapWall.a() - trapCry.
a() )/2 ) ;
1582 const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1602 for(
unsigned int etaAlv ( 1 ) ; etaAlv <=
nCryPerAlvEta() ; ++etaAlv )
1604 LogDebug(
"EcalGeom") <<
"theta=" << theta/deg
1605 <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
1606 <<
", zeta="<<zeta<<
", delta="<<delta<<
", zee=" << zee;
1609 ( side*
cos(zeta) + trapWall.h() - sidePrime )/
sin(theta) ;
1611 LogDebug(
"EcalGeom") <<
"New zee="<< zee ;
1615 const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1617 const Pt3D trap3 ( trap2 +
Pt3D( 0,
1620 const Pt3D trap1 ( trap3 +
Pt3D( -trapCry.
a(),
1624 const Pt3D wedge3 ( vHAW[4] +
Pt3D( sidePrime,
1627 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
1628 trapCry.
h()*
cos(theta),
1629 -trapCry.
h()*
sin(theta) ) ) ;
1630 const Pt3D wedge1 ( wedge3 +
Pt3D( trapCry.
a(),
1634 const Tf3D tForm1 ( trap1, trap2, trap3,
1635 wedge1, wedge2, wedge3 ) ;
1637 const double xx ( 0.050*mm ) ;
1639 const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1644 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1645 myrot( wallLog.
name().
name() +
"_" + std::to_string( etaAlv ),
1646 tForm.getRotation() ) ) ;
1657 const unsigned int webIndex ( cryType/4 ) ;
1708 const std::vector<double>& backPlateParms ( backPlateSolid.
parameters() ) ;
1741 outtra + backPlateTra,
1743 CLHEP::HepRotationZ(270*deg) ) ) ;
1784 outtra + backSideTra1,
1786 CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
1794 outtra + backSideTra2,
1796 CLHEP::HepRotationZ(90*deg) ) ) ;
1813 const double manifCut ( 2*mm ) ;
1816 backCoolWidth/2. - manifCut,
1819 0*deg, 360*deg ) ) ;
1824 backCoolWidth/2.-manifCut,
1827 0*deg, 360*deg ) ) ;
1850 const double deltaY ( -5*mm ) ;
1858 unsigned int edgeSlotCopy ( 0 ) ;
1859 unsigned int midSlotCopy ( 0 ) ;
1863 for(
unsigned int iGr ( 0 ) ; iGr !=
vecGrilleHeight().size() ; ++iGr )
1879 const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
1884 if( 0 == (iGr-1)%2 )
1894 cpv.
position( grMidSlotLog[(iGr-1)/2],
1900 cpv.
position( grMidSlotLog[(iGr-1)/2],
1931 if( ( 0 != iGr%2 ) &&
1941 CLHEP::HepRotationX(90*deg) ) ) ;
1949 CLHEP::HepRotationX(90*deg) ) ) ;
1972 backCoolBarSolid ) ;
1980 backCoolBarSSSolid ) ;
1994 backCoolBarWaSolid ) ;
2015 double thickVFE ( 0 ) ;
2041 backVFELyrTra + offTra,
2043 offTra += 2*backVFELyrTra ;
2066 backCoolVFESolid ) ;
2084 CLHEP::HepRotationX( 180*deg ) ) ) ;
2098 unsigned int iCVFECopy ( 1 ) ;
2099 unsigned int iSep ( 0 ) ;
2100 unsigned int iNSec ( 0 ) ;
2102 for(
unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2108 const double pipeZPos (
vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2115 for(
unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2120 for(
unsigned int iMB ( 0 ) ; iMB !=
vecMBLyrThick().size() ; ++iMB )
2148 outtra + backPlateTra + bCoolTra,
2154 const double halfZTank ( halfZBCool - 5*cm ) ;
2158 backCoolTankHeight/2.,
2163 backCoolTankSolid ) ;
2169 backCoolTankHeight/2. +
2176 backCoolTankHeight/2. -
2183 backCoolTankWaSolid ) ;
2197 backBracketSolid ) ;
2220 bottomThick, 0, 0 ) ;
2221 for(
unsigned int j ( 0 ) ; j != nMisc ; ++j )
2250 for(
unsigned int j ( 0 ) ; j !=
vecMBLyrThick().size() ; ++j )
2253 std::to_string(iMod+1) ) ) ;
2275 std::to_string(iMod+1) ) ) ;
2281 0*deg, 360*deg ) ) ;
2285 std::to_string(iMod+1) ) ) ;
2290 0*deg, 360*deg ) ) ;
2292 mBCoolTubeWaSolid ) ;
2305 -bHalfWidth + (j+1)*bHalfWidth/5, 0),
2320 std::to_string( iMod+1 ) ) ) ;
2322 "_H2O_" + std::to_string( iMod+1 ) ) ) ;
2328 0*deg, 360*deg ) ) ;
2335 0*deg, 360*deg ) ) ;
2395 0*deg, 360*deg ) ) ;
2422 dryAirTubeTra1.z() ) ;
2441 -halfZTank + halfZCoolVFE ) ;
2442 const unsigned int numSec ( static_cast<unsigned int> (
vecBackCoolNSec()[iMod]) ) ;
2443 for(
unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2445 const unsigned int nMax ( static_cast<unsigned int> (
vecBackCoolNPerSec()[iNSec++]) ) ;
2446 for(
unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2478 double patchHeight ( 0 ) ;
2491 const std::vector<double>& patchParms ( patchSolid.
parameters() ) ;
2557 const std::vector<double>& envParms ( envSolid.
parameters() ) ;
2564 const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2576 const std::vector<double>& cutParms ( cutSolid.
parameters() ) ;
2581 -blkParms[1] + cutParms[1], 0 ),
2589 const std::vector<double>& shim2Parms ( shim2Solid.
parameters() ) ;
2594 -cutParms[1] + shim2Parms[1], 0 ),
2604 const std::vector<double>& shim1Parms ( shim1Solid.
parameters() ) ;
2609 -envParms[1] + shim1Parms[1],
2610 -envParms[2] + shim1Parms[2] ),
2613 for(
unsigned int iEnv ( 0 ) ; iEnv !=
vecPincerEnvZOff().size() ; ++iEnv )
2652 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it..." ;
2658 const CLHEP::HepRotation&
r )
const 2660 return DDrot(
ddname(
m_idNameSpace +
":" + s ), std::make_unique<DDRotationMatrix>( r.xx(), r.xy(), r.xz(), r.yx(), r.yy(), r.yz(), r.zx(), r.zy(), r.zz() ) ) ;
2673 const pair<std::string,std::string>
temp (
DDSplit(s) ) ;
2674 if ( temp.second.empty() ) {
2675 return DDName( temp.first,
2678 return DDName( temp.first, temp.second );
2706 const HepGeom::Point3D<double> &
corner,
2714 const unsigned int copyOne (1) ;
2718 const double BWebx ( bWeb + ( BWeb - bWeb )*LWebx/LWeb ) ;
2721 const Trap trapWebClr (
2736 const Trap trapWebPl (
2744 trapWebClr.
b() - trapWebClr.
B() ,
2748 const DDSolid webPlSolid (
mytrap( webPlDDName.fullname(), trapWebPl ) ) ;
2759 zee += trapWebClr.
h()/
sin(theta) ;
2761 const double beta ( theta + delta ) ;
2763 const double zWeb ( zee - front*
cos(beta) + side*
sin(beta) ) ;
2764 const double yWeb ( front*
sin(beta) + side*
cos(beta) ) ;
2766 const Pt3D wedge3 ( corner +
Pt3D( 0, -yWeb, zWeb ) ) ;
2767 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
2768 trapWebClr.
h()*
cos(theta),
2769 -trapWebClr.
h()*
sin(theta) ) ) ;
2770 const Pt3D wedge1 ( wedge3 +
Pt3D( trapWebClr.
a(), 0, 0 ) ) ;
2772 LogDebug(
"EcalGeom")<<
"trap1="<<vWeb[0]<<
", trap2="<<vWeb[2]<<
", trap3="<<vWeb[3] ;
2774 LogDebug(
"EcalGeom")<<
"wedge1="<<wedge1<<
", wedge2="<<wedge2<<
", wedge3="<<wedge3 ;
2776 const Tf3D tForm ( vWeb[0], vWeb[2], vWeb[3],
2777 wedge1, wedge2, wedge3 ) ;
2783 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2785 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
double hawRCutDelY() const
double pincerBlkLength() const
const std::vector< double > & vecNomCryDimBR() const
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
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
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
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::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
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
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
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
double m_MBCoolTubeInnDiam
std::string m_IlyBndlName
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
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
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
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
DDMaterial clrMat() const
std::string m_BackCoolBarWaName
DDMaterial ilyPipeMat() const
double backCoolBarWidth() const
const std::vector< double > & vecBarZPts() const
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.
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
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