17 #include "CLHEP/Units/GlobalSystemOfUnits.h"
19 #include <CLHEP/Geometry/Point3D.h>
20 #include <CLHEP/Geometry/Vector3D.h>
21 #include <CLHEP/Geometry/Transform3D.h>
23 namespace std{}
using namespace std;
132 m_vecIlyPipeLength (),
144 m_IlyFanOutName (
""),
147 m_IlyFanOutWidth (0),
148 m_IlyFanOutLength(0),
149 m_IlyFanOutHeight(0),
190 m_BackSideLength (0),
191 m_BackSideHeight (0),
197 m_BackPlateName (
""),
199 m_BackPlateLength (0),
200 m_BackPlateThick (0),
201 m_BackPlateWidth (0),
203 m_BackPlate2Name (
""),
204 m_BackPlate2Thick (0),
205 m_BackPlate2Mat (
""),
212 m_vecGrilleHeight (),
214 m_GrEdgeSlotName (
""),
215 m_GrEdgeSlotMat (
""),
216 m_GrEdgeSlotHere (0),
217 m_GrEdgeSlotHeight (0),
218 m_GrEdgeSlotWidth (0),
219 m_GrMidSlotName (
""),
222 m_GrMidSlotWidth (0),
224 m_vecGrMidSlotHeight (),
227 m_vecBackPipeDiam (),
228 m_vecBackPipeThick (),
230 m_BackPipeWaterMat (
""),
232 m_vecBackCoolName (),
234 m_BackCoolBarHere (0),
235 m_BackCoolBarWidth (0),
236 m_BackCoolBarHeight (0),
238 m_BackCoolBarName (
""),
239 m_BackCoolBarThick (0),
240 m_BackCoolBarMat (
""),
241 m_BackCoolBarSSName (
""),
242 m_BackCoolBarSSThick (0),
243 m_BackCoolBarSSMat (
""),
244 m_BackCoolBarWaName (
""),
245 m_BackCoolBarWaThick (0),
246 m_BackCoolBarWaMat (
""),
247 m_BackCoolVFEHere (0),
248 m_BackCoolVFEName (
""),
249 m_BackCoolVFEMat (
""),
252 m_vecBackVFELyrThick (),
253 m_vecBackVFELyrName (),
254 m_vecBackVFELyrMat (),
255 m_vecBackCoolNSec (),
256 m_vecBackCoolSecSep (),
257 m_vecBackCoolNPerSec (),
260 m_vecBackMiscThick (),
261 m_vecBackMiscName (),
264 m_PatchPanelHere (0),
265 m_PatchPanelName (
""),
266 m_vecPatchPanelThick (),
267 m_vecPatchPanelNames (),
268 m_vecPatchPanelMat (),
269 m_BackCoolTankHere (0),
270 m_BackCoolTankName (
""),
271 m_BackCoolTankWidth (0),
272 m_BackCoolTankThick (0),
273 m_BackCoolTankMat (
""),
274 m_BackCoolTankWaName (
""),
275 m_BackCoolTankWaWidth (0),
276 m_BackCoolTankWaMat (
""),
277 m_BackBracketName (
""),
278 m_BackBracketHeight (0),
279 m_BackBracketMat (
""),
281 m_DryAirTubeHere (0),
282 m_DryAirTubeName (
""),
284 m_DryAirTubeInnDiam (0),
285 m_DryAirTubeOutDiam (0),
286 m_DryAirTubeMat (
""),
287 m_MBCoolTubeHere (0),
288 m_MBCoolTubeName (
""),
289 m_MBCoolTubeInnDiam (0),
290 m_MBCoolTubeOutDiam (0),
291 m_MBCoolTubeMat (
""),
294 m_MBManifInnDiam (0),
295 m_MBManifOutDiam (0),
304 m_PincerRodName (
""),
306 m_vecPincerRodAzimuth(),
307 m_PincerEnvName (
""),
309 m_PincerEnvWidth (0),
310 m_PincerEnvHeight (0),
311 m_PincerEnvLength (0),
312 m_vecPincerEnvZOff (),
313 m_PincerBlkName (
""),
315 m_PincerBlkLength (0),
316 m_PincerShim1Name (
""),
317 m_PincerShimHeight (0),
318 m_PincerShim2Name (
""),
319 m_PincerShimMat (
""),
320 m_PincerShim1Width (0),
321 m_PincerShim2Width (0),
322 m_PincerCutName (
""),
324 m_PincerCutWidth (0),
325 m_PincerCutHeight (0)
328 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance" ;
342 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Initialize" ;
369 m_SpmNPerHalf =
static_cast<unsigned int> (nArgs[
"SpmNPerHalf"]) ;
420 m_NCryTypes =
static_cast<unsigned int> ( nArgs[
"NCryTypes"] ) ;
421 m_NCryPerAlvEta =
static_cast<unsigned int> ( nArgs[
"NCryPerAlvEta"] ) ;
511 m_NFawPerSupm=
static_cast<unsigned int> ( nArgs[
"NFawPerSupm"] ) ;
624 m_MBCoolTubeNum =
static_cast<unsigned int> ( nArgs[
"MBCoolTubeNum"] ) ;
668 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: end initialize" ;
677 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl ;
681 const unsigned int copyOne (1) ;
682 const unsigned int copyTwo (2) ;
727 const std::vector<double>& cutBoxParms ( spmCutBox.
parameters() ) ;
765 const std::vector<double>& sideParms ( sideSolid.
parameters() ) ;
770 for(
unsigned int icopy(1); icopy <= 2; ++icopy )
775 const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
776 const RoZ3D ro ( rang ) ;
786 alltrot.getRotation() ) ) ;
790 const Tl3D trSide ( tvec[0],
791 tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
794 const RoZ3D roSide ( rang ) ;
804 sideRot.getRotation() ) ) ;
827 spmcut1ddname, spmCutBox,
842 const double dphi ( 360.*deg/(1.*
spmNPerHalf() ) ) ;
843 for(
unsigned int iphi (0); iphi<2*
spmNPerHalf() ; ++iphi )
864 const unsigned int offr ( 4*iphi ) ;
865 const unsigned int offt ( 3*iphi ) ;
876 const Tf3D both ( rotaExtra*rotaBase ) ;
879 both.getRotation() ) );
884 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
897 double ilyThick ( 0 ) ;
898 for(
unsigned int ilyx ( 0 ) ; ilyx !=
vecIlyThick().size() ; ++ilyx )
920 for(
unsigned int iPipeType ( 0 ) ; iPipeType !=
vecIlyPipeLength().size(); ++iPipeType )
999 for(
unsigned int ily ( 0 ) ; ily !=
vecIlyThick().size() ; ++ily )
1001 const double ilyRMax ( ilyRMin +
vecIlyThick()[ily] ) ;
1020 unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1028 unsigned int ptmCopy ( 0 ) ;
1029 for(
unsigned int ilyPTM ( 0 ) ; ilyPTM !=
vecIlyPTMZ().size() ; ++ilyPTM )
1033 const double yy ( radius*
sin(phi) ) ;
1034 const double xx ( radius*
cos(phi) ) ;
1046 unsigned int fanOutCopy ( 0 ) ;
1047 for(
unsigned int ilyFO ( 0 ) ; ilyFO !=
vecIlyFanOutZ().size() ; ++ilyFO )
1051 const double yy ( radius*
sin(phi) ) ;
1052 const double xx ( radius*
cos(phi) ) ;
1060 CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1062 unsigned int femCopy ( 0 ) ;
1063 for(
unsigned int ilyFEM ( 0 ) ; ilyFEM !=
vecIlyFEMZ().size() ; ++ilyFEM )
1067 const double yy ( radius*
sin(phi) ) ;
1068 const double xx ( radius*
cos(phi) ) ;
1078 for(
unsigned int iPipe ( 0 ) ; iPipe !=
vecIlyPipePhi().size(); ++iPipe )
1080 const unsigned int type ( static_cast<unsigned int> ( round(
vecIlyPipeType()[iPipe] ) ) ) ;
1082 const double zz ( -ilyLength/2 +
vecIlyPipeZ()[iPipe] +
1085 for(
unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1090 const double yy ( radius*
sin(phi) ) ;
1091 const double xx ( radius*
cos(phi) ) ;
1109 std::vector<double> cri;
1110 std::vector<double> cro;
1111 std::vector<double> czz;
1139 const double sClr1 (
clrThAlv() ) ;
1140 const double fClr1 (
clrFrAlv() ) ;
1143 const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1145 const double sinbeta1 (
sin( beta1 ) ) ;
1147 const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1149 const double H_hawR (
hawRHBIG() ) ;
1150 const double h_hawR (
hawRhsml() ) ;
1151 const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1152 - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1153 const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1154 const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1157 const Trap trapHAWR (
1173 const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) +
M_PI_2 ) ;
1176 const Trap trapFAW (
1195 const double hawBoxClr ( 1*mm ) ;
1201 b_hawR/2 + hawBoxClr,
1204 const std::vector<double>& hawBoxParms ( hawCutBox.
parameters() ) ;
1207 const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1208 const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1209 const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1211 const double zDel (
sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1214 const Tf3D hawCutForm (
1218 Pt3D( vHAW[0].
x() -hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel ) ) ;
1222 hawRSolid1, hawCutBox,
1223 DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1225 hawCutForm.getRotation() ) ) ) ;
1234 hawBoxParms[2] ) ) ;
1236 const std::vector<double>& fawBoxParms ( fawCutBox.
parameters() ) ;
1239 const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1240 const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1241 const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1243 const Tf3D fawCutForm (
1245 vFAW[2] +
Pt3D( 2*hawBoxClr,-5*mm,0),
1246 vFAW[1] +
Pt3D(-2*hawBoxClr,-5*mm,0),
1247 Pt3D( vFAW[1].
x()-2*hawBoxClr, vFAW[1].
y()-trapFAW.
h(), vFAW[1].z() - zDel ) ) ;
1251 fawSolid1, fawCutBox,
1252 DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1254 fawCutForm.getRotation() ) ) ) ;
1258 const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1],
1259 vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1263 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1265 hawRform.getRotation() ) ) ;
1271 -hawRform.getTranslation().y(),
1272 -hawRform.getTranslation().z() ),
1274 CLHEP::HepRotationY(180*deg)*
1275 CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1286 for(
unsigned int iPhi ( 1 ); iPhi <=
nFawPerSupm() ; ++iPhi )
1299 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1301 fawform.getRotation() ) ) ;
1310 const Trap trapGrid (
1311 ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1312 ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1327 const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6],
1328 vHAW[5] -
Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1334 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1336 gridForm.getRotation() ) ) ;
1345 const double AUnd (
underAR() ) ;
1346 const double aUnd (
underAF() ) ;
1348 const double bUnd (
underCF() ) ;
1349 const double HUnd (
underBR() ) ;
1350 const double hUnd (
underBF() ) ;
1351 const double LUnd (
underLZ() ) ;
1366 double theta ( 90*deg ) ;
1367 double zee ( 0*mm ) ;
1368 double side ( 0*mm ) ;
1369 double zeta ( 0*deg ) ;
1371 for(
unsigned int cryType ( 1 ) ; cryType <=
nCryTypes() ; ++cryType )
1377 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType ;
1384 const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1385 ( hNom - hUnd ) ) ) ;
1387 const Trap trapCry (
1395 aNom - aUnd - ANom + AUnd,
1396 hNom - hUnd - HNom + HUnd
1408 const Trap trapAPD (
1427 unsigned int copyAPD ( 0 ) ;
1431 const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1433 const double sindelta (
sin( delta ) ) ;
1435 const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1437 const double singamma (
sin( gamma ) ) ;
1439 const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1441 const double sinbeta (
sin( beta ) ) ;
1444 const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1446 const Trap trapClr (
1447 ( ANom + sClr + rClr*singamma )/2.,
1448 ( aNom + sClr - fClr*singamma )/2.,
1449 ( bNom + sClr - fClr*sinbeta )/2.,
1450 ( HNom + sClr + rClr*sindelta )/2.,
1451 ( hNom + sClr - fClr*sindelta )/2.,
1452 ( LNom + fClr + rClr )/2.,
1464 const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1465 ( hNom + sClr + 2*sWrap ) ) ) ;
1467 const Trap trapWrap (
1468 ( trapClr.
A() + 2*sWrap + rWrap*singamma )/2,
1469 ( trapClr.
a() + 2*sWrap - fWrap*singamma )/2,
1470 ( trapClr.
b() + 2*sWrap - fWrap*sinbeta )/2,
1471 ( trapClr.
H() + 2*sWrap + rWrap*sindelta )/2,
1472 ( trapClr.
h() + 2*sWrap - fWrap*sindelta )/2,
1473 ( trapClr.
L() + fWrap + rWrap )/2.,
1475 aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1480 const DDSolid wrapSolid (
mytrap( wrapDDName.name(), trapWrap ) ) ;
1485 const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1486 ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1488 const Trap trapWall (
1489 ( trapWrap.A() + 2*sWall + rWall*singamma )/2,
1490 ( trapWrap.a() + 2*sWall - fWall*singamma )/2,
1491 ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2,
1492 ( trapWrap.H() + 2*sWall + rWall*sindelta )/2,
1493 ( trapWrap.h() + 2*sWall - fWall*sindelta )/2,
1494 ( trapWrap.L() + fWall + rWall )/2.,
1496 aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1501 const DDSolid wallSolid (
mytrap( wallDDName.name(), trapWall ) ) ;
1548 const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1563 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2. ),
1570 -trapCry.
dz() -
apdThick()/2. + (rClr - fClr)/2.),
1574 const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1584 const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1585 const Vec3 wrapToWall (
Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1596 const double sidePrime ( ( trapWall.a() - trapCry.
a() )/2 ) ;
1597 const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1617 for(
unsigned int etaAlv ( 1 ) ; etaAlv <=
nCryPerAlvEta() ; ++etaAlv )
1619 LogDebug(
"EcalGeom") <<
"theta=" << theta/deg
1620 <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
1621 <<
", zeta="<<zeta<<
", delta="<<delta<<
", zee=" << zee;
1624 ( side*
cos(zeta) + trapWall.h() - sidePrime )/
sin(theta) ;
1626 LogDebug(
"EcalGeom") <<
"New zee="<< zee ;
1630 const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1632 const Pt3D trap3 ( trap2 +
Pt3D( 0,
1635 const Pt3D trap1 ( trap3 +
Pt3D( -trapCry.
a(),
1639 const Pt3D wedge3 ( vHAW[4] +
Pt3D( sidePrime,
1642 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
1643 trapCry.
h()*
cos(theta),
1644 -trapCry.
h()*
sin(theta) ) ) ;
1645 const Pt3D wedge1 ( wedge3 +
Pt3D( trapCry.
a(),
1649 const Tf3D tForm1 ( trap1, trap2, trap3,
1650 wedge1, wedge2, wedge3 ) ;
1652 const double xx ( 0.050*mm ) ;
1654 const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1659 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1661 tForm.getRotation() ) ) ;
1672 const unsigned int webIndex ( cryType/4 ) ;
1723 const std::vector<double>& backPlateParms ( backPlateSolid.
parameters() ) ;
1756 outtra + backPlateTra,
1758 CLHEP::HepRotationZ(270*deg) ) ) ;
1799 outtra + backSideTra1,
1801 CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
1809 outtra + backSideTra2,
1811 CLHEP::HepRotationZ(90*deg) ) ) ;
1828 const double manifCut ( 2*mm ) ;
1831 backCoolWidth/2. - manifCut,
1834 0*deg, 360*deg ) ) ;
1839 backCoolWidth/2.-manifCut,
1842 0*deg, 360*deg ) ) ;
1865 const double deltaY ( -5*mm ) ;
1873 unsigned int edgeSlotCopy ( 0 ) ;
1874 unsigned int midSlotCopy ( 0 ) ;
1878 for(
unsigned int iGr ( 0 ) ; iGr !=
vecGrilleHeight().size() ; ++iGr )
1894 const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
1899 if( 0 == (iGr-1)%2 )
1909 cpv.
position( grMidSlotLog[(iGr-1)/2],
1915 cpv.
position( grMidSlotLog[(iGr-1)/2],
1946 if( ( 0 != iGr%2 ) &&
1956 CLHEP::HepRotationX(90*deg) ) ) ;
1964 CLHEP::HepRotationX(90*deg) ) ) ;
1987 backCoolBarSolid ) ;
1995 backCoolBarSSSolid ) ;
2009 backCoolBarWaSolid ) ;
2030 double thickVFE ( 0 ) ;
2056 backVFELyrTra + offTra,
2058 offTra += 2*backVFELyrTra ;
2081 backCoolVFESolid ) ;
2099 CLHEP::HepRotationX( 180*deg ) ) ) ;
2113 unsigned int iCVFECopy ( 1 ) ;
2114 unsigned int iSep ( 0 ) ;
2115 unsigned int iNSec ( 0 ) ;
2117 for(
unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2123 const double pipeZPos (
vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2130 for(
unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2135 for(
unsigned int iMB ( 0 ) ; iMB !=
vecMBLyrThick().size() ; ++iMB )
2163 outtra + backPlateTra + bCoolTra,
2169 const double halfZTank ( halfZBCool - 5*cm ) ;
2173 backCoolTankHeight/2.,
2178 backCoolTankSolid ) ;
2184 backCoolTankHeight/2. +
2191 backCoolTankHeight/2. -
2198 backCoolTankWaSolid ) ;
2212 backBracketSolid ) ;
2235 bottomThick, 0, 0 ) ;
2236 for(
unsigned int j ( 0 ) ;
j != nMisc ; ++
j )
2296 0*deg, 360*deg ) ) ;
2305 0*deg, 360*deg ) ) ;
2307 mBCoolTubeWaSolid ) ;
2320 -bHalfWidth + (
j+1)*bHalfWidth/5, 0),
2343 0*deg, 360*deg ) ) ;
2350 0*deg, 360*deg ) ) ;
2410 0*deg, 360*deg ) ) ;
2437 dryAirTubeTra1.z() ) ;
2456 -halfZTank + halfZCoolVFE ) ;
2457 const unsigned int numSec ( static_cast<unsigned int> (
vecBackCoolNSec()[iMod]) ) ;
2458 for(
unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2460 const unsigned int nMax ( static_cast<unsigned int> (
vecBackCoolNPerSec()[iNSec++]) ) ;
2461 for(
unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2493 double patchHeight ( 0 ) ;
2506 const std::vector<double>& patchParms ( patchSolid.
parameters() ) ;
2572 const std::vector<double>& envParms ( envSolid.
parameters() ) ;
2579 const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2591 const std::vector<double>& cutParms ( cutSolid.
parameters() ) ;
2596 -blkParms[1] + cutParms[1], 0 ),
2604 const std::vector<double>& shim2Parms ( shim2Solid.
parameters() ) ;
2609 -cutParms[1] + shim2Parms[1], 0 ),
2619 const std::vector<double>& shim1Parms ( shim1Solid.
parameters() ) ;
2624 -envParms[1] + shim1Parms[1],
2625 -envParms[2] + shim1Parms[2] ),
2628 for(
unsigned int iEnv ( 0 ) ; iEnv !=
vecPincerEnvZOff().size() ; ++iEnv )
2667 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it..." ;
2673 const CLHEP::HepRotation&
r )
const
2688 const pair<std::string,std::string>
temp (
DDSplit(s) ) ;
2689 if ( temp.second ==
"" ) {
2690 return DDName( temp.first,
2693 return DDName( temp.first, temp.second );
2721 const HepGeom::Point3D<double> & corner,
2729 const unsigned int copyOne (1) ;
2733 const double BWebx ( bWeb + ( BWeb - bWeb )*LWebx/LWeb ) ;
2736 const Trap trapWebClr (
2751 const Trap trapWebPl (
2759 trapWebClr.
b() - trapWebClr.
B() ,
2763 const DDSolid webPlSolid (
mytrap( webPlDDName.fullname(), trapWebPl ) ) ;
2774 zee += trapWebClr.
h()/
sin(theta) ;
2776 const double beta ( theta + delta ) ;
2778 const double zWeb ( zee - front*
cos(beta) + side*
sin(beta) ) ;
2779 const double yWeb ( front*
sin(beta) + side*
cos(beta) ) ;
2781 const Pt3D wedge3 ( corner +
Pt3D( 0, -yWeb, zWeb ) ) ;
2782 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
2783 trapWebClr.
h()*
cos(theta),
2784 -trapWebClr.
h()*
sin(theta) ) ) ;
2785 const Pt3D wedge1 ( wedge3 +
Pt3D( trapWebClr.
a(), 0, 0 ) ) ;
2787 LogDebug(
"EcalGeom")<<
"trap1="<<vWeb[0]<<
", trap2="<<vWeb[2]<<
", trap3="<<vWeb[3] ;
2789 LogDebug(
"EcalGeom")<<
"wedge1="<<wedge1<<
", wedge2="<<wedge2<<
", wedge3="<<wedge3 ;
2791 const Tf3D tForm ( vWeb[0], vWeb[2], vWeb[3],
2792 wedge1, wedge2, wedge3 ) ;
2798 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2800 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.
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
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)
CaloCellGeometry::Pt3DVec VertexList
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
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)
Geom::Theta< T > theta() const
DDMaterial backCoolBarSSMat() const
double backCoolVFEHere() const
const std::vector< double > & vecSpmRMax() const
double backPipeHere() const
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
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
std::string dbl_to_string(const double &in)
Converts only the integer part of a double to a string.
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
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
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::string int_to_string(const int &in)
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
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
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
virtual ~DDEcalBarrelAlgo()
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
const std::vector< double > & vecGrilleZOff() const
const std::string & name() const
Returns the name.
tuple size
Write out results.
const std::vector< double > & vecIlyPipePhi() const
double ilyPTMLength() const
double backCoolBarThick() const
DDName ilyDiffName() const
std::vector< double > m_vecSpmHere
HepGeom::Translate3D Tl3D
DDName ilyFanOutName() const
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
void execute(DDCompactView &cpv)
std::vector< std::string > m_vecBackCoolName