00001 #ifndef DD_EcalAPDAlgo_h 00002 #define DD_EcalAPDAlgo_h 00003 00004 #include <string> 00005 #include <vector> 00006 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 00014 class DDEcalAPDAlgo : public DDAlgorithm { 00015 00016 public: 00017 00018 //Constructor and Destructor 00019 DDEcalAPDAlgo(); 00020 virtual ~DDEcalAPDAlgo(); 00021 00022 void initialize(const DDNumericArguments & nArgs, 00023 const DDVectorArguments & vArgs, 00024 const DDMapArguments & mArgs, 00025 const DDStringArguments & sArgs, 00026 const DDStringVectorArguments & vsArgs); 00027 void execute(DDCompactView& cpv); 00028 00029 protected: 00030 00031 private: 00032 00033 DDName ddname( const std::string& s ) const ; 00034 00035 const std::vector<double>& vecCerPos() const { return m_vecCerPos ; } 00036 int apdHere () const { return m_APDHere ; } 00037 00038 DDName capName () const { return ddname(m_capName) ; } 00039 DDMaterial capMat () const { return DDMaterial( ddname(m_capMat) ) ; } 00040 double capXSize() const { return m_capXSize; } 00041 double capYSize() const { return m_capYSize; } 00042 double capThick() const { return m_capThick; } 00043 00044 DDName cerName () const { return ddname(m_CERName) ; } 00045 DDMaterial cerMat () const { return DDMaterial( ddname(m_CERMat) ) ; } 00046 double cerXSize() const { return m_CERXSize; } 00047 double cerYSize() const { return m_CERYSize; } 00048 double cerThick() const { return m_CERThick; } 00049 00050 DDName bsiName () const { return ddname(m_BSiName) ; } 00051 DDMaterial bsiMat () const { return DDMaterial( ddname(m_BSiMat) ) ; } 00052 double bsiXSize() const { return m_BSiXSize; } 00053 double bsiYSize() const { return m_BSiYSize; } 00054 double bsiThick() const { return m_BSiThick; } 00055 00056 DDName sglName () const { return ddname(m_SGLName) ; } 00057 DDMaterial sglMat () const { return DDMaterial( ddname(m_SGLMat) ) ; } 00058 double sglThick() const { return m_SGLThick; } 00059 00060 DDName atjName () const { return ddname(m_ATJName) ; } 00061 DDMaterial atjMat () const { return DDMaterial( ddname(m_ATJMat) ) ; } 00062 double atjThick() const { return m_ATJThick; } 00063 00064 DDName aglName () const { return ddname(m_AGLName) ; } 00065 DDMaterial aglMat () const { return DDMaterial( ddname(m_AGLMat) ) ; } 00066 double aglThick() const { return m_AGLThick; } 00067 00068 DDName andName () const { return ddname(m_ANDName) ; } 00069 DDMaterial andMat () const { return DDMaterial( ddname(m_ANDMat) ) ; } 00070 double andThick() const { return m_ANDThick; } 00071 00072 DDName apdName () const { return ddname(m_APDName) ; } 00073 DDMaterial apdMat () const { return DDMaterial( ddname(m_APDMat) ) ; } 00074 double apdSide () const { return m_APDSide ; } 00075 double apdThick() const { return m_APDThick; } 00076 double apdZ () const { return m_APDZ ; } 00077 double apdX1 () const { return m_APDX1 ; } 00078 double apdX2 () const { return m_APDX2 ; } 00079 00080 private: 00081 00082 std::string m_idNameSpace; //Namespace of this and ALL sub-parts 00083 00084 std::vector<double> m_vecCerPos ; // Translation 00085 int m_APDHere ; 00086 00087 std::string m_capName ; // Capsule 00088 std::string m_capMat ; // 00089 double m_capXSize ; // 00090 double m_capYSize ; // 00091 double m_capThick ; // 00092 00093 std::string m_CERName ; // Ceramic 00094 std::string m_CERMat ; // 00095 double m_CERXSize ; // 00096 double m_CERYSize ; // 00097 double m_CERThick ; // 00098 00099 std::string m_BSiName ; // Bulk Silicon 00100 std::string m_BSiMat ; // 00101 double m_BSiXSize ; // 00102 double m_BSiYSize ; // 00103 double m_BSiThick ; // 00104 00105 std::string m_APDName ; // APD 00106 std::string m_APDMat ; // 00107 double m_APDSide ; // 00108 double m_APDThick ; // 00109 double m_APDZ ; // 00110 double m_APDX1 ; // 00111 double m_APDX2 ; // 00112 00113 std::string m_ATJName ; // After-The-Junction 00114 std::string m_ATJMat ; // 00115 double m_ATJThick ; // 00116 00117 std::string m_SGLName ; // APD-Silicone glue 00118 std::string m_SGLMat ; // 00119 double m_SGLThick ; // 00120 00121 std::string m_AGLName ; // APD-Glue 00122 std::string m_AGLMat ; // 00123 double m_AGLThick ; // 00124 00125 std::string m_ANDName ; // APD-Non-Depleted 00126 std::string m_ANDMat ; // 00127 double m_ANDThick ; // 00128 00129 }; 00130 00131 #endif