CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
DDEcalBarrelAlgo Class Reference

#include <DDEcalBarrelAlgo.h>

Inheritance diagram for DDEcalBarrelAlgo:

Public Types

typedef HepGeom::Point3D< double > Pt3D
 
typedef HepGeom::ReflectZ3D RfZ3D
 
typedef HepGeom::Rotate3D Ro3D
 
typedef CLHEP::HepRotation Rota
 
typedef HepGeom::RotateX3D RoX3D
 
typedef HepGeom::RotateY3D RoY3D
 
typedef HepGeom::RotateZ3D RoZ3D
 
typedef HepGeom::Transform3D Tf3D
 
typedef HepGeom::Translate3D Tl3D
 
typedef EcalTrapezoidParameters Trap
 
typedef CLHEP::Hep3Vector Vec3
 

Public Member Functions

double apdHere () const
 
DDMaterial apdMat () const
 
DDName apdName () const
 
double apdSide () const
 
double apdThick () const
 
double apdX1 () const
 
double apdX2 () const
 
double apdZ () const
 
double backBracketHeight () const
 
DDMaterial backBracketMat () const
 
const std::string & backBracketName () const
 
double backCBStdSep () const
 
double backCoolBarHeight () const
 
double backCoolBarHere () const
 
DDMaterial backCoolBarMat () const
 
DDName backCoolBarName () const
 
DDMaterial backCoolBarSSMat () const
 
DDName backCoolBarSSName () const
 
double backCoolBarSSThick () const
 
double backCoolBarThick () const
 
DDMaterial backCoolBarWaMat () const
 
DDName backCoolBarWaName () const
 
double backCoolBarWaThick () const
 
double backCoolBarWidth () const
 
double backCoolHere () const
 
DDMaterial backCoolMat () const
 
double backCoolTankHere () const
 
DDMaterial backCoolTankMat () const
 
const std::string & backCoolTankName () const
 
double backCoolTankThick () const
 
DDMaterial backCoolTankWaMat () const
 
const std::string & backCoolTankWaName () const
 
double backCoolTankWaWidth () const
 
double backCoolTankWidth () const
 
double backCoolVFEHere () const
 
DDMaterial backCoolVFEMat () const
 
DDName backCoolVFEName () const
 
double backHere () const
 
double backMiscHere () const
 
double backPipeHere () const
 
DDMaterial backPipeMat () const
 
const std::string & backPipeName () const
 
DDMaterial backPipeWaterMat () const
 
DDMaterial backPlate2Mat () const
 
DDName backPlate2Name () const
 
double backPlate2Thick () const
 
double backPlateHere () const
 
double backPlateLength () const
 
DDMaterial backPlateMat () const
 
DDName backPlateName () const
 
double backPlateThick () const
 
double backPlateWidth () const
 
double backSideAngle () const
 
double backSideHeight () const
 
double backSideHere () const
 
double backSideLength () const
 
DDMaterial backSideMat () const
 
DDName backSideName () const
 
double backSideWidth () const
 
double backSideYOff1 () const
 
double backSideYOff2 () const
 
DDMaterial backVFEMat () const
 
DDName backVFEName () const
 
double backXOff () const
 
double backYOff () const
 
double barHere () const
 
DDMaterial barMat () const
 
DDName barName () const
 
double barPhiHi () const
 
double barPhiLo () const
 
double clrFrAlv () const
 
DDMaterial clrMat () const
 
const std::string & clrName () const
 
double clrReAlv () const
 
double clrThAlv () const
 
DDMaterial cryMat () const
 
const std::string & cryName () const
 
 DDEcalBarrelAlgo ()
 
DDMaterial ddmat (const std::string &s) const
 
DDName ddname (const std::string &s) const
 
double dryAirTubeHere () const
 
double dryAirTubeInnDiam () const
 
DDMaterial dryAirTubeMat () const
 
const std::string & dryAirTubeName () const
 
double dryAirTubeOutDiam () const
 
void execute (DDCompactView &cpv) override
 
double fawDelPhi () const
 
double fawHere () const
 
DDName fawName () const
 
double fawPhiOff () const
 
double fawPhiRot () const
 
double fawRadOff () const
 
double grEdgeSlotHeight () const
 
double grEdgeSlotHere () const
 
DDMaterial grEdgeSlotMat () const
 
DDName grEdgeSlotName () const
 
double grEdgeSlotWidth () const
 
double gridHere () const
 
DDMaterial gridMat () const
 
DDName gridName () const
 
double gridThick () const
 
double grilleHere () const
 
DDMaterial grilleMat () const
 
const std::string & grilleName () const
 
double grilleThick () const
 
double grilleWidth () const
 
double grilleZSpace () const
 
double grMidSlotHere () const
 
DDMaterial grMidSlotMat () const
 
const std::string & grMidSlotName () const
 
double grMidSlotWidth () const
 
double grMidSlotXOff () const
 
double hawRCutDelY () const
 
double hawRCutY () const
 
double hawRCutZ () const
 
double hawRHBIG () const
 
double hawRhsml () const
 
DDName hawRName () const
 
double hawYOffCry () const
 
const std::string & idNameSpace () const
 
double ilyBndlLength () const
 
DDMaterial ilyBndlMat () const
 
DDName ilyBndlName () const
 
double ilyBndlOff () const
 
double ilyDelPhi () const
 
double ilyDiffLength () const
 
DDMaterial ilyDiffMat () const
 
DDName ilyDiffName () const
 
double ilyDiffOff () const
 
double ilyFanOutHeight () const
 
double ilyFanOutHere () const
 
double ilyFanOutLength () const
 
DDMaterial ilyFanOutMat () const
 
DDName ilyFanOutName () const
 
double ilyFanOutWidth () const
 
double ilyFEMHeight () const
 
double ilyFEMLength () const
 
DDMaterial ilyFEMMat () const
 
DDName ilyFEMName () const
 
double ilyFEMWidth () const
 
double ilyHere () const
 
const std::string & ilyName () const
 
double ilyPhiLow () const
 
double ilyPipeHere () const
 
double ilyPipeID () const
 
DDMaterial ilyPipeMat () const
 
const std::string & ilyPipeName () const
 
double ilyPipeOD () const
 
double ilyPTMHeight () const
 
double ilyPTMHere () const
 
double ilyPTMLength () const
 
DDMaterial ilyPTMMat () const
 
DDName ilyPTMName () const
 
double ilyPTMWidth () const
 
void initialize (const DDNumericArguments &nArgs, const DDVectorArguments &vArgs, const DDMapArguments &mArgs, const DDStringArguments &sArgs, const DDStringVectorArguments &vsArgs) override
 
double mBCoolTubeHere () const
 
double mBCoolTubeInnDiam () const
 
DDMaterial mBCoolTubeMat () const
 
const std::string & mBCoolTubeName () const
 
double mBCoolTubeNum () const
 
double mBCoolTubeOutDiam () const
 
double mBLyrHere () const
 
double mBManifHere () const
 
double mBManifInnDiam () const
 
DDMaterial mBManifMat () const
 
DDName mBManifName () const
 
double mBManifOutDiam () const
 
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 DDRotationMatrix. – Michael Case. More...
 
DDSolid mytrap (const std::string &s, const Trap &t) const
 
unsigned int nCryPerAlvEta () const
 
unsigned int nCryTypes () const
 
unsigned int nFawPerSupm () const
 
double nomCryDimAF () const
 
double nomCryDimLZ () const
 
double patchPanelHere () const
 
DDName patchPanelName () const
 
double pincerBlkLength () const
 
DDMaterial pincerBlkMat () const
 
DDName pincerBlkName () const
 
double pincerCutHeight () const
 
DDMaterial pincerCutMat () const
 
DDName pincerCutName () const
 
double pincerCutWidth () const
 
double pincerEnvHeight () const
 
double pincerEnvLength () const
 
DDMaterial pincerEnvMat () const
 
DDName pincerEnvName () const
 
double pincerEnvWidth () const
 
double pincerRodHere () const
 
DDMaterial pincerRodMat () const
 
DDName pincerRodName () const
 
DDName pincerShim1Name () const
 
double pincerShim1Width () const
 
DDName pincerShim2Name () const
 
double pincerShim2Width () const
 
double pincerShimHeight () const
 
DDMaterial pincerShimMat () const
 
DDName spmCutName () const
 
double spmCutRM () const
 
double spmCutRP () const
 
int spmCutShow () const
 
double spmCutThick () const
 
double spmDelPhi () const
 
double spmExpThick () const
 
double spmExpWide () const
 
double spmExpYOff () const
 
double spmLowPhi () const
 
DDMaterial spmMat () const
 
DDName spmName () const
 
unsigned int spmNPerHalf () const
 
double spmPhiOff () const
 
double spmSideHigh () const
 
DDMaterial spmSideMat () const
 
DDName spmSideName () const
 
double spmSideThick () const
 
double spmSideYOffM () const
 
double spmSideYOffP () const
 
double underAF () const
 
double underAR () const
 
double underBF () const
 
double underBR () const
 
double underCF () const
 
double underCR () const
 
double underLZ () const
 
const std::vector< std::string > & vecBackCoolName () const
 
const std::vector< double > & vecBackCoolNPerSec () const
 
const std::vector< double > & vecBackCoolNSec () const
 
const std::vector< double > & vecBackCoolSecSep () const
 
const std::vector< std::string > & vecBackMiscMat () const
 
const std::vector< std::string > & vecBackMiscName () const
 
const std::vector< double > & vecBackMiscThick () const
 
const std::vector< double > & vecBackPipeDiam () const
 
const std::vector< double > & vecBackPipeThick () const
 
const std::vector< std::string > & vecBackVFELyrMat () const
 
const std::vector< std::string > & vecBackVFELyrName () const
 
const std::vector< double > & vecBackVFELyrThick () const
 
const std::vector< double > & vecBarRMax () const
 
const std::vector< double > & vecBarRMin () const
 
const std::vector< double > & vecBarRota () const
 
const std::vector< double > & vecBarRota2 () const
 
const std::vector< double > & vecBarRota3 () const
 
const std::vector< double > & vecBarTran () const
 
const std::vector< double > & vecBarZPts () const
 
const std::vector< double > & vecGapAlvEta () const
 
const std::vector< double > & vecGrilleHeight () const
 
const std::vector< double > & vecGrilleZOff () const
 
const std::vector< double > & vecGrMidSlotHeight () const
 
const std::vector< double > & vecIlyFanOutPhi () const
 
const std::vector< double > & vecIlyFanOutZ () const
 
const std::vector< double > & vecIlyFEMPhi () const
 
const std::vector< double > & vecIlyFEMZ () const
 
const std::vector< std::string > & vecIlyMat () const
 
const std::vector< double > & vecIlyPipeLength () const
 
const std::vector< double > & vecIlyPipePhi () const
 
const std::vector< double > & vecIlyPipeType () const
 
const std::vector< double > & vecIlyPipeZ () const
 
const std::vector< double > & vecIlyPTMPhi () const
 
const std::vector< double > & vecIlyPTMZ () const
 
const std::vector< double > & vecIlyThick () const
 
const std::vector< std::string > & vecMBLyrMat () const
 
const std::vector< std::string > & vecMBLyrName () const
 
const std::vector< double > & vecMBLyrThick () const
 
const std::vector< double > & vecNomCryDimAR () const
 
const std::vector< double > & vecNomCryDimBF () const
 
const std::vector< double > & vecNomCryDimBR () const
 
const std::vector< double > & vecNomCryDimCF () const
 
const std::vector< double > & vecNomCryDimCR () const
 
const std::vector< std::string > & vecPatchPanelMat () const
 
const std::vector< std::string > & vecPatchPanelNames () const
 
const std::vector< double > & vecPatchPanelThick () const
 
std::vector< double > vecPincerEnvZOff () const
 
std::vector< double > vecPincerRodAzimuth () const
 
const std::vector< double > & vecSpmBRota () const
 
const std::vector< double > & vecSpmBTran () const
 
const std::vector< double > & vecSpmCutTM () const
 
const std::vector< double > & vecSpmCutTP () const
 
const std::vector< double > & vecSpmHere () const
 
const std::vector< double > & vecSpmRMax () const
 
const std::vector< double > & vecSpmRMin () const
 
const std::vector< double > & vecSpmRota () const
 
const std::vector< double > & vecSpmTran () const
 
const std::vector< double > & vecSpmZPts () const
 
const std::vector< double > & vecWebClrTh () const
 
const std::vector< double > & vecWebLength () const
 
const std::vector< double > & vecWebPlTh () const
 
double wallFrAlv () const
 
DDMaterial wallMat () const
 
const std::string & wallName () const
 
double wallReAlv () const
 
double wallThAlv () const
 
DDMaterial webClrMat () const
 
const std::string & webClrName () const
 
double webHere () const
 
DDMaterial webPlMat () const
 
const std::string & webPlName () const
 
double wrapFrAlv () const
 
DDMaterial wrapMat () const
 
const std::string & wrapName () const
 
double wrapReAlv () const
 
double wrapThAlv () const
 
 ~DDEcalBarrelAlgo () override
 

Private Member Functions

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)
 

Private Attributes

double m_APDHere
 
std::string m_APDMat
 
std::string m_APDName
 
double m_APDSide
 
double m_APDThick
 
double m_APDX1
 
double m_APDX2
 
double m_APDZ
 
double m_BackBracketHeight
 
std::string m_BackBracketMat
 
std::string m_BackBracketName
 
double m_BackCBStdSep
 
double m_BackCoolBarHeight
 
double m_BackCoolBarHere
 
std::string m_BackCoolBarMat
 
std::string m_BackCoolBarName
 
std::string m_BackCoolBarSSMat
 
std::string m_BackCoolBarSSName
 
double m_BackCoolBarSSThick
 
double m_BackCoolBarThick
 
std::string m_BackCoolBarWaMat
 
std::string m_BackCoolBarWaName
 
double m_BackCoolBarWaThick
 
double m_BackCoolBarWidth
 
double m_BackCoolHere
 
std::string m_BackCoolMat
 
double m_BackCoolTankHere
 
std::string m_BackCoolTankMat
 
std::string m_BackCoolTankName
 
double m_BackCoolTankThick
 
std::string m_BackCoolTankWaMat
 
std::string m_BackCoolTankWaName
 
double m_BackCoolTankWaWidth
 
double m_BackCoolTankWidth
 
double m_BackCoolVFEHere
 
std::string m_BackCoolVFEMat
 
std::string m_BackCoolVFEName
 
double m_BackHere
 
double m_BackMiscHere
 
double m_BackPipeHere
 
std::string m_BackPipeMat
 
std::string m_BackPipeName
 
std::string m_BackPipeWaterMat
 
std::string m_BackPlate2Mat
 
std::string m_BackPlate2Name
 
double m_BackPlate2Thick
 
double m_BackPlateHere
 
double m_BackPlateLength
 
std::string m_BackPlateMat
 
std::string m_BackPlateName
 
double m_BackPlateThick
 
double m_BackPlateWidth
 
double m_BackSideAngle
 
double m_BackSideHeight
 
double m_BackSideHere
 
double m_BackSideLength
 
std::string m_BackSideMat
 
std::string m_BackSideName
 
double m_BackSideWidth
 
double m_BackSideYOff1
 
double m_BackSideYOff2
 
std::string m_BackVFEMat
 
std::string m_BackVFEName
 
double m_BackXOff
 
double m_BackYOff
 
double m_BarHere
 
std::string m_BarMat
 
std::string m_BarName
 
double m_BarPhiHi
 
double m_BarPhiLo
 
double m_ClrFrAlv
 
std::string m_ClrMat
 
std::string m_ClrName
 
double m_ClrReAlv
 
double m_ClrThAlv
 
std::string m_CryMat
 
std::string m_CryName
 
double m_DryAirTubeHere
 
double m_DryAirTubeInnDiam
 
std::string m_DryAirTubeMat
 
std::string m_DryAirTubeName
 
double m_DryAirTubeOutDiam
 
double m_FawDelPhi
 
double m_FawHere
 
std::string m_FawName
 
double m_FawPhiOff
 
double m_FawPhiRot
 
double m_FawRadOff
 
double m_GrEdgeSlotHeight
 
double m_GrEdgeSlotHere
 
std::string m_GrEdgeSlotMat
 
std::string m_GrEdgeSlotName
 
double m_GrEdgeSlotWidth
 
double m_GridHere
 
std::string m_GridMat
 
std::string m_GridName
 
double m_GridThick
 
double m_GrilleHere
 
std::string m_GrilleMat
 
std::string m_GrilleName
 
double m_GrilleThick
 
double m_GrilleWidth
 
double m_GrilleZSpace
 
double m_GrMidSlotHere
 
std::string m_GrMidSlotMat
 
std::string m_GrMidSlotName
 
double m_GrMidSlotWidth
 
double m_GrMidSlotXOff
 
double m_HawRCutDelY
 
double m_HawRCutY
 
double m_HawRCutZ
 
double m_HawRHBIG
 
double m_HawRhsml
 
std::string m_HawRName
 
double m_HawYOffCry
 
std::string m_idNameSpace
 
double m_IlyBndlLength
 
std::string m_IlyBndlMat
 
std::string m_IlyBndlName
 
double m_IlyBndlOff
 
double m_IlyDelPhi
 
double m_IlyDiffLength
 
std::string m_IlyDiffMat
 
std::string m_IlyDiffName
 
double m_IlyDiffOff
 
double m_IlyFanOutHeight
 
double m_IlyFanOutHere
 
double m_IlyFanOutLength
 
std::string m_IlyFanOutMat
 
std::string m_IlyFanOutName
 
double m_IlyFanOutWidth
 
double m_IlyFEMHeight
 
double m_IlyFEMLength
 
std::string m_IlyFEMMat
 
std::string m_IlyFEMName
 
double m_IlyFEMWidth
 
double m_IlyHere
 
std::string m_IlyName
 
double m_IlyPhiLow
 
double m_IlyPipeHere
 
double m_IlyPipeID
 
std::string m_IlyPipeMat
 
std::string m_IlyPipeName
 
double m_IlyPipeOD
 
double m_IlyPTMHeight
 
double m_IlyPTMHere
 
double m_IlyPTMLength
 
std::string m_IlyPTMMat
 
std::string m_IlyPTMName
 
double m_IlyPTMWidth
 
double m_MBCoolTubeHere
 
double m_MBCoolTubeInnDiam
 
std::string m_MBCoolTubeMat
 
std::string m_MBCoolTubeName
 
unsigned int m_MBCoolTubeNum
 
double m_MBCoolTubeOutDiam
 
double m_MBLyrHere
 
double m_MBManifHere
 
double m_MBManifInnDiam
 
std::string m_MBManifMat
 
std::string m_MBManifName
 
double m_MBManifOutDiam
 
unsigned int m_NCryPerAlvEta
 
unsigned int m_NCryTypes
 
unsigned int m_NFawPerSupm
 
double m_NomCryDimAF
 
double m_NomCryDimLZ
 
double m_PatchPanelHere
 
std::string m_PatchPanelName
 
double m_PincerBlkLength
 
std::string m_PincerBlkMat
 
std::string m_PincerBlkName
 
double m_PincerCutHeight
 
std::string m_PincerCutMat
 
std::string m_PincerCutName
 
double m_PincerCutWidth
 
double m_PincerEnvHeight
 
double m_PincerEnvLength
 
std::string m_PincerEnvMat
 
std::string m_PincerEnvName
 
double m_PincerEnvWidth
 
double m_PincerRodHere
 
std::string m_PincerRodMat
 
std::string m_PincerRodName
 
