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;
165 m_vecIlyPipeLength (),
177 m_IlyFanOutName (
""),
180 m_IlyFanOutWidth (0),
181 m_IlyFanOutLength(0),
182 m_IlyFanOutHeight(0),
223 m_BackSideLength (0),
224 m_BackSideHeight (0),
230 m_BackPlateName (
""),
232 m_BackPlateLength (0),
233 m_BackPlateThick (0),
234 m_BackPlateWidth (0),
236 m_BackPlate2Name (
""),
237 m_BackPlate2Thick (0),
238 m_BackPlate2Mat (
""),
245 m_vecGrilleHeight (),
247 m_GrEdgeSlotName (
""),
248 m_GrEdgeSlotMat (
""),
249 m_GrEdgeSlotHere (0),
250 m_GrEdgeSlotHeight (0),
251 m_GrEdgeSlotWidth (0),
252 m_GrMidSlotName (
""),
255 m_GrMidSlotWidth (0),
257 m_vecGrMidSlotHeight (),
260 m_vecBackPipeDiam (),
261 m_vecBackPipeThick (),
263 m_BackPipeWaterMat (
""),
265 m_vecBackCoolName (),
267 m_BackCoolBarHere (0),
268 m_BackCoolBarWidth (0),
269 m_BackCoolBarHeight (0),
271 m_BackCoolBarName (
""),
272 m_BackCoolBarThick (0),
273 m_BackCoolBarMat (
""),
274 m_BackCoolBarSSName (
""),
275 m_BackCoolBarSSThick (0),
276 m_BackCoolBarSSMat (
""),
277 m_BackCoolBarWaName (
""),
278 m_BackCoolBarWaThick (0),
279 m_BackCoolBarWaMat (
""),
280 m_BackCoolVFEHere (0),
281 m_BackCoolVFEName (
""),
282 m_BackCoolVFEMat (
""),
285 m_vecBackVFELyrThick (),
286 m_vecBackVFELyrName (),
287 m_vecBackVFELyrMat (),
288 m_vecBackCoolNSec (),
289 m_vecBackCoolSecSep (),
290 m_vecBackCoolNPerSec (),
293 m_vecBackMiscThick (),
294 m_vecBackMiscName (),
297 m_PatchPanelHere (0),
298 m_PatchPanelName (
""),
299 m_vecPatchPanelThick (),
300 m_vecPatchPanelNames (),
301 m_vecPatchPanelMat (),
302 m_BackCoolTankHere (0),
303 m_BackCoolTankName (
""),
304 m_BackCoolTankWidth (0),
305 m_BackCoolTankThick (0),
306 m_BackCoolTankMat (
""),
307 m_BackCoolTankWaName (
""),
308 m_BackCoolTankWaWidth (0),
309 m_BackCoolTankWaMat (
""),
310 m_BackBracketName (
""),
311 m_BackBracketHeight (0),
312 m_BackBracketMat (
""),
314 m_DryAirTubeHere (0),
315 m_DryAirTubeName (
""),
317 m_DryAirTubeInnDiam (0),
318 m_DryAirTubeOutDiam (0),
319 m_DryAirTubeMat (
""),
320 m_MBCoolTubeHere (0),
321 m_MBCoolTubeName (
""),
322 m_MBCoolTubeInnDiam (0),
323 m_MBCoolTubeOutDiam (0),
324 m_MBCoolTubeMat (
""),
327 m_MBManifInnDiam (0),
328 m_MBManifOutDiam (0),
337 m_PincerRodName (
""),
339 m_vecPincerRodAzimuth(),
340 m_PincerEnvName (
""),
342 m_PincerEnvWidth (0),
343 m_PincerEnvHeight (0),
344 m_PincerEnvLength (0),
345 m_vecPincerEnvZOff (),
346 m_PincerBlkName (
""),
348 m_PincerBlkLength (0),
349 m_PincerShim1Name (
""),
350 m_PincerShimHeight (0),
351 m_PincerShim2Name (
""),
352 m_PincerShimMat (
""),
353 m_PincerShim1Width (0),
354 m_PincerShim2Width (0),
355 m_PincerCutName (
""),
357 m_PincerCutWidth (0),
358 m_PincerCutHeight (0)
361 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance" ;
375 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Initialize" ;
402 m_SpmNPerHalf =
static_cast<unsigned int> (nArgs[
"SpmNPerHalf"]) ;
453 m_NCryTypes =
static_cast<unsigned int> ( nArgs[
"NCryTypes"] ) ;
454 m_NCryPerAlvEta =
static_cast<unsigned int> ( nArgs[
"NCryPerAlvEta"] ) ;
578 m_NFawPerSupm=
static_cast<unsigned int> ( nArgs[
"NFawPerSupm"] ) ;
691 m_MBCoolTubeNum =
static_cast<unsigned int> ( nArgs[
"MBCoolTubeNum"] ) ;
735 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: end initialize" ;
744 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl ;
748 const unsigned int copyOne (1) ;
749 const unsigned int copyTwo (2) ;
794 const std::vector<double>& cutBoxParms ( spmCutBox.
parameters() ) ;
800 const double zExp ( fabs(
vecSpmZPts().back() -
832 const std::vector<double>& sideParms ( sideSolid.
parameters() ) ;
837 for(
unsigned int icopy(1); icopy <= 2; ++icopy )
842 const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
843 const RoZ3D ro ( rang ) ;
852 std::to_string(icopy),
853 alltrot.getRotation() ) ) ;
857 const Tl3D trSide ( tvec[0],
858 tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
861 const RoZ3D roSide ( rang ) ;
870 std::to_string(icopy),
871 sideRot.getRotation() ) ) ;
894 spmcut1ddname, spmCutBox,
909 const double dphi ( 360.*deg/(1.*
spmNPerHalf() ) ) ;
910 for(
unsigned int iphi (0); iphi<2*
spmNPerHalf() ; ++iphi )
931 const unsigned int offr ( 4*iphi ) ;
932 const unsigned int offt ( 3*iphi ) ;
943 const Tf3D both ( rotaExtra*rotaBase ) ;
946 both.getRotation() ) );
951 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
964 double ilyThick ( 0 ) ;
965 for(
unsigned int ilyx ( 0 ) ; ilyx !=
vecIlyThick().size() ; ++ilyx )
987 for(
unsigned int iPipeType ( 0 ) ; iPipeType !=
vecIlyPipeLength().size(); ++iPipeType )
990 std::to_string(iPipeType+1) ) ) ;
1000 std::to_string(iPipeType+1) ) ) ;
1005 0*deg, 360*deg ) ) ;
1066 for(
unsigned int ily ( 0 ) ; ily !=
vecIlyThick().size() ; ++ily )
1068 const double ilyRMax ( ilyRMin +
vecIlyThick()[ily] ) ;
1087 unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1095 unsigned int ptmCopy ( 0 ) ;
1096 for(
unsigned int ilyPTM ( 0 ) ; ilyPTM !=
vecIlyPTMZ().size() ; ++ilyPTM )
1100 const double yy ( radius*
sin(phi) ) ;
1101 const double xx ( radius*
cos(phi) ) ;
1108 std::to_string( ptmCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1113 unsigned int fanOutCopy ( 0 ) ;
1114 for(
unsigned int ilyFO ( 0 ) ; ilyFO !=
vecIlyFanOutZ().size() ; ++ilyFO )
1118 const double yy ( radius*
sin(phi) ) ;
1119 const double xx ( radius*
cos(phi) ) ;
1126 std::to_string( fanOutCopy ) ,
1127 CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1129 unsigned int femCopy ( 0 ) ;
1130 for(
unsigned int ilyFEM ( 0 ) ; ilyFEM !=
vecIlyFEMZ().size() ; ++ilyFEM )
1134 const double yy ( radius*
sin(phi) ) ;
1135 const double xx ( radius*
cos(phi) ) ;
1142 std::to_string( femCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1145 for(
unsigned int iPipe ( 0 ) ; iPipe !=
vecIlyPipePhi().size(); ++iPipe )
1147 const unsigned int type ( static_cast<unsigned int> ( round(
vecIlyPipeType()[iPipe] ) ) ) ;
1152 for(
unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1157 const double yy ( radius*
sin(phi) ) ;
1158 const double xx ( radius*
cos(phi) ) ;
1166 std::to_string( copyNum[type] ) ,
Rota(
Vec3(xx,yy,0), 90*deg) ) ) ) ;
1176 std::vector<double> cri;
1177 std::vector<double> cro;
1178 std::vector<double> czz;
1181 cro.emplace_back(
vecSpmRMin()[0] + 25*mm ) ;
1184 cro.emplace_back(
vecSpmRMin()[2] + 10*mm ) ;
1206 const double sClr1 (
clrThAlv() ) ;
1207 const double fClr1 (
clrFrAlv() ) ;
1210 const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1212 const double sinbeta1 (
sin( beta1 ) ) ;
1214 const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1216 const double H_hawR (
hawRHBIG() ) ;
1217 const double h_hawR (
hawRhsml() ) ;
1218 const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1219 - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1220 const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1221 const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1224 const Trap trapHAWR (
1240 const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) +
M_PI_2 ) ;
1243 const Trap trapFAW (
1262 const double hawBoxClr ( 1*mm ) ;
1268 b_hawR/2 + hawBoxClr,
1271 const std::vector<double>& hawBoxParms ( hawCutBox.
parameters() ) ;
1274 const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1275 const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1276 const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1278 const double zDel (
sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1281 const Tf3D hawCutForm (
1285 Pt3D( vHAW[0].
x() -hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel ) ) ;
1289 hawRSolid1, hawCutBox,
1290 DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1292 hawCutForm.getRotation() ) ) ) ;
1301 hawBoxParms[2] ) ) ;
1303 const std::vector<double>& fawBoxParms ( fawCutBox.
parameters() ) ;
1306 const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1307 const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1308 const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1310 const Tf3D fawCutForm (
1312 vFAW[2] +
Pt3D( 2*hawBoxClr,-5*mm,0),
1313 vFAW[1] +
Pt3D(-2*hawBoxClr,-5*mm,0),
1314 Pt3D( vFAW[1].
x()-2*hawBoxClr, vFAW[1].
y()-trapFAW.
h(), vFAW[1].z() - zDel ) ) ;
1318 fawSolid1, fawCutBox,
1319 DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1321 fawCutForm.getRotation() ) ) ) ;
1325 const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1],
1326 vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1330 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1332 hawRform.getRotation() ) ) ;
1338 -hawRform.getTranslation().y(),
1339 -hawRform.getTranslation().z() ),
1341 CLHEP::HepRotationY(180*deg)*
1342 CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1353 for(
unsigned int iPhi ( 1 ); iPhi <=
nFawPerSupm() ; ++iPhi )
1366 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1368 fawform.getRotation() ) ) ;
1377 const Trap trapGrid (
1378 ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1379 ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1394 const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6],
1395 vHAW[5] -
Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1401 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1403 gridForm.getRotation() ) ) ;
1412 const double AUnd (
underAR() ) ;
1413 const double aUnd (
underAF() ) ;
1415 const double bUnd (
underCF() ) ;
1416 const double HUnd (
underBR() ) ;
1417 const double hUnd (
underBF() ) ;
1418 const double LUnd (
underLZ() ) ;
1433 double theta ( 90*deg ) ;
1434 double zee ( 0*mm ) ;
1435 double side ( 0*mm ) ;
1436 double zeta ( 0*deg ) ;
1438 for(
unsigned int cryType ( 1 ) ; cryType <=
nCryTypes() ; ++cryType )
1442 std::to_string( cryType ) ) ;
1444 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType ;
1451 const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1452 ( hNom - hUnd ) ) ) ;
1454 const Trap trapCry (
1462 aNom - aUnd - ANom + AUnd,
1463 hNom - hUnd - HNom + HUnd
1472 const unsigned int copyCap ( 1 ) ;
1492 const unsigned int copySGL ( 1 ) ;
1503 unsigned int copyCER ( 0 ) ;
1515 const unsigned int copyBSi ( 1 ) ;
1526 const unsigned int copyATJ ( 1 ) ;
1538 const unsigned int copyAGL ( 1 ) ;
1550 const unsigned int copyAND ( 1 ) ;
1562 const unsigned int copyAPD ( 1 ) ;
1566 const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1568 const double sindelta (
sin( delta ) ) ;
1570 const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1572 const double singamma (
sin( gamma ) ) ;
1574 const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1576 const double sinbeta (
sin( beta ) ) ;
1579 const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1581 const Trap trapClr (
1582 ( ANom + sClr + rClr*singamma )/2.,
1583 ( aNom + sClr - fClr*singamma )/2.,
1584 ( bNom + sClr - fClr*sinbeta )/2.,
1585 ( HNom + sClr + rClr*sindelta )/2.,
1586 ( hNom + sClr - fClr*sindelta )/2.,
1587 ( LNom + fClr + rClr )/2.,
1599 const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1600 ( hNom + sClr + 2*sWrap ) ) ) ;
1602 const Trap trapWrap (
1603 ( trapClr.
A() + 2*sWrap + rWrap*singamma )/2,
1604 ( trapClr.
a() + 2*sWrap - fWrap*singamma )/2,
1605 ( trapClr.
b() + 2*sWrap - fWrap*sinbeta )/2,
1606 ( trapClr.
H() + 2*sWrap + rWrap*sindelta )/2,
1607 ( trapClr.
h() + 2*sWrap - fWrap*sindelta )/2,
1608 ( trapClr.
L() + fWrap + rWrap )/2.,
1610 aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1615 const DDSolid wrapSolid (
mytrap( wrapDDName.name(), trapWrap ) ) ;
1620 const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1621 ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1623 const Trap trapWall (
1624 ( trapWrap.A() + 2*sWall + rWall*singamma )/2,
1625 ( trapWrap.a() + 2*sWall - fWall*singamma )/2,
1626 ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2,
1627 ( trapWrap.H() + 2*sWall + rWall*sindelta )/2,
1628 ( trapWrap.h() + 2*sWall - fWall*sindelta )/2,
1629 ( trapWrap.L() + fWall + rWall )/2.,
1631 aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1636 const DDSolid wallSolid (
mytrap( wallDDName.name(), trapWall ) ) ;
1683 const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1743 for(
unsigned int ijkl ( 0 ) ; ijkl != 2 ; ++ijkl )
1759 - trapCry.
dz() -
capThick()/2. + (rClr - fClr)/2. ),
1764 const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1774 const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1775 const Vec3 wrapToWall (
Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1786 const double sidePrime ( ( trapWall.a() - trapCry.
a() )/2 ) ;
1787 const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1807 for(
unsigned int etaAlv ( 1 ) ; etaAlv <=
nCryPerAlvEta() ; ++etaAlv )
1809 LogDebug(
"EcalGeom") <<
"theta=" << theta/deg
1810 <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
1811 <<
", zeta="<<zeta<<
", delta="<<delta<<
", zee=" << zee;
1814 ( side*
cos(zeta) + trapWall.h() - sidePrime )/
sin(theta) ;
1816 LogDebug(
"EcalGeom") <<
"New zee="<< zee ;
1820 const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1822 const Pt3D trap3 ( trap2 +
Pt3D( 0,
1825 const Pt3D trap1 ( trap3 +
Pt3D( -trapCry.
a(),
1829 const Pt3D wedge3 ( vHAW[4] +
Pt3D( sidePrime,
1832 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
1833 trapCry.
h()*
cos(theta),
1834 -trapCry.
h()*
sin(theta) ) ) ;
1835 const Pt3D wedge1 ( wedge3 +
Pt3D( trapCry.
a(),
1839 const Tf3D tForm1 ( trap1, trap2, trap3,
1840 wedge1, wedge2, wedge3 ) ;
1842 const double xx ( 0.050*mm ) ;
1844 const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1849 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1850 myrot( wallLog.
name().
name() +
"_" + std::to_string( etaAlv ),
1851 tForm.getRotation() ) ) ;
1862 const unsigned int webIndex ( cryType/4 ) ;
1913 const std::vector<double>& backPlateParms ( backPlateSolid.
parameters() ) ;
1946 outtra + backPlateTra,
1948 CLHEP::HepRotationZ(270*deg) ) ) ;
1989 outtra + backSideTra1,
1991 CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
1999 outtra + backSideTra2,
2001 CLHEP::HepRotationZ(90*deg) ) ) ;
2018 const double manifCut ( 2*mm ) ;
2021 backCoolWidth/2. - manifCut,
2024 0*deg, 360*deg ) ) ;
2029 backCoolWidth/2.-manifCut,
2032 0*deg, 360*deg ) ) ;
2055 const double deltaY ( -5*mm ) ;
2063 unsigned int edgeSlotCopy ( 0 ) ;
2064 unsigned int midSlotCopy ( 0 ) ;
2068 for(
unsigned int iGr ( 0 ) ; iGr !=
vecGrilleHeight().size() ; ++iGr )
2084 const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
2089 if( 0 == (iGr-1)%2 )
2099 cpv.
position( grMidSlotLog[(iGr-1)/2],
2105 cpv.
position( grMidSlotLog[(iGr-1)/2],
2136 if( ( 0 != iGr%2 ) &&
2146 CLHEP::HepRotationX(90*deg) ) ) ;
2154 CLHEP::HepRotationX(90*deg) ) ) ;
2177 backCoolBarSolid ) ;
2185 backCoolBarSSSolid ) ;
2199 backCoolBarWaSolid ) ;
2220 double thickVFE ( 0 ) ;
2246 backVFELyrTra + offTra,
2248 offTra += 2*backVFELyrTra ;
2271 backCoolVFESolid ) ;
2289 CLHEP::HepRotationX( 180*deg ) ) ) ;
2303 unsigned int iCVFECopy ( 1 ) ;
2304 unsigned int iSep ( 0 ) ;
2305 unsigned int iNSec ( 0 ) ;
2307 for(
unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2313 const double pipeZPos (
vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2320 for(
unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2325 for(
unsigned int iMB ( 0 ) ; iMB !=
vecMBLyrThick().size() ; ++iMB )
2353 outtra + backPlateTra + bCoolTra,
2359 const double halfZTank ( halfZBCool - 5*cm ) ;
2363 backCoolTankHeight/2.,
2368 backCoolTankSolid ) ;
2374 backCoolTankHeight/2. +
2381 backCoolTankHeight/2. -
2388 backCoolTankWaSolid ) ;
2402 backBracketSolid ) ;
2425 bottomThick, 0, 0 ) ;
2426 for(
unsigned int j ( 0 ) ; j != nMisc ; ++j )
2455 for(
unsigned int j ( 0 ) ; j !=
vecMBLyrThick().size() ; ++j )
2458 std::to_string(iMod+1) ) ) ;
2480 std::to_string(iMod+1) ) ) ;
2486 0*deg, 360*deg ) ) ;
2490 std::to_string(iMod+1) ) ) ;
2495 0*deg, 360*deg ) ) ;
2497 mBCoolTubeWaSolid ) ;
2510 -bHalfWidth + (j+1)*bHalfWidth/5, 0),
2525 std::to_string( iMod+1 ) ) ) ;
2527 "_H2O_" + std::to_string( iMod+1 ) ) ) ;
2533 0*deg, 360*deg ) ) ;
2540 0*deg, 360*deg ) ) ;
2600 0*deg, 360*deg ) ) ;
2627 dryAirTubeTra1.z() ) ;
2646 -halfZTank + halfZCoolVFE ) ;
2647 const unsigned int numSec ( static_cast<unsigned int> (
vecBackCoolNSec()[iMod]) ) ;
2648 for(
unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2650 const unsigned int nMax ( static_cast<unsigned int> (
vecBackCoolNPerSec()[iNSec++]) ) ;
2651 for(
unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2683 double patchHeight ( 0 ) ;
2696 const std::vector<double>& patchParms ( patchSolid.
parameters() ) ;
2762 const std::vector<double>& envParms ( envSolid.
parameters() ) ;
2769 const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2781 const std::vector<double>& cutParms ( cutSolid.
parameters() ) ;
2786 -blkParms[1] + cutParms[1], 0 ),
2794 const std::vector<double>& shim2Parms ( shim2Solid.
parameters() ) ;
2799 -cutParms[1] + shim2Parms[1], 0 ),
2809 const std::vector<double>& shim1Parms ( shim1Solid.
parameters() ) ;
2814 -envParms[1] + shim1Parms[1],
2815 -envParms[2] + shim1Parms[2] ),
2818 for(
unsigned int iEnv ( 0 ) ; iEnv !=
vecPincerEnvZOff().size() ; ++iEnv )
2857 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it..." ;
2863 const CLHEP::HepRotation&
r )
const 2878 const pair<std::string,std::string>
temp (
DDSplit(s) ) ;
2879 if ( temp.second ==
"" ) {
2880 return DDName( temp.first,
2883 return DDName( temp.first, temp.second );
2911 const HepGeom::Point3D<double> &
corner,
2919 const unsigned int copyOne (1) ;
2923 const double BWebx ( bWeb + ( BWeb - bWeb )*LWebx/LWeb ) ;
2926 const Trap trapWebClr (
2941 const Trap trapWebPl (
2949 trapWebClr.
b() - trapWebClr.
B() ,
2953 const DDSolid webPlSolid (
mytrap( webPlDDName.fullname(), trapWebPl ) ) ;
2964 zee += trapWebClr.
h()/
sin(theta) ;
2966 const double beta ( theta + delta ) ;
2968 const double zWeb ( zee - front*
cos(beta) + side*
sin(beta) ) ;
2969 const double yWeb ( front*
sin(beta) + side*
cos(beta) ) ;
2971 const Pt3D wedge3 ( corner +
Pt3D( 0, -yWeb, zWeb ) ) ;
2972 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
2973 trapWebClr.
h()*
cos(theta),
2974 -trapWebClr.
h()*
sin(theta) ) ) ;
2975 const Pt3D wedge1 ( wedge3 +
Pt3D( trapWebClr.
a(), 0, 0 ) ) ;
2977 LogDebug(
"EcalGeom")<<
"trap1="<<vWeb[0]<<
", trap2="<<vWeb[2]<<
", trap3="<<vWeb[3] ;
2979 LogDebug(
"EcalGeom")<<
"wedge1="<<wedge1<<
", wedge2="<<wedge2<<
", wedge3="<<wedge3 ;
2981 const Tf3D tForm ( vWeb[0], vWeb[2], vWeb[3],
2982 wedge1, wedge2, wedge3 ) ;
2988 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2990 tForm.getRotation() ) ) ;
DDMaterial grEdgeSlotMat() const
double spmExpYOff() const
const std::vector< double > & vecBackCoolNPerSec() const
std::string m_BackCoolBarMat
double backCoolBarThick() const
std::vector< double > m_vecPincerEnvZOff
std::vector< double > m_vecIlyFEMZ
std::vector< double > m_vecNomCryDimCF
DDMaterial backCoolBarMat() const
HepGeom::Transform3D Tf3D
double spmSideYOffM() const
double ilyFanOutHeight() const
double m_GrEdgeSlotHeight
double spmSideHigh() const
std::vector< std::string > m_vecBackVFELyrMat
const std::string & backCoolTankName() const
DDName ilyDiffName() const
std::vector< std::string > m_vecBackCoolName
std::vector< std::string > m_vecIlyMat
const std::vector< double > & parameters(void) const
Give the parameters of the solid.
double patchPanelHere() const
HepGeom::Point3D< double > Pt3D
DDMaterial ilyBndlMat() const
const std::string & webPlName() const
std::string m_BackPlate2Mat
std::vector< double > m_vecSpmZPts
double ilyPTMHeight() const
DDName backCoolBarWaName() const
double mBManifHere() const
DDMaterial wrapMat() const
DDMaterial backCoolBarSSMat() const
DDMaterial webClrMat() const
DDMaterial ilyPTMMat() const
DDMaterial mBManifMat() const
std::vector< double > vecPincerRodAzimuth() const
const std::vector< double > & vecGrilleHeight() const
double pincerCutHeight() const
std::string m_PincerEnvMat
const std::vector< double > & vecSpmCutTP() const
DDMaterial capMat() const
std::string m_PincerShim2Name
double backPlateHere() const
double backSideYOff1() const
std::string m_BackBracketMat
const std::vector< double > & vecIlyPipeZ() const
DDMaterial backCoolBarWaMat() const
std::vector< double > m_vecSpmBTran
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
const std::string & backPipeName() const
std::string m_PincerCutName
double pincerEnvLength() const
DDMaterial pincerRodMat() const
const std::vector< std::string > & vecBackVFELyrMat() const
std::string m_BackPlate2Name
const std::vector< double > & vecGapAlvEta() const
const std::vector< double > & vecSpmCutTM() const
const std::vector< double > & vecBackCoolNSec() const
double backCoolBarHere() const
DDName pincerRodName() const
const std::vector< std::string > & vecPatchPanelMat() const
double spmSideYOffP() const
double backCoolBarSSThick() const
const std::vector< double > & vecNomCryDimAR() const
DDMaterial is used to define and access material information.
double backCoolHere() const
unsigned int nFawPerSupm() const
std::vector< double > m_vecBarTran
const std::vector< double > & vecBackPipeThick() const
double dryAirTubeHere() const
double mBCoolTubeInnDiam() const
std::string m_BackCoolTankMat
VertexList vertexList() const
double grEdgeSlotHeight() const
std::vector< double > m_vecBackMiscThick
std::string m_BackCoolTankName
std::vector< double > m_vecNomCryDimAR
const std::string & backBracketName() 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)
double m_PincerShim2Width
Sin< T >::type sin(const T &t)
double mBManifInnDiam() const
std::string m_GrMidSlotMat
DDMaterial apdMat() const
DDMaterial wallMat() const
unsigned int m_MBCoolTubeNum
const std::vector< double > & vecIlyFanOutZ() const
std::vector< double > m_vecIlyFanOutZ
Geom::Theta< T > theta() const
const std::vector< std::string > & vecMBLyrMat() const
std::string m_BackCoolTankWaName
double backPlateLength() const
double backSideLength() const
const std::string & ilyPipeName() const
DDName is used to identify DDD entities uniquely.
const std::vector< double > & vecMBLyrThick() const
std::vector< double > m_vecIlyFanOutPhi
DDName pincerBlkName() const
DDSolid mytrap(const std::string &s, const Trap &t) const
const std::vector< std::string > & vecBackCoolName() const
const std::string & dryAirTubeName() const
DDName ilyBndlName() const
const std::vector< double > & vecBarRMin() const
DDMaterial bsiMat() const
std::vector< std::string > m_vecBackMiscName
double ilyFanOutWidth() const
double backCoolVFEHere() const
static std::string & ns()
std::vector< double > m_vecBackCoolSecSep
std::vector< double > vecPincerEnvZOff() const
double grEdgeSlotHere() const
std::vector< double > m_vecBarRota2
double hawYOffCry() const
DDName backPlate2Name() const
double pincerCutWidth() const
double backPlateThick() const
const std::string & grMidSlotName() const
std::string m_IlyPipeName
double m_BackCoolBarHeight
DDMaterial backBracketMat() const
std::vector< double > m_vecNomCryDimBF
std::vector< double > m_vecWebClrTh
std::string m_BackCoolBarSSName
const std::vector< double > & vecNomCryDimCR() const
Compact representation of the geometrical detector hierarchy.
double m_BackCoolBarSSThick
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...
DDMaterial atjMat() const
DDMaterial backVFEMat() const
double backCoolBarWidth() const
DDName grEdgeSlotName() const
std::vector< double > m_vecBarRMin
unsigned int m_NCryPerAlvEta
DDMaterial backSideMat() const
std::vector< double > m_vecIlyPipePhi
DDName patchPanelName() const
std::string m_BackPlateName
double pincerShim1Width() const
double backPlate2Thick() const
std::vector< std::string > m_vecPatchPanelMat
A DDSolid represents the shape of a part.
std::string m_BackCoolMat
std::string m_PincerRodName
const std::vector< double > & vecSpmHere() const
std::vector< std::string > m_vecPatchPanelNames
const std::vector< double > & vecSpmZPts() const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > DDTranslation
double spmSideThick() const
Represents a uniquely identifyable rotation matrix.
DDName backSideName() const
double m_MBCoolTubeInnDiam
const std::vector< double > & vecBackMiscThick() const
double ilyDiffOff() const
std::string m_BackPipeName
std::vector< std::string > m_vecMBLyrName
std::vector< double > m_vecSpmBRota
DDName backCoolBarName() const
double ilyFEMHeight() const
std::string m_BackSideMat
double m_PincerShimHeight
std::vector< double > m_vecSpmRMax
double spmCutThick() const
const std::vector< double > & vecSpmTran() const
const std::vector< double > & vecBackCoolSecSep() const
const std::vector< double > & vecPatchPanelThick() const
const std::string & backCoolTankWaName() const
std::vector< double > m_vecPincerRodAzimuth
double ilyFEMWidth() const
const std::vector< double > & vecBackPipeDiam() const
std::string m_BackCoolTankWaMat
double m_BackCoolTankWidth
DDName spmCutName() const
std::vector< double > m_vecWebLength
std::string m_PincerShim1Name
std::string m_BackCoolBarWaMat
std::string m_BackCoolBarWaName
double mBCoolTubeOutDiam() const
DDMaterial spmSideMat() const
double mBManifOutDiam() const
std::vector< double > m_vecBarRota
const std::string & clrName() const
double backCoolTankWaWidth() const
double backCoolTankHere() const
std::vector< std::string > m_vecBackVFELyrName
DDMaterial sglMat() const
DDName spmSideName() const
std::string m_BackCoolBarName
double backCoolTankWidth() const
std::string m_BackPipeWaterMat
DDMaterial backPipeMat() const
double nomCryDimLZ() const
DDMaterial clrMat() const
DDMaterial ilyFanOutMat() const
double dryAirTubeInnDiam() const
DDMaterial grMidSlotMat() const
DDMaterial aglMat() const
std::string m_PincerBlkName
double ilyBndlOff() const
const std::vector< std::string > & vecIlyMat() const
const std::vector< std::string > & vecPatchPanelNames() const
DDName pincerEnvName() const
double m_BackCoolTankWaWidth
double ilyFEMLength() const
const std::vector< double > & vecGrMidSlotHeight() const
std::string m_PincerBlkMat
std::vector< double > m_vecNomCryDimCR
unsigned int m_NFawPerSupm
Cos< T >::type cos(const T &t)
std::string m_BackCoolVFEName
const std::vector< double > & vecWebLength() const
double backSideWidth() const
std::vector< double > m_vecNomCryDimBR
double ilyPipeHere() const
DDMaterial backPipeWaterMat() const
std::string m_DryAirTubeName
const std::vector< double > & vecIlyPipeType() const
double grilleThick() const
std::vector< std::string > m_vecBackMiscMat
A DDLogicalPart aggregates information concerning material, solid and sensitveness ...
const std::vector< double > & vecIlyFEMZ() const
double grMidSlotXOff() const
std::vector< double > m_vecBackCoolNSec
const std::vector< double > & vecBackVFELyrThick() const
DDMaterial backCoolVFEMat() const
double m_DryAirTubeInnDiam
const std::vector< double > & vecSpmRMax() const
double backPipeHere() const
const std::vector< double > & vecSpmBRota() const
double pincerRodHere() const
std::vector< double > m_vecIlyPipeType
const std::vector< std::string > & vecBackMiscName() const
static DDSolid tubs(const DDName &name, double zhalf, double rIn, double rOut, double startPhi, double deltaPhi)
const std::vector< double > & vecIlyFanOutPhi() const
DDMaterial mBCoolTubeMat() const
const std::string & mBCoolTubeName() const
const std::vector< std::string > & vecBackVFELyrName() const
DDMaterial backCoolTankWaMat() const
unsigned int nCryPerAlvEta() const
const std::vector< double > & vecIlyThick() const
DDName ilyFanOutName() const
double backCoolBarHeight() const
std::string m_BackSideName
const std::vector< double > & vecSpmRMin() 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)
DDName pincerShim1Name() const
double m_BackBracketHeight
void execute(DDCompactView &cpv) override
std::vector< double > m_vecPatchPanelThick
std::string m_PatchPanelName
std::string m_BackPipeMat
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::vector< double > m_vecSpmCutTM
DDMaterial pincerEnvMat() const
DDName ilyFEMName() const
const std::vector< std::string > & vecBackMiscMat() const
std::vector< double > m_vecBarRMax
DDMaterial pincerCutMat() const
const std::string & webClrName() const
DDMaterial backPlateMat() const
double ilyBndlLength() const
std::string m_MBManifName
DDName backVFEName() const
double m_BackCoolTankHere
const std::vector< double > & vecNomCryDimBF() const
std::string m_BackCoolVFEMat
std::string m_GrEdgeSlotName
unsigned int nCryTypes() const
std::vector< std::string > m_vecMBLyrMat
std::vector< double > m_vecBarRota3
double ilyPTMLength() const
std::string m_BackPlateMat
unsigned int spmNPerHalf() const
DDMaterial webPlMat() const
std::vector< double > m_vecIlyPTMPhi
std::vector< double > m_vecWebPlTh
double grilleHere() const
double m_PincerShim1Width
double backCoolBarWaThick() const
double pincerEnvHeight() const
const std::vector< double > & vecSpmBTran() const
const std::vector< double > & vecIlyPTMPhi() const
const std::string & ilyName() const
const std::vector< double > & vecIlyPTMZ() const
double grMidSlotHere() const
DDMaterial barMat() const
std::string m_idNameSpace
std::string m_PincerRodMat
DDName pincerShim2Name() const
std::vector< double > m_vecBackVFELyrThick
HepGeom::Translate3D Tl3D
const std::vector< double > & vecNomCryDimCF() const
DDMaterial pincerShimMat() const
double ilyPTMWidth() const
double ilyFanOutLength() const
double grilleZSpace() const
double backSideHeight() const
DDMaterial grilleMat() const
DDName backCoolVFEName() const
double backSideAngle() const
std::vector< double > m_vecGrMidSlotHeight
double pincerEnvWidth() const
std::vector< double > m_vecBackPipeDiam
DDMaterial ilyFEMMat() const
std::vector< double > m_vecSpmTran
static DDSolid subtraction(const DDName &name, const DDSolid &a, const DDSolid &b, const DDTranslation &t, const DDRotation &r)
double m_BackCoolBarWidth
DDMaterial spmMat() const
double m_BackCoolTankThick
double m_MBCoolTubeOutDiam
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::vector< double > m_vecGrilleHeight
double ilyPTMHere() const
DDMaterial ilyPipeMat() const
double backSideYOff2() const
DDMaterial cerMat() const
std::vector< double > m_vecGapAlvEta
DDMaterial andMat() const
DDName backPlateName() const
DDMaterial cryMat() const
~DDEcalBarrelNewAlgo() override
void position(const DDLogicalPart &self, const DDLogicalPart &parent, const std::string ©no, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=0)
double dryAirTubeOutDiam() const
DDMaterial gridMat() const
const std::vector< double > & vecBarRMax() const
const std::vector< double > & vecSpmRota() const
DDMaterial backPlate2Mat() const
DDMaterial dryAirTubeMat() const
const std::vector< double > & vecBarRota2() const
std::vector< double > m_vecMBLyrThick
const std::vector< double > & vecIlyFEMPhi() const
std::vector< double > m_vecIlyPipeZ
double grEdgeSlotWidth() const
std::vector< double > m_vecIlyThick
double pincerShimHeight() const
std::vector< double > m_vecGrilleZOff
DDName pincerCutName() const
double mBCoolTubeNum() const
std::string m_SpmSideName
const std::string & grilleName() const
std::string m_GrMidSlotName
DDMaterial pincerBlkMat() const
std::string m_IlyDiffName
unsigned int m_SpmNPerHalf
std::vector< double > m_vecIlyPTMZ
double grMidSlotWidth() const
double spmExpThick() const
double spmExpWide() const
double backMiscHere() const
double backCoolTankThick() const
DDMaterial backCoolTankMat() const
std::vector< double > m_vecBarZPts
double mBCoolTubeHere() const
double m_DryAirTubeOutDiam
std::string m_PincerEnvName
const std::vector< double > & vecNomCryDimBR() const
double ilyFanOutHere() const
std::string m_MBCoolTubeMat
const std::vector< double > & vecWebPlTh() const
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'
const std::vector< double > & vecIlyPipePhi() const
double m_BackCoolBarThick
std::vector< double > m_vecSpmRota
double hawRCutDelY() const
double backSideHere() const
double backCBStdSep() const
double ilyDiffLength() const
DDMaterial ddmat(const std::string &s) const
const std::vector< double > & vecWebClrTh() const
const std::vector< std::string > & vecMBLyrName() const
DDName ddname(const std::string &s) const
const std::vector< double > & vecBarRota() const
DDName backCoolBarSSName() const
std::string m_IlyFanOutMat
std::string m_IlyBndlName
const std::vector< double > & vecBarZPts() const
std::string m_PincerCutMat
std::vector< double > m_vecSpmCutTP
double pincerBlkLength() const
double backPlateWidth() const
std::string m_BackBracketName
const std::vector< double > & vecBarRota3() const
std::string m_BackVFEName
std::string m_PincerShimMat
const std::vector< double > & vecBarTran() const
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
std::string m_GrEdgeSlotMat
double pincerShim2Width() const
std::vector< double > m_vecIlyPipeLength
double backBracketHeight() const
std::string m_IlyFanOutName
CaloCellGeometry::Pt3DVec VertexList
const std::string & name() const
Returns the name.
std::vector< double > m_vecSpmRMin
std::vector< double > m_vecBackPipeThick
std::string m_BackCoolBarSSMat
const std::string & cryName() const
std::string m_DryAirTubeMat
const std::vector< double > & vecGrilleZOff() const
double m_BackCoolBarWaThick
std::string m_MBCoolTubeName
std::vector< double > m_vecIlyFEMPhi
DDName ilyPTMName() const
const std::string & wallName() const
std::vector< double > m_vecSpmHere
double nomCryDimAF() const
std::vector< double > m_vecBackCoolNPerSec
const std::string & wrapName() const
DDMaterial ilyDiffMat() const
const std::vector< double > & vecIlyPipeLength() const
DDName mBManifName() const