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() -
764 const std::vector<double>& sideParms ( sideSolid.
parameters() ) ;
769 for(
unsigned int icopy(1); icopy <= 2; ++icopy )
774 const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
775 const RoZ3D ro ( rang ) ;
784 std::to_string(icopy),
785 alltrot.getRotation() ) ) ;
789 const Tl3D trSide ( tvec[0],
790 tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
793 const RoZ3D roSide ( rang ) ;
802 std::to_string(icopy),
803 sideRot.getRotation() ) ) ;
826 spmcut1ddname, spmCutBox,
841 const double dphi ( 360.*deg/(1.*
spmNPerHalf() ) ) ;
842 for(
unsigned int iphi (0); iphi<2*
spmNPerHalf() ; ++iphi )
863 const unsigned int offr ( 4*iphi ) ;
864 const unsigned int offt ( 3*iphi ) ;
875 const Tf3D both ( rotaExtra*rotaBase ) ;
878 both.getRotation() ) );
883 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
896 double ilyThick ( 0 ) ;
897 for(
unsigned int ilyx ( 0 ) ; ilyx !=
vecIlyThick().size() ; ++ilyx )
919 for(
unsigned int iPipeType ( 0 ) ; iPipeType !=
vecIlyPipeLength().size(); ++iPipeType )
922 std::to_string(iPipeType+1) ) ) ;
932 std::to_string(iPipeType+1) ) ) ;
998 for(
unsigned int ily ( 0 ) ; ily !=
vecIlyThick().size() ; ++ily )
1000 const double ilyRMax ( ilyRMin +
vecIlyThick()[ily] ) ;
1019 unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1027 unsigned int ptmCopy ( 0 ) ;
1028 for(
unsigned int ilyPTM ( 0 ) ; ilyPTM !=
vecIlyPTMZ().size() ; ++ilyPTM )
1032 const double yy ( radius*
sin(phi) ) ;
1033 const double xx ( radius*
cos(phi) ) ;
1040 std::to_string( ptmCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1045 unsigned int fanOutCopy ( 0 ) ;
1046 for(
unsigned int ilyFO ( 0 ) ; ilyFO !=
vecIlyFanOutZ().size() ; ++ilyFO )
1050 const double yy ( radius*
sin(phi) ) ;
1051 const double xx ( radius*
cos(phi) ) ;
1058 std::to_string( fanOutCopy ) ,
1059 CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1061 unsigned int femCopy ( 0 ) ;
1062 for(
unsigned int ilyFEM ( 0 ) ; ilyFEM !=
vecIlyFEMZ().size() ; ++ilyFEM )
1066 const double yy ( radius*
sin(phi) ) ;
1067 const double xx ( radius*
cos(phi) ) ;
1074 std::to_string( femCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1077 for(
unsigned int iPipe ( 0 ) ; iPipe !=
vecIlyPipePhi().size(); ++iPipe )
1079 const unsigned int type ( static_cast<unsigned int> ( round(
vecIlyPipeType()[iPipe] ) ) ) ;
1084 for(
unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1089 const double yy ( radius*
sin(phi) ) ;
1090 const double xx ( radius*
cos(phi) ) ;
1098 std::to_string( copyNum[type] ) ,
Rota(
Vec3(xx,yy,0), 90*deg) ) ) ) ;
1108 std::vector<double> cri;
1109 std::vector<double> cro;
1110 std::vector<double> czz;
1113 cro.emplace_back(
vecSpmRMin()[0] + 25*mm ) ;
1116 cro.emplace_back(
vecSpmRMin()[2] + 10*mm ) ;
1138 const double sClr1 (
clrThAlv() ) ;
1139 const double fClr1 (
clrFrAlv() ) ;
1142 const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1144 const double sinbeta1 (
sin( beta1 ) ) ;
1146 const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1148 const double H_hawR (
hawRHBIG() ) ;
1149 const double h_hawR (
hawRhsml() ) ;
1150 const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1151 - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1152 const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1153 const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1156 const Trap trapHAWR (
1172 const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) +
M_PI_2 ) ;
1175 const Trap trapFAW (
1194 const double hawBoxClr ( 1*mm ) ;
1200 b_hawR/2 + hawBoxClr,
1203 const std::vector<double>& hawBoxParms ( hawCutBox.
parameters() ) ;
1206 const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1207 const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1208 const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1210 const double zDel (
sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1213 const Tf3D hawCutForm (
1217 Pt3D( vHAW[0].
x() -hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel ) ) ;
1221 hawRSolid1, hawCutBox,
1222 DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1224 hawCutForm.getRotation() ) ) ) ;
1233 hawBoxParms[2] ) ) ;
1235 const std::vector<double>& fawBoxParms ( fawCutBox.
parameters() ) ;
1238 const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1239 const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1240 const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1242 const Tf3D fawCutForm (
1244 vFAW[2] +
Pt3D( 2*hawBoxClr,-5*mm,0),
1245 vFAW[1] +
Pt3D(-2*hawBoxClr,-5*mm,0),
1246 Pt3D( vFAW[1].
x()-2*hawBoxClr, vFAW[1].
y()-trapFAW.
h(), vFAW[1].z() - zDel ) ) ;
1250 fawSolid1, fawCutBox,
1251 DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1253 fawCutForm.getRotation() ) ) ) ;
1257 const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1],
1258 vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1262 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1264 hawRform.getRotation() ) ) ;
1270 -hawRform.getTranslation().y(),
1271 -hawRform.getTranslation().z() ),
1273 CLHEP::HepRotationY(180*deg)*
1274 CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1285 for(
unsigned int iPhi ( 1 ); iPhi <=
nFawPerSupm() ; ++iPhi )
1298 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1300 fawform.getRotation() ) ) ;
1309 const Trap trapGrid (
1310 ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1311 ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1326 const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6],
1327 vHAW[5] -
Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1333 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1335 gridForm.getRotation() ) ) ;
1344 const double AUnd (
underAR() ) ;
1345 const double aUnd (
underAF() ) ;
1347 const double bUnd (
underCF() ) ;
1348 const double HUnd (
underBR() ) ;
1349 const double hUnd (
underBF() ) ;
1350 const double LUnd (
underLZ() ) ;
1365 double theta ( 90*deg ) ;
1366 double zee ( 0*mm ) ;
1367 double side ( 0*mm ) ;
1368 double zeta ( 0*deg ) ;
1370 for(
unsigned int cryType ( 1 ) ; cryType <=
nCryTypes() ; ++cryType )
1374 std::to_string( cryType ) ) ;
1376 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType ;
1383 const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1384 ( hNom - hUnd ) ) ) ;
1386 const Trap trapCry (
1394 aNom - aUnd - ANom + AUnd,
1395 hNom - hUnd - HNom + HUnd
1407 const Trap trapAPD (
1426 unsigned int copyAPD ( 0 ) ;
1430 const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1432 const double sindelta (
sin( delta ) ) ;
1434 const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1436 const double singamma (
sin( gamma ) ) ;
1438 const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1440 const double sinbeta (
sin( beta ) ) ;
1443 const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1445 const Trap trapClr (
1446 ( ANom + sClr + rClr*singamma )/2.,
1447 ( aNom + sClr - fClr*singamma )/2.,
1448 ( bNom + sClr - fClr*sinbeta )/2.,
1449 ( HNom + sClr + rClr*sindelta )/2.,
1450 ( hNom + sClr - fClr*sindelta )/2.,
1451 ( LNom + fClr + rClr )/2.,
1463 const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1464 ( hNom + sClr + 2*sWrap ) ) ) ;
1466 const Trap trapWrap (
1467 ( trapClr.
A() + 2*sWrap + rWrap*singamma )/2,
1468 ( trapClr.
a() + 2*sWrap - fWrap*singamma )/2,
1469 ( trapClr.
b() + 2*sWrap - fWrap*sinbeta )/2,
1470 ( trapClr.
H() + 2*sWrap + rWrap*sindelta )/2,
1471 ( trapClr.
h() + 2*sWrap - fWrap*sindelta )/2,
1472 ( trapClr.
L() + fWrap + rWrap )/2.,
1474 aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1479 const DDSolid wrapSolid (
mytrap( wrapDDName.name(), trapWrap ) ) ;
1484 const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1485 ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1487 const Trap trapWall (
1488 ( trapWrap.A() + 2*sWall + rWall*singamma )/2,
1489 ( trapWrap.a() + 2*sWall - fWall*singamma )/2,
1490 ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2,
1491 ( trapWrap.H() + 2*sWall + rWall*sindelta )/2,
1492 ( trapWrap.h() + 2*sWall - fWall*sindelta )/2,
1493 ( trapWrap.L() + fWall + rWall )/2.,
1495 aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1500 const DDSolid wallSolid (
mytrap( wallDDName.name(), trapWall ) ) ;
1547 const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1562 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2. ),
1569 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2.),
1573 const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1583 const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1584 const Vec3 wrapToWall (
Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1595 const double sidePrime ( ( trapWall.a() - trapCry.
a() )/2 ) ;
1596 const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1616 for(
unsigned int etaAlv ( 1 ) ; etaAlv <=
nCryPerAlvEta() ; ++etaAlv )
1618 LogDebug(
"EcalGeom") <<
"theta=" << theta/deg
1619 <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
1620 <<
", zeta="<<zeta<<
", delta="<<delta<<
", zee=" << zee;
1623 ( side*
cos(zeta) + trapWall.h() - sidePrime )/
sin(theta) ;
1625 LogDebug(
"EcalGeom") <<
"New zee="<< zee ;
1629 const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1631 const Pt3D trap3 ( trap2 +
Pt3D( 0,
1634 const Pt3D trap1 ( trap3 +
Pt3D( -trapCry.
a(),
1638 const Pt3D wedge3 ( vHAW[4] +
Pt3D( sidePrime,
1641 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
1642 trapCry.
h()*
cos(theta),
1643 -trapCry.
h()*
sin(theta) ) ) ;
1644 const Pt3D wedge1 ( wedge3 +
Pt3D( trapCry.
a(),
1648 const Tf3D tForm1 ( trap1, trap2, trap3,
1649 wedge1, wedge2, wedge3 ) ;
1651 const double xx ( 0.050*mm ) ;
1653 const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1658 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1659 myrot( wallLog.
name().
name() +
"_" + std::to_string( etaAlv ),
1660 tForm.getRotation() ) ) ;
1671 const unsigned int webIndex ( cryType/4 ) ;
1722 const std::vector<double>& backPlateParms ( backPlateSolid.
parameters() ) ;
1755 outtra + backPlateTra,
1757 CLHEP::HepRotationZ(270*deg) ) ) ;
1798 outtra + backSideTra1,
1800 CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
1808 outtra + backSideTra2,
1810 CLHEP::HepRotationZ(90*deg) ) ) ;
1827 const double manifCut ( 2*mm ) ;
1830 backCoolWidth/2. - manifCut,
1833 0*deg, 360*deg ) ) ;
1838 backCoolWidth/2.-manifCut,
1841 0*deg, 360*deg ) ) ;
1864 const double deltaY ( -5*mm ) ;
1872 unsigned int edgeSlotCopy ( 0 ) ;
1873 unsigned int midSlotCopy ( 0 ) ;
1877 for(
unsigned int iGr ( 0 ) ; iGr !=
vecGrilleHeight().size() ; ++iGr )
1893 const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
1898 if( 0 == (iGr-1)%2 )
1908 cpv.
position( grMidSlotLog[(iGr-1)/2],
1914 cpv.
position( grMidSlotLog[(iGr-1)/2],
1945 if( ( 0 != iGr%2 ) &&
1955 CLHEP::HepRotationX(90*deg) ) ) ;
1963 CLHEP::HepRotationX(90*deg) ) ) ;
1986 backCoolBarSolid ) ;
1994 backCoolBarSSSolid ) ;
2008 backCoolBarWaSolid ) ;
2029 double thickVFE ( 0 ) ;
2055 backVFELyrTra + offTra,
2057 offTra += 2*backVFELyrTra ;
2080 backCoolVFESolid ) ;
2098 CLHEP::HepRotationX( 180*deg ) ) ) ;
2112 unsigned int iCVFECopy ( 1 ) ;
2113 unsigned int iSep ( 0 ) ;
2114 unsigned int iNSec ( 0 ) ;
2116 for(
unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2122 const double pipeZPos (
vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2129 for(
unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2134 for(
unsigned int iMB ( 0 ) ; iMB !=
vecMBLyrThick().size() ; ++iMB )
2162 outtra + backPlateTra + bCoolTra,
2168 const double halfZTank ( halfZBCool - 5*cm ) ;
2172 backCoolTankHeight/2.,
2177 backCoolTankSolid ) ;
2183 backCoolTankHeight/2. +
2190 backCoolTankHeight/2. -
2197 backCoolTankWaSolid ) ;
2211 backBracketSolid ) ;
2234 bottomThick, 0, 0 ) ;
2235 for(
unsigned int j ( 0 ) ; j != nMisc ; ++j )
2264 for(
unsigned int j ( 0 ) ; j !=
vecMBLyrThick().size() ; ++j )
2267 std::to_string(iMod+1) ) ) ;
2289 std::to_string(iMod+1) ) ) ;
2295 0*deg, 360*deg ) ) ;
2299 std::to_string(iMod+1) ) ) ;
2304 0*deg, 360*deg ) ) ;
2306 mBCoolTubeWaSolid ) ;
2319 -bHalfWidth + (j+1)*bHalfWidth/5, 0),
2334 std::to_string( iMod+1 ) ) ) ;
2336 "_H2O_" + std::to_string( iMod+1 ) ) ) ;
2342 0*deg, 360*deg ) ) ;
2349 0*deg, 360*deg ) ) ;
2409 0*deg, 360*deg ) ) ;
2436 dryAirTubeTra1.z() ) ;
2455 -halfZTank + halfZCoolVFE ) ;
2456 const unsigned int numSec ( static_cast<unsigned int> (
vecBackCoolNSec()[iMod]) ) ;
2457 for(
unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2459 const unsigned int nMax ( static_cast<unsigned int> (
vecBackCoolNPerSec()[iNSec++]) ) ;
2460 for(
unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2492 double patchHeight ( 0 ) ;
2505 const std::vector<double>& patchParms ( patchSolid.
parameters() ) ;
2571 const std::vector<double>& envParms ( envSolid.
parameters() ) ;
2578 const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2590 const std::vector<double>& cutParms ( cutSolid.
parameters() ) ;
2595 -blkParms[1] + cutParms[1], 0 ),
2603 const std::vector<double>& shim2Parms ( shim2Solid.
parameters() ) ;
2608 -cutParms[1] + shim2Parms[1], 0 ),
2618 const std::vector<double>& shim1Parms ( shim1Solid.
parameters() ) ;
2623 -envParms[1] + shim1Parms[1],
2624 -envParms[2] + shim1Parms[2] ),
2627 for(
unsigned int iEnv ( 0 ) ; iEnv !=
vecPincerEnvZOff().size() ; ++iEnv )
2666 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it..." ;
2672 const CLHEP::HepRotation&
r )
const 2687 const pair<std::string,std::string>
temp (
DDSplit(s) ) ;
2688 if ( temp.second ==
"" ) {
2689 return DDName( temp.first,
2692 return DDName( temp.first, temp.second );
2720 const HepGeom::Point3D<double> &
corner,
2728 const unsigned int copyOne (1) ;
2732 const double BWebx ( bWeb + ( BWeb - bWeb )*LWebx/LWeb ) ;
2735 const Trap trapWebClr (
2750 const Trap trapWebPl (
2758 trapWebClr.
b() - trapWebClr.
B() ,
2762 const DDSolid webPlSolid (
mytrap( webPlDDName.fullname(), trapWebPl ) ) ;
2773 zee += trapWebClr.
h()/
sin(theta) ;
2775 const double beta ( theta + delta ) ;
2777 const double zWeb ( zee - front*
cos(beta) + side*
sin(beta) ) ;
2778 const double yWeb ( front*
sin(beta) + side*
cos(beta) ) ;
2780 const Pt3D wedge3 ( corner +
Pt3D( 0, -yWeb, zWeb ) ) ;
2781 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
2782 trapWebClr.
h()*
cos(theta),
2783 -trapWebClr.
h()*
sin(theta) ) ) ;
2784 const Pt3D wedge1 ( wedge3 +
Pt3D( trapWebClr.
a(), 0, 0 ) ) ;
2786 LogDebug(
"EcalGeom")<<
"trap1="<<vWeb[0]<<
", trap2="<<vWeb[2]<<
", trap3="<<vWeb[3] ;
2788 LogDebug(
"EcalGeom")<<
"wedge1="<<wedge1<<
", wedge2="<<wedge2<<
", wedge3="<<wedge3 ;
2790 const Tf3D tForm ( vWeb[0], vWeb[2], vWeb[3],
2791 wedge1, wedge2, wedge3 ) ;
2797 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2799 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
type of data representation of DDCompactView
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
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
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