std::string m_PincerShim1Name
 
double m_PincerShim1Width
 
std::string m_PincerShim2Name
 
double m_PincerShim2Width
 
double m_PincerShimHeight
 
std::string m_PincerShimMat
 
std::string m_SpmCutName
 
double m_SpmCutRM
 
double m_SpmCutRP
 
int m_SpmCutShow
 
double m_SpmCutThick
 
double m_SpmDelPhi
 
double m_SpmExpThick
 
double m_SpmExpWide
 
double m_SpmExpYOff
 
double m_SpmLowPhi
 
std::string m_SpmMat
 
std::string m_SpmName
 
unsigned int m_SpmNPerHalf
 
double m_SpmPhiOff
 
double m_SpmSideHigh
 
std::string m_SpmSideMat
 
std::string m_SpmSideName
 
double m_SpmSideThick
 
double m_SpmSideYOffM
 
double m_SpmSideYOffP
 
double m_UnderAF
 
double m_UnderAR
 
double m_UnderBF
 
double m_UnderBR
 
double m_UnderCF
 
double m_UnderCR
 
double m_UnderLZ
 
std::vector< std::string > m_vecBackCoolName
 
std::vector< double > m_vecBackCoolNPerSec
 
std::vector< double > m_vecBackCoolNSec
 
std::vector< double > m_vecBackCoolSecSep
 
std::vector< std::string > m_vecBackMiscMat
 
std::vector< std::string > m_vecBackMiscName
 
std::vector< double > m_vecBackMiscThick
 
std::vector< double > m_vecBackPipeDiam
 
std::vector< double > m_vecBackPipeThick
 
std::vector< std::string > m_vecBackVFELyrMat
 
std::vector< std::string > m_vecBackVFELyrName
 
std::vector< double > m_vecBackVFELyrThick
 
std::vector< double > m_vecBarRMax
 
std::vector< double > m_vecBarRMin
 
std::vector< double > m_vecBarRota
 
std::vector< double > m_vecBarRota2
 
std::vector< double > m_vecBarRota3
 
std::vector< double > m_vecBarTran
 
std::vector< double > m_vecBarZPts
 
std::vector< double > m_vecGapAlvEta
 
std::vector< double > m_vecGrilleHeight
 
std::vector< double > m_vecGrilleZOff
 
std::vector< double > m_vecGrMidSlotHeight
 
std::vector< double > m_vecIlyFanOutPhi
 
std::vector< double > m_vecIlyFanOutZ
 
std::vector< double > m_vecIlyFEMPhi
 
std::vector< double > m_vecIlyFEMZ
 
std::vector< std::string > m_vecIlyMat
 
std::vector< double > m_vecIlyPipeLength
 
std::vector< double > m_vecIlyPipePhi
 
std::vector< double > m_vecIlyPipeType
 
std::vector< double > m_vecIlyPipeZ
 
std::vector< double > m_vecIlyPTMPhi
 
std::vector< double > m_vecIlyPTMZ
 
std::vector< double > m_vecIlyThick
 
std::vector< std::string > m_vecMBLyrMat
 
std::vector< std::string > m_vecMBLyrName
 
std::vector< double > m_vecMBLyrThick
 
std::vector< double > m_vecNomCryDimAR
 
std::vector< double > m_vecNomCryDimBF
 
std::vector< double > m_vecNomCryDimBR
 
std::vector< double > m_vecNomCryDimCF
 
std::vector< double > m_vecNomCryDimCR
 
std::vector< std::string > m_vecPatchPanelMat
 
std::vector< std::string > m_vecPatchPanelNames
 
std::vector< double > m_vecPatchPanelThick
 
std::vector< double > m_vecPincerEnvZOff
 
std::vector< double > m_vecPincerRodAzimuth
 
std::vector< double > m_vecSpmBRota
 
std::vector< double > m_vecSpmBTran
 
std::vector< double > m_vecSpmCutTM
 
std::vector< double > m_vecSpmCutTP
 
std::vector< double > m_vecSpmHere
 
std::vector< double > m_vecSpmRMax
 
std::vector< double > m_vecSpmRMin
 
std::vector< double > m_vecSpmRota
 
std::vector< double > m_vecSpmTran
 
std::vector< double > m_vecSpmZPts
 
std::vector< double > m_vecWebClrTh
 
std::vector< double > m_vecWebLength
 
std::vector< double > m_vecWebPlTh
 
double m_WallFrAlv
 
std::string m_WallMat
 
std::string m_WallName
 
double m_WallReAlv
 
double m_WallThAlv
 
std::string m_WebClrMat
 
std::string m_WebClrName
 
double m_WebHere
 
std::string m_WebPlMat
 
std::string m_WebPlName
 
double m_WrapFrAlv
 
std::string m_WrapMat
 
std::string m_WrapName
 
double m_WrapReAlv
 
double m_WrapThAlv
 

Detailed Description

Definition at line 16 of file DDEcalBarrelAlgo.h.

Member Typedef Documentation

Definition at line 20 of file DDEcalBarrelAlgo.h.

typedef HepGeom::ReflectZ3D DDEcalBarrelAlgo::RfZ3D

Definition at line 22 of file DDEcalBarrelAlgo.h.

typedef HepGeom::Rotate3D DDEcalBarrelAlgo::Ro3D

Definition at line 24 of file DDEcalBarrelAlgo.h.

typedef CLHEP::HepRotation DDEcalBarrelAlgo::Rota

Definition at line 30 of file DDEcalBarrelAlgo.h.

typedef HepGeom::RotateX3D DDEcalBarrelAlgo::RoX3D

Definition at line 27 of file DDEcalBarrelAlgo.h.

typedef HepGeom::RotateY3D DDEcalBarrelAlgo::RoY3D

Definition at line 26 of file DDEcalBarrelAlgo.h.

typedef HepGeom::RotateZ3D DDEcalBarrelAlgo::RoZ3D

Definition at line 25 of file DDEcalBarrelAlgo.h.

typedef HepGeom::Transform3D DDEcalBarrelAlgo::Tf3D

Definition at line 21 of file DDEcalBarrelAlgo.h.

typedef HepGeom::Translate3D DDEcalBarrelAlgo::Tl3D

Definition at line 23 of file DDEcalBarrelAlgo.h.

Definition at line 19 of file DDEcalBarrelAlgo.h.

typedef CLHEP::Hep3Vector DDEcalBarrelAlgo::Vec3

Definition at line 29 of file DDEcalBarrelAlgo.h.

Constructor & Destructor Documentation

DDEcalBarrelAlgo::DDEcalBarrelAlgo ( )

Definition at line 24 of file DDEcalBarrelAlgo.cc.

References LogDebug.

24  :
25  m_idNameSpace ( "" ),
26  m_BarName ( "" ),
27  m_BarMat ( "" ),
28  m_vecBarZPts ( ),
29  m_vecBarRMin ( ),
30  m_vecBarRMax ( ),
31  m_vecBarTran ( ),
32  m_vecBarRota ( ),
33  m_vecBarRota2 ( ),
34  m_vecBarRota3 ( ),
35  m_BarPhiLo (0),
36  m_BarPhiHi (0),
37  m_BarHere (0),
38  m_SpmName (""),
39  m_SpmMat (""),
40  m_vecSpmZPts (),
41  m_vecSpmRMin (),
42  m_vecSpmRMax (),
43  m_vecSpmTran (),
44  m_vecSpmRota (),
45  m_vecSpmBTran (),
46  m_vecSpmBRota (),
47  m_SpmNPerHalf (0),
48  m_SpmLowPhi (0),
49  m_SpmDelPhi (0),
50  m_SpmPhiOff (0),
51  m_vecSpmHere (),
52  m_SpmCutName (""),
53  m_SpmCutThick (0),
54  m_SpmCutShow (0),
55  m_vecSpmCutTM (),
56  m_vecSpmCutTP (),
57  m_SpmCutRM (0),
58  m_SpmCutRP (0),
59  m_SpmExpThick (0),
60  m_SpmExpWide (0),
61  m_SpmExpYOff (0),
62  m_SpmSideName (""),
63  m_SpmSideMat (""),
64  m_SpmSideHigh (0),
65  m_SpmSideThick (0),
66  m_SpmSideYOffM (0),
67  m_SpmSideYOffP (0),
68  m_NomCryDimAF (0),
69  m_NomCryDimLZ (0),
75  m_UnderAF (0),
76  m_UnderLZ (0),
77  m_UnderBF (0),
78  m_UnderCF (0),
79  m_UnderAR (0),
80  m_UnderBR (0),
81  m_UnderCR (0),
82  m_WallThAlv (0),
83  m_WrapThAlv (0),
84  m_ClrThAlv (0),
85  m_vecGapAlvEta (),
86  m_WallFrAlv (0),
87  m_WrapFrAlv (0),
88  m_ClrFrAlv (0),
89  m_WallReAlv (0),
90  m_WrapReAlv (0),
91  m_ClrReAlv (0),
92  m_NCryTypes (0),
93  m_NCryPerAlvEta (0),
94  m_CryName (""),
95  m_ClrName (""),
96  m_WrapName (""),
97  m_WallName (""),
98  m_CryMat (""),
99  m_ClrMat (""),
100  m_WrapMat (""),
101  m_WallMat (""),
102 
103  m_APDName (""),
104  m_APDHere (0),
105  m_APDMat (""),
106  m_APDSide (0),
107  m_APDThick (0),
108  m_APDZ (0),
109  m_APDX1 (0),
110  m_APDX2 (0),
111 
112  m_WebHere (0),
113  m_WebPlName (""),
114  m_WebClrName (""),
115  m_WebPlMat (""),
116  m_WebClrMat (""),
117  m_vecWebPlTh (),
118  m_vecWebClrTh (),
119  m_vecWebLength (),
120  m_IlyHere (0),
121  m_IlyName (),
122  m_IlyPhiLow (0),
123  m_IlyDelPhi (0),
124  m_vecIlyMat (),
125  m_vecIlyThick (),
126  m_IlyPipeName (""),
127  m_IlyPipeHere (0),
128  m_IlyPipeMat (""),
129  m_IlyPipeOD (0),
130  m_IlyPipeID (0),
132  m_vecIlyPipeType (),
133  m_vecIlyPipePhi (),
134  m_vecIlyPipeZ (),
135  m_IlyPTMName (""),
136  m_IlyPTMHere (0),
137  m_IlyPTMMat (""),
138  m_IlyPTMWidth (0),
139  m_IlyPTMLength (0),
140  m_IlyPTMHeight (0),
141  m_vecIlyPTMZ (),
142  m_vecIlyPTMPhi (),
143  m_IlyFanOutName (""),
144  m_IlyFanOutHere (0),
145  m_IlyFanOutMat (""),
146  m_IlyFanOutWidth (0),
149  m_vecIlyFanOutZ (),
151  m_IlyDiffName (""),
152  m_IlyDiffMat (""),
153  m_IlyDiffOff (0),
154  m_IlyDiffLength (0),
155  m_IlyBndlName (""),
156  m_IlyBndlMat (""),
157  m_IlyBndlOff (0),
158  m_IlyBndlLength (0),
159  m_IlyFEMName (""),
160  m_IlyFEMMat (""),
161  m_IlyFEMWidth (0),
162  m_IlyFEMLength (0),
163  m_IlyFEMHeight (0),
164  m_vecIlyFEMZ (),
165  m_vecIlyFEMPhi (),
166  m_HawRName (""),
167  m_FawName (""),
168  m_FawHere (0),
169  m_HawRHBIG (0),
170  m_HawRhsml (0),
171  m_HawRCutY (0),
172  m_HawRCutZ (0),
173  m_HawRCutDelY (0),
174  m_HawYOffCry (0),
175  m_NFawPerSupm (0),
176  m_FawPhiOff (0),
177  m_FawDelPhi (0),
178  m_FawPhiRot (0),
179  m_FawRadOff (0),
180  m_GridHere (0),
181  m_GridName (""),
182  m_GridMat (""),
183  m_GridThick (0),
184  m_BackXOff (0),
185  m_BackYOff (0),
186  m_BackHere (0),
187  m_BackSideName (""),
188  m_BackSideHere (0),
189  m_BackSideLength (0),
190  m_BackSideHeight (0),
191  m_BackSideWidth (0),
192  m_BackSideYOff1 (0),
193  m_BackSideYOff2 (0),
194  m_BackSideAngle (0),
195  m_BackSideMat (""),
196  m_BackPlateName (""),
197  m_BackPlateHere (0),
198  m_BackPlateLength (0),
199  m_BackPlateThick (0),
200  m_BackPlateWidth (0),
201  m_BackPlateMat (""),
202  m_BackPlate2Name (""),
203  m_BackPlate2Thick (0),
204  m_BackPlate2Mat (""),
205  m_GrilleName (""),
206  m_GrilleHere (0),
207  m_GrilleThick (0),
208  m_GrilleWidth (0),
209  m_GrilleZSpace (0),
210  m_GrilleMat (""),
212  m_vecGrilleZOff (),
213  m_GrEdgeSlotName (""),
214  m_GrEdgeSlotMat (""),
215  m_GrEdgeSlotHere (0),
216  m_GrEdgeSlotHeight (0),
217  m_GrEdgeSlotWidth (0),
218  m_GrMidSlotName (""),
219  m_GrMidSlotMat (""),
220  m_GrMidSlotHere (0),
221  m_GrMidSlotWidth (0),
222  m_GrMidSlotXOff (0),
224  m_BackPipeHere (0),
225  m_BackPipeName (""),
228  m_BackPipeMat (""),
229  m_BackPipeWaterMat (""),
230 
232  m_BackCoolHere (0),
233  m_BackCoolBarHere (0),
234  m_BackCoolBarWidth (0),
236  m_BackCoolMat (""),
237  m_BackCoolBarName (""),
238  m_BackCoolBarThick (0),
239  m_BackCoolBarMat (""),
240  m_BackCoolBarSSName (""),
242  m_BackCoolBarSSMat (""),
243  m_BackCoolBarWaName (""),
245  m_BackCoolBarWaMat (""),
246  m_BackCoolVFEHere (0),
247  m_BackCoolVFEName (""),
248  m_BackCoolVFEMat (""),
249  m_BackVFEName (""),
250  m_BackVFEMat (""),
257 
258  m_BackMiscHere (0),
261  m_vecBackMiscMat (),
262  m_BackCBStdSep (0),
263  m_PatchPanelHere (0),
264  m_PatchPanelName (""),
268  m_BackCoolTankHere (0),
269  m_BackCoolTankName (""),
272  m_BackCoolTankMat (""),
275  m_BackCoolTankWaMat (""),
276  m_BackBracketName (""),
278  m_BackBracketMat (""),
279 
280  m_DryAirTubeHere (0),
281  m_DryAirTubeName (""),
282  m_MBCoolTubeNum (0),
285  m_DryAirTubeMat (""),
286  m_MBCoolTubeHere (0),
287  m_MBCoolTubeName (""),
290  m_MBCoolTubeMat (""),
291  m_MBManifHere (0),
292  m_MBManifName (""),
293  m_MBManifInnDiam (0),
294  m_MBManifOutDiam (0),
295  m_MBManifMat (""),
296  m_MBLyrHere (0),
297  m_vecMBLyrThick (0),
298  m_vecMBLyrName (),
299  m_vecMBLyrMat (),
300 
301 
302  m_PincerRodHere (0),
303  m_PincerRodName (""),
304  m_PincerRodMat (""),
306  m_PincerEnvName (""),
307  m_PincerEnvMat (""),
308  m_PincerEnvWidth (0),
309  m_PincerEnvHeight (0),
310  m_PincerEnvLength (0),
312  m_PincerBlkName (""),
313  m_PincerBlkMat (""),
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 (""),
322  m_PincerCutMat (""),
323  m_PincerCutWidth (0),
325 
326 {
327  LogDebug("EcalGeom") << "DDEcalBarrelAlgo info: Creating an instance" ;
328 }
#define LogDebug(id)
std::vector< double > m_vecSpmBRota
std::string m_IlyBndlMat
unsigned int m_MBCoolTubeNum
std::string m_BackCoolTankMat
std::string m_GridName
std::string m_SpmSideMat
unsigned int m_SpmNPerHalf
std::string m_WebPlName
std::string m_BackVFEName
std::string m_SpmName
std::string m_BackCoolTankWaName
std::vector< double > m_vecIlyPipeLength
std::string m_APDName
std::string m_BackPipeMat
std::vector< double > m_vecIlyFanOutPhi
std::string m_IlyDiffName
std::string m_IlyFanOutName
std::vector< double > m_vecWebLength
std::string m_DryAirTubeMat
std::string m_BarName
std::string m_BackCoolBarSSName
std::vector< double > m_vecSpmZPts
std::vector< std::string > m_vecPatchPanelMat
std::vector< double > m_vecBarZPts
std::vector< double > m_vecBackMiscThick
std::string m_PincerShim2Name
std::vector< double > m_vecSpmRMin
std::vector< double > m_vecGrilleZOff
std::string m_CryName
std::string m_BackPipeWaterMat
std::string m_BarMat
std::string m_PincerShim1Name
std::vector< double > m_vecGrilleHeight
std::string m_SpmSideName
std::vector< std::string > m_vecBackVFELyrMat
std::vector< double > m_vecIlyFEMPhi
std::string m_BackSideName
std::string m_WrapName
std::string m_WallName
std::string m_WebPlMat
std::string m_IlyFEMMat
std::string m_FawName
std::string m_PincerRodMat
std::vector< double > m_vecBarRMax
std::string m_WallMat
std::string m_PincerCutMat
std::string m_ClrMat
std::string m_GrEdgeSlotMat
std::vector< double > m_vecSpmTran
std::vector< double > m_vecIlyPTMZ
std::string m_BackPlate2Name
unsigned int m_NFawPerSupm
std::vector< double > m_vecBarRota2
std::string m_BackPipeName
std::string m_idNameSpace
std::string m_IlyFanOutMat
std::string m_PincerShimMat
std::vector< double > m_vecBackCoolNPerSec
std::vector< double > m_vecSpmCutTM
std::vector< double > m_vecWebClrTh
std::string m_ClrName
std::string m_GrMidSlotMat
unsigned int m_NCryPerAlvEta
std::vector< double > m_vecBarRota
std::vector< double > m_vecBackCoolNSec
std::vector< double > m_vecNomCryDimCR
std::string m_IlyName
std::vector< double > m_vecPatchPanelThick
std::string m_BackPlate2Mat
std::string m_IlyDiffMat
std::vector< double > m_vecNomCryDimAR
unsigned int m_NCryTypes
std::vector< std::string > m_vecIlyMat
std::string m_IlyPTMMat
std::vector< double > m_vecBackPipeThick
std::string m_IlyPipeName
std::string m_MBCoolTubeMat
std::string m_IlyPTMName
std::vector< double > m_vecPincerRodAzimuth
std::string m_IlyFEMName
std::vector< std::string > m_vecMBLyrMat
std::vector< double > m_vecIlyThick
std::vector< double > m_vecIlyPipePhi
std::string m_BackPlateMat
std::string m_PincerCutName
std::string m_MBCoolTubeName
std::string m_BackCoolVFEName
std::vector< std::string > m_vecBackVFELyrName
std::vector< double > m_vecPincerEnvZOff
std::string m_PincerEnvName
std::vector< double > m_vecBackVFELyrThick
std::string m_BackCoolTankWaMat
std::vector< double > m_vecBackCoolSecSep
std::vector< double > m_vecNomCryDimBF
std::string m_BackBracketName
std::string m_BackCoolMat
std::string m_PincerRodName
std::string m_GrilleMat
std::string m_BackCoolTankName
std::string m_BackCoolBarSSMat
std::string m_BackCoolBarName
std::vector< double > m_vecBarRMin
std::string m_GrilleName
std::vector< double > m_vecNomCryDimBR
std::vector< double > m_vecNomCryDimCF
std::vector< std::string > m_vecBackMiscMat
std::vector< std::string > m_vecMBLyrName
std::vector< double > m_vecIlyFanOutZ
std::vector< double > m_vecIlyPipeZ
std::vector< double > m_vecSpmCutTP
std::string m_PincerBlkMat
std::vector< std::string > m_vecPatchPanelNames
std::vector< double > m_vecSpmRMax
std::vector< double > m_vecSpmBTran
std::string m_SpmCutName
std::vector< double > m_vecIlyPTMPhi
std::string m_GrEdgeSlotName
std::string m_PincerBlkName
std::string m_BackCoolBarWaMat
std::string m_IlyBndlName
std::string m_CryMat
std::string m_BackPlateName
std::vector< double > m_vecIlyPipeType
std::vector< double > m_vecGapAlvEta
std::string m_HawRName
std::string m_PincerEnvMat
std::vector< double > m_vecWebPlTh
std::string m_GridMat
std::string m_BackCoolVFEMat
std::string m_WebClrName
std::vector< double > m_vecMBLyrThick
std::string m_MBManifMat
std::vector< double > m_vecGrMidSlotHeight
std::string m_BackVFEMat
std::string m_BackCoolBarMat
std::string m_BackSideMat
std::vector< double > m_vecIlyFEMZ
std::string m_APDMat
std::string m_MBManifName
std::string m_GrMidSlotName
std::vector< std::string > m_vecBackMiscName
std::string m_PatchPanelName
std::string m_DryAirTubeName
std::string m_BackCoolBarWaName
std::vector< double > m_vecSpmRota
std::vector< double > m_vecBackPipeDiam
std::vector< double > m_vecSpmHere
std::string m_BackBracketMat
std::vector< double > m_vecBarRota3
std::vector< double > m_vecBarTran
std::string m_SpmMat
std::string m_IlyPipeMat
std::string m_WrapMat
std::vector< std::string > m_vecBackCoolName
std::string m_WebClrMat
DDEcalBarrelAlgo::~DDEcalBarrelAlgo ( )
override

