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;
166 m_vecIlyPipeLength (),
178 m_IlyFanOutName (
""),
181 m_IlyFanOutWidth (0),
182 m_IlyFanOutLength(0),
183 m_IlyFanOutHeight(0),
224 m_BackSideLength (0),
225 m_BackSideHeight (0),
231 m_BackPlateName (
""),
233 m_BackPlateLength (0),
234 m_BackPlateThick (0),
235 m_BackPlateWidth (0),
237 m_BackPlate2Name (
""),
238 m_BackPlate2Thick (0),
239 m_BackPlate2Mat (
""),
246 m_vecGrilleHeight (),
248 m_GrEdgeSlotName (
""),
249 m_GrEdgeSlotMat (
""),
250 m_GrEdgeSlotHere (0),
251 m_GrEdgeSlotHeight (0),
252 m_GrEdgeSlotWidth (0),
253 m_GrMidSlotName (
""),
256 m_GrMidSlotWidth (0),
258 m_vecGrMidSlotHeight (),
261 m_vecBackPipeDiam (),
262 m_vecBackPipeThick (),
264 m_BackPipeWaterMat (
""),
266 m_vecBackCoolName (),
268 m_BackCoolBarHere (0),
269 m_BackCoolBarWidth (0),
270 m_BackCoolBarHeight (0),
272 m_BackCoolBarName (
""),
273 m_BackCoolBarThick (0),
274 m_BackCoolBarMat (
""),
275 m_BackCoolBarSSName (
""),
276 m_BackCoolBarSSThick (0),
277 m_BackCoolBarSSMat (
""),
278 m_BackCoolBarWaName (
""),
279 m_BackCoolBarWaThick (0),
280 m_BackCoolBarWaMat (
""),
281 m_BackCoolVFEHere (0),
282 m_BackCoolVFEName (
""),
283 m_BackCoolVFEMat (
""),
286 m_vecBackVFELyrThick (),
287 m_vecBackVFELyrName (),
288 m_vecBackVFELyrMat (),
289 m_vecBackCoolNSec (),
290 m_vecBackCoolSecSep (),
291 m_vecBackCoolNPerSec (),
294 m_vecBackMiscThick (),
295 m_vecBackMiscName (),
298 m_PatchPanelHere (0),
299 m_PatchPanelName (
""),
300 m_vecPatchPanelThick (),
301 m_vecPatchPanelNames (),
302 m_vecPatchPanelMat (),
303 m_BackCoolTankHere (0),
304 m_BackCoolTankName (
""),
305 m_BackCoolTankWidth (0),
306 m_BackCoolTankThick (0),
307 m_BackCoolTankMat (
""),
308 m_BackCoolTankWaName (
""),
309 m_BackCoolTankWaWidth (0),
310 m_BackCoolTankWaMat (
""),
311 m_BackBracketName (
""),
312 m_BackBracketHeight (0),
313 m_BackBracketMat (
""),
315 m_DryAirTubeHere (0),
316 m_DryAirTubeName (
""),
318 m_DryAirTubeInnDiam (0),
319 m_DryAirTubeOutDiam (0),
320 m_DryAirTubeMat (
""),
321 m_MBCoolTubeHere (0),
322 m_MBCoolTubeName (
""),
323 m_MBCoolTubeInnDiam (0),
324 m_MBCoolTubeOutDiam (0),
325 m_MBCoolTubeMat (
""),
328 m_MBManifInnDiam (0),
329 m_MBManifOutDiam (0),
338 m_PincerRodName (
""),
340 m_vecPincerRodAzimuth(),
341 m_PincerEnvName (
""),
343 m_PincerEnvWidth (0),
344 m_PincerEnvHeight (0),
345 m_PincerEnvLength (0),
346 m_vecPincerEnvZOff (),
347 m_PincerBlkName (
""),
349 m_PincerBlkLength (0),
350 m_PincerShim1Name (
""),
351 m_PincerShimHeight (0),
352 m_PincerShim2Name (
""),
353 m_PincerShimMat (
""),
354 m_PincerShim1Width (0),
355 m_PincerShim2Width (0),
356 m_PincerCutName (
""),
358 m_PincerCutWidth (0),
359 m_PincerCutHeight (0)
362 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Creating an instance" ;
376 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: Initialize" ;
403 m_SpmNPerHalf =
static_cast<unsigned int> (nArgs[
"SpmNPerHalf"]) ;
454 m_NCryTypes =
static_cast<unsigned int> ( nArgs[
"NCryTypes"] ) ;
455 m_NCryPerAlvEta =
static_cast<unsigned int> ( nArgs[
"NCryPerAlvEta"] ) ;
579 m_NFawPerSupm=
static_cast<unsigned int> ( nArgs[
"NFawPerSupm"] ) ;
692 m_MBCoolTubeNum =
static_cast<unsigned int> ( nArgs[
"MBCoolTubeNum"] ) ;
736 LogDebug(
"EcalGeom") <<
"DDEcalBarrelAlgo info: end initialize" ;
745 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo execute!" << std::endl ;
749 const unsigned int copyOne (1) ;
750 const unsigned int copyTwo (2) ;
795 const std::vector<double>& cutBoxParms ( spmCutBox.
parameters() ) ;
833 const std::vector<double>& sideParms ( sideSolid.
parameters() ) ;
838 for(
unsigned int icopy(1); icopy <= 2; ++icopy )
843 const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
844 const RoZ3D ro ( rang ) ;
854 alltrot.getRotation() ) ) ;
858 const Tl3D trSide ( tvec[0],
859 tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
862 const RoZ3D roSide ( rang ) ;
872 sideRot.getRotation() ) ) ;
895 spmcut1ddname, spmCutBox,
910 const double dphi ( 360.*deg/(1.*
spmNPerHalf() ) ) ;
911 for(
unsigned int iphi (0); iphi<2*
spmNPerHalf() ; ++iphi )
932 const unsigned int offr ( 4*iphi ) ;
933 const unsigned int offt ( 3*iphi ) ;
944 const Tf3D both ( rotaExtra*rotaBase ) ;
947 both.getRotation() ) );
952 DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
965 double ilyThick ( 0 ) ;
966 for(
unsigned int ilyx ( 0 ) ; ilyx !=
vecIlyThick().size() ; ++ilyx )
988 for(
unsigned int iPipeType ( 0 ) ; iPipeType !=
vecIlyPipeLength().size(); ++iPipeType )
1006 0*deg, 360*deg ) ) ;
1067 for(
unsigned int ily ( 0 ) ; ily !=
vecIlyThick().size() ; ++ily )
1069 const double ilyRMax ( ilyRMin +
vecIlyThick()[ily] ) ;
1088 unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1096 unsigned int ptmCopy ( 0 ) ;
1097 for(
unsigned int ilyPTM ( 0 ) ; ilyPTM !=
vecIlyPTMZ().size() ; ++ilyPTM )
1101 const double yy ( radius*
sin(phi) ) ;
1102 const double xx ( radius*
cos(phi) ) ;
1114 unsigned int fanOutCopy ( 0 ) ;
1115 for(
unsigned int ilyFO ( 0 ) ; ilyFO !=
vecIlyFanOutZ().size() ; ++ilyFO )
1119 const double yy ( radius*
sin(phi) ) ;
1120 const double xx ( radius*
cos(phi) ) ;
1128 CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1130 unsigned int femCopy ( 0 ) ;
1131 for(
unsigned int ilyFEM ( 0 ) ; ilyFEM !=
vecIlyFEMZ().size() ; ++ilyFEM )
1135 const double yy ( radius*
sin(phi) ) ;
1136 const double xx ( radius*
cos(phi) ) ;
1146 for(
unsigned int iPipe ( 0 ) ; iPipe !=
vecIlyPipePhi().size(); ++iPipe )
1148 const unsigned int type ( static_cast<unsigned int> ( round(
vecIlyPipeType()[iPipe] ) ) ) ;
1150 const double zz ( -ilyLength/2 +
vecIlyPipeZ()[iPipe] +
1153 for(
unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1158 const double yy ( radius*
sin(phi) ) ;
1159 const double xx ( radius*
cos(phi) ) ;
1177 std::vector<double> cri;
1178 std::vector<double> cro;
1179 std::vector<double> czz;
1207 const double sClr1 (
clrThAlv() ) ;
1208 const double fClr1 (
clrFrAlv() ) ;
1211 const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1213 const double sinbeta1 (
sin( beta1 ) ) ;
1215 const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1217 const double H_hawR (
hawRHBIG() ) ;
1218 const double h_hawR (
hawRhsml() ) ;
1219 const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1220 - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1221 const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1222 const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1225 const Trap trapHAWR (
1241 const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) +
M_PI_2 ) ;
1244 const Trap trapFAW (
1263 const double hawBoxClr ( 1*mm ) ;
1269 b_hawR/2 + hawBoxClr,
1272 const std::vector<double>& hawBoxParms ( hawCutBox.
parameters() ) ;
1275 const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1276 const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1277 const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1279 const double zDel (
sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1282 const Tf3D hawCutForm (
1286 Pt3D( vHAW[0].
x() -hawBoxClr, vHAW[0].
y(), vHAW[0].
z() - zDel ) ) ;
1290 hawRSolid1, hawCutBox,
1291 DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1293 hawCutForm.getRotation() ) ) ) ;
1302 hawBoxParms[2] ) ) ;
1304 const std::vector<double>& fawBoxParms ( fawCutBox.
parameters() ) ;
1307 const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1308 const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1309 const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1311 const Tf3D fawCutForm (
1313 vFAW[2] +
Pt3D( 2*hawBoxClr,-5*mm,0),
1314 vFAW[1] +
Pt3D(-2*hawBoxClr,-5*mm,0),
1315 Pt3D( vFAW[1].
x()-2*hawBoxClr, vFAW[1].
y()-trapFAW.
h(), vFAW[1].z() - zDel ) ) ;
1319 fawSolid1, fawCutBox,
1320 DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1322 fawCutForm.getRotation() ) ) ) ;
1326 const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1],
1327 vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1331 DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1333 hawRform.getRotation() ) ) ;
1339 -hawRform.getTranslation().y(),
1340 -hawRform.getTranslation().z() ),
1342 CLHEP::HepRotationY(180*deg)*
1343 CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1354 for(
unsigned int iPhi ( 1 ); iPhi <=
nFawPerSupm() ; ++iPhi )
1367 DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1369 fawform.getRotation() ) ) ;
1378 const Trap trapGrid (
1379 ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1380 ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2,
1395 const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6],
1396 vHAW[5] -
Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1402 DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1404 gridForm.getRotation() ) ) ;
1413 const double AUnd (
underAR() ) ;
1414 const double aUnd (
underAF() ) ;
1416 const double bUnd (
underCF() ) ;
1417 const double HUnd (
underBR() ) ;
1418 const double hUnd (
underBF() ) ;
1419 const double LUnd (
underLZ() ) ;
1434 double theta ( 90*deg ) ;
1435 double zee ( 0*mm ) ;
1436 double side ( 0*mm ) ;
1437 double zeta ( 0*deg ) ;
1439 for(
unsigned int cryType ( 1 ) ; cryType <=
nCryTypes() ; ++cryType )
1445 LogDebug(
"EcalGeom") <<
"Crytype=" << cryType ;
1452 const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1453 ( hNom - hUnd ) ) ) ;
1455 const Trap trapCry (
1463 aNom - aUnd - ANom + AUnd,
1464 hNom - hUnd - HNom + HUnd
1473 const unsigned int copyCap ( 1 ) ;
1493 const unsigned int copySGL ( 1 ) ;
1504 unsigned int copyCER ( 0 ) ;
1516 const unsigned int copyBSi ( 1 ) ;
1527 const unsigned int copyATJ ( 1 ) ;
1539 const unsigned int copyAGL ( 1 ) ;
1551 const unsigned int copyAND ( 1 ) ;
1563 const unsigned int copyAPD ( 1 ) ;
1567 const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1569 const double sindelta (
sin( delta ) ) ;
1571 const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1573 const double singamma (
sin( gamma ) ) ;
1575 const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1577 const double sinbeta (
sin( beta ) ) ;
1580 const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1582 const Trap trapClr (
1583 ( ANom + sClr + rClr*singamma )/2.,
1584 ( aNom + sClr - fClr*singamma )/2.,
1585 ( bNom + sClr - fClr*sinbeta )/2.,
1586 ( HNom + sClr + rClr*sindelta )/2.,
1587 ( hNom + sClr - fClr*sindelta )/2.,
1588 ( LNom + fClr + rClr )/2.,
1600 const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1601 ( hNom + sClr + 2*sWrap ) ) ) ;
1603 const Trap trapWrap (
1604 ( trapClr.
A() + 2*sWrap + rWrap*singamma )/2,
1605 ( trapClr.
a() + 2*sWrap - fWrap*singamma )/2,
1606 ( trapClr.
b() + 2*sWrap - fWrap*sinbeta )/2,
1607 ( trapClr.
H() + 2*sWrap + rWrap*sindelta )/2,
1608 ( trapClr.
h() + 2*sWrap - fWrap*sindelta )/2,
1609 ( trapClr.
L() + fWrap + rWrap )/2.,
1611 aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1616 const DDSolid wrapSolid (
mytrap( wrapDDName.name(), trapWrap ) ) ;
1621 const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1622 ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1624 const Trap trapWall (
1625 ( trapWrap.A() + 2*sWall + rWall*singamma )/2,
1626 ( trapWrap.a() + 2*sWall - fWall*singamma )/2,
1627 ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2,
1628 ( trapWrap.H() + 2*sWall + rWall*sindelta )/2,
1629 ( trapWrap.h() + 2*sWall - fWall*sindelta )/2,
1630 ( trapWrap.L() + fWall + rWall )/2.,
1632 aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1637 const DDSolid wallSolid (
mytrap( wallDDName.name(), trapWall ) ) ;
1684 const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1744 for(
unsigned int ijkl ( 0 ) ; ijkl != 2 ; ++ijkl )
1760 - trapCry.
dz() -
capThick()/2. + (rClr - fClr)/2. ),
1765 const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1775 const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1776 const Vec3 wrapToWall (
Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1787 const double sidePrime ( ( trapWall.a() - trapCry.
a() )/2 ) ;
1788 const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1808 for(
unsigned int etaAlv ( 1 ) ; etaAlv <=
nCryPerAlvEta() ; ++etaAlv )
1810 LogDebug(
"EcalGeom") <<
"theta=" << theta/deg
1811 <<
", sidePrime=" << sidePrime <<
", frontPrime=" << frontPrime
1812 <<
", zeta="<<zeta<<
", delta="<<delta<<
", zee=" << zee;
1815 ( side*
cos(zeta) + trapWall.h() - sidePrime )/
sin(theta) ;
1817 LogDebug(
"EcalGeom") <<
"New zee="<< zee ;
1821 const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1823 const Pt3D trap3 ( trap2 +
Pt3D( 0,
1826 const Pt3D trap1 ( trap3 +
Pt3D( -trapCry.
a(),
1830 const Pt3D wedge3 ( vHAW[4] +
Pt3D( sidePrime,
1833 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
1834 trapCry.
h()*
cos(theta),
1835 -trapCry.
h()*
sin(theta) ) ) ;
1836 const Pt3D wedge1 ( wedge3 +
Pt3D( trapCry.
a(),
1840 const Tf3D tForm1 ( trap1, trap2, trap3,
1841 wedge1, wedge2, wedge3 ) ;
1843 const double xx ( 0.050*mm ) ;
1845 const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1850 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1852 tForm.getRotation() ) ) ;
1863 const unsigned int webIndex ( cryType/4 ) ;
1914 const std::vector<double>& backPlateParms ( backPlateSolid.
parameters() ) ;
1947 outtra + backPlateTra,
1949 CLHEP::HepRotationZ(270*deg) ) ) ;
1990 outtra + backSideTra1,
1992 CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
2000 outtra + backSideTra2,
2002 CLHEP::HepRotationZ(90*deg) ) ) ;
2019 const double manifCut ( 2*mm ) ;
2022 backCoolWidth/2. - manifCut,
2025 0*deg, 360*deg ) ) ;
2030 backCoolWidth/2.-manifCut,
2033 0*deg, 360*deg ) ) ;
2056 const double deltaY ( -5*mm ) ;
2064 unsigned int edgeSlotCopy ( 0 ) ;
2065 unsigned int midSlotCopy ( 0 ) ;
2069 for(
unsigned int iGr ( 0 ) ; iGr !=
vecGrilleHeight().size() ; ++iGr )
2085 const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
2090 if( 0 == (iGr-1)%2 )
2100 cpv.
position( grMidSlotLog[(iGr-1)/2],
2106 cpv.
position( grMidSlotLog[(iGr-1)/2],
2137 if( ( 0 != iGr%2 ) &&
2147 CLHEP::HepRotationX(90*deg) ) ) ;
2155 CLHEP::HepRotationX(90*deg) ) ) ;
2178 backCoolBarSolid ) ;
2186 backCoolBarSSSolid ) ;
2200 backCoolBarWaSolid ) ;
2221 double thickVFE ( 0 ) ;
2247 backVFELyrTra + offTra,
2249 offTra += 2*backVFELyrTra ;
2272 backCoolVFESolid ) ;
2290 CLHEP::HepRotationX( 180*deg ) ) ) ;
2304 unsigned int iCVFECopy ( 1 ) ;
2305 unsigned int iSep ( 0 ) ;
2306 unsigned int iNSec ( 0 ) ;
2308 for(
unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2314 const double pipeZPos (
vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2321 for(
unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2326 for(
unsigned int iMB ( 0 ) ; iMB !=
vecMBLyrThick().size() ; ++iMB )
2354 outtra + backPlateTra + bCoolTra,
2360 const double halfZTank ( halfZBCool - 5*cm ) ;
2364 backCoolTankHeight/2.,
2369 backCoolTankSolid ) ;
2375 backCoolTankHeight/2. +
2382 backCoolTankHeight/2. -
2389 backCoolTankWaSolid ) ;
2403 backBracketSolid ) ;
2426 bottomThick, 0, 0 ) ;
2427 for(
unsigned int j ( 0 ) ;
j != nMisc ; ++
j )
2487 0*deg, 360*deg ) ) ;
2496 0*deg, 360*deg ) ) ;
2498 mBCoolTubeWaSolid ) ;
2511 -bHalfWidth + (
j+1)*bHalfWidth/5, 0),
2534 0*deg, 360*deg ) ) ;
2541 0*deg, 360*deg ) ) ;
2601 0*deg, 360*deg ) ) ;
2628 dryAirTubeTra1.z() ) ;
2647 -halfZTank + halfZCoolVFE ) ;
2648 const unsigned int numSec ( static_cast<unsigned int> (
vecBackCoolNSec()[iMod]) ) ;
2649 for(
unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2651 const unsigned int nMax ( static_cast<unsigned int> (
vecBackCoolNPerSec()[iNSec++]) ) ;
2652 for(
unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2684 double patchHeight ( 0 ) ;
2697 const std::vector<double>& patchParms ( patchSolid.
parameters() ) ;
2763 const std::vector<double>& envParms ( envSolid.
parameters() ) ;
2770 const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2782 const std::vector<double>& cutParms ( cutSolid.
parameters() ) ;
2787 -blkParms[1] + cutParms[1], 0 ),
2795 const std::vector<double>& shim2Parms ( shim2Solid.
parameters() ) ;
2800 -cutParms[1] + shim2Parms[1], 0 ),
2810 const std::vector<double>& shim1Parms ( shim1Solid.
parameters() ) ;
2815 -envParms[1] + shim1Parms[1],
2816 -envParms[2] + shim1Parms[2] ),
2819 for(
unsigned int iEnv ( 0 ) ; iEnv !=
vecPincerEnvZOff().size() ; ++iEnv )
2858 LogDebug(
"EcalGeom") <<
"******** DDEcalBarrelAlgo test: end it..." ;
2864 const CLHEP::HepRotation&
r )
const
2879 const pair<std::string,std::string>
temp (
DDSplit(s) ) ;
2880 if ( temp.second ==
"" ) {
2881 return DDName( temp.first,
2884 return DDName( temp.first, temp.second );
2912 const HepGeom::Point3D<double> & corner,
2920 const unsigned int copyOne (1) ;
2924 const double BWebx ( bWeb + ( BWeb - bWeb )*LWebx/LWeb ) ;
2927 const Trap trapWebClr (
2942 const Trap trapWebPl (
2950 trapWebClr.
b() - trapWebClr.
B() ,
2954 const DDSolid webPlSolid (
mytrap( webPlDDName.fullname(), trapWebPl ) ) ;
2965 zee += trapWebClr.
h()/
sin(theta) ;
2967 const double beta ( theta + delta ) ;
2969 const double zWeb ( zee - front*
cos(beta) + side*
sin(beta) ) ;
2970 const double yWeb ( front*
sin(beta) + side*
cos(beta) ) ;
2972 const Pt3D wedge3 ( corner +
Pt3D( 0, -yWeb, zWeb ) ) ;
2973 const Pt3D wedge2 ( wedge3 +
Pt3D( 0,
2974 trapWebClr.
h()*
cos(theta),
2975 -trapWebClr.
h()*
sin(theta) ) ) ;
2976 const Pt3D wedge1 ( wedge3 +
Pt3D( trapWebClr.
a(), 0, 0 ) ) ;
2978 LogDebug(
"EcalGeom")<<
"trap1="<<vWeb[0]<<
", trap2="<<vWeb[2]<<
", trap3="<<vWeb[3] ;
2980 LogDebug(
"EcalGeom")<<
"wedge1="<<wedge1<<
", wedge2="<<wedge2<<
", wedge3="<<wedge3 ;
2982 const Tf3D tForm ( vWeb[0], vWeb[2], vWeb[3],
2983 wedge1, wedge2, wedge3 ) ;
2989 DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z()),
2991 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
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)
CaloCellGeometry::Pt3DVec VertexList
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
void initialize(const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs)
void position(const DDLogicalPart &self, const DDLogicalPart &parent, std::string copyno, const DDTranslation &trans, const DDRotation &rot, const DDDivision *div=NULL)
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::string dbl_to_string(const double &in)
Converts only the integer part of a double to a string.
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
type of data representation of DDCompactView
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
virtual ~DDEcalBarrelNewAlgo()
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
std::string int_to_string(const int &in)
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
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
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 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
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
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
void execute(DDCompactView &cpv)
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
const std::string & name() const
Returns the name.
tuple size
Write out results.
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