CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/Geometry/EcalCommonData/interface/DDEcalBarrelAlgo.h

Go to the documentation of this file.
00001 #ifndef DD_EcalBarrelAlgo_h
00002 #define DD_EcalBarrelAlgo_h
00003 
00004 #include <map>
00005 #include <string>
00006 #include <vector>
00007 #include "DetectorDescription/Base/interface/DDTypes.h"
00008 #include "DetectorDescription/Core/interface/DDName.h"
00009 #include "DetectorDescription/Algorithm/interface/DDAlgorithm.h"
00010 #include "DetectorDescription/Core/interface/DDMaterial.h"
00011 #include "DetectorDescription/Core/interface/DDSplit.h"
00012 #include "DetectorDescription/Core/interface/DDTransform.h"
00013 #include "Geometry/CaloGeometry/interface/EcalTrapezoidParameters.h"
00014 #include "CLHEP/Geometry/Transform3D.h" 
00015 
00016 class DDEcalBarrelAlgo : public DDAlgorithm {
00017  public:
00018 
00019       typedef EcalTrapezoidParameters Trap ;
00020       typedef HepGeom::Point3D<double>               Pt3D ;
00021       typedef HepGeom::Transform3D          Tf3D ;
00022       typedef HepGeom::ReflectZ3D           RfZ3D ;
00023       typedef HepGeom::Translate3D          Tl3D ;
00024       typedef HepGeom::Rotate3D             Ro3D ;
00025       typedef HepGeom::RotateZ3D            RoZ3D ;
00026       typedef HepGeom::RotateY3D            RoY3D ;
00027       typedef HepGeom::RotateX3D            RoX3D ;
00028 
00029       typedef CLHEP::Hep3Vector              Vec3 ;
00030       typedef CLHEP::HepRotation             Rota ;
00031 
00032       //Constructor and Destructor
00033       DDEcalBarrelAlgo();
00034       virtual ~DDEcalBarrelAlgo();
00035 
00036       void initialize(const DDNumericArguments      & nArgs,
00037                       const DDVectorArguments       & vArgs,
00038                       const DDMapArguments          & mArgs,
00039                       const DDStringArguments       & sArgs,
00040                       const DDStringVectorArguments & vsArgs);
00041       void execute(DDCompactView& cpv);
00042 
00043       DDMaterial ddmat(  const std::string& s ) const ;
00044       DDName     ddname( const std::string& s ) const ;
00045       DDRotation myrot(  const std::string& s,
00046                          const CLHEP::HepRotation& r ) const ;
00047       DDSolid    mytrap( const std::string& s,
00048                          const Trap&        t ) const ;
00049 
00050       const std::string&         idNameSpace() const { return m_idNameSpace   ; }
00051 
00052       // barrel parent volume
00053       DDName                     barName()     const { return ddname( m_BarName ) ; }
00054       DDMaterial                 barMat()      const { return ddmat(  m_BarMat  ) ; }
00055       const std::vector<double>& vecBarZPts()  const { return m_vecBarZPts        ; }
00056       const std::vector<double>& vecBarRMin()  const { return m_vecBarRMin        ; }
00057       const std::vector<double>& vecBarRMax()  const { return m_vecBarRMax        ; }
00058       const std::vector<double>& vecBarTran()  const { return m_vecBarTran        ; }
00059       const std::vector<double>& vecBarRota()  const { return m_vecBarRota        ; }
00060       const std::vector<double>& vecBarRota2() const { return m_vecBarRota2       ; }
00061       const std::vector<double>& vecBarRota3() const { return m_vecBarRota3       ; }
00062       double                     barPhiLo()    const { return m_BarPhiLo          ; }
00063       double                     barPhiHi()    const { return m_BarPhiHi          ; }
00064       double                     barHere()     const { return m_BarHere           ; }
00065 
00066       DDName                     spmName()     const { return ddname( m_SpmName ) ; } 
00067       DDMaterial                 spmMat()      const { return ddmat(  m_SpmMat  ) ; }
00068       const std::vector<double>& vecSpmZPts()  const { return m_vecSpmZPts ; }
00069       const std::vector<double>& vecSpmRMin()  const { return m_vecSpmRMin ; }
00070       const std::vector<double>& vecSpmRMax()  const { return m_vecSpmRMax ; }
00071       const std::vector<double>& vecSpmTran()  const { return m_vecSpmTran ; }
00072       const std::vector<double>& vecSpmRota()  const { return m_vecSpmRota ; }
00073       const std::vector<double>& vecSpmBTran() const { return m_vecSpmBTran ; }
00074       const std::vector<double>& vecSpmBRota() const { return m_vecSpmBRota ; }
00075       unsigned int               spmNPerHalf() const { return m_SpmNPerHalf ; }
00076       double                     spmLowPhi()   const { return m_SpmLowPhi ; }
00077       double                     spmDelPhi()   const { return m_SpmDelPhi ; }
00078       double                     spmPhiOff()   const { return m_SpmPhiOff ; }
00079       const std::vector<double>& vecSpmHere()  const { return m_vecSpmHere ; }
00080       DDName                     spmCutName()  const { return ddname( m_SpmCutName ) ; }
00081       double                     spmCutThick() const { return m_SpmCutThick ; }
00082       int                        spmCutShow()  const { return m_SpmCutShow ; } 
00083       double                     spmCutRM()    const { return m_SpmCutRM ; }
00084       double                     spmCutRP()    const { return m_SpmCutRP ; }
00085       const std::vector<double>& vecSpmCutTM() const { return m_vecSpmCutTM ; }
00086       const std::vector<double>& vecSpmCutTP() const { return m_vecSpmCutTP ; }
00087       double                     spmExpThick() const { return m_SpmExpThick ; }
00088       double                     spmExpWide()  const { return m_SpmExpWide ; }
00089       double                     spmExpYOff()  const { return m_SpmExpYOff ; }
00090       DDName                     spmSideName() const { return ddname( m_SpmSideName ) ; } 
00091       DDMaterial                 spmSideMat()  const { return ddmat(  m_SpmSideMat  ) ; }
00092       double                     spmSideHigh() const { return m_SpmSideHigh ; }
00093       double                     spmSideThick() const { return m_SpmSideThick ; }
00094       double                     spmSideYOffM() const { return m_SpmSideYOffM ; }
00095       double                     spmSideYOffP() const { return m_SpmSideYOffP ; }
00096 
00097       double                     nomCryDimAF()    const { return m_NomCryDimAF    ; } 
00098       double                     nomCryDimLZ()    const { return m_NomCryDimLZ    ; }
00099       const std::vector<double>& vecNomCryDimBF() const { return m_vecNomCryDimBF ; }
00100       const std::vector<double>& vecNomCryDimCF() const { return m_vecNomCryDimCF ; }
00101       const std::vector<double>& vecNomCryDimAR() const { return m_vecNomCryDimAR ; }
00102       const std::vector<double>& vecNomCryDimBR() const { return m_vecNomCryDimBR ; }
00103       const std::vector<double>& vecNomCryDimCR() const { return m_vecNomCryDimCR ; }
00104 
00105       double                     underAF()     const { return m_UnderAF ; }
00106       double                     underLZ()     const { return m_UnderLZ ; }
00107       double                     underBF()     const { return m_UnderBF ; }
00108       double                     underCF()     const { return m_UnderCF ; }
00109       double                     underAR()     const { return m_UnderAR ; }
00110       double                     underBR()     const { return m_UnderBR ; }
00111       double                     underCR()     const { return m_UnderCR ; }
00112 
00113       double                     wallThAlv()   const { return m_WallThAlv ; }
00114       double                     wrapThAlv()   const { return m_WrapThAlv ; }
00115       double                     clrThAlv()    const { return m_ClrThAlv  ; }
00116       const std::vector<double>& vecGapAlvEta() const { return m_vecGapAlvEta ; }
00117 
00118       double                     wallFrAlv()   const { return m_WallFrAlv ; }
00119       double                     wrapFrAlv()   const { return m_WrapFrAlv ; }
00120       double                     clrFrAlv()    const { return m_ClrFrAlv ; }
00121 
00122       double                     wallReAlv()   const { return m_WallReAlv ; }
00123       double                     wrapReAlv()   const { return m_WrapReAlv ; }
00124       double                     clrReAlv()    const { return m_ClrReAlv ; }
00125 
00126       unsigned int               nCryTypes()     const { return m_NCryTypes ; }
00127       unsigned int               nCryPerAlvEta() const { return m_NCryPerAlvEta ; }
00128 
00129       const std::string&         cryName()  const { return m_CryName ; } 
00130       const std::string&         clrName()  const { return m_ClrName ; } 
00131       const std::string&         wrapName() const { return m_WrapName ; } 
00132       const std::string&         wallName() const { return m_WallName ; } 
00133 
00134       DDMaterial                 cryMat()   const { return ddmat( m_CryMat ) ; } 
00135       DDMaterial                 clrMat()   const { return ddmat( m_ClrMat ) ; } 
00136       DDMaterial                 wrapMat()  const { return ddmat( m_WrapMat ) ; } 
00137       DDMaterial                 wallMat()  const { return ddmat( m_WallMat ) ; } 
00138 
00139       DDName                   apdName () const { return ddname(m_APDName) ; }
00140       double                   apdHere () const { return m_APDHere ; }
00141       DDMaterial               apdMat  () const { return ddmat(m_APDMat)  ; }
00142       double                   apdSide () const { return m_APDSide ; }
00143       double                   apdThick() const { return m_APDThick; }
00144       double                   apdZ    () const { return m_APDZ    ; }
00145       double                   apdX1   () const { return m_APDX1   ; }
00146       double                   apdX2   () const { return m_APDX2   ; }
00147 
00148       double                     webHere()      const { return m_WebHere     ; }
00149       const std::string&         webPlName()    const { return m_WebPlName          ; }
00150       const std::string&         webClrName()   const { return m_WebClrName         ; }
00151       DDMaterial                 webPlMat()     const { return ddmat( m_WebPlMat )  ; } 
00152       DDMaterial                 webClrMat()    const { return ddmat( m_WebClrMat ) ; } 
00153       const std::vector<double>& vecWebPlTh()   const { return m_vecWebPlTh         ; }
00154       const std::vector<double>& vecWebClrTh()  const { return m_vecWebClrTh        ; } 
00155       const std::vector<double>& vecWebLength() const { return m_vecWebLength       ; } 
00156 
00157       double                          ilyHere()     const { return m_IlyHere     ; }
00158       const std::string&              ilyName()     const { return m_IlyName     ; }
00159       double                          ilyPhiLow()   const { return m_IlyPhiLow   ; }
00160       double                          ilyDelPhi()   const { return m_IlyDelPhi   ; }
00161       const std::vector<std::string>& vecIlyMat()   const { return m_vecIlyMat   ; }
00162       const std::vector<double>&      vecIlyThick() const { return m_vecIlyThick ; }
00163 
00164       const std::string&         ilyPipeName     () const { return m_IlyPipeName         ;}
00165       double                     ilyPipeHere     () const { return m_IlyPipeHere          ;}
00166       DDMaterial                 ilyPipeMat      () const { return ddmat(m_IlyPipeMat)           ;}
00167       double                     ilyPipeOD       () const { return m_IlyPipeOD            ;}
00168       double                     ilyPipeID       () const { return m_IlyPipeID            ;}
00169       const std::vector<double>& vecIlyPipeLength() const { return m_vecIlyPipeLength     ;}
00170       const std::vector<double>& vecIlyPipeType  () const { return m_vecIlyPipeType       ;}
00171       const std::vector<double>& vecIlyPipePhi   () const { return m_vecIlyPipePhi        ;}
00172       const std::vector<double>& vecIlyPipeZ     () const { return m_vecIlyPipeZ        ;}
00173 
00174       DDName                     ilyPTMName   () const { return ddname(m_IlyPTMName)  ;}
00175       double                     ilyPTMHere   () const { return m_IlyPTMHere   ;}
00176       DDMaterial                 ilyPTMMat    () const { return ddmat(m_IlyPTMMat)    ;}
00177       double                     ilyPTMWidth  () const { return m_IlyPTMWidth  ;}
00178       double                     ilyPTMLength () const { return m_IlyPTMLength ;}
00179       double                     ilyPTMHeight () const { return m_IlyPTMHeight ;}
00180       const std::vector<double>& vecIlyPTMZ   () const { return m_vecIlyPTMZ   ;}
00181       const std::vector<double>& vecIlyPTMPhi () const { return m_vecIlyPTMPhi ;}
00182 
00183       DDName                   ilyFanOutName  () const { return ddname(m_IlyFanOutName)  ;}
00184       double                   ilyFanOutHere  () const { return m_IlyFanOutHere  ;}
00185       DDMaterial               ilyFanOutMat   () const { return ddmat(m_IlyFanOutMat)   ;}
00186       double                   ilyFanOutWidth () const { return m_IlyFanOutWidth ;}
00187       double                   ilyFanOutLength() const { return m_IlyFanOutLength;}
00188       double                   ilyFanOutHeight() const { return m_IlyFanOutHeight;}
00189       const std::vector<double>& vecIlyFanOutZ  () const { return m_vecIlyFanOutZ  ;}
00190       const std::vector<double>& vecIlyFanOutPhi() const { return m_vecIlyFanOutPhi;}
00191       DDName                   ilyDiffName    () const { return ddname(m_IlyDiffName)    ;}
00192       DDMaterial               ilyDiffMat     () const { return ddmat(m_IlyDiffMat)    ;}
00193       double                   ilyDiffOff     () const { return m_IlyDiffOff     ;}
00194       double                   ilyDiffLength  () const { return m_IlyDiffLength  ;}
00195       DDName                   ilyBndlName    () const { return ddname(m_IlyBndlName)    ;}
00196       DDMaterial               ilyBndlMat     () const { return ddmat(m_IlyBndlMat)    ;}
00197       double                   ilyBndlOff     () const { return m_IlyBndlOff     ;}
00198       double                   ilyBndlLength  () const { return m_IlyBndlLength  ;}
00199       DDName                   ilyFEMName     () const { return ddname(m_IlyFEMName)     ;}
00200       DDMaterial               ilyFEMMat      () const { return ddmat(m_IlyFEMMat)      ;}
00201       double                   ilyFEMWidth    () const { return m_IlyFEMWidth    ;}
00202       double                   ilyFEMLength   () const { return m_IlyFEMLength   ;}
00203       double                   ilyFEMHeight   () const { return m_IlyFEMHeight   ;}
00204       const std::vector<double>& vecIlyFEMZ     () const { return m_vecIlyFEMZ     ;}
00205       const std::vector<double>& vecIlyFEMPhi   () const { return m_vecIlyFEMPhi   ;}
00206 
00207       DDName              hawRName() const { return ddname( m_HawRName ) ; }
00208       DDName              fawName()  const { return ddname( m_FawName  ) ; }
00209       double              fawHere( ) const { return m_FawHere ; }
00210       double              hawRHBIG() const { return m_HawRHBIG ; }
00211       double              hawRhsml() const { return m_HawRhsml ; }
00212       double              hawRCutY() const { return m_HawRCutY ; }
00213       double              hawRCutZ() const { return m_HawRCutZ ; }
00214       double              hawRCutDelY() const { return m_HawRCutDelY ; }
00215       double              hawYOffCry() const { return m_HawYOffCry ; }
00216 
00217       unsigned int        nFawPerSupm() const { return m_NFawPerSupm ; }
00218       double              fawPhiOff() const { return m_FawPhiOff ; }
00219       double              fawDelPhi() const { return m_FawDelPhi ; }
00220       double              fawPhiRot() const { return m_FawPhiRot ; }
00221       double              fawRadOff() const { return m_FawRadOff ; }
00222 
00223       double              gridHere()  const { return m_GridHere     ; }
00224       DDName              gridName()  const { return ddname( m_GridName ) ; }
00225       DDMaterial          gridMat()   const { return ddmat(  m_GridMat  ) ; }
00226       double              gridThick() const { return m_GridThick ; }
00227 
00228       double                    backHere()        const { return m_BackHere     ; }
00229       double                    backXOff()        const { return m_BackXOff ; } 
00230       double                    backYOff()        const { return m_BackYOff ; }
00231       DDName                    backSideName()    const { return ddname( m_BackSideName ) ; }
00232       double                    backSideHere()    const { return m_BackSideHere         ; } 
00233       double                    backSideLength()  const { return m_BackSideLength         ; } 
00234       double                    backSideHeight()  const { return m_BackSideHeight         ; }
00235       double                    backSideWidth()   const { return m_BackSideWidth          ; }
00236       double                    backSideYOff1()   const { return m_BackSideYOff1         ; }
00237       double                    backSideYOff2()   const { return m_BackSideYOff2          ; }
00238       double                    backSideAngle()   const { return m_BackSideAngle          ; }
00239       DDMaterial                backSideMat()     const { return ddmat( m_BackSideMat )   ; }
00240       DDName                    backPlateName()   const { return ddname( m_BackPlateName ) ; }
00241       double                    backPlateHere()   const { return m_BackPlateHere         ; } 
00242       double                    backPlateLength() const { return m_BackPlateLength   ; }
00243       double                    backPlateThick()  const { return m_BackPlateThick     ; }
00244       double                    backPlateWidth()  const { return m_BackPlateWidth     ; }
00245       DDMaterial                backPlateMat()    const { return ddmat( m_BackPlateMat ) ; }
00246       DDName                    backPlate2Name()   const { return ddname( m_BackPlate2Name ) ; }
00247       double                    backPlate2Thick()  const { return m_BackPlate2Thick     ; }
00248       DDMaterial                backPlate2Mat()    const { return ddmat( m_BackPlate2Mat ) ; }
00249       const std::string&        grilleName()      const { return m_GrilleName ; }
00250       double                    grilleThick()     const { return m_GrilleThick         ; }
00251       double                    grilleHere()      const { return m_GrilleHere          ; }
00252       double                    grilleWidth()     const { return m_GrilleWidth         ; }
00253       double                    grilleZSpace()    const { return m_GrilleZSpace         ; }
00254       DDMaterial                grilleMat()       const { return ddmat( m_GrilleMat )    ; }
00255       const std::vector<double>& vecGrilleHeight() const { return m_vecGrilleHeight      ; }
00256       const std::vector<double>& vecGrilleZOff()  const { return m_vecGrilleZOff        ; }
00257 
00258       DDName                   grEdgeSlotName    () const { return ddname(m_GrEdgeSlotName) ; }
00259       DDMaterial               grEdgeSlotMat     () const { return ddmat(m_GrEdgeSlotMat) ; }
00260       double                   grEdgeSlotHere    () const { return m_GrEdgeSlotHere    ; }
00261       double                   grEdgeSlotHeight  () const { return m_GrEdgeSlotHeight  ; }
00262       double                   grEdgeSlotWidth   () const { return m_GrEdgeSlotWidth   ; }
00263       const std::string&       grMidSlotName     () const { return m_GrMidSlotName     ; }
00264       DDMaterial               grMidSlotMat      () const { return ddmat(m_GrMidSlotMat) ; }
00265       double                   grMidSlotHere     () const { return m_GrMidSlotHere     ; }
00266       double                   grMidSlotWidth    () const { return m_GrMidSlotWidth    ; }
00267       double                   grMidSlotXOff     () const { return m_GrMidSlotXOff     ; }
00268       const std::vector<double>& vecGrMidSlotHeight() const { return m_vecGrMidSlotHeight; }
00269 
00270       double                    backPipeHere()    const { return m_BackPipeHere     ; }
00271       const std::string&        backPipeName()   const { return m_BackPipeName ; }
00272       const std::vector<double>& vecBackPipeDiam() const { return m_vecBackPipeDiam    ; }
00273       const std::vector<double>& vecBackPipeThick() const { return m_vecBackPipeThick    ; }
00274       DDMaterial                backPipeMat()    const { return ddmat( m_BackPipeMat ) ; }
00275       DDMaterial                backPipeWaterMat() const { return ddmat( m_BackPipeWaterMat ) ; }
00276       double                   backMiscHere()       const { return m_BackMiscHere     ; }
00277       const std::vector<double>& vecBackMiscThick() const { return m_vecBackMiscThick ; }
00278       const std::vector<std::string>& vecBackMiscName() const
00279                                   { return m_vecBackMiscName ; }
00280       const std::vector<std::string>& vecBackMiscMat() const
00281                                   { return m_vecBackMiscMat ; }
00282       double                     patchPanelHere()     const { return m_PatchPanelHere     ; }
00283       const std::vector<double>& vecPatchPanelThick() const { return m_vecPatchPanelThick ; }
00284       const std::vector<std::string>& vecPatchPanelNames() const
00285                                   { return m_vecPatchPanelNames ; }
00286       const std::vector<std::string>& vecPatchPanelMat() const
00287                                   { return m_vecPatchPanelMat ; }
00288       DDName                    patchPanelName()   const { return ddname( m_PatchPanelName ) ; }
00289 
00290       const std::vector<std::string>& vecBackCoolName() const { return m_vecBackCoolName       ;}
00291       double                   backCoolHere()       const { return m_BackCoolHere     ; }
00292       double                   backCoolBarWidth  () const { return m_BackCoolBarWidth      ;}
00293       double                   backCoolBarHeight () const { return m_BackCoolBarHeight     ;}
00294       DDMaterial               backCoolMat       () const { return ddmat(m_BackCoolMat)    ;}
00295       double                   backCoolBarHere()    const { return m_BackCoolBarHere     ; }
00296       DDName                   backCoolBarName   () const { return ddname(m_BackCoolBarName);}
00297       double                   backCoolBarThick  () const { return m_BackCoolBarThick      ;}
00298       DDMaterial               backCoolBarMat    () const { return ddmat(m_BackCoolBarMat) ;}
00299       DDName                   backCoolBarSSName () const { return ddname(m_BackCoolBarSSName);}
00300       double                   backCoolBarSSThick() const { return m_BackCoolBarSSThick    ;}
00301       DDMaterial               backCoolBarSSMat  () const { return ddmat(m_BackCoolBarSSMat) ;}
00302       DDName                   backCoolBarWaName () const { return ddname(m_BackCoolBarWaName);}
00303       double                   backCoolBarWaThick() const { return m_BackCoolBarWaThick    ;}
00304       DDMaterial               backCoolBarWaMat  () const { return ddmat(m_BackCoolBarWaMat) ;}
00305       double                   backCoolVFEHere()    const { return m_BackCoolVFEHere     ; }
00306       DDName                   backCoolVFEName   () const { return ddname(m_BackCoolVFEName) ;}
00307       DDMaterial               backCoolVFEMat    () const { return ddmat(m_BackCoolVFEMat) ;}
00308       DDName                   backVFEName       () const { return ddname(m_BackVFEName)   ;}
00309       DDMaterial               backVFEMat        () const { return ddmat(m_BackVFEMat) ;}
00310       const std::vector<double>& vecBackVFELyrThick() const { return m_vecBackVFELyrThick    ;}
00311       const std::vector<std::string>& vecBackVFELyrName () const { return m_vecBackVFELyrName     ;}
00312       const std::vector<std::string>& vecBackVFELyrMat  () const { return m_vecBackVFELyrMat      ;}
00313       const std::vector<double>& vecBackCoolNSec   () const { return m_vecBackCoolNSec       ;}
00314       const std::vector<double>& vecBackCoolSecSep () const { return m_vecBackCoolSecSep     ;}
00315       const std::vector<double>& vecBackCoolNPerSec() const { return m_vecBackCoolNPerSec    ;}
00316       double                   backCBStdSep      () const { return m_BackCBStdSep          ;}
00317 
00318       double                   backCoolTankHere()    const { return m_BackCoolTankHere     ; }
00319       const std::string&       backCoolTankName   () const { return m_BackCoolTankName ;}
00320       double                   backCoolTankWidth  () const { return m_BackCoolTankWidth  ;}
00321       double                   backCoolTankThick  () const { return m_BackCoolTankThick  ;}
00322       DDMaterial               backCoolTankMat    () const { return ddmat(m_BackCoolTankMat) ;}
00323       const std::string&       backCoolTankWaName () const { return m_BackCoolTankWaName ;}
00324       double                   backCoolTankWaWidth() const { return m_BackCoolTankWaWidth;}
00325       DDMaterial               backCoolTankWaMat  () const { return ddmat(m_BackCoolTankWaMat) ;}
00326       const std::string&       backBracketName    () const { return m_BackBracketName  ;}
00327       double                   backBracketHeight  () const { return m_BackBracketHeight  ;}
00328       DDMaterial               backBracketMat     () const { return ddmat(m_BackBracketMat)    ;}
00329       
00330       double                   dryAirTubeHere()     const { return m_DryAirTubeHere     ; }
00331       const std::string&       dryAirTubeName    () const { return m_DryAirTubeName   ;}
00332       double                   mBCoolTubeNum     () const { return m_MBCoolTubeNum   ;}
00333       double                   dryAirTubeInnDiam () const { return m_DryAirTubeInnDiam   ;}
00334       double                   dryAirTubeOutDiam () const { return m_DryAirTubeOutDiam   ;}
00335       DDMaterial               dryAirTubeMat     () const { return ddmat(m_DryAirTubeMat)      ;}
00336       double                   mBCoolTubeHere()     const { return m_MBCoolTubeHere     ; }
00337       const std::string&       mBCoolTubeName    () const { return m_MBCoolTubeName   ;}
00338       double                   mBCoolTubeInnDiam () const { return m_MBCoolTubeInnDiam   ;}
00339       double                   mBCoolTubeOutDiam () const { return m_MBCoolTubeOutDiam   ;}
00340       DDMaterial               mBCoolTubeMat     () const { return ddmat(m_MBCoolTubeMat)      ;}
00341       double                   mBManifHere()        const { return m_MBManifHere     ; }
00342       DDName                   mBManifName       () const { return ddname(m_MBManifName)        ;}
00343       double                   mBManifInnDiam    () const { return m_MBManifInnDiam      ;}
00344       double                   mBManifOutDiam    () const { return m_MBManifOutDiam      ;}
00345       DDMaterial               mBManifMat        () const { return ddmat(m_MBManifMat)         ;}
00346       double                   mBLyrHere()          const { return m_MBLyrHere     ; }
00347       const std::vector<double>&      vecMBLyrThick() const { return m_vecMBLyrThick       ;}
00348       const std::vector<std::string>& vecMBLyrName () const { return m_vecMBLyrName        ;}
00349       const std::vector<std::string>& vecMBLyrMat  () const { return m_vecMBLyrMat         ;}
00350 
00351 //----------
00352 
00353       double                   pincerRodHere      () const { return m_PincerRodHere      ;}
00354       DDName                   pincerRodName      () const { return ddname(m_PincerRodName)      ;}
00355       DDMaterial               pincerRodMat       () const { return ddmat(m_PincerRodMat)       ;}
00356       std::vector<double>      vecPincerRodAzimuth() const { return m_vecPincerRodAzimuth;}
00357       DDName                   pincerEnvName      () const { return ddname(m_PincerEnvName)      ;}
00358       DDMaterial               pincerEnvMat       () const { return ddmat(m_PincerEnvMat)       ;}
00359       double                   pincerEnvWidth     () const { return m_PincerEnvWidth     ;}
00360       double                   pincerEnvHeight    () const { return m_PincerEnvHeight    ;}
00361       double                   pincerEnvLength    () const { return m_PincerEnvLength    ;}
00362       std::vector<double>      vecPincerEnvZOff   () const { return m_vecPincerEnvZOff   ;}
00363                                                                                              
00364       DDName                   pincerBlkName      () const { return ddname(m_PincerBlkName)      ;}
00365       DDMaterial               pincerBlkMat       () const { return ddmat(m_PincerBlkMat)       ;}
00366       double                   pincerBlkLength    () const { return m_PincerBlkLength    ;}
00367                                                                                            
00368       DDName                   pincerShim1Name    () const { return ddname(m_PincerShim1Name)    ;}
00369       double                   pincerShimHeight   () const { return m_PincerShimHeight   ;}
00370       DDName                   pincerShim2Name    () const { return ddname(m_PincerShim2Name)    ;}
00371       DDMaterial               pincerShimMat      () const { return ddmat(m_PincerShimMat)      ;}
00372       double                   pincerShim1Width   () const { return m_PincerShim1Width   ;}
00373       double                   pincerShim2Width   () const { return m_PincerShim2Width   ;}
00374                                                                                          
00375       DDName                   pincerCutName      () const { return ddname(m_PincerCutName)      ;}
00376       DDMaterial               pincerCutMat       () const { return ddmat(m_PincerCutMat)      ;}
00377       double                   pincerCutWidth     () const { return m_PincerCutWidth    ;}
00378       double                   pincerCutHeight    () const { return m_PincerCutHeight    ;}
00379 
00380 protected:
00381 
00382 private:
00383 
00384       void web( unsigned int        iWeb,
00385                 double              bWeb,
00386                 double              BWeb,
00387                 double              LWeb,
00388                 double              theta,
00389                 const Pt3D&         corner,
00390                 const DDLogicalPart logPar,
00391                 double&             zee  ,
00392                 double              side,
00393                 double              front,
00394                 double              delta,
00395                 DDCompactView&      cpv );
00396 
00397       std::string         m_idNameSpace;            //Namespace of this and ALL sub-parts
00398 
00399       // Barrel volume
00400       std::string         m_BarName    ; // Barrel volume name
00401       std::string         m_BarMat     ; // Barrel material name
00402       std::vector<double> m_vecBarZPts ; // Barrel list of z pts
00403       std::vector<double> m_vecBarRMin ; // Barrel list of rMin pts
00404       std::vector<double> m_vecBarRMax ; // Barrel list of rMax pts
00405       std::vector<double> m_vecBarTran ; // Barrel translation
00406       std::vector<double> m_vecBarRota ; // Barrel rotation
00407       std::vector<double> m_vecBarRota2; // 2nd Barrel rotation
00408       std::vector<double> m_vecBarRota3; // 2nd Barrel rotation
00409       double              m_BarPhiLo   ; // Barrel phi lo
00410       double              m_BarPhiHi   ; // Barrel phi hi
00411       double              m_BarHere    ; // Barrel presence flag
00412       
00413       // Supermodule volume
00414       std::string         m_SpmName     ; // Supermodule volume name
00415       std::string         m_SpmMat      ; // Supermodule material name
00416       std::vector<double> m_vecSpmZPts  ; // Supermodule list of z pts
00417       std::vector<double> m_vecSpmRMin  ; // Supermodule list of rMin pts
00418       std::vector<double> m_vecSpmRMax  ; // Supermodule list of rMax pts
00419       std::vector<double> m_vecSpmTran  ; // Supermodule translation
00420       std::vector<double> m_vecSpmRota  ; // Supermodule rotation
00421       std::vector<double> m_vecSpmBTran ; // Base Supermodule translation
00422       std::vector<double> m_vecSpmBRota ; // Base Supermodule rotation
00423       unsigned int        m_SpmNPerHalf ; // # Supermodules per half detector
00424       double              m_SpmLowPhi   ; // Low   phi value of base supermodule
00425       double              m_SpmDelPhi   ; // Delta phi value of base supermodule
00426       double              m_SpmPhiOff   ; // Phi offset value supermodule
00427       std::vector<double> m_vecSpmHere  ; // Bit saying if a supermodule is present or not
00428       std::string         m_SpmCutName  ; // Name of cut box
00429       double              m_SpmCutThick ; // Box thickness
00430       int                 m_SpmCutShow  ; // Non-zero means show the box on display (testing only)
00431       std::vector<double> m_vecSpmCutTM ; // Translation for minus phi cut box
00432       std::vector<double> m_vecSpmCutTP ; // Translation for plus  phi cut box      
00433       double              m_SpmCutRM    ; // Rotation for minus phi cut box
00434       double              m_SpmCutRP    ; // Rotation for plus  phi cut box      
00435       double              m_SpmExpThick ; // Thickness (x) of supermodule expansion box
00436       double              m_SpmExpWide  ; // Width     (y) of supermodule expansion box
00437       double              m_SpmExpYOff  ; // Offset    (y) of supermodule expansion box
00438       std::string         m_SpmSideName ; // Supermodule Side Plate volume name
00439       std::string         m_SpmSideMat  ; // Supermodule Side Plate material name
00440       double              m_SpmSideHigh ; // Side plate height
00441       double              m_SpmSideThick; // Side plate thickness
00442       double              m_SpmSideYOffM; // Side plate Y offset on minus phi side
00443       double              m_SpmSideYOffP; // Side plate Y offset on plus  phi side
00444 
00445       double              m_NomCryDimAF    ; // Nominal crystal AF
00446       double              m_NomCryDimLZ    ; // Nominal crystal LZ
00447       std::vector<double> m_vecNomCryDimBF ; // Nominal crystal BF
00448       std::vector<double> m_vecNomCryDimCF ; // Nominal crystal CF
00449       std::vector<double> m_vecNomCryDimAR ; // Nominal crystal AR
00450       std::vector<double> m_vecNomCryDimBR ; // Nominal crystal BR
00451       std::vector<double> m_vecNomCryDimCR ; // Nominal crystal CR
00452 
00453       double              m_UnderAF ; // undershoot of AF
00454       double              m_UnderLZ ; // undershoot of LZ
00455       double              m_UnderBF ; // undershoot of BF
00456       double              m_UnderCF ; // undershoot of CF
00457       double              m_UnderAR ; // undershoot of AR
00458       double              m_UnderBR ; // undershoot of BR
00459       double              m_UnderCR ; // undershoot of CR
00460 
00461       double              m_WallThAlv ; // alveoli wall thickness
00462       double              m_WrapThAlv ; // wrapping thickness
00463       double              m_ClrThAlv  ; // clearance thickness (nominal)
00464       std::vector<double> m_vecGapAlvEta ; // Extra clearance after each alveoli perp to crystal axis
00465 
00466       double              m_WallFrAlv ; // alveoli wall frontage
00467       double              m_WrapFrAlv ; // wrapping frontage
00468       double              m_ClrFrAlv  ; // clearance frontage (nominal)
00469 
00470       double              m_WallReAlv ; // alveoli wall rearage
00471       double              m_WrapReAlv ; // wrapping rearage
00472       double              m_ClrReAlv  ; // clearance rearage (nominal)
00473 
00474       unsigned int        m_NCryTypes     ; // number of crystal shapes
00475       unsigned int        m_NCryPerAlvEta ; // number of crystals in eta per alveolus
00476 
00477       std::string         m_CryName  ; // string name of crystal volume
00478       std::string         m_ClrName  ; // string name of clearance volume
00479       std::string         m_WrapName ; // string name of wrap volume
00480       std::string         m_WallName ; // string name of wall volume
00481 
00482       std::string         m_CryMat  ; // string name of crystal material
00483       std::string         m_ClrMat  ; // string name of clearance material
00484       std::string         m_WrapMat ; // string name of wrap material
00485       std::string         m_WallMat ; // string name of wall material
00486 
00487       std::string              m_APDName      ; // APD
00488       double                   m_APDHere      ; // 
00489       std::string              m_APDMat       ; // 
00490       double                   m_APDSide      ; // 
00491       double                   m_APDThick     ; // 
00492       double                   m_APDZ         ; // 
00493       double                   m_APDX1        ; // 
00494       double                   m_APDX2        ; // 
00495 
00496       double              m_WebHere      ; // here flag
00497       std::string         m_WebPlName    ; // string name of web plate volume
00498       std::string         m_WebClrName   ; // string name of web clearance volume
00499       std::string         m_WebPlMat     ; // string name of web material
00500       std::string         m_WebClrMat    ; // string name of web clearance material
00501       std::vector<double> m_vecWebPlTh   ; // Thickness of web plates
00502       std::vector<double> m_vecWebClrTh  ; // Thickness of total web clearance
00503       std::vector<double> m_vecWebLength ; // Length of web plate
00504 
00505       double                   m_IlyHere      ; // here flag
00506       std::string              m_IlyName      ; // string name of inner layer volume
00507       double                   m_IlyPhiLow    ; // low phi of volumes
00508       double                   m_IlyDelPhi    ; // delta phi of ily
00509       std::vector<std::string> m_vecIlyMat    ; // materials of inner layer volumes
00510       std::vector<double>      m_vecIlyThick  ; // Thicknesses of inner layer volumes
00511 
00512       std::string              m_IlyPipeName          ; // Cooling pipes
00513       double                   m_IlyPipeHere          ; //
00514       std::string              m_IlyPipeMat           ; //
00515       double                   m_IlyPipeOD            ; //
00516       double                   m_IlyPipeID            ; //
00517       std::vector<double>      m_vecIlyPipeLength     ; //
00518       std::vector<double>      m_vecIlyPipeType       ; //
00519       std::vector<double>      m_vecIlyPipePhi        ; //
00520       std::vector<double>      m_vecIlyPipeZ          ; //
00521 
00522       std::string              m_IlyPTMName          ; // PTM
00523       double                   m_IlyPTMHere          ; //
00524       std::string              m_IlyPTMMat           ; //
00525       double                   m_IlyPTMWidth         ; //
00526       double                   m_IlyPTMLength        ; //
00527       double                   m_IlyPTMHeight        ; //
00528       std::vector<double>      m_vecIlyPTMZ          ; //
00529       std::vector<double>      m_vecIlyPTMPhi        ; //     
00530 
00531       std::string              m_IlyFanOutName          ; // FanOut
00532       double                   m_IlyFanOutHere          ; //
00533       std::string              m_IlyFanOutMat           ; //
00534       double                   m_IlyFanOutWidth         ; //
00535       double                   m_IlyFanOutLength        ; //
00536       double                   m_IlyFanOutHeight        ; //
00537       std::vector<double>      m_vecIlyFanOutZ          ; //
00538       std::vector<double>      m_vecIlyFanOutPhi        ; //     
00539       std::string              m_IlyDiffName            ; // Diffuser
00540       std::string              m_IlyDiffMat             ; //
00541       double                   m_IlyDiffOff             ; //
00542       double                   m_IlyDiffLength          ; //
00543       std::string              m_IlyBndlName            ; // Fiber bundle
00544       std::string              m_IlyBndlMat             ; //
00545       double                   m_IlyBndlOff             ; //
00546       double                   m_IlyBndlLength          ; //
00547       std::string              m_IlyFEMName             ; // FEM
00548       std::string              m_IlyFEMMat              ; //
00549       double                   m_IlyFEMWidth            ; //
00550       double                   m_IlyFEMLength           ; //
00551       double                   m_IlyFEMHeight           ; //
00552       std::vector<double>      m_vecIlyFEMZ             ; //
00553       std::vector<double>      m_vecIlyFEMPhi           ; //              
00554 
00555 
00556       std::string         m_HawRName ; // string name of half-alveolar wedge
00557       std::string         m_FawName  ; // string name of full-alveolar wedge
00558       double              m_FawHere  ; // here flag 
00559       double              m_HawRHBIG ; // height at big end of half alveolar wedge
00560       double              m_HawRhsml ; // height at small end of half alveolar wedge
00561       double              m_HawRCutY ; // x dim of hawR cut box
00562       double              m_HawRCutZ ; // y dim of hawR cut box
00563       double              m_HawRCutDelY ; // y offset of hawR cut box from top of HAW
00564       double              m_HawYOffCry  ; // Y offset of crystal wrt HAW at front
00565       unsigned int        m_NFawPerSupm ; // Number of Full Alv. Wedges per supermodule
00566       double              m_FawPhiOff ; // Phi offset for FAW placement
00567       double              m_FawDelPhi ; // Phi delta for FAW placement
00568       double              m_FawPhiRot ; // Phi rotation of FAW about own axis prior to placement
00569       double              m_FawRadOff ; // Radial offset for FAW placement
00570 
00571       double              m_GridHere  ; // here flag
00572       std::string         m_GridName  ; // Grid name
00573       std::string         m_GridMat   ; // Grid material
00574       double              m_GridThick ; // Grid Thickness
00575 
00576       double                   m_BackXOff        ; //
00577       double                   m_BackYOff        ; //
00578 
00579       double                   m_BackHere              ; // here flag
00580       std::string              m_BackSideName          ; // Back Sides
00581       double                   m_BackSideHere          ; //
00582       double                   m_BackSideLength        ; //
00583       double                   m_BackSideHeight        ; //
00584       double                   m_BackSideWidth         ; //
00585       double                   m_BackSideYOff1         ; //
00586       double                   m_BackSideYOff2         ; //
00587       double                   m_BackSideAngle         ; //
00588       std::string              m_BackSideMat           ; //
00589       std::string              m_BackPlateName    ; // back plate
00590       double                   m_BackPlateHere          ; //
00591       double                   m_BackPlateLength  ; //
00592       double                   m_BackPlateThick   ; //
00593       double                   m_BackPlateWidth   ; //
00594       std::string              m_BackPlateMat     ; //
00595       std::string              m_BackPlate2Name    ; // back plate2
00596       double                   m_BackPlate2Thick   ; //
00597       std::string              m_BackPlate2Mat     ; //
00598       std::string              m_GrilleName      ; // grille
00599       double                   m_GrilleHere      ; //
00600       double                   m_GrilleThick     ; //
00601       double                   m_GrilleWidth     ; //
00602       double                   m_GrilleZSpace    ; //
00603       std::string              m_GrilleMat       ; //
00604       std::vector<double>      m_vecGrilleHeight ; //
00605       std::vector<double>      m_vecGrilleZOff   ; //
00606 
00607       std::string              m_GrEdgeSlotName          ; // Slots in Grille
00608       std::string              m_GrEdgeSlotMat           ; //
00609       double                   m_GrEdgeSlotHere          ; //
00610       double                   m_GrEdgeSlotHeight        ; //
00611       double                   m_GrEdgeSlotWidth         ; //
00612 
00613       std::string              m_GrMidSlotName           ; // Slots in Grille
00614       std::string              m_GrMidSlotMat            ; //
00615       double                   m_GrMidSlotHere           ; //
00616       double                   m_GrMidSlotWidth          ; //
00617       double                   m_GrMidSlotXOff           ; //
00618       std::vector<double>      m_vecGrMidSlotHeight      ; //                  
00619 
00620       double                   m_BackPipeHere    ; // here flag
00621       std::string              m_BackPipeName    ; // 
00622       std::vector<double>      m_vecBackPipeDiam ; // pipes
00623       std::vector<double>      m_vecBackPipeThick ; // pipes
00624       std::string              m_BackPipeMat     ; //
00625       std::string              m_BackPipeWaterMat ; //
00626 
00627       std::vector<std::string> m_vecBackCoolName       ; // cooling circuits
00628       double                   m_BackCoolHere          ; // here flag
00629       double                   m_BackCoolBarHere       ; // here flag
00630       double                   m_BackCoolBarWidth      ; //
00631       double                   m_BackCoolBarHeight     ; //
00632       std::string              m_BackCoolMat           ;
00633       std::string              m_BackCoolBarName       ; // cooling bar
00634       double                   m_BackCoolBarThick      ; //
00635       std::string              m_BackCoolBarMat        ;
00636       std::string              m_BackCoolBarSSName     ; // cooling bar tubing
00637       double                   m_BackCoolBarSSThick    ; //
00638       std::string              m_BackCoolBarSSMat      ;
00639       std::string              m_BackCoolBarWaName     ; // cooling bar water
00640       double                   m_BackCoolBarWaThick    ; //
00641       std::string              m_BackCoolBarWaMat      ;
00642       double                   m_BackCoolVFEHere       ; // here flag
00643       std::string              m_BackCoolVFEName       ;
00644       std::string              m_BackCoolVFEMat        ;
00645       std::string              m_BackVFEName           ;
00646       std::string              m_BackVFEMat            ;
00647       std::vector<double>      m_vecBackVFELyrThick    ; //
00648       std::vector<std::string> m_vecBackVFELyrName     ; //
00649       std::vector<std::string> m_vecBackVFELyrMat      ; //
00650       std::vector<double>      m_vecBackCoolNSec       ; //
00651       std::vector<double>      m_vecBackCoolSecSep     ; //
00652       std::vector<double>      m_vecBackCoolNPerSec    ; //
00653       double                   m_BackMiscHere          ; // here flag
00654       std::vector<double>      m_vecBackMiscThick      ; // misc materials
00655       std::vector<std::string> m_vecBackMiscName       ; //
00656       std::vector<std::string> m_vecBackMiscMat        ; //
00657       double                   m_BackCBStdSep          ; //
00658 
00659       double                   m_PatchPanelHere        ; // here flag
00660       std::string              m_PatchPanelName        ; //
00661       std::vector<double>      m_vecPatchPanelThick    ; // patch panel materials
00662       std::vector<std::string> m_vecPatchPanelNames    ; //
00663       std::vector<std::string> m_vecPatchPanelMat      ; //
00664 
00665       double                   m_BackCoolTankHere    ; // here flag
00666       std::string              m_BackCoolTankName    ; // service tank
00667       double                   m_BackCoolTankWidth   ; //
00668       double                   m_BackCoolTankThick   ; //
00669       std::string              m_BackCoolTankMat     ; //
00670       std::string              m_BackCoolTankWaName  ; //
00671       double                   m_BackCoolTankWaWidth ; //
00672       std::string              m_BackCoolTankWaMat   ; //
00673       std::string              m_BackBracketName     ; //
00674       double                   m_BackBracketHeight   ; //
00675       std::string              m_BackBracketMat      ; //
00676 
00677       double                   m_DryAirTubeHere      ; // here flag
00678       std::string              m_DryAirTubeName      ; // dry air tube
00679       unsigned int             m_MBCoolTubeNum      ; //
00680       double                   m_DryAirTubeInnDiam   ; //
00681       double                   m_DryAirTubeOutDiam   ; //
00682       std::string              m_DryAirTubeMat       ; //
00683       double                   m_MBCoolTubeHere      ; // here flag
00684       std::string              m_MBCoolTubeName      ; // mothr bd cooling tube
00685       double                   m_MBCoolTubeInnDiam   ; //
00686       double                   m_MBCoolTubeOutDiam   ; //
00687       std::string              m_MBCoolTubeMat       ; //
00688       double                   m_MBManifHere         ; // here flag
00689       std::string              m_MBManifName         ; //mother bd manif
00690       double                   m_MBManifInnDiam      ; //
00691       double                   m_MBManifOutDiam      ; //
00692       std::string              m_MBManifMat          ; //
00693       double                   m_MBLyrHere           ; // here flag
00694       std::vector<double>      m_vecMBLyrThick       ; // mother bd lyrs
00695       std::vector<std::string> m_vecMBLyrName        ; //
00696       std::vector<std::string> m_vecMBLyrMat         ; //
00697 
00698 //-------------------------------------------------------------------
00699 
00700       double                   m_PincerRodHere      ; // here flag
00701       std::string              m_PincerRodName      ; // pincer rod
00702       std::string              m_PincerRodMat       ; // 
00703       std::vector<double>      m_vecPincerRodAzimuth; //
00704 
00705       std::string              m_PincerEnvName      ; // pincer envelope
00706       std::string              m_PincerEnvMat       ; // 
00707       double                   m_PincerEnvWidth     ; //
00708       double                   m_PincerEnvHeight    ; //
00709       double                   m_PincerEnvLength    ; //
00710       std::vector<double>      m_vecPincerEnvZOff   ; //
00711 
00712       std::string              m_PincerBlkName      ; // pincer block
00713       std::string              m_PincerBlkMat       ; // 
00714       double                   m_PincerBlkLength    ; //
00715 
00716       std::string              m_PincerShim1Name    ; // pincer shim
00717       double                   m_PincerShimHeight   ; //
00718       std::string              m_PincerShim2Name    ; // 
00719       std::string              m_PincerShimMat      ; // 
00720       double                   m_PincerShim1Width   ; //
00721       double                   m_PincerShim2Width   ; //
00722 
00723       std::string              m_PincerCutName      ; // pincer block
00724       std::string              m_PincerCutMat       ; // 
00725       double                   m_PincerCutWidth     ; //
00726       double                   m_PincerCutHeight    ; //
00727 
00728 }; 
00729 
00730 #endif