Definition at line 330 of file DDEcalBarrelAlgo.cc.

330 {}

Member Function Documentation

double DDEcalBarrelAlgo::apdHere ( ) const
inline

Definition at line 140 of file DDEcalBarrelAlgo.h.

References m_APDHere.

Referenced by execute().

140 { return m_APDHere ; }
DDMaterial DDEcalBarrelAlgo::apdMat ( ) const
inline

Definition at line 141 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_APDMat.

Referenced by execute().

141 { return ddmat(m_APDMat) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_APDMat
DDName DDEcalBarrelAlgo::apdName ( ) const
inline

Definition at line 139 of file DDEcalBarrelAlgo.h.

References ddname(), and m_APDName.

Referenced by execute().

139 { return ddname(m_APDName) ; }
std::string m_APDName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::apdSide ( ) const
inline

Definition at line 142 of file DDEcalBarrelAlgo.h.

References m_APDSide.

Referenced by execute().

142 { return m_APDSide ; }
double DDEcalBarrelAlgo::apdThick ( ) const
inline

Definition at line 143 of file DDEcalBarrelAlgo.h.

References m_APDThick.

Referenced by execute().

143 { return m_APDThick; }
double DDEcalBarrelAlgo::apdX1 ( ) const
inline

Definition at line 145 of file DDEcalBarrelAlgo.h.

References m_APDX1.

Referenced by execute().

145 { return m_APDX1 ; }
double DDEcalBarrelAlgo::apdX2 ( ) const
inline

Definition at line 146 of file DDEcalBarrelAlgo.h.

References m_APDX2.

Referenced by execute().

146 { return m_APDX2 ; }
double DDEcalBarrelAlgo::apdZ ( ) const
inline

Definition at line 144 of file DDEcalBarrelAlgo.h.

References m_APDZ.

Referenced by execute().

144 { return m_APDZ ; }
double DDEcalBarrelAlgo::backBracketHeight ( ) const
inline

Definition at line 327 of file DDEcalBarrelAlgo.h.

References m_BackBracketHeight.

Referenced by execute().

327 { return m_BackBracketHeight ;}
DDMaterial DDEcalBarrelAlgo::backBracketMat ( ) const
inline

Definition at line 328 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackBracketMat.

Referenced by execute().

328 { return ddmat(m_BackBracketMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackBracketMat
const std::string& DDEcalBarrelAlgo::backBracketName ( ) const
inline

Definition at line 326 of file DDEcalBarrelAlgo.h.

References m_BackBracketName.

Referenced by execute().

326 { return m_BackBracketName ;}
std::string m_BackBracketName
double DDEcalBarrelAlgo::backCBStdSep ( ) const
inline

Definition at line 316 of file DDEcalBarrelAlgo.h.

References m_BackCBStdSep.

Referenced by execute().

316 { return m_BackCBStdSep ;}
double DDEcalBarrelAlgo::backCoolBarHeight ( ) const
inline

Definition at line 293 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarHeight.

Referenced by execute().

293 { return m_BackCoolBarHeight ;}
double DDEcalBarrelAlgo::backCoolBarHere ( ) const
inline

Definition at line 295 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarHere.

Referenced by execute().

295 { return m_BackCoolBarHere ; }
DDMaterial DDEcalBarrelAlgo::backCoolBarMat ( ) const
inline

Definition at line 298 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolBarMat.

Referenced by execute().

298 { return ddmat(m_BackCoolBarMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolBarMat
DDName DDEcalBarrelAlgo::backCoolBarName ( ) const
inline

Definition at line 296 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackCoolBarName.

Referenced by execute().

296 { return ddname(m_BackCoolBarName);}
std::string m_BackCoolBarName
DDName ddname(const std::string &s) const
DDMaterial DDEcalBarrelAlgo::backCoolBarSSMat ( ) const
inline

Definition at line 301 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolBarSSMat.

Referenced by execute().

301 { return ddmat(m_BackCoolBarSSMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolBarSSMat
DDName DDEcalBarrelAlgo::backCoolBarSSName ( ) const
inline

Definition at line 299 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackCoolBarSSName.

Referenced by execute().

299 { return ddname(m_BackCoolBarSSName);}
std::string m_BackCoolBarSSName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backCoolBarSSThick ( ) const
inline

Definition at line 300 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarSSThick.

Referenced by execute().

300 { return m_BackCoolBarSSThick ;}
double DDEcalBarrelAlgo::backCoolBarThick ( ) const
inline

Definition at line 297 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarThick.

Referenced by execute().

297 { return m_BackCoolBarThick ;}
DDMaterial DDEcalBarrelAlgo::backCoolBarWaMat ( ) const
inline

Definition at line 304 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolBarWaMat.

Referenced by execute().

304 { return ddmat(m_BackCoolBarWaMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolBarWaMat
DDName DDEcalBarrelAlgo::backCoolBarWaName ( ) const
inline

Definition at line 302 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackCoolBarWaName.

Referenced by execute().

302 { return ddname(m_BackCoolBarWaName);}
DDName ddname(const std::string &s) const
std::string m_BackCoolBarWaName
double DDEcalBarrelAlgo::backCoolBarWaThick ( ) const
inline

Definition at line 303 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarWaThick.

Referenced by execute().

303 { return m_BackCoolBarWaThick ;}
double DDEcalBarrelAlgo::backCoolBarWidth ( ) const
inline

Definition at line 292 of file DDEcalBarrelAlgo.h.

References m_BackCoolBarWidth.

Referenced by execute().

292 { return m_BackCoolBarWidth ;}
double DDEcalBarrelAlgo::backCoolHere ( ) const
inline

Definition at line 291 of file DDEcalBarrelAlgo.h.

References m_BackCoolHere.

Referenced by execute().

291 { return m_BackCoolHere ; }
DDMaterial DDEcalBarrelAlgo::backCoolMat ( ) const
inline

Definition at line 294 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolMat.

294 { return ddmat(m_BackCoolMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolMat
double DDEcalBarrelAlgo::backCoolTankHere ( ) const
inline

Definition at line 318 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankHere.

Referenced by execute().

318 { return m_BackCoolTankHere ; }
DDMaterial DDEcalBarrelAlgo::backCoolTankMat ( ) const
inline

Definition at line 322 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolTankMat.

Referenced by execute().

322 { return ddmat(m_BackCoolTankMat) ;}
std::string m_BackCoolTankMat
DDMaterial ddmat(const std::string &s) const
const std::string& DDEcalBarrelAlgo::backCoolTankName ( ) const
inline

Definition at line 319 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankName.

Referenced by execute().

319 { return m_BackCoolTankName ;}
std::string m_BackCoolTankName
double DDEcalBarrelAlgo::backCoolTankThick ( ) const
inline

Definition at line 321 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankThick.

Referenced by execute().

321 { return m_BackCoolTankThick ;}
DDMaterial DDEcalBarrelAlgo::backCoolTankWaMat ( ) const
inline

Definition at line 325 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolTankWaMat.

Referenced by execute().

325 { return ddmat(m_BackCoolTankWaMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolTankWaMat
const std::string& DDEcalBarrelAlgo::backCoolTankWaName ( ) const
inline

Definition at line 323 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankWaName.

Referenced by execute().

323 { return m_BackCoolTankWaName ;}
std::string m_BackCoolTankWaName
double DDEcalBarrelAlgo::backCoolTankWaWidth ( ) const
inline

Definition at line 324 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankWaWidth.

Referenced by execute().

324 { return m_BackCoolTankWaWidth;}
double DDEcalBarrelAlgo::backCoolTankWidth ( ) const
inline

Definition at line 320 of file DDEcalBarrelAlgo.h.

References m_BackCoolTankWidth.

Referenced by execute().

320 { return m_BackCoolTankWidth ;}
double DDEcalBarrelAlgo::backCoolVFEHere ( ) const
inline

Definition at line 305 of file DDEcalBarrelAlgo.h.

References m_BackCoolVFEHere.

Referenced by execute().

305 { return m_BackCoolVFEHere ; }
DDMaterial DDEcalBarrelAlgo::backCoolVFEMat ( ) const
inline

Definition at line 307 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackCoolVFEMat.

Referenced by execute().

307 { return ddmat(m_BackCoolVFEMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackCoolVFEMat
DDName DDEcalBarrelAlgo::backCoolVFEName ( ) const
inline

Definition at line 306 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackCoolVFEName.

Referenced by execute().

306 { return ddname(m_BackCoolVFEName) ;}
std::string m_BackCoolVFEName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backHere ( ) const
inline

Definition at line 228 of file DDEcalBarrelAlgo.h.

References m_BackHere.

Referenced by execute().

228 { return m_BackHere ; }
double DDEcalBarrelAlgo::backMiscHere ( ) const
inline

Definition at line 276 of file DDEcalBarrelAlgo.h.

References m_BackMiscHere.

Referenced by execute().

276 { return m_BackMiscHere ; }
double DDEcalBarrelAlgo::backPipeHere ( ) const
inline

Definition at line 270 of file DDEcalBarrelAlgo.h.

References m_BackPipeHere.

Referenced by execute().

270 { return m_BackPipeHere ; }
DDMaterial DDEcalBarrelAlgo::backPipeMat ( ) const
inline

Definition at line 274 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackPipeMat.

Referenced by execute().

274 { return ddmat( m_BackPipeMat ) ; }
std::string m_BackPipeMat
DDMaterial ddmat(const std::string &s) const
const std::string& DDEcalBarrelAlgo::backPipeName ( ) const
inline

Definition at line 271 of file DDEcalBarrelAlgo.h.

References m_BackPipeName.

Referenced by execute().

271 { return m_BackPipeName ; }
std::string m_BackPipeName
DDMaterial DDEcalBarrelAlgo::backPipeWaterMat ( ) const
inline

Definition at line 275 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackPipeWaterMat.

Referenced by execute().

275 { return ddmat( m_BackPipeWaterMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_BackPipeWaterMat
DDMaterial DDEcalBarrelAlgo::backPlate2Mat ( ) const
inline

Definition at line 248 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackPlate2Mat.

Referenced by execute().

248 { return ddmat( m_BackPlate2Mat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_BackPlate2Mat
DDName DDEcalBarrelAlgo::backPlate2Name ( ) const
inline

Definition at line 246 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackPlate2Name.

Referenced by execute().

246 { return ddname( m_BackPlate2Name ) ; }
std::string m_BackPlate2Name
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backPlate2Thick ( ) const
inline

Definition at line 247 of file DDEcalBarrelAlgo.h.

References m_BackPlate2Thick.

Referenced by execute().

247 { return m_BackPlate2Thick ; }
double DDEcalBarrelAlgo::backPlateHere ( ) const
inline

Definition at line 241 of file DDEcalBarrelAlgo.h.

References m_BackPlateHere.

Referenced by execute().

241 { return m_BackPlateHere ; }
double DDEcalBarrelAlgo::backPlateLength ( ) const
inline

Definition at line 242 of file DDEcalBarrelAlgo.h.

References m_BackPlateLength.

Referenced by execute().

242 { return m_BackPlateLength ; }
DDMaterial DDEcalBarrelAlgo::backPlateMat ( ) const
inline

Definition at line 245 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackPlateMat.

Referenced by execute().

245 { return ddmat( m_BackPlateMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_BackPlateMat
DDName DDEcalBarrelAlgo::backPlateName ( ) const
inline

Definition at line 240 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackPlateName.

Referenced by execute().

240 { return ddname( m_BackPlateName ) ; }
std::string m_BackPlateName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backPlateThick ( ) const
inline

Definition at line 243 of file DDEcalBarrelAlgo.h.

References m_BackPlateThick.

Referenced by execute().

243 { return m_BackPlateThick ; }
double DDEcalBarrelAlgo::backPlateWidth ( ) const
inline

Definition at line 244 of file DDEcalBarrelAlgo.h.

References m_BackPlateWidth.

Referenced by execute().

244 { return m_BackPlateWidth ; }
double DDEcalBarrelAlgo::backSideAngle ( ) const
inline

Definition at line 238 of file DDEcalBarrelAlgo.h.

References m_BackSideAngle.

Referenced by execute().

238 { return m_BackSideAngle ; }
double DDEcalBarrelAlgo::backSideHeight ( ) const
inline

Definition at line 234 of file DDEcalBarrelAlgo.h.

References m_BackSideHeight.

Referenced by execute().

234 { return m_BackSideHeight ; }
double DDEcalBarrelAlgo::backSideHere ( ) const
inline

Definition at line 232 of file DDEcalBarrelAlgo.h.

References m_BackSideHere.

Referenced by execute().

232 { return m_BackSideHere ; }
double DDEcalBarrelAlgo::backSideLength ( ) const
inline

Definition at line 233 of file DDEcalBarrelAlgo.h.

References m_BackSideLength.

Referenced by execute().

233 { return m_BackSideLength ; }
DDMaterial DDEcalBarrelAlgo::backSideMat ( ) const
inline

Definition at line 239 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackSideMat.

Referenced by execute().

239 { return ddmat( m_BackSideMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_BackSideMat
DDName DDEcalBarrelAlgo::backSideName ( ) const
inline

Definition at line 231 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackSideName.

Referenced by execute().

231 { return ddname( m_BackSideName ) ; }
std::string m_BackSideName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backSideWidth ( ) const
inline

Definition at line 235 of file DDEcalBarrelAlgo.h.

References m_BackSideWidth.

Referenced by execute().

235 { return m_BackSideWidth ; }
double DDEcalBarrelAlgo::backSideYOff1 ( ) const
inline

Definition at line 236 of file DDEcalBarrelAlgo.h.

References m_BackSideYOff1.

Referenced by execute().

236 { return m_BackSideYOff1 ; }
double DDEcalBarrelAlgo::backSideYOff2 ( ) const
inline

Definition at line 237 of file DDEcalBarrelAlgo.h.

References m_BackSideYOff2.

Referenced by execute().

237 { return m_BackSideYOff2 ; }
DDMaterial DDEcalBarrelAlgo::backVFEMat ( ) const
inline

Definition at line 309 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BackVFEMat.

Referenced by execute().

309 { return ddmat(m_BackVFEMat) ;}
DDMaterial ddmat(const std::string &s) const
std::string m_BackVFEMat
DDName DDEcalBarrelAlgo::backVFEName ( ) const
inline

Definition at line 308 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BackVFEName.

Referenced by execute().

308 { return ddname(m_BackVFEName) ;}
std::string m_BackVFEName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::backXOff ( ) const
inline

Definition at line 229 of file DDEcalBarrelAlgo.h.

References m_BackXOff.

Referenced by execute().

229 { return m_BackXOff ; }
double DDEcalBarrelAlgo::backYOff ( ) const
inline

Definition at line 230 of file DDEcalBarrelAlgo.h.

References m_BackYOff.

Referenced by execute().

230 { return m_BackYOff ; }
double DDEcalBarrelAlgo::barHere ( ) const
inline

Definition at line 64 of file DDEcalBarrelAlgo.h.

References m_BarHere.

Referenced by execute().

64 { return m_BarHere ; }
DDMaterial DDEcalBarrelAlgo::barMat ( ) const
inline

Definition at line 54 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_BarMat.

Referenced by execute().

54 { return ddmat( m_BarMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_BarMat
DDName DDEcalBarrelAlgo::barName ( ) const
inline

Definition at line 53 of file DDEcalBarrelAlgo.h.

References ddname(), and m_BarName.

Referenced by execute().

53 { return ddname( m_BarName ) ; }
std::string m_BarName
DDName ddname(const std::string &s) const
double DDEcalBarrelAlgo::barPhiHi ( ) const
inline

Definition at line 63 of file DDEcalBarrelAlgo.h.

References m_BarPhiHi.

Referenced by execute().

63 { return m_BarPhiHi ; }
double DDEcalBarrelAlgo::barPhiLo ( ) const
inline

Definition at line 62 of file DDEcalBarrelAlgo.h.

References m_BarPhiLo.

Referenced by execute().

62 { return m_BarPhiLo ; }
double DDEcalBarrelAlgo::clrFrAlv ( ) const
inline

Definition at line 120 of file DDEcalBarrelAlgo.h.

References m_ClrFrAlv.

Referenced by execute().

120 { return m_ClrFrAlv ; }
DDMaterial DDEcalBarrelAlgo::clrMat ( ) const
inline

Definition at line 135 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_ClrMat.

Referenced by execute().

135 { return ddmat( m_ClrMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_ClrMat
const std::string& DDEcalBarrelAlgo::clrName ( ) const
inline

Definition at line 130 of file DDEcalBarrelAlgo.h.

References m_ClrName.

Referenced by execute().

130 { return m_ClrName ; }
std::string m_ClrName
double DDEcalBarrelAlgo::clrReAlv ( ) const
inline

Definition at line 124 of file DDEcalBarrelAlgo.h.

References m_ClrReAlv.

Referenced by execute().

124 { return m_ClrReAlv ; }
double DDEcalBarrelAlgo::clrThAlv ( ) const
inline

Definition at line 115 of file DDEcalBarrelAlgo.h.

References m_ClrThAlv.

Referenced by execute().

115 { return m_ClrThAlv ; }
DDMaterial DDEcalBarrelAlgo::cryMat ( ) const
inline

Definition at line 134 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_CryMat.

Referenced by execute().

134 { return ddmat( m_CryMat ) ; }
DDMaterial ddmat(const std::string &s) const
std::string m_CryMat
const std::string& DDEcalBarrelAlgo::cryName ( ) const
inline

Definition at line 129 of file DDEcalBarrelAlgo.h.

References m_CryName.

Referenced by execute().

129 { return m_CryName ; }
std::string m_CryName
DDMaterial DDEcalBarrelAlgo::ddmat ( const std::string &  s) const
DDName DDEcalBarrelAlgo::ddname ( const std::string &  s) const

Definition at line 2671 of file DDEcalBarrelAlgo.cc.

References DDSplit(), m_idNameSpace, and groupFilesInBlocks::temp.

Referenced by apdName(), backCoolBarName(), backCoolBarSSName(), backCoolBarWaName(), backCoolVFEName(), backPlate2Name(), backPlateName(), backSideName(), backVFEName(), barName(), ddmat(), execute(), fawName(), grEdgeSlotName(), gridName(), hawRName(), ilyBndlName(), ilyDiffName(), ilyFanOutName(), ilyFEMName(), ilyPTMName(), mBManifName(), myrot(), mytrap(), patchPanelName(), pincerBlkName(), pincerCutName(), pincerEnvName(), pincerRodName(), pincerShim1Name(), pincerShim2Name(), spmCutName(), spmName(), and spmSideName().

2672 {
2673  const pair<std::string,std::string> temp ( DDSplit(s) ) ;
2674  if ( temp.second.empty() ) {
2675  return DDName( temp.first,
2676  m_idNameSpace ) ;
2677  } else {
2678  return DDName( temp.first, temp.second );
2679  }
2680 }
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
std::string m_idNameSpace
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = &#39;:&#39;
Definition: DDSplit.cc:3
double DDEcalBarrelAlgo::dryAirTubeHere ( ) const
inline

Definition at line 330 of file DDEcalBarrelAlgo.h.

References m_DryAirTubeHere.

Referenced by execute().

330 { return m_DryAirTubeHere ; }
double DDEcalBarrelAlgo::dryAirTubeInnDiam ( ) const
inline

Definition at line 333 of file DDEcalBarrelAlgo.h.

References m_DryAirTubeInnDiam.

Referenced by execute().

333 { return m_DryAirTubeInnDiam ;}
DDMaterial DDEcalBarrelAlgo::dryAirTubeMat ( ) const
inline

Definition at line 335 of file DDEcalBarrelAlgo.h.

References ddmat(), and m_DryAirTubeMat.

Referenced by execute().

335 { return ddmat(m_DryAirTubeMat) ;}
std::string m_DryAirTubeMat
DDMaterial ddmat(const std::string &s) const
const std::string& DDEcalBarrelAlgo::dryAirTubeName ( ) const
inline

Definition at line 331 of file DDEcalBarrelAlgo.h.

References m_DryAirTubeName.

Referenced by execute().

331 { return m_DryAirTubeName ;}
std::string m_DryAirTubeName
double DDEcalBarrelAlgo::dryAirTubeOutDiam ( ) const
inline

Definition at line 334 of file DDEcalBarrelAlgo.h.

References m_DryAirTubeOutDiam.

Referenced by execute().

334 { return m_DryAirTubeOutDiam ;}
void DDEcalBarrelAlgo::execute ( DDCompactView cpv)
override

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Back Cover Plate !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Back Cover Plate !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Back Side Plates !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Back Side Plates !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Mother Board Cooling Manifold Setup !!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Mother Board Cooling Manifold Setup !!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Loop over Grilles & MB Cooling Manifold !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Loop over Grilles & MB Cooling Manifold !!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Cooling Bar Setup !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Cooling Bar Setup !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin VFE Card Setup !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End VFE Card Setup !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Cooling Bar + VFE Setup !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Cooling Bar + VFE Setup !!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Placement of Readout & Cooling by Module !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Back Water Pipes !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Back Water Pipes !!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Placement of Cooling + VFE Cards !!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Placement of Cooling + VFE Cards !!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Placement of Readout & Cooling by Module !!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Patch Panel !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Patch Panel !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! Begin Pincers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!! End Pincers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Definition at line 674 of file DDEcalBarrelAlgo.cc.

References EcalTrapezoidParameters::a(), EcalTrapezoidParameters::A(), apdHere(), apdMat(), apdName(), apdSide(), apdThick(), apdX1(), apdX2(), apdZ(), EcalTrapezoidParameters::b(), backBracketHeight(), backBracketMat(), backBracketName(), backCBStdSep(), backCoolBarHeight(), backCoolBarHere(), backCoolBarMat(), backCoolBarName(), backCoolBarSSMat(), backCoolBarSSName(), backCoolBarSSThick(), backCoolBarThick(), backCoolBarWaMat(), backCoolBarWaName(), backCoolBarWaThick(), backCoolBarWidth(), backCoolHere(), backCoolTankHere(), backCoolTankMat(), backCoolTankName(), backCoolTankThick(), backCoolTankWaMat(), backCoolTankWaName(), backCoolTankWaWidth(), backCoolTankWidth(), backCoolVFEHere(), backCoolVFEMat(), backCoolVFEName(), backHere(), backMiscHere(), backPipeHere(), backPipeMat(), backPipeName(), backPipeWaterMat(), backPlate2Mat(), backPlate2Name(), backPlate2Thick(), backPlateHere(), backPlateLength(), backPlateMat(), backPlateName(), backPlateThick(), backPlateWidth(), backSideAngle(), backSideHeight(), backSideHere(), backSideLength(), backSideMat(), backSideName(), backSideWidth(), backSideYOff1(), backSideYOff2(), backVFEMat(), backVFEName(), backXOff(), backYOff(), barHere(), barMat(), barName(), barPhiHi(), barPhiLo(), pfBoostedDoubleSVAK8TagInfos_cfi::beta, EcalTrapezoidParameters::bl1(), reco::HaloData::both, DDSolidFactory::box(), clrFrAlv(), clrMat(), clrName(), clrReAlv(), clrThAlv(), funct::cos(), cryMat(), cryName(), ddmat(), ddname(), delta, dryAirTubeHere(), dryAirTubeInnDiam(), dryAirTubeMat(), dryAirTubeName(), dryAirTubeOutDiam(), EcalTrapezoidParameters::dz(), fawDelPhi(), fawHere(), fawName(), fawPhiOff(), fawPhiRot(), fawRadOff(), CustomPhysics_cfi::gamma, grEdgeSlotHeight(), grEdgeSlotHere(), grEdgeSlotMat(), grEdgeSlotName(), grEdgeSlotWidth(), gridHere(), gridMat(), gridName(), gridThick(), grilleHere(), grilleMat(), grilleName(), grilleThick(), grilleZSpace(), grMidSlotHere(), grMidSlotMat(), grMidSlotName(), grMidSlotWidth(), grMidSlotXOff(), EcalTrapezoidParameters::h(), EcalTrapezoidParameters::H(), EcalTrapezoidParameters::h1(), hawRCutDelY(), hawRCutY(), hawRCutZ(), hawRHBIG(), hawRhsml(), hawRName(), hawYOffCry(), ilyBndlLength(), ilyBndlMat(), ilyBndlName(), ilyBndlOff(), ilyDelPhi(), ilyDiffLength(), ilyDiffMat(), ilyDiffName(), ilyDiffOff(), ilyFanOutHeight(), ilyFanOutHere(), ilyFanOutLength(), ilyFanOutMat(), ilyFanOutName(), ilyFanOutWidth(), ilyFEMHeight(), ilyFEMLength(), ilyFEMMat(), ilyFEMName(), ilyFEMWidth(), ilyHere(), ilyName(), ilyPhiLow(), ilyPipeHere(), ilyPipeID(), ilyPipeMat(), ilyPipeName(), ilyPipeOD(), ilyPTMHeight(), ilyPTMHere(), ilyPTMLength(), ilyPTMMat(), ilyPTMName(), ilyPTMWidth(), EcalTrapezoidParameters::L(), LogDebug, M_PI_2, m_SpmName, mBCoolTubeHere(), mBCoolTubeInnDiam(), mBCoolTubeMat(), mBCoolTubeName(), mBCoolTubeNum(), mBCoolTubeOutDiam(), mBLyrHere(), mBManifHere(), mBManifInnDiam(), mBManifMat(), mBManifName(), mBManifOutDiam(), myrot(), mytrap(), DDName::name(), dataset::name, DDBase< N, C >::name(), nCryPerAlvEta(), nCryTypes(), nFawPerSupm(), nomCryDimAF(), nomCryDimLZ(), DDSolid::parameters(), class-composition::parent, patchPanelHere(), patchPanelName(), phi, pincerBlkLength(), pincerBlkMat(), pincerBlkName(), pincerCutHeight(), pincerCutMat(), pincerCutName(), pincerCutWidth(), pincerEnvHeight(), pincerEnvLength(), pincerEnvMat(), pincerEnvName(), pincerEnvWidth(), pincerRodHere(), pincerRodMat(), pincerRodName(), pincerShim1Name(), pincerShim1Width(), pincerShim2Name(), pincerShim2Width(), pincerShimHeight(), pincerShimMat(), DDSolidFactory::polycone(), DDCompactView::position(), diffTwoXMLs::r1, TCMET_cfi::radius, funct::sin(), findQualityFiles::size, spmCutName(), spmCutRM(), spmCutRP(), spmCutShow(), spmCutThick(), spmDelPhi(), spmExpThick(), spmExpWide(), spmExpYOff(), spmLowPhi(), spmMat(), spmName(), spmNPerHalf(), spmPhiOff(), spmSideHigh(), spmSideMat(), spmSideName(), spmSideThick(), spmSideYOffM(), spmSideYOffP(), mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, DDSolidFactory::subtraction(), theta(), DDSolidFactory::tubs(), underAF(), underAR(), underBF(), underBR(), underCF(), underLZ(), vecBackCoolName(), vecBackCoolNPerSec(), vecBackCoolNSec(), vecBackCoolSecSep(), vecBackMiscMat(), vecBackMiscName(), vecBackMiscThick(), vecBackPipeDiam(), vecBackPipeThick(), vecBackVFELyrMat(), vecBackVFELyrName(), vecBackVFELyrThick(), vecBarRMax(), vecBarRMin(), vecBarRota(), vecBarRota2(), vecBarRota3(), vecBarTran(), vecBarZPts(), vecGapAlvEta(), vecGrilleHeight(), vecGrilleZOff(), vecGrMidSlotHeight(), vecIlyFanOutPhi(), vecIlyFanOutZ(), vecIlyFEMPhi(), vecIlyFEMZ(), vecIlyMat(), vecIlyPipeLength(), vecIlyPipePhi(), vecIlyPipeType(), vecIlyPipeZ(), vecIlyPTMPhi(), vecIlyPTMZ(), vecIlyThick(), vecMBLyrMat(), vecMBLyrName(), vecMBLyrThick(), vecNomCryDimAR(), vecNomCryDimBF(), vecNomCryDimBR(), vecNomCryDimCF(), vecNomCryDimCR(), vecPatchPanelMat(), vecPatchPanelNames(), vecPatchPanelThick(), vecPincerEnvZOff(), vecPincerRodAzimuth(), vecSpmBRota(), vecSpmBTran(), vecSpmCutTM(), vecSpmCutTP(), vecSpmHere(), vecSpmRMax(), vecSpmRMin(), vecSpmRota(), vecSpmTran(), vecSpmZPts(), EcalTrapezoidParameters::vertexList(), wallFrAlv(), wallMat(), wallName(), wallReAlv(), wallThAlv(), web(), wrapFrAlv(), wrapMat(), wrapName(), wrapReAlv(), wrapThAlv(), x, geometryCSVtoXML::xx, y, geometryCSVtoXML::yy, z, and geometryCSVtoXML::zz.

675 {
676  LogDebug("EcalGeom") << "******** DDEcalBarrelAlgo execute!" << std::endl ;
677 
678  if( barHere() != 0 )
679  {
680  const unsigned int copyOne (1) ;
681  const unsigned int copyTwo (2) ;
682  // Barrel parent volume----------------------------------------------------------
683  cpv.position( DDLogicalPart( barName(), barMat(),
685  barName(), barPhiLo(), ( barPhiHi() - barPhiLo() ),
686  vecBarZPts(), vecBarRMin(), vecBarRMax())),
687  parent().name() ,
688  copyOne,
690  vecBarTran()[1],
691  vecBarTran()[2]),
692  myrot(barName().name()+"Rot",
693  Rota(Vec3(vecBarRota3()[0],
694  vecBarRota3()[1],
695  vecBarRota3()[2]),
696  vecBarRota3()[3])*
697  Rota(Vec3(vecBarRota2()[0],
698  vecBarRota2()[1],
699  vecBarRota2()[2]),
700  vecBarRota2()[3])*
701  Rota(Vec3(vecBarRota()[0],
702  vecBarRota()[1],
703  vecBarRota()[2]),
704  vecBarRota()[3]) ) ) ;
705  // End Barrel parent volume----------------------------------------------------------
706 
707 
708  // Supermodule parent------------------------------------------------------------
709 
710  const DDName spmcut1ddname ( ( 0 != spmCutShow() ) ?
711  spmName() : ddname( m_SpmName + "CUT1" ) ) ;
712  const DDSolid ddspm ( DDSolidFactory::polycone(
713  spmcut1ddname,
714  spmLowPhi(), spmDelPhi(),
715  vecSpmZPts(), vecSpmRMin(), vecSpmRMax())) ;
716 
717  const unsigned int indx ( vecSpmRMax().size()/2 ) ;
718 
719 
720  // Deal with the cut boxes first
721  const DDSolid spmCutBox ( DDSolidFactory::box(
722  spmCutName(),
723  1.05*(vecSpmRMax()[indx] - vecSpmRMin()[indx])/2.,
724  spmCutThick()/2.,
725  fabs( vecSpmZPts().back() - vecSpmZPts().front() )/2.+1*mm) ) ;
726  const std::vector<double>& cutBoxParms ( spmCutBox.parameters() ) ;
727  const DDLogicalPart spmCutLog ( spmCutName(), spmMat(), spmCutBox ) ;
728 
729  // Now the expansion box
730  const double xExp ( spmExpThick()/2. ) ;
731  const double yExp ( spmExpWide()/2. ) ;
732  const double zExp ( fabs( vecSpmZPts().back() -
733  vecSpmZPts().front() )/2.) ;
734  const DDName expName ( m_SpmName + "EXP" ) ;
735  const DDSolid spmExpBox ( DDSolidFactory::box(
736  expName ,
737  xExp ,
738  yExp ,
739  zExp )) ;
740  const DDTranslation expTra ( vecSpmRMax().back() - xExp, spmExpYOff(),
741  vecSpmZPts().front() + zExp ) ;
742  const DDLogicalPart expLog ( expName, spmMat(), spmExpBox ) ;
743 
744  // Supermodule side platess
745  const DDSolid sideSolid ( DDSolidFactory::box(
746  spmSideName(),
747  spmSideHigh()/2.,
748  spmSideThick()/2.,
749  fabs( vecSpmZPts()[1] - vecSpmZPts()[0] )/2.) ) ;
750  const std::vector<double>& sideParms ( sideSolid.parameters() ) ;
751  const DDLogicalPart sideLog ( spmSideName(), spmSideMat(), sideSolid ) ;
752 
753  DDSolid temp1 ;
754  DDSolid temp2 ;
755  for( unsigned int icopy(1); icopy <= 2; ++icopy )
756  {
757  const std::vector<double>& tvec ( 1==icopy ? vecSpmCutTM() : vecSpmCutTP() ) ;
758  const double rang ( 1==icopy ? spmCutRM() : spmCutRP() ) ;
759 
760  const Tl3D tr ( tvec[0], tvec[1], tvec[2] );
761  const RoZ3D ro ( rang ) ;
762  const Tf3D alltrot (
763  RoZ3D( 1==icopy ? spmLowPhi() : spmLowPhi()+spmDelPhi() )*
764  Tl3D( ( vecSpmRMax()[indx]+vecSpmRMin()[indx])/2.,
765  0,
766  (vecSpmZPts().front()+ vecSpmZPts().back())/2.)*
767  tr*ro) ;
768 
769  const DDRotation ddrot ( myrot(spmCutName().name() +
770  std::to_string(icopy),
771  alltrot.getRotation() ) ) ;
772  const DDTranslation ddtra ( alltrot.getTranslation() ) ;
773 
774 
775  const Tl3D trSide ( tvec[0],
776  tvec[1] + ( 1==icopy ? 1. : -1. )*( cutBoxParms[1]+sideParms[1] )
777  + ( 1==icopy ? spmSideYOffM() : spmSideYOffP() ),
778  tvec[2] );
779  const RoZ3D roSide ( rang ) ;
780  const Tf3D sideRot (
781  RoZ3D( 1==icopy ? spmLowPhi() : spmLowPhi()+spmDelPhi() )*
782  Tl3D( vecSpmRMin().front() + sideParms[0] ,
783  0,
784  vecSpmZPts().front()+ sideParms[2] )*
785  trSide*roSide) ;
786 
787  const DDRotation sideddrot ( myrot(spmSideName().name() +
788  std::to_string(icopy),
789  sideRot.getRotation() ) ) ;
790  const DDTranslation sideddtra ( sideRot.getTranslation() ) ;
791 
792  cpv.position( sideLog,
793  spmName(),
794  icopy,
795  sideddtra,
796  sideddrot ) ;
797 
798 
799  if( 0 != spmCutShow() ) // do this if we are "showing" the boxes
800  {
801  cpv.position( spmCutLog,
802  spmName(),
803  icopy,
804  ddtra,
805  ddrot ) ;
806  }
807  else // do this if we are subtracting the boxes
808  {
809  if( 1 == icopy )
810  {
811  temp1 = DDSolidFactory::subtraction( DDName( m_SpmName+"_T1" ),
812  spmcut1ddname, spmCutBox,
813  ddtra, ddrot ) ;
814  }
815  else
816  {
818  temp1, spmCutBox,
819  ddtra, ddrot ) ;
820  }
821  }
822  }
823 
824  const DDLogicalPart spmLog (spmName(), spmMat(),
825  ((0 != spmCutShow()) ? ddspm : temp2) ) ;
826 
827  const double dphi ( 360.*deg/(1.*spmNPerHalf() ) ) ;
828  for( unsigned int iphi (0); iphi<2*spmNPerHalf() ; ++iphi )
829  {
830  const double phi ( iphi*dphi + spmPhiOff() ) ; //- 0.000130/deg ) ;
831 
832  // this base rotation includes the base translation & rotation
833  // plus flipping for the negative z hemisphere, plus
834  // the phi rotation for this module
835  const Tf3D rotaBase ( RoZ3D( phi )*
836  ( iphi < spmNPerHalf() ? Ro3D() :
837  RoX3D( 180.*deg ) )*
838  Ro3D( vecSpmBRota()[3],
839  Vec3( vecSpmBRota()[0],
840  vecSpmBRota()[1],
841  vecSpmBRota()[2]))*
842  Tl3D( Vec3( vecSpmBTran()[0],
843  vecSpmBTran()[1],
844  vecSpmBTran()[2] ))) ;
845 
846  // here the individual rotations & translations of the supermodule
847  // are implemented on top of the overall "base" rotation & translation
848 
849  const unsigned int offr ( 4*iphi ) ;
850  const unsigned int offt ( 3*iphi ) ;
851 
852  const Ro3D r1 ( vecSpmRota()[ offr+3],
853  Vec3(vecSpmRota()[offr+0],
854  vecSpmRota()[offr+1],
855  vecSpmRota()[offr+2] ) ) ;
856 
857  const Tf3D rotaExtra ( r1*Tl3D( Vec3(vecSpmTran()[offt+0],
858  vecSpmTran()[offt+1],
859  vecSpmTran()[offt+2] ) ) ) ;
860 
861  const Tf3D both ( rotaExtra*rotaBase ) ;
862 
863  const DDRotation rota ( myrot( spmName().name()+std::to_string(phi/deg),
864  both.getRotation() ) );
865 
866  if( vecSpmHere()[iphi] != 0 )
867  {
868  // convert from CLHEP to DDTranslation & etc. -- Michael Case
869  DDTranslation myTran(both.getTranslation().x(), both.getTranslation().y(), both.getTranslation().z());
870  cpv.position( spmLog,
871  barName(),
872  iphi+1,
873  myTran,
874  rota ) ;
875  }
876  }
877  // End Supermodule parent------------------------------------------------------------
878 
879  // Begin Inner Layer volumes---------------------------------------------------------
880  const double ilyLength ( vecSpmZPts()[1] - vecSpmZPts()[0] ) ;
881  double ilyRMin ( vecSpmRMin()[0] ) ;
882  double ilyThick ( 0 ) ;
883  for( unsigned int ilyx ( 0 ) ; ilyx != vecIlyThick().size() ; ++ilyx )
884  {
885  ilyThick += vecIlyThick()[ilyx] ;
886  }
887  const DDName ilyDDName ( ddname( ilyName() ) ) ;
888  const DDSolid ilySolid ( DDSolidFactory::tubs( ilyDDName,
889  ilyLength/2,
890  ilyRMin,
891  ilyRMin + ilyThick,
892  ilyPhiLow(),
893  ilyDelPhi() ) ) ;
894  const DDLogicalPart ilyLog ( ilyDDName, spmMat(), ilySolid ) ;
895  cpv.position( ilyLog,
896  spmLog,
897  copyOne,
898  DDTranslation(0,0, ilyLength/2 ),
899  DDRotation() ) ;
900 
901  DDLogicalPart ilyPipeLog[200] ;
902 
903  if( 0 != ilyPipeHere() )
904  {
905  for( unsigned int iPipeType ( 0 ) ; iPipeType != vecIlyPipeLength().size(); ++iPipeType )
906  {
907  const DDName pName ( ddname( ilyPipeName() + "_" +
908  std::to_string(iPipeType+1) ) ) ;
909 
910  DDSolid ilyPipeSolid ( DDSolidFactory::tubs( pName ,
911  vecIlyPipeLength()[iPipeType]/2.,
912  0,
913  ilyPipeOD()/2,
914  0*deg, 360*deg ) ) ;
915  ilyPipeLog[iPipeType] = DDLogicalPart( pName, ilyPipeMat(), ilyPipeSolid ) ;
916 
917  const DDName pWaName ( ddname( ilyPipeName() + "Wa_" +
918  std::to_string(iPipeType+1) ) ) ;
919  DDSolid ilyPipeWaSolid ( DDSolidFactory::tubs( pWaName ,
920  vecIlyPipeLength()[iPipeType]/2.,
921  0,
922  ilyPipeID()/2,
923  0*deg, 360*deg ) ) ;
924  const DDLogicalPart ilyPipeWaLog ( pWaName, backPipeWaterMat(), ilyPipeWaSolid ) ;
925 
926  cpv.position( ilyPipeWaLog,
927  pName,
928  copyOne,
929  DDTranslation(0,0,0),
930  DDRotation() ) ;
931  }
932  }
933 
934  DDSolid ilyPTMSolid ( DDSolidFactory::box( ilyPTMName(),
935  ilyPTMHeight()/2.,
936  ilyPTMWidth()/2.,
937  ilyPTMLength()/2. ) ) ;
938  const DDLogicalPart ilyPTMLog ( ilyPTMName(),
939  ilyPTMMat(),
940  ilyPTMSolid ) ;
941 
942  DDSolid ilyFanOutSolid ( DDSolidFactory::box( ilyFanOutName(),
943  ilyFanOutHeight()/2.,
944  ilyFanOutWidth()/2.,
945  ilyFanOutLength()/2. ) ) ;
946  const DDLogicalPart ilyFanOutLog ( ilyFanOutName(),
947  ilyFanOutMat(),
948  ilyFanOutSolid ) ;
949 
950  DDSolid ilyFEMSolid ( DDSolidFactory::box( ilyFEMName(),
951  ilyFEMHeight()/2.,
952  ilyFEMWidth()/2.,
953  ilyFEMLength()/2. ) ) ;
954  const DDLogicalPart ilyFEMLog ( ilyFEMName(),
955  ilyFEMMat(),
956  ilyFEMSolid ) ;
957 
958  DDSolid ilyDiffSolid ( DDSolidFactory::box( ilyDiffName(),
959  ilyFanOutHeight()/2.,
960  ilyFanOutWidth()/2.,
961  ilyDiffLength()/2. ) ) ;
962  const DDLogicalPart ilyDiffLog ( ilyDiffName(),
963  ilyDiffMat(),
964  ilyDiffSolid ) ;
965 
966  DDSolid ilyBndlSolid ( DDSolidFactory::box( ilyBndlName(),
967  ilyFanOutHeight()/2.,
968  ilyFanOutWidth()/2.,
969  ilyBndlLength()/2. ) ) ;
970  const DDLogicalPart ilyBndlLog ( ilyBndlName(),
971  ilyBndlMat(),
972  ilyBndlSolid ) ;
973  cpv.position( ilyDiffLog,
974  ilyFanOutName(),
975  copyOne,
977  DDRotation() ) ;
978  cpv.position( ilyBndlLog,
979  ilyFanOutName(),
980  copyOne,
982  DDRotation() ) ;
983 
984  for( unsigned int ily ( 0 ) ; ily != vecIlyThick().size() ; ++ily )
985  {
986  const double ilyRMax ( ilyRMin + vecIlyThick()[ily] ) ;
987  const DDName xilyName ( ddname( ilyName() + std::to_string(ily) ) ) ;
988  const DDSolid xilySolid ( DDSolidFactory::tubs( xilyName,
989  ilyLength/2,
990  ilyRMin,
991  ilyRMax,
992  ilyPhiLow(),
993  ilyDelPhi() ) ) ;
994 
995  const DDLogicalPart xilyLog ( xilyName, ddmat(vecIlyMat()[ily]), xilySolid ) ;
996 
997  if( 0 != ilyHere() )
998  {
999  cpv.position( xilyLog,
1000  ilyLog,
1001  copyOne,
1002  DDTranslation(0,0,0),
1003  DDRotation() ) ;
1004 
1005  unsigned int copyNum[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
1006 
1007  if( 10*mm < vecIlyThick()[ily] &&
1008  vecIlyThick().size() != (ily+1) &&
1009  0 != ilyPipeHere() )
1010  {
1011  if( 0 != ilyPTMHere() )
1012  {
1013  unsigned int ptmCopy ( 0 ) ;
1014  for( unsigned int ilyPTM ( 0 ) ; ilyPTM != vecIlyPTMZ().size() ; ++ilyPTM )
1015  {
1016  const double radius ( ilyRMax - 1*mm - ilyPTMHeight()/2. ) ;
1017  const double phi ( vecIlyPTMPhi()[ilyPTM] ) ;
1018  const double yy ( radius*sin(phi) ) ;
1019  const double xx ( radius*cos(phi) ) ;
1020  ++ptmCopy ;
1021  cpv.position( ilyPTMLog,
1022  xilyLog,
1023  ptmCopy,
1024  DDTranslation(xx,yy, vecIlyPTMZ()[ilyPTM] -ilyLength/2 ),
1025  myrot( ilyPTMLog.name().name() + "_rot" +
1026  std::to_string( ptmCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1027  }
1028  }
1029  if( 0 != ilyFanOutHere() )
1030  {
1031  unsigned int fanOutCopy ( 0 ) ;
1032  for( unsigned int ilyFO ( 0 ) ; ilyFO != vecIlyFanOutZ().size() ; ++ilyFO )
1033  {
1034  const double radius ( ilyRMax - 1*mm - ilyFanOutHeight()/2. ) ;
1035  const double phi ( vecIlyFanOutPhi()[ilyFO] ) ;
1036  const double yy ( radius*sin(phi) ) ;
1037  const double xx ( radius*cos(phi) ) ;
1038  ++fanOutCopy ;
1039  cpv.position( ilyFanOutLog,
1040  xilyLog,
1041  fanOutCopy,
1042  DDTranslation(xx,yy, vecIlyFanOutZ()[ilyFO] -ilyLength/2 ),
1043  myrot( ilyFanOutLog.name().name() + "_rot" +
1044  std::to_string( fanOutCopy ) ,
1045  CLHEP::HepRotationZ( phi )*CLHEP::HepRotationY( 180*deg ) )) ;
1046  }
1047  unsigned int femCopy ( 0 ) ;
1048  for( unsigned int ilyFEM ( 0 ) ; ilyFEM != vecIlyFEMZ().size() ; ++ilyFEM )
1049  {
1050  const double radius ( ilyRMax - 1*mm - ilyFEMHeight()/2. ) ;
1051  const double phi ( vecIlyFEMPhi()[ilyFEM] ) ;
1052  const double yy ( radius*sin(phi) ) ;
1053  const double xx ( radius*cos(phi) ) ;
1054  ++femCopy ;
1055  cpv.position( ilyFEMLog,
1056  xilyLog,
1057  femCopy,
1058  DDTranslation(xx,yy, vecIlyFEMZ()[ilyFEM] -ilyLength/2 ),
1059  myrot( ilyFEMLog.name().name() + "_rot" +
1060  std::to_string( femCopy ) , CLHEP::HepRotationZ( phi ) )) ;
1061  }
1062  }
1063  for( unsigned int iPipe ( 0 ) ; iPipe != vecIlyPipePhi().size(); ++iPipe )
1064  {
1065  const unsigned int type ( static_cast<unsigned int> ( round( vecIlyPipeType()[iPipe] ) ) ) ;
1066 // std::cout<<" iPipe, type= " << iPipe << ", " << type << std::endl ;
1067  const double zz ( -ilyLength/2 + vecIlyPipeZ()[iPipe] +
1068  ( 9>type ? vecIlyPipeLength()[type]/2. : 0 ) ) ;
1069 
1070  for( unsigned int ly ( 0 ) ; ly != 2 ; ++ly )
1071  {
1072  const double radius ( 0 == ly ? ilyRMin + ilyPipeOD()/2. + 1*mm :
1073  ilyRMax - ilyPipeOD()/2. - 1*mm ) ;
1074  const double phi ( vecIlyPipePhi()[iPipe] ) ;
1075  const double yy ( radius*sin(phi) ) ;
1076  const double xx ( radius*cos(phi) ) ;
1077  ++copyNum[type],
1078  cpv.position( ilyPipeLog[type],
1079  xilyLog,
1080  copyNum[type],
1081  DDTranslation(xx,yy,zz),
1082  ( 9 > type ? DDRotation() :
1083  myrot( ilyPipeLog[type].name().name() + "_rot" +
1084  std::to_string( copyNum[type] ) , Rota( Vec3(xx,yy,0), 90*deg) ) ) ) ;
1085  }
1086  }
1087  }
1088  }
1089  ilyRMin = ilyRMax ;
1090  }
1091  // End Inner Layer volumes---------------------------------------------------------
1092 
1093  const DDName clyrName ( DDName( "ECLYR" ) ) ;
1094  std::vector<double> cri;
1095  std::vector<double> cro;
1096  std::vector<double> czz;
1097  czz.emplace_back( vecSpmZPts()[1] ) ;
1098  cri.emplace_back( vecSpmRMin()[0] ) ;
1099  cro.emplace_back( vecSpmRMin()[0] + 25*mm ) ;
1100  czz.emplace_back( vecSpmZPts()[2] ) ;
1101  cri.emplace_back( vecSpmRMin()[2] ) ;
1102  cro.emplace_back( vecSpmRMin()[2] + 10*mm ) ;
1103  const DDSolid clyrSolid ( DDSolidFactory::polycone( clyrName, -9.5*deg, 19*deg, czz,cri,cro) ) ;
1104  const DDLogicalPart clyrLog ( clyrName, ddmat(vecIlyMat()[4]), clyrSolid ) ;
1105  cpv.position( clyrLog, spmLog, copyOne, DDTranslation(0,0,0), DDRotation() ) ;
1106 
1107  // Begin Alveolar Wedge parent ------------------------------------------------------
1108 //----------------
1109 
1110  // the next few lines accumulate dimensions appropriate to crystal type 1
1111  // which we use to set some of the features of the half-alveolar wedge (hawR).
1112 
1113 // const double ANom1 ( vecNomCryDimAR()[0] ) ;
1114  const double BNom1 ( vecNomCryDimCR()[0] ) ;
1115  const double bNom1 ( vecNomCryDimCF()[0] ) ;
1116 // const double HNom1 ( vecNomCryDimBR()[0] ) ;
1117 // const double hNom1 ( vecNomCryDimBF()[0] ) ;
1118  const double sWall1( wallThAlv() ) ;
1119  const double fWall1( wallFrAlv() ) ;
1120 // const double rWall1( wallReAlv() ) ;
1121  const double sWrap1( wrapThAlv() ) ;
1122  const double fWrap1( wrapFrAlv() ) ;
1123 // const double rWrap1( wrapReAlv() ) ;
1124  const double sClr1 ( clrThAlv() ) ;
1125  const double fClr1 ( clrFrAlv() ) ;
1126 // const double rClr1 ( clrReAlv() ) ;
1127  const double LNom1 ( nomCryDimLZ() ) ;
1128  const double beta1 ( atan( ( BNom1 - bNom1 )/LNom1 ) ) ;
1129 // const double cosbeta1 ( cos( beta1 ) ) ;
1130  const double sinbeta1 ( sin( beta1 ) ) ;
1131 
1132  const double tana_hawR ( ( BNom1 - bNom1 )/LNom1 ) ;
1133 
1134  const double H_hawR ( hawRHBIG() ) ;
1135  const double h_hawR ( hawRhsml() ) ;
1136  const double a_hawR ( bNom1 + sClr1 + 2*sWrap1 + 2*sWall1
1137  - sinbeta1*( fClr1 + fWrap1 + fWall1 ) ) ;
1138  const double B_hawR ( a_hawR + H_hawR*tana_hawR ) ;
1139  const double b_hawR ( a_hawR + h_hawR*tana_hawR ) ;
1140  const double L_hawR ( vecSpmZPts()[2] ) ;
1141 
1142  const Trap trapHAWR (
1143  a_hawR/2., //double aHalfLengthXNegZLoY , // bl1, A/2
1144  a_hawR/2., //double aHalfLengthXPosZLoY , // bl2, a/2
1145  b_hawR/2., //double aHalfLengthXPosZHiY , // tl2, b/2
1146  H_hawR/2., //double aHalfLengthYNegZ , // h1, H/2
1147  h_hawR/2., //double aHalfLengthYPosZ , // h2, h/2
1148  L_hawR/2., //double aHalfLengthZ , // dz, L/2
1149  90*deg, //double aAngleAD , // alfa1
1150  0, //double aCoord15X , // x15
1151  0 //double aCoord15Y // y15
1152  ) ;
1153 
1154  const DDName hawRName1 ( ddname( hawRName().name() + "1") ) ;
1155  const DDSolid hawRSolid1 ( mytrap(hawRName1.name(), trapHAWR ) ) ;
1156  const DDLogicalPart hawRLog1 ( hawRName1, spmMat(), hawRSolid1 ) ;
1157 
1158  const double al1_fawR ( atan( ( B_hawR - a_hawR )/H_hawR ) + M_PI_2 ) ;
1159 
1160  // here is trap for Full Alveolar Wedge
1161  const Trap trapFAW (
1162  a_hawR, //double aHalfLengthXNegZLoY , // bl1, A/2
1163  a_hawR, //double aHalfLengthXPosZLoY , // bl2, a/2
1164  b_hawR, //double aHalfLengthXPosZHiY , // tl2, b/2
1165  H_hawR/2., //double aHalfLengthYNegZ , // h1, H/2
1166  h_hawR/2., //double aHalfLengthYPosZ , // h2, h/2
1167  L_hawR/2., //double aHalfLengthZ , // dz, L/2
1168  al1_fawR, //double aAngleAD , // alfa1
1169  0, //double aCoord15X , // x15
1170  0 //double aCoord15Y // y15
1171  ) ;
1172 
1173  const DDName fawName1 ( ddname( fawName().name() + "1") ) ;
1174  const DDSolid fawSolid1 ( mytrap( fawName1.name(), trapFAW ) ) ;
1175  const DDLogicalPart fawLog1 ( fawName1, spmMat(), fawSolid1 ) ;
1176 
1177  const Trap::VertexList vHAW ( trapHAWR.vertexList() ) ;
1178  const Trap::VertexList vFAW ( trapFAW.vertexList() ) ;
1179 
1180  const double hawBoxClr ( 1*mm ) ;
1181 
1182  // HAW cut box to cut off back end of wedge
1183  const DDName hawCutName ( ddname( hawRName().name() + "CUTBOX" ) ) ;
1184  const DDSolid hawCutBox ( DDSolidFactory::box(
1185  hawCutName,
1186  b_hawR/2 + hawBoxClr,
1187  hawRCutY()/2,
1188  hawRCutZ()/2 ) ) ;
1189  const std::vector<double>& hawBoxParms ( hawCutBox.parameters() ) ;
1190  const DDLogicalPart hawCutLog ( hawCutName, spmMat(), hawCutBox ) ;
1191 
1192  const Pt3D b1 ( hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1193  const Pt3D b2 ( -hawBoxParms[0], hawBoxParms[1], hawBoxParms[2] ) ;
1194  const Pt3D b3 ( -hawBoxParms[0], hawBoxParms[1], -hawBoxParms[2] ) ;
1195 
1196  const double zDel ( sqrt( 4*hawBoxParms[2]*hawBoxParms[2]
1197  -(h_hawR-hawRCutDelY())*(h_hawR-hawRCutDelY()) ) ) ;
1198 
1199  const Tf3D hawCutForm (
1200  b1, b2, b3,
1201  vHAW[2] + Pt3D( hawBoxClr, -hawRCutDelY(), 0),
1202  vHAW[1] + Pt3D(-hawBoxClr, -hawRCutDelY(), 0),
1203  Pt3D( vHAW[0].x() -hawBoxClr, vHAW[0].y(), vHAW[0].z() - zDel ) ) ;
1204 
1205  const DDSolid hawRSolid ( DDSolidFactory::subtraction(
1206  hawRName(),
1207  hawRSolid1, hawCutBox,
1208  DDTranslation(hawCutForm.getTranslation().x(), hawCutForm.getTranslation().y(), hawCutForm.getTranslation().z()),
1209  myrot( hawCutName.name()+"R",
1210  hawCutForm.getRotation() ) ) ) ;
1211  const DDLogicalPart hawRLog ( hawRName(), spmMat(), hawRSolid ) ;
1212 
1213  // FAW cut box to cut off back end of wedge
1214  const DDName fawCutName ( ddname( fawName().name() + "CUTBOX") ) ;
1215  const DDSolid fawCutBox ( DDSolidFactory::box(
1216  fawCutName,
1217  2*hawBoxParms[0],
1218  hawBoxParms[1],
1219  hawBoxParms[2] ) ) ;
1220 
1221  const std::vector<double>& fawBoxParms ( fawCutBox.parameters() ) ;
1222  const DDLogicalPart fawCutLog ( fawCutName, spmMat(), fawCutBox ) ;
1223 
1224  const Pt3D bb1 ( fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1225  const Pt3D bb2 ( -fawBoxParms[0], fawBoxParms[1], fawBoxParms[2] ) ;
1226  const Pt3D bb3 ( -fawBoxParms[0], fawBoxParms[1], -fawBoxParms[2] ) ;
1227 
1228  const Tf3D fawCutForm (
1229  bb1, bb2, bb3,
1230  vFAW[2] + Pt3D( 2*hawBoxClr,-5*mm,0),
1231  vFAW[1] + Pt3D(-2*hawBoxClr,-5*mm,0),
1232  Pt3D( vFAW[1].x()-2*hawBoxClr, vFAW[1].y()-trapFAW.h(), vFAW[1].z() - zDel ) ) ;
1233 
1234  const DDSolid fawSolid ( DDSolidFactory::subtraction(
1235  fawName(),
1236  fawSolid1, fawCutBox,
1237  DDTranslation(fawCutForm.getTranslation().x(), fawCutForm.getTranslation().y(), fawCutForm.getTranslation().z()) ,
1238  myrot( fawCutName.name()+"R",
1239  fawCutForm.getRotation() ) ) ) ;
1240  const DDLogicalPart fawLog ( fawName(), spmMat(), fawSolid ) ;
1241 
1242 
1243  const Tf3D hawRform ( vHAW[3], vHAW[0], vHAW[1], // HAW inside FAW
1244  vFAW[3], 0.5*(vFAW[0]+vFAW[3]), 0.5*(vFAW[1]+vFAW[2] ) ) ;
1245  cpv.position( hawRLog,
1246  fawLog,
1247  copyOne,
1248  DDTranslation(hawRform.getTranslation().x(), hawRform.getTranslation().y(), hawRform.getTranslation().z()),
1249  myrot( hawRName().name()+"R",
1250  hawRform.getRotation() ) ) ;
1251 
1252  cpv.position( hawRLog,
1253  fawLog,
1254  copyTwo,
1255  DDTranslation( -hawRform.getTranslation().x(),
1256  -hawRform.getTranslation().y(),
1257  -hawRform.getTranslation().z() ),
1258  myrot( hawRName().name()+"RotRefl",
1259  CLHEP::HepRotationY(180*deg)* // rotate about Y after refl thru Z
1260  CLHEP::HepRep3x3(1,0,0, 0,1,0, 0,0,-1) ) ) ;
1261 
1262 /* this for display of haw cut box instead of subtraction
1263  cpv.position( hawCutLog,
1264  hawRName,
1265  copyOne,
1266  hawCutForm.getTranslation(),
1267  myrot( hawCutName.name()+"R",
1268  hawCutForm.getRotation() ) ) ;
1269 */
1270 
1271  for( unsigned int iPhi ( 1 ); iPhi <= nFawPerSupm() ; ++iPhi )
1272  {
1273  const double rPhi ( fawPhiOff() + ( iPhi - 0.5 )*fawDelPhi() ) ;
1274 
1275  const Tf3D fawform ( RoZ3D( rPhi )*
1276  Tl3D( fawRadOff() + ( trapFAW.H() + trapFAW.h() )/4 ,
1277  0,
1278  trapFAW.L()/2 )*
1279  RoZ3D( -90*deg + fawPhiRot() ) ) ;
1280  if( fawHere() )
1281  cpv.position( fawLog,
1282  spmLog,
1283  iPhi,
1284  DDTranslation(fawform.getTranslation().x(), fawform.getTranslation().y(), fawform.getTranslation().z() ),
1285  myrot( fawName().name()+"_Rot" + std::to_string(iPhi),
1286  fawform.getRotation() ) ) ;
1287  }
1288 
1289  // End Alveolar Wedge parent ------------------------------------------------------
1290 
1291  // Begin Grid + Tablet insertion
1292 
1293  const double h_Grid ( gridThick() ) ;
1294 
1295  const Trap trapGrid (
1296  ( B_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2, // bl1, A/2
1297  ( b_hawR - h_Grid*( B_hawR - a_hawR )/H_hawR )/2, // bl2, a/2
1298  b_hawR/2., // tl2, b/2
1299  h_Grid/2., // h1, H/2
1300  h_Grid/2., // h2, h/2
1301  (L_hawR-8*cm)/2., // dz, L/2
1302  90*deg, // alfa1
1303  0, // x15
1304  H_hawR - h_hawR // y15
1305  ) ;
1306 
1307  const DDSolid gridSolid ( mytrap( gridName().name(), trapGrid ) ) ;
1308  const DDLogicalPart gridLog ( gridName(), gridMat(), gridSolid ) ;
1309 
1310  const Trap::VertexList vGrid ( trapGrid.vertexList() ) ;
1311 
1312  const Tf3D gridForm ( vGrid[4], vGrid[5], vGrid[6], // Grid inside HAW
1313  vHAW[5] - Pt3D(0,h_Grid,0), vHAW[5], vHAW[6] ) ;
1314 
1315  if( 0 != gridHere() )
1316  cpv.position( gridLog,
1317  hawRLog,
1318  copyOne,
1319  DDTranslation(gridForm.getTranslation().x(), gridForm.getTranslation().y(), gridForm.getTranslation().z() ),
1320  myrot( gridName().name()+"R",
1321  gridForm.getRotation() ) ) ;
1322 
1323  // End Grid + Tablet insertion
1324 
1325  // begin filling Wedge with crystal plus supports --------------------------
1326 
1327  const double aNom ( nomCryDimAF() ) ;
1328  const double LNom ( nomCryDimLZ() ) ;
1329 
1330  const double AUnd ( underAR() ) ;
1331  const double aUnd ( underAF() ) ;
1332 // const double BUnd ( underCR() ) ;
1333  const double bUnd ( underCF() ) ;
1334  const double HUnd ( underBR() ) ;
1335  const double hUnd ( underBF() ) ;
1336  const double LUnd ( underLZ() ) ;
1337 
1338  const double sWall ( wallThAlv() ) ;
1339  const double sWrap ( wrapThAlv() ) ;
1340  const double sClr ( clrThAlv() ) ;
1341 
1342  const double fWall ( wallFrAlv() ) ;
1343  const double fWrap ( wrapFrAlv() ) ;
1344  const double fClr ( clrFrAlv() ) ;
1345 
1346  const double rWall ( wallReAlv() ) ;
1347  const double rWrap ( wrapReAlv() ) ;
1348  const double rClr ( clrReAlv() ) ;
1349 
1350  // theta is angle in yz plane between z axis & leading edge of crystal
1351  double theta ( 90*deg ) ;
1352  double zee ( 0*mm ) ;
1353  double side ( 0*mm ) ;
1354  double zeta ( 0*deg ) ; // increment in theta for last crystal
1355 
1356  for( unsigned int cryType ( 1 ) ; cryType <= nCryTypes() ; ++cryType )
1357  {
1358  const std::string sType ( "_" +
1359  std::string( 10>cryType ? "0" : "") +
1360  std::to_string( cryType ) ) ;
1361 
1362  LogDebug("EcalGeom") << "Crytype=" << cryType ;
1363  const double ANom ( vecNomCryDimAR()[ cryType-1 ] ) ;
1364  const double BNom ( vecNomCryDimCR()[ cryType-1 ] ) ;
1365  const double bNom ( vecNomCryDimCF()[ cryType-1 ] ) ;
1366  const double HNom ( vecNomCryDimBR()[ cryType-1 ] ) ;
1367  const double hNom ( vecNomCryDimBF()[ cryType-1 ] ) ;
1368 
1369  const double alfCry ( 90*deg + atan( ( bNom - bUnd - aNom + aUnd )/
1370  ( hNom - hUnd ) ) ) ;
1371 
1372  const Trap trapCry (
1373  ( ANom - AUnd )/2., //double aHalfLengthXNegZLoY , // bl1, A/2
1374  ( aNom - aUnd )/2., //double aHalfLengthXPosZLoY , // bl2, a/2
1375  ( bNom - bUnd )/2., //double aHalfLengthXPosZHiY , // tl2, b/2
1376  ( HNom - HUnd )/2., //double aHalfLengthYNegZ , // h1, H/2
1377  ( hNom - hUnd )/2., //double aHalfLengthYPosZ , // h2, h/2
1378  ( LNom - LUnd )/2., //double aHalfLengthZ , // dz, L/2
1379  alfCry, //double aAngleAD , // alfa1
1380  aNom - aUnd - ANom + AUnd, //double aCoord15X , // x15
1381  hNom - hUnd - HNom + HUnd //double aCoord15Y // y15
1382  ) ;
1383 
1384  const DDName cryDDName ( cryName() + sType ) ;
1385  const DDSolid crySolid ( mytrap( cryDDName.name(), trapCry ) ) ;
1386  const DDLogicalPart cryLog ( cryDDName, cryMat(), crySolid ) ;
1387 
1388 
1389 //++++++++++++++++++++++++++++++++++ APD ++++++++++++++++++++++++++++++++++
1390 
1391  const DDName apdDDName ( apdName().name() + sType ) ;
1392 
1393  const Trap trapAPD (
1394  apdSide()/2., //double aHalfLengthXNegZLoY , // bl1, A/2
1395  apdSide()/2., //double aHalfLengthXPosZLoY , // bl2, a/2
1396  apdSide()/2., //double aHalfLengthXPosZHiY , // tl2, b/2
1397  apdSide()/2., //double aHalfLengthYNegZ , // h1, H/2
1398  apdSide()/2., //double aHalfLengthYPosZ , // h2, h/2
1399  apdThick()/2., // dz, L/2
1400  90*deg, //double aAngleAD , // alfa1
1401  0, //double aCoord15X , // x15
1402  0 //double aCoord15Y // y15
1403  ) ;
1404 
1405 // DDSolid apdSolid ( DDSolidFactory::box( apdDDName,
1406 // apdSide()/2.,
1407 // apdSide()/2.,
1408 // apdThick()/2. ) ) ;
1409  const DDSolid apdSolid ( mytrap( apdDDName.name(), trapAPD ) ) ;
1410  const DDLogicalPart apdLog ( apdDDName, apdMat(), apdSolid ) ;
1411 
1412  unsigned int copyAPD ( 0 ) ;
1413 //++++++++++++++++++++++++++++++++++ END APD ++++++++++++++++++++++++++++++++++
1414 
1415 
1416  const double delta ( atan( ( HNom - hNom )/LNom ) ) ;
1417 //unused const double cosdelta ( cos( delta ) ) ;
1418  const double sindelta ( sin( delta ) ) ;
1419 
1420  const double gamma ( atan( ( ANom - aNom )/LNom ) ) ;
1421 //unused const double cosgamma ( cos( gamma ) ) ;
1422  const double singamma ( sin( gamma ) ) ;
1423 
1424  const double beta ( atan( ( BNom - bNom )/LNom ) ) ;
1425 //unused const double cosbeta ( cos( beta ) ) ;
1426  const double sinbeta ( sin( beta ) ) ;
1427 
1428  // Now clearance trap
1429  const double alfClr ( 90*deg + atan( ( bNom - aNom )/( hNom + sClr ) ) ) ;
1430 
1431  const Trap trapClr (
1432  ( ANom + sClr + rClr*singamma )/2., //double aHalfLengthXNegZLoY , // bl1, A/2
1433  ( aNom + sClr - fClr*singamma )/2., //double aHalfLengthXPosZLoY , // bl2, a/2
1434  ( bNom + sClr - fClr*sinbeta )/2., //double aHalfLengthXPosZHiY , // tl2, b/2
1435  ( HNom + sClr + rClr*sindelta )/2., //double aHalfLengthYNegZ , // h1, H/2
1436  ( hNom + sClr - fClr*sindelta )/2., //double aHalfLengthYPosZ , // h2, h/2
1437  ( LNom + fClr + rClr )/2., // dz, L/2
1438  alfClr, //double aAngleAD , // alfa1
1439  aNom - ANom , //double aCoord15X , // x15
1440  hNom - HNom //double aCoord15Y // y15
1441  ) ;
1442 
1443  const DDName clrDDName ( clrName() + sType ) ;
1444  const DDSolid clrSolid ( mytrap( clrDDName.name(), trapClr ) ) ;
1445  const DDLogicalPart clrLog ( clrDDName, clrMat(), clrSolid ) ;
1446 
1447  // Now wrap trap
1448 
1449  const double alfWrap ( 90*deg + atan( ( bNom - aNom )/
1450  ( hNom + sClr + 2*sWrap ) ) ) ;
1451 
1452  const Trap trapWrap (
1453  ( trapClr.A() + 2*sWrap + rWrap*singamma )/2, // bl1, A/2
1454  ( trapClr.a() + 2*sWrap - fWrap*singamma )/2, // bl2, a/2
1455  ( trapClr.b() + 2*sWrap - fWrap*sinbeta )/2, // tl2, b/2
1456  ( trapClr.H() + 2*sWrap + rWrap*sindelta )/2, // h1, H/2
1457  ( trapClr.h() + 2*sWrap - fWrap*sindelta )/2, // h2, h/2
1458  ( trapClr.L() + fWrap + rWrap )/2., // dz, L/2
1459  alfWrap, //double aAngleAD , // alfa1
1460  aNom - ANom - (cryType>9 ? 0 : 0.020*mm) ,
1461  hNom - HNom //double aCoord15Y // y15
1462  ) ;
1463 
1464  const DDName wrapDDName ( wrapName() + sType ) ;
1465  const DDSolid wrapSolid ( mytrap( wrapDDName.name(), trapWrap ) ) ;
1466  const DDLogicalPart wrapLog ( wrapDDName, wrapMat(), wrapSolid ) ;
1467 
1468  // Now wall trap
1469 
1470  const double alfWall ( 90*deg + atan( ( bNom - aNom )/
1471  ( hNom + sClr + 2*sWrap + 2*sWall ) ) ) ;
1472 
1473  const Trap trapWall (
1474  ( trapWrap.A() + 2*sWall + rWall*singamma )/2, // A/2
1475  ( trapWrap.a() + 2*sWall - fWall*singamma )/2, // a/2
1476  ( trapWrap.b() + 2*sWall - fWall*sinbeta )/2, // b/2
1477  ( trapWrap.H() + 2*sWall + rWall*sindelta )/2, // H/2
1478  ( trapWrap.h() + 2*sWall - fWall*sindelta )/2, // h/2
1479  ( trapWrap.L() + fWall + rWall )/2., // L/2
1480  alfWall, // alfa1
1481  aNom - ANom - (cryType<10? 0.150*mm : 0.100*mm ) ,
1482  hNom - HNom // y15
1483  ) ;
1484 
1485  const DDName wallDDName ( wallName() + sType ) ;
1486  const DDSolid wallSolid ( mytrap( wallDDName.name(), trapWall ) ) ;
1487  const DDLogicalPart wallLog ( wallDDName, wallMat(), wallSolid ) ;
1488 
1489 /* std::cout << "Traps:\n a: "
1490  << trapCry.a() << ", "
1491  << trapClr.a() << ", "
1492  << trapWrap.a() << ", "
1493  << trapWall.a() << "\n b: "
1494  << trapCry.b() << ", "
1495  << trapClr.b() << ", "
1496  << trapWrap.b() << ", "
1497  << trapWall.b() << "\n A: "
1498  << trapCry.A() << ", "
1499  << trapClr.A() << ", "
1500  << trapWrap.A() << ", "
1501  << trapWall.A() << "\n B: "
1502  << trapCry.B() << ", "
1503  << trapClr.B() << ", "
1504  << trapWrap.B() << ", "
1505  << trapWall.B() << "\n h: "
1506  << trapCry.h() << ", "
1507  << trapClr.h() << ", "
1508  << trapWrap.h() << ", "
1509  << trapWall.h() << "\n H: "
1510  << trapCry.H() << ", "
1511  << trapClr.H() << ", "
1512  << trapWrap.H() << ", "
1513  << trapWall.H() << "\n a1: "
1514  << trapCry.a1()/deg << ", "
1515  << trapClr.a1()/deg << ", "
1516  << trapWrap.a1()/deg << ", "
1517  << trapWall.a1()/deg << "\n a4: "
1518  << trapCry.a4()/deg << ", "
1519  << trapClr.a4()/deg << ", "
1520  << trapWrap.a4()/deg << ", "
1521  << trapWall.a4()/deg << "\n x15: "
1522  << trapCry.x15() << ", "
1523  << trapClr.x15() << ", "
1524  << trapWrap.x15() << ", "
1525  << trapWall.x15() << "\n y15: "
1526  << trapCry.y15() << ", "
1527  << trapClr.y15() << ", "
1528  << trapWrap.y15() << ", "
1529  << trapWall.y15()
1530  << std::endl ;
1531 */
1532  // Now for placement of cry within clr
1533  const Vec3 cryToClr ( 0, 0, ( rClr - fClr )/2 ) ;
1534 
1535  cpv.position( cryLog,
1536  clrLog,
1537  copyOne,
1538  DDTranslation ( 0, 0, ( rClr - fClr )/2 ), //SAME as cryToClr above.
1539  DDRotation() ) ;
1540 
1541  if( 0 != apdHere() )
1542  {
1543  cpv.position( apdLog,
1544  clrLog,
1545  ++copyAPD,
1546  DDTranslation( +trapCry.bl1() - apdX1(),
1547  +trapCry.h1() - apdZ(),
1548  -trapCry.dz() - apdThick()/2. + (rClr - fClr)/2. ),
1549  DDRotation() ) ;
1550  cpv.position( apdLog,
1551  clrLog,
1552  ++copyAPD,
1553  DDTranslation( +trapCry.bl1() - apdX2(),
1554  +trapCry.h1() - apdZ(),
1555  -trapCry.dz() - apdThick()/2. + (rClr - fClr)/2.),
1556  DDRotation() ) ;
1557  }
1558 
1559  const Vec3 clrToWrap ( 0, 0, ( rWrap - fWrap )/2 ) ;
1560 
1561  cpv.position( clrLog,
1562  wrapLog,
1563  copyOne,
1564  DDTranslation ( 0, 0, ( rWrap - fWrap )/2 ), //SAME as cryToWrap
1565  DDRotation() ) ;
1566 
1567 
1568  // Now for placement of clr within wall
1569  const Vec3 wrapToWall1 ( 0, 0, ( rWall - fWall )/2 ) ;
1570  const Vec3 wrapToWall ( Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ) ;
1571 
1572  cpv.position( wrapLog,
1573  wallLog,
1574  copyOne,
1575  DDTranslation ( Vec3( (cryType>9?0:0.005*mm),0,0 )+wrapToWall1 ), //SAME as wrapToWall
1576  DDRotation() ) ;
1577 
1578  const Trap::VertexList vWall ( trapWall.vertexList() ) ;
1579  const Trap::VertexList vCry ( trapCry.vertexList() ) ;
1580 
1581  const double sidePrime ( ( trapWall.a() - trapCry.a() )/2 ) ;
1582  const double frontPrime ( fWall + fWrap + fClr + LUnd/2 ) ;
1583 
1584  // define web plates with clearance ===========================================
1585 
1586  if( 1 == cryType ) // first web plate: inside clearance volume
1587  {
1588  web( 0,
1589  trapWall.b(),
1590  trapWall.B(),
1591  trapWall.L(),
1592  theta,
1593  vHAW[4] + Pt3D( 0, hawYOffCry(), 0 ),
1594  hawRLog,
1595  zee,
1596  sidePrime,
1597  frontPrime,
1598  delta, cpv ) ;
1599  zee += vecGapAlvEta()[0] ;
1600  }
1601 
1602  for( unsigned int etaAlv ( 1 ) ; etaAlv <= nCryPerAlvEta() ; ++etaAlv )
1603  {
1604  LogDebug("EcalGeom") << "theta=" << theta/deg
1605  << ", sidePrime=" << sidePrime << ", frontPrime=" << frontPrime
1606  << ", zeta="<<zeta<<", delta="<<delta<<", zee=" << zee;
1607 
1608  zee += 0.075*mm +
1609  ( side*cos(zeta) + trapWall.h() - sidePrime )/sin(theta) ;
1610 
1611  LogDebug("EcalGeom") << "New zee="<< zee ;
1612 
1613  // make transform for placing enclosed crystal
1614 
1615  const Pt3D trap2 ( vCry[2] + cryToClr + clrToWrap + wrapToWall ) ;
1616 
1617  const Pt3D trap3 ( trap2 + Pt3D( 0,
1618  -trapCry.h(),
1619  0 ) ) ;
1620  const Pt3D trap1 ( trap3 + Pt3D( -trapCry.a(),
1621  0,
1622  0 ) ) ;
1623 
1624  const Pt3D wedge3 ( vHAW[4] + Pt3D( sidePrime,
1625  hawYOffCry(),
1626  zee ) ) ;
1627  const Pt3D wedge2 ( wedge3 + Pt3D( 0,
1628  trapCry.h()*cos(theta),
1629  -trapCry.h()*sin(theta) ) ) ;
1630  const Pt3D wedge1 ( wedge3 + Pt3D( trapCry.a(),
1631  0,
1632  0 ) ) ;
1633 
1634  const Tf3D tForm1 ( trap1, trap2, trap3,
1635  wedge1, wedge2, wedge3 ) ;
1636 
1637  const double xx ( 0.050*mm ) ;
1638 
1639  const Tf3D tForm ( HepGeom::Translate3D(xx,0,0)*tForm1 ) ;
1640 
1641  cpv.position( wallLog,
1642  hawRLog,
1643  etaAlv,
1644  DDTranslation(tForm.getTranslation().x(), tForm.getTranslation().y(), tForm.getTranslation().z() ),
1645  myrot( wallLog.name().name() + "_" + std::to_string( etaAlv ),
1646  tForm.getRotation() ) ) ;
1647 
1648  theta -= delta ;
1649  side = sidePrime ;
1650  zeta = delta ;
1651  }
1652  if( 5 == cryType ||
1653  9 == cryType ||
1654  13 == cryType ||
1655  17 == cryType ) // web plates
1656  {
1657  const unsigned int webIndex ( cryType/4 ) ;
1658  zee += 0.5*vecGapAlvEta()[cryType]/sin(theta) ;
1659  web( webIndex,
1660  trapWall.a(),
1661  trapWall.A(),
1662  trapWall.L(),
1663  theta,
1664  vHAW[4] + Pt3D( 0, hawYOffCry(), 0 ),
1665  hawRLog,
1666  zee ,
1667  sidePrime,
1668  frontPrime,
1669  delta, cpv ) ;
1670  zee += 0.5*vecGapAlvEta()[cryType]/sin(theta) ;
1671  }
1672  else
1673  {
1674  if( 17 != cryType ) zee += vecGapAlvEta()[cryType]/sin(theta) ;
1675  }
1676  }
1677  // END filling Wedge with crystal plus supports --------------------------
1678 
1679 //------------------------------------------------------------------------
1680 //------------------------------------------------------------------------
1681 //------------------------------------------------------------------------
1682 //------------------------------------------------------------------------
1683 //**************** Material at outer radius of supermodule ***************
1684 //------------------------------------------------------------------------
1685 //------------------------------------------------------------------------
1686 //------------------------------------------------------------------------
1687 //------------------------------------------------------------------------
1688 
1689  if( 0 != backHere() )
1690  {
1691 
1697 
1698  const DDTranslation outtra ( backXOff() + backSideHeight()/2,
1699  backYOff(),
1700  backSideLength()/2 ) ;
1701 
1702  const double realBPthick ( backPlateThick() + backPlate2Thick() ) ;
1703 
1704  DDSolid backPlateSolid ( DDSolidFactory::box( backPlateName(),
1705  backPlateWidth()/2.,
1706  realBPthick/2.,
1707  backPlateLength()/2. ) ) ;
1708  const std::vector<double>& backPlateParms ( backPlateSolid.parameters() ) ;
1709  const DDLogicalPart backPlateLog ( backPlateName(),
1710  backPlateMat(),
1711  backPlateSolid ) ;
1712 
1713  const DDTranslation backPlateTra ( backSideHeight()/2 +
1714  backPlateParms[1],
1715  0*mm,
1716  backPlateParms[2] -
1717  backSideLength()/2 ) ;
1718 
1719  DDSolid backPlate2Solid ( DDSolidFactory::box( backPlate2Name(),
1720  backPlateWidth()/2.,
1721  backPlate2Thick()/2.,
1722  backPlateLength()/2. ) ) ;
1723 
1724  const DDLogicalPart backPlate2Log ( backPlate2Name(),
1725  backPlate2Mat(),
1726  backPlate2Solid ) ;
1727 
1728  const DDTranslation backPlate2Tra ( 0,
1729  -backPlateParms[1] + backPlate2Thick()/2., 0 ) ;
1730  if( 0 != backPlateHere() )
1731  {
1732  cpv.position( backPlate2Log,
1733  backPlateName(),
1734  copyOne,
1735  backPlate2Tra,
1736  DDRotation() ) ;
1737 
1738  cpv.position( backPlateLog,
1739  spmName(),
1740  copyOne,
1741  outtra + backPlateTra,
1742  myrot( backPlateName().name()+"Rot5",
1743  CLHEP::HepRotationZ(270*deg) ) ) ;
1744 
1745  }
1751 
1752 
1758 
1759  const Trap trapBS (
1760  backSideWidth()/2., //double aHalfLengthXNegZLoY , // bl1, A/2
1761  backSideWidth()/2., //double aHalfLengthXPosZLoY , // bl2, a/2
1762  backSideWidth()/4., //double aHalfLengthXPosZHiY , // tl2, b/2
1763  backSideHeight()/2., //double aHalfLengthYNegZ , // h1, H/2
1764  backSideHeight()/2., //double aHalfLengthYPosZ , // h2, h/2
1765  backSideLength()/2., //double aHalfLengthZ , // dz, L/2
1766  backSideAngle(), //double aAngleAD , // alfa1
1767  0, //double aCoord15X , // x15
1768  0 //double aCoord15Y // y15
1769  ) ;
1770 
1771  const DDSolid backSideSolid ( mytrap( backSideName().name(), trapBS ) ) ;
1772  const DDLogicalPart backSideLog ( backSideName(),
1773  backSideMat(),
1774  backSideSolid ) ;
1775 
1776  const DDTranslation backSideTra1 ( 0*mm,
1777  backPlateWidth()/2 + backSideYOff1(),
1778  1*mm ) ;
1779  if( 0 != backSideHere() )
1780  {
1781  cpv.position( backSideLog,
1782  spmName(),
1783  copyOne,
1784  outtra + backSideTra1,
1785  myrot( backSideName().name()+"Rot8",
1786  CLHEP::HepRotationX(180*deg)*CLHEP::HepRotationZ(90*deg) ) ) ;
1787 
1788  const DDTranslation backSideTra2( 0*mm,
1789  -backPlateWidth()/2 + backSideYOff2(),
1790  1*mm ) ;
1791  cpv.position( backSideLog,
1792  spmName(),
1793  copyTwo,
1794  outtra + backSideTra2,
1795  myrot( backSideName().name()+"Rot9",
1796  CLHEP::HepRotationZ(90*deg) ) ) ;
1797  }
1803 
1804 //=====================
1805  const double backCoolWidth ( backCoolBarWidth() + 2.*backCoolTankWidth() ) ;
1806 
1812 
1813  const double manifCut ( 2*mm ) ;
1814 
1815  DDSolid mBManifSolid ( DDSolidFactory::tubs( mBManifName() ,
1816  backCoolWidth/2. - manifCut,
1817  0,
1818  mBManifOutDiam()/2,
1819  0*deg, 360*deg ) ) ;
1820  const DDLogicalPart mBManifLog ( mBManifName(), mBManifMat(), mBManifSolid ) ;
1821 
1822  const DDName mBManifWaName ( ddname( mBManifName().name() + "Wa" ) ) ;
1823  DDSolid mBManifWaSolid ( DDSolidFactory::tubs( mBManifWaName ,
1824  backCoolWidth/2.-manifCut,
1825  0,
1826  mBManifInnDiam()/2,
1827  0*deg, 360*deg ) ) ;
1828  const DDLogicalPart mBManifWaLog ( mBManifWaName, backPipeWaterMat(),
1829  mBManifWaSolid ) ;
1830  cpv.position( mBManifWaLog,
1831  mBManifName(),
1832  copyOne,
1833  DDTranslation(0,0,0),
1834  DDRotation() ) ;
1835 
1841 //=====================
1842 
1843 
1844 
1850  const double deltaY ( -5*mm ) ;
1851 
1852  DDSolid grEdgeSlotSolid ( DDSolidFactory::box( grEdgeSlotName(),
1853  grEdgeSlotHeight()/2.,
1854  grEdgeSlotWidth()/2.,
1855  grilleThick()/2. ) ) ;
1856  const DDLogicalPart grEdgeSlotLog ( grEdgeSlotName(), grEdgeSlotMat(), grEdgeSlotSolid );
1857 
1858  unsigned int edgeSlotCopy ( 0 ) ;
1859  unsigned int midSlotCopy ( 0 ) ;
1860 
1861  DDLogicalPart grMidSlotLog[4] ;
1862 
1863  for( unsigned int iGr ( 0 ) ; iGr != vecGrilleHeight().size() ; ++iGr )
1864  {
1865  DDName gName ( ddname( grilleName() + std::to_string( iGr ) ) ) ;
1866  DDSolid grilleSolid ( DDSolidFactory::box( gName,
1867  vecGrilleHeight()[iGr]/2.,
1868  backCoolWidth/2.,
1869  grilleThick()/2. ) ) ;
1870  const DDLogicalPart grilleLog ( gName,
1871  grilleMat(),
1872  grilleSolid ) ;
1873 
1874  const DDTranslation grilleTra ( -realBPthick/2 -
1875  vecGrilleHeight()[iGr]/2,
1876  deltaY,
1877  vecGrilleZOff()[iGr] +
1878  grilleThick()/2 - backSideLength()/2 ) ;
1879  const DDTranslation gTra ( outtra + backPlateTra + grilleTra ) ;
1880 
1881  if( 0 != grMidSlotHere() &&
1882  0 != iGr )
1883  {
1884  if( 0 == (iGr-1)%2 )
1885  {
1886  DDName mName ( ddname( grMidSlotName() + std::to_string( iGr/2 ) ) ) ;
1887  DDSolid grMidSlotSolid ( DDSolidFactory::box(
1888  mName,
1889  vecGrMidSlotHeight()[(iGr-1)/2]/2.,
1890  grMidSlotWidth()/2.,
1891  grilleThick()/2. ) ) ;
1892  grMidSlotLog[(iGr-1)/2] = DDLogicalPart( mName, grMidSlotMat(), grMidSlotSolid ) ;
1893  }
1894  cpv.position( grMidSlotLog[(iGr-1)/2],
1895  gName,
1896  ++midSlotCopy,
1897  DDTranslation( vecGrilleHeight()[iGr]/2. - vecGrMidSlotHeight()[(iGr-1)/2]/2.,
1898  +grMidSlotXOff(), 0 ),
1899  DDRotation() ) ;
1900  cpv.position( grMidSlotLog[(iGr-1)/2],
1901  gName,
1902  ++midSlotCopy,
1903  DDTranslation( vecGrilleHeight()[iGr]/2. - vecGrMidSlotHeight()[(iGr-1)/2]/2.,
1904  -grMidSlotXOff(), 0 ),
1905  DDRotation() ) ;
1906  }
1907 
1908  if( 0 != grEdgeSlotHere() &&
1909  0 != iGr )
1910  {
1911  cpv.position( grEdgeSlotLog,
1912  gName,
1913  ++edgeSlotCopy,
1915  backCoolWidth/2 - grEdgeSlotWidth()/2., 0 ),
1916  DDRotation() ) ;
1917  cpv.position( grEdgeSlotLog,
1918  gName,
1919  ++edgeSlotCopy,
1921  -backCoolWidth/2 + grEdgeSlotWidth()/2., 0 ),
1922  DDRotation() ) ;
1923  }
1924  if( 0 != grilleHere() )
1925  cpv.position( grilleLog,
1926  spmName(),
1927  iGr,
1928  gTra,
1929  DDRotation() ) ;
1930 
1931  if( ( 0 != iGr%2 ) &&
1932  ( 0 != mBManifHere() ) )
1933  {
1934  cpv.position( mBManifLog,
1935  spmName(),
1936  iGr,
1937  gTra - DDTranslation( -mBManifOutDiam()/2. +
1938  vecGrilleHeight()[iGr]/2.,manifCut,
1939  grilleThick()/2.+3*mBManifOutDiam()/2.) ,
1940  myrot( mBManifName().name()+"R1",
1941  CLHEP::HepRotationX(90*deg) ) ) ;
1942  cpv.position( mBManifLog,
1943  spmName(),
1944  iGr-1,
1945  gTra - DDTranslation( -3*mBManifOutDiam()/2. +
1946  vecGrilleHeight()[iGr]/2.,manifCut,
1947  grilleThick()/2+3*mBManifOutDiam()/2.) ,
1948  myrot( mBManifName().name()+"R2",
1949  CLHEP::HepRotationX(90*deg) ) ) ;
1950  }
1951  }
1952 
1958 
1959 
1965 
1966  DDSolid backCoolBarSolid ( DDSolidFactory::box( backCoolBarName(),
1967  backCoolBarHeight()/2.,
1968  backCoolBarWidth()/2.,
1969  backCoolBarThick()/2. ) ) ;
1970  const DDLogicalPart backCoolBarLog ( backCoolBarName(),
1971  backCoolBarMat(),
1972  backCoolBarSolid ) ;
1973 
1974  DDSolid backCoolBarSSSolid ( DDSolidFactory::box( backCoolBarSSName(),
1975  backCoolBarHeight()/2.,
1976  backCoolBarWidth()/2.,
1977  backCoolBarSSThick()/2. ) ) ;
1978  const DDLogicalPart backCoolBarSSLog ( backCoolBarSSName(),
1979  backCoolBarSSMat(),
1980  backCoolBarSSSolid ) ;
1981  const DDTranslation backCoolBarSSTra (0,0,0) ;
1982  cpv.position( backCoolBarSSLog,
1983  backCoolBarName(),
1984  copyOne,
1985  backCoolBarSSTra,
1986  DDRotation() ) ;
1987 
1988  DDSolid backCoolBarWaSolid ( DDSolidFactory::box( backCoolBarWaName(),
1989  backCoolBarHeight()/2.,
1990  backCoolBarWidth()/2.,
1991  backCoolBarWaThick()/2. ) ) ;
1992  const DDLogicalPart backCoolBarWaLog ( backCoolBarWaName(),
1993  backCoolBarWaMat(),
1994  backCoolBarWaSolid ) ;
1995  const DDTranslation backCoolBarWaTra (0,0,0) ;
1996  cpv.position( backCoolBarWaLog,
1997  backCoolBarSSName(),
1998  copyOne,
1999  backCoolBarWaTra,
2000  DDRotation() ) ;
2001 
2007 
2008 
2014 
2015  double thickVFE ( 0 ) ;
2016  for( unsigned int iLyr ( 0 ) ; iLyr != vecBackVFELyrThick().size() ; ++iLyr )
2017  {
2018  thickVFE += vecBackVFELyrThick()[iLyr] ;
2019  }
2020  DDSolid backVFESolid ( DDSolidFactory::box( backVFEName(),
2021  backCoolBarHeight()/2.,
2022  backCoolBarWidth()/2.,
2023  thickVFE/2. ) ) ;
2024  const DDLogicalPart backVFELog ( backVFEName(),
2025  backVFEMat(),
2026  backVFESolid ) ;
2027  DDTranslation offTra ( 0,0,-thickVFE/2 ) ;
2028  for( unsigned int iLyr ( 0 ) ; iLyr != vecBackVFELyrThick().size() ; ++iLyr )
2029  {
2030  DDSolid backVFELyrSolid ( DDSolidFactory::box( ddname(vecBackVFELyrName()[iLyr]),
2031  backCoolBarHeight()/2.,
2032  backCoolBarWidth()/2.,
2033  vecBackVFELyrThick()[iLyr]/2. ) ) ;
2034  const DDLogicalPart backVFELyrLog ( ddname(vecBackVFELyrName()[iLyr]),
2035  ddmat(vecBackVFELyrMat()[iLyr]),
2036  backVFELyrSolid ) ;
2037  const DDTranslation backVFELyrTra (0,0, vecBackVFELyrThick()[iLyr]/2) ;
2038  cpv.position( backVFELyrLog,
2039  backVFEName(),
2040  copyOne,
2041  backVFELyrTra + offTra,
2042  DDRotation() ) ;
2043  offTra += 2*backVFELyrTra ;
2044  }
2045 
2051 
2052 
2058 
2059  const double halfZCoolVFE ( thickVFE + backCoolBarThick()/2. ) ;
2060  DDSolid backCoolVFESolid ( DDSolidFactory::box( backCoolVFEName(),
2061  backCoolBarHeight()/2.,
2062  backCoolBarWidth()/2.,
2063  halfZCoolVFE ) ) ;
2064  const DDLogicalPart backCoolVFELog ( backCoolVFEName(),
2065  backCoolVFEMat(),
2066  backCoolVFESolid ) ;
2067  if( 0 != backCoolBarHere() )
2068  cpv.position( backCoolBarLog ,
2069  backCoolVFEName() ,
2070  copyOne ,
2071  DDTranslation() ,
2072  DDRotation() ) ;
2073  if( 0 != backCoolVFEHere() )
2074  cpv.position( backVFELog ,
2075  backCoolVFEName() ,
2076  copyOne ,
2077  DDTranslation( 0,0, backCoolBarThick()/2. + thickVFE/2. ) ,
2078  DDRotation() ) ;
2079  cpv.position( backVFELog ,
2080  backCoolVFEName() ,
2081  copyTwo ,
2082  DDTranslation( 0,0, -backCoolBarThick()/2. - thickVFE/2. ) ,
2083  myrot( backVFEName().name() + "Flip",
2084  CLHEP::HepRotationX( 180*deg ) ) ) ;
2085 
2091 
2092 
2098  unsigned int iCVFECopy ( 1 ) ;
2099  unsigned int iSep ( 0 ) ;
2100  unsigned int iNSec ( 0 ) ;
2101  const unsigned int nMisc ( vecBackMiscThick().size()/4 ) ;
2102  for( unsigned int iMod ( 0 ) ; iMod != 4 ; ++iMod )
2103  {
2104  const double pipeLength ( vecGrilleZOff()[2*iMod+1] -
2105  vecGrilleZOff()[2*iMod ] -
2106  grilleThick() - 3*mm ) ;
2107 
2108  const double pipeZPos ( vecGrilleZOff()[2*iMod+1] - pipeLength/2 - 1.5*mm ) ;
2109 
2110 
2111 
2112  // accumulate total height of parent volume
2113 
2114  double backCoolHeight ( backCoolBarHeight() + mBCoolTubeOutDiam() ) ;
2115  for( unsigned int iMisc ( 0 ) ; iMisc != nMisc ; ++iMisc )
2116  {
2117  backCoolHeight += vecBackMiscThick()[ iMod*nMisc + iMisc ] ;
2118  }
2119  double bottomThick ( mBCoolTubeOutDiam() ) ;
2120  for( unsigned int iMB ( 0 ) ; iMB != vecMBLyrThick().size() ; ++iMB )
2121  {
2122  backCoolHeight += vecMBLyrThick()[iMB] ;
2123  bottomThick += vecMBLyrThick()[iMB] ;
2124  }
2125 
2126  DDName backCName ( ddname( vecBackCoolName()[iMod] ) ) ;
2127  const double halfZBCool ( ( pipeLength - 2*mBManifOutDiam() - grilleZSpace() )/2 ) ;
2128  DDSolid backCoolSolid ( DDSolidFactory::box( backCName ,
2129  backCoolHeight/2.,
2130  backCoolWidth/2.,
2131  halfZBCool ) ) ;
2132  const DDLogicalPart backCoolLog ( backCName,
2133  spmMat(),
2134  backCoolSolid ) ;
2135 
2136  const DDTranslation bCoolTra ( -realBPthick/2 +
2137  backCoolHeight/2 -
2138  vecGrilleHeight()[2*iMod],
2139  deltaY,
2140  vecGrilleZOff()[2*iMod] +
2141  grilleThick() + grilleZSpace() +
2142  halfZBCool -
2143  backSideLength()/2 ) ;
2144  if( 0 != backCoolHere() )
2145  cpv.position( backCoolLog,
2146  spmName(),
2147  iMod+1,
2148  outtra + backPlateTra + bCoolTra,
2149  DDRotation() ) ;
2150 
2151 //===
2152  const double backCoolTankHeight ( backCoolBarHeight() ) ;// - backBracketHeight() ) ;
2153 
2154  const double halfZTank ( halfZBCool - 5*cm ) ;
2155 
2156  DDName bTankName ( ddname( backCoolTankName()+std::to_string(iMod+1) ) ) ;
2157  DDSolid backCoolTankSolid ( DDSolidFactory::box( bTankName ,
2158  backCoolTankHeight/2.,
2159  backCoolTankWidth()/2.,
2160  halfZTank ) ) ;
2161  const DDLogicalPart backCoolTankLog ( bTankName,
2162  backCoolTankMat(),
2163  backCoolTankSolid ) ;
2164  if( 0 != backCoolTankHere() )
2165  cpv.position( backCoolTankLog,
2166  backCName,
2167  copyOne,
2168  DDTranslation( -backCoolHeight/2 +
2169  backCoolTankHeight/2. +
2170  bottomThick,
2171  backCoolBarWidth()/2. + backCoolTankWidth()/2., 0),
2172  DDRotation() ) ;
2173 
2174  DDName bTankWaName ( ddname( backCoolTankWaName()+std::to_string(iMod+1) ) ) ;
2175  DDSolid backCoolTankWaSolid ( DDSolidFactory::box( bTankWaName ,
2176  backCoolTankHeight/2. -
2177  backCoolTankThick()/2.,
2178  backCoolTankWaWidth()/2.,
2179  halfZTank -
2180  backCoolTankThick()/2. ) ) ;
2181  const DDLogicalPart backCoolTankWaLog ( bTankWaName,
2183  backCoolTankWaSolid ) ;
2184  cpv.position( backCoolTankWaLog,
2185  bTankName,
2186  copyOne,
2187  DDTranslation(0,0,0),
2188  DDRotation() ) ;
2189 
2190  DDName bBracketName ( ddname( backBracketName()+std::to_string(iMod+1) ) ) ;
2191  DDSolid backBracketSolid ( DDSolidFactory::box( bBracketName ,
2192  backBracketHeight()/2.,
2193  backCoolTankWidth()/2.,
2194  halfZTank ) ) ;
2195  const DDLogicalPart backBracketLog ( bBracketName,
2196  backBracketMat(),
2197  backBracketSolid ) ;
2198  if( 0 != backCoolTankHere() )
2199  cpv.position( backBracketLog,
2200  backCName,
2201  copyOne,
2203  backCoolHeight/2. -
2204  backBracketHeight()/2. +
2205  bottomThick,
2206  -backCoolBarWidth()/2. - backCoolTankWidth()/2., 0),
2207  DDRotation() ) ;
2208 
2209 /* cpv.position( backBracketLog,
2210  backCName,
2211  copyTwo,
2212  DDTranslation( backCoolBarHeight() - backCoolHeight/2. - backBracketHeight()/2.,
2213  backCoolBarWidth()/2. + backCoolTankWidth()/2., 0),
2214  DDRotation() ) ;*/
2215 
2216 //===
2217 
2218  DDTranslation bSumTra ( backCoolBarHeight() -
2219  backCoolHeight/2. +
2220  bottomThick, 0, 0 ) ;
2221  for( unsigned int j ( 0 ) ; j != nMisc ; ++j ) // loop over miscellaneous layers
2222  {
2223  const DDName bName ( ddname( vecBackMiscName()[ iMod*nMisc + j ] ) ) ;
2224 
2225  DDSolid bSolid ( DDSolidFactory::box( bName ,
2226  vecBackMiscThick()[ iMod*nMisc + j ]/2,
2228  halfZBCool ) ) ;
2229 
2230  const DDLogicalPart bLog ( bName, ddmat(vecBackMiscMat()[ iMod*nMisc + j ]), bSolid ) ;
2231 
2232  const DDTranslation bTra ( vecBackMiscThick()[ iMod*nMisc + j ]/2, 0*mm, 0*mm ) ;
2233 
2234 
2235  if( 0 != backMiscHere() )
2236  cpv.position( bLog,
2237  backCName,
2238  copyOne,
2239  bSumTra + bTra,
2240  DDRotation() ) ;
2241 
2242  bSumTra += 2*bTra ;
2243  }
2244 
2245  const double bHalfWidth ( backCoolBarWidth()/2. + backCoolTankWidth() ) ;
2246 
2247  if( 0 != mBLyrHere() )
2248  {
2249  DDTranslation mTra ( -backCoolHeight/2. + mBCoolTubeOutDiam(), 0, 0 ) ;
2250  for( unsigned int j ( 0 ) ; j != vecMBLyrThick().size() ; ++j ) // loop over MB layers
2251  {
2252  const DDName mName ( ddname( vecMBLyrName()[j] + "_" +
2253  std::to_string(iMod+1) ) ) ;
2254 
2255  DDSolid mSolid ( DDSolidFactory::box( mName ,
2256  vecMBLyrThick()[j]/2,
2257  bHalfWidth,
2258  halfZBCool ) ) ;
2259 
2260  const DDLogicalPart mLog ( mName, ddmat(vecMBLyrMat()[j]), mSolid ) ;
2261 
2262  mTra += DDTranslation( vecMBLyrThick()[j]/2.0, 0*mm, 0*mm ) ;
2263  cpv.position( mLog,
2264  backCName,
2265  copyOne,
2266  mTra,
2267  DDRotation() ) ;
2268  mTra += DDTranslation( vecMBLyrThick()[j]/2.0, 0*mm, 0*mm ) ;
2269  }
2270  }
2271 
2272  if( 0 != mBCoolTubeHere() )
2273  {
2274  const DDName mBName ( ddname( mBCoolTubeName() + "_" +
2275  std::to_string(iMod+1) ) ) ;
2276 
2277  DDSolid mBCoolTubeSolid ( DDSolidFactory::tubs( mBName ,
2278  halfZBCool,
2279  0,
2280  mBCoolTubeOutDiam()/2,
2281  0*deg, 360*deg ) ) ;
2282  const DDLogicalPart mBLog ( mBName, mBCoolTubeMat(), mBCoolTubeSolid ) ;
2283 
2284  const DDName mBWaName ( ddname( mBCoolTubeName() + "Wa_" +
2285  std::to_string(iMod+1) ) ) ;
2286  DDSolid mBCoolTubeWaSolid ( DDSolidFactory::tubs( mBWaName ,
2287  halfZBCool,
2288  0,
2289  mBCoolTubeInnDiam()/2,
2290  0*deg, 360*deg ) ) ;
2291  const DDLogicalPart mBWaLog ( mBWaName, backPipeWaterMat(),
2292  mBCoolTubeWaSolid ) ;
2293  cpv.position( mBWaLog,
2294  mBName,
2295  copyOne,
2296  DDTranslation(0,0,0),
2297  DDRotation() ) ;
2298 
2299  for( unsigned int j ( 0 ) ; j != mBCoolTubeNum() ; ++j ) // loop over all MB cooling circuits
2300  {
2301  cpv.position( mBLog,
2302  backCName,
2303  2*j + 1,
2304  DDTranslation(-backCoolHeight/2.0+mBCoolTubeOutDiam()/2.,
2305  -bHalfWidth + (j+1)*bHalfWidth/5, 0),
2306  DDRotation() ) ;
2307  }
2308  }
2309 
2310 
2316  if( 0 != backPipeHere() &&
2317  0 != iMod )
2318  {
2319  DDName bPipeName ( ddname( backPipeName() + "_" +
2320  std::to_string( iMod+1 ) ) ) ;
2321  DDName bInnerName ( ddname( backPipeName() +
2322  "_H2O_" + std::to_string( iMod+1 ) ) ) ;
2323 
2324  DDSolid backPipeSolid ( DDSolidFactory::tubs( bPipeName ,
2325  pipeLength/2,
2326  0*mm,
2327  vecBackPipeDiam()[iMod]/2,
2328  0*deg, 360*deg ) ) ;
2329 
2330  DDSolid backInnerSolid ( DDSolidFactory::tubs( bInnerName ,
2331  pipeLength/2,
2332  0*mm,
2333  vecBackPipeDiam()[iMod]/2 -
2334  vecBackPipeThick()[iMod],
2335  0*deg, 360*deg ) ) ;
2336 
2337  const DDLogicalPart backPipeLog ( bPipeName,
2338  backPipeMat(),
2339  backPipeSolid ) ;
2340 
2341  const DDLogicalPart backInnerLog ( bInnerName,
2342  backPipeWaterMat(),
2343  backInnerSolid ) ;
2344 
2345  const DDTranslation bPipeTra1 ( backXOff() +
2346  backSideHeight() -
2347  0.7*vecBackPipeDiam()[iMod],
2348  backYOff() +
2349  backPlateWidth()/2 -
2350  backSideWidth() -
2351  0.7*vecBackPipeDiam()[iMod],
2352  pipeZPos ) ;
2353 
2354  cpv.position( backPipeLog,
2355  spmName(),
2356  copyOne,
2357  bPipeTra1,
2358  DDRotation() ) ;
2359 
2360  const DDTranslation bPipeTra2 ( bPipeTra1.x(),
2361  backYOff() -
2362  backPlateWidth()/2 +
2363  backSideWidth() +
2364  vecBackPipeDiam()[iMod],
2365  bPipeTra1.z() ) ;
2366 
2367  cpv.position( backPipeLog,
2368  spmName(),
2369  copyTwo,
2370  bPipeTra2,
2371  DDRotation() ) ;
2372 
2373  cpv.position( backInnerLog,
2374  bPipeName,
2375  copyOne,
2376  DDTranslation(),
2377  DDRotation() ) ;
2378  }
2384 
2385 //=================================================
2386 
2387  if( 0 != dryAirTubeHere() )
2388  {
2389  DDName dryAirTubName ( ddname( dryAirTubeName() + std::to_string( iMod+1 ) ) ) ;
2390 
2391  DDSolid dryAirTubeSolid ( DDSolidFactory::tubs( dryAirTubName ,
2392  pipeLength/2,
2393  dryAirTubeInnDiam()/2,
2394  dryAirTubeOutDiam()/2,
2395  0*deg, 360*deg ) ) ;
2396 
2397  const DDLogicalPart dryAirTubeLog ( dryAirTubName ,
2398  dryAirTubeMat(),
2399  dryAirTubeSolid ) ;
2400 
2401  const DDTranslation dryAirTubeTra1 ( backXOff() +
2402  backSideHeight() -
2403  0.7*dryAirTubeOutDiam() -
2404  vecBackPipeDiam()[iMod],
2405  backYOff() +
2406  backPlateWidth()/2 -
2407  backSideWidth() -
2408  1.2*dryAirTubeOutDiam(),
2409  pipeZPos ) ;
2410 
2411  cpv.position( dryAirTubeLog,
2412  spmName(),
2413  copyOne,
2414  dryAirTubeTra1,
2415  DDRotation() ) ;
2416 
2417  const DDTranslation dryAirTubeTra2 ( dryAirTubeTra1.x(),
2418  backYOff() -
2419  backPlateWidth()/2 +
2420  backSideWidth() +
2421  0.7*dryAirTubeOutDiam() ,
2422  dryAirTubeTra1.z() ) ;
2423 
2424  cpv.position( dryAirTubeLog,
2425  spmName(),
2426  copyTwo,
2427  dryAirTubeTra2,
2428  DDRotation() ) ;
2429  }
2430  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2431 
2437 
2438  DDTranslation cTra ( backCoolBarHeight()/2. -
2439  backCoolHeight/2. +
2440  bottomThick, 0 ,
2441  -halfZTank + halfZCoolVFE ) ;
2442  const unsigned int numSec ( static_cast<unsigned int> (vecBackCoolNSec()[iMod]) ) ;
2443  for( unsigned int jSec ( 0 ) ; jSec != numSec ; ++jSec )
2444  {
2445  const unsigned int nMax ( static_cast<unsigned int> (vecBackCoolNPerSec()[iNSec++]) ) ;
2446  for( unsigned int iBar ( 0 ) ; iBar != nMax ; ++iBar )
2447  {
2448  cpv.position( backCoolVFELog,
2449  backCName,
2450  iCVFECopy++,
2451  cTra,
2452  DDRotation() ) ;
2453  cTra += DDTranslation( 0, 0, backCBStdSep() ) ;
2454  }
2455  cTra -= DDTranslation( 0, 0, backCBStdSep() ) ; // backspace to previous
2456  if( jSec != numSec-1 ) cTra += DDTranslation(
2457  0, 0, vecBackCoolSecSep()[iSep++] ) ; // now take atypical step
2458  }
2464  }
2465 
2471 
2477 
2478  double patchHeight ( 0 ) ;
2479  for( unsigned int iPatch ( 0 ) ; iPatch != vecPatchPanelThick().size() ; ++iPatch )
2480  {
2481  patchHeight += vecPatchPanelThick()[iPatch] ;
2482  }
2483 
2484  DDSolid patchSolid ( DDSolidFactory::box( patchPanelName() ,
2485  patchHeight/2.,
2486  backCoolBarWidth()/2.,
2487  ( vecSpmZPts().back() -
2488  vecGrilleZOff().back() -
2489  grilleThick() )/2 ) ) ;
2490 
2491  const std::vector<double>& patchParms ( patchSolid.parameters() ) ;
2492 
2493  const DDLogicalPart patchLog ( patchPanelName(), spmMat(), patchSolid ) ;
2494 
2495  const DDTranslation patchTra ( backXOff() + 4*mm ,
2496  0*mm,
2497  vecGrilleZOff().back() +
2498  grilleThick() +
2499  patchParms[2] ) ;
2500  if( 0 != patchPanelHere() )
2501  cpv.position( patchLog,
2502  spmName(),
2503  copyOne,
2504  patchTra,
2505  DDRotation() ) ;
2506 
2507  DDTranslation pTra (-patchParms[0],0,0) ;
2508 
2509  for( unsigned int j ( 0 ) ; j != vecPatchPanelNames().size() ; ++j )
2510  {
2511  const DDName pName ( ddname( vecPatchPanelNames()[j] ) ) ;
2512 
2513  DDSolid pSolid ( DDSolidFactory::box( pName ,
2514  vecPatchPanelThick()[j]/2.,
2515  patchParms[1],
2516  patchParms[2] ) ) ;
2517 
2518  const DDLogicalPart pLog ( pName, ddmat(vecPatchPanelMat()[j]), pSolid ) ;
2519 
2520  pTra += DDTranslation( vecPatchPanelThick()[j]/2, 0*mm, 0*mm ) ;
2521 
2522  cpv.position( pLog,
2523  patchPanelName(),
2524  copyOne,
2525  pTra,
2526  DDRotation() ) ;
2527 
2528  pTra += DDTranslation( vecPatchPanelThick()[j]/2, 0*mm, 0*mm ) ;
2529  }
2535 
2541 
2542  if( 0 != pincerRodHere() )
2543  {
2544  // Make hierarchy of rods, envelopes, blocks, shims, and cutouts
2545 
2546  DDSolid rodSolid ( DDSolidFactory::box( pincerRodName() ,
2547  pincerEnvWidth()/2.,
2548  pincerEnvHeight()/2.,
2549  ilyLength/2 ) ) ;
2550  const DDLogicalPart rodLog ( pincerRodName(), pincerRodMat(), rodSolid ) ;
2551 
2552  DDSolid envSolid ( DDSolidFactory::box( pincerEnvName() ,
2553  pincerEnvWidth()/2.,
2554  pincerEnvHeight()/2.,
2555  pincerEnvLength()/2 ) ) ;
2556  const DDLogicalPart envLog ( pincerEnvName(), pincerEnvMat(), envSolid ) ;
2557  const std::vector<double>& envParms ( envSolid.parameters() ) ;
2558 
2559  DDSolid blkSolid ( DDSolidFactory::box( pincerBlkName() ,
2560  pincerEnvWidth()/2.,
2561  pincerEnvHeight()/2.,
2562  pincerBlkLength()/2 ) ) ;
2563  const DDLogicalPart blkLog ( pincerBlkName(), pincerBlkMat(), blkSolid ) ;
2564  const std::vector<double>& blkParms ( blkSolid.parameters() ) ;
2565  cpv.position( blkLog,
2566  pincerEnvName(),
2567  copyOne,
2569  DDRotation() ) ;
2570 
2571  DDSolid cutSolid ( DDSolidFactory::box( pincerCutName() ,
2572  pincerCutWidth()/2.,
2573  pincerCutHeight()/2.,
2574  pincerBlkLength()/2 ) ) ;
2575  const DDLogicalPart cutLog ( pincerCutName(), pincerCutMat(), cutSolid ) ;
2576  const std::vector<double>& cutParms ( cutSolid.parameters() ) ;
2577  cpv.position( cutLog,
2578  pincerBlkName(),
2579  copyOne,
2580  DDTranslation( +blkParms[0] - cutParms[0] - pincerShim1Width() + pincerShim2Width(),
2581  -blkParms[1] + cutParms[1], 0 ),
2582  DDRotation() ) ;
2583 
2584  DDSolid shim2Solid ( DDSolidFactory::box( pincerShim2Name() ,
2585  pincerShim2Width()/2.,
2586  pincerShimHeight()/2.,
2587  pincerBlkLength()/2 ) ) ;
2588  const DDLogicalPart shim2Log ( pincerShim2Name(), pincerShimMat(), shim2Solid ) ;
2589  const std::vector<double>& shim2Parms ( shim2Solid.parameters() ) ;
2590  cpv.position( shim2Log,
2591  pincerCutName(),
2592  copyOne,
2593  DDTranslation( +cutParms[0] - shim2Parms[0],
2594  -cutParms[1] + shim2Parms[1], 0 ),
2595  DDRotation() ) ;
2596 
2597  DDSolid shim1Solid ( DDSolidFactory::box( pincerShim1Name() ,
2598  pincerShim1Width()/2.,