00001 #ifndef EcalTestBeam_DDTBH4Algo_h 00002 #define EcalTestBeam_DDTBH4Algo_h 00003 00004 #include <map> 00005 #include <string> 00006 #include <vector> 00007 #include "DetectorDescription/Base/interface/DDTypes.h" 00008 #include "DetectorDescription/Algorithm/interface/DDAlgorithm.h" 00009 #include "DetectorDescription/Core/interface/DDMaterial.h" 00010 #include "DetectorDescription/Core/interface/DDTransform.h" 00011 00012 //CLHEP 00013 #include <CLHEP/Geometry/Transform3D.h> 00014 00015 class DDTBH4Algo : public DDAlgorithm { 00016 public: 00017 //Constructor and Destructor 00018 DDTBH4Algo(); 00019 virtual ~DDTBH4Algo(); 00020 00021 void initialize(const DDNumericArguments & nArgs, 00022 const DDVectorArguments & vArgs, 00023 const DDMapArguments & mArgs, 00024 const DDStringArguments & sArgs, 00025 const DDStringVectorArguments & vsArgs); 00026 00027 void execute(DDCompactView& cpv); 00028 00029 DDMaterial ddmat( const std::string& s ) const ; 00030 DDName ddname( const std::string& s ) const ; 00031 DDRotation myrot( const std::string& s, 00032 const CLHEP::HepRotation& r ) const ; 00033 00034 const std::string& idNameSpace() const { return m_idNameSpace ; } 00035 00036 double blZBeg () const { return m_BLZBeg ; } 00037 double blZEnd () const { return m_BLZEnd ; } 00038 double blZPiv () const { return m_BLZPiv ; } 00039 double blRadius () const { return m_BLRadius ; } 00040 std::string vacName () const { return m_VacName ; } 00041 DDMaterial vacMat () const { return ddmat(m_VacMat); } 00042 const std::vector<double>& vecVacZBeg () const { return m_vecVacZBeg ; } 00043 const std::vector<double>& vecVacZEnd () const { return m_vecVacZEnd ; } 00044 std::string winName () const { return m_WinName ; } 00045 const std::vector<std::string>& vecWinMat () const { return m_vecWinMat ; } 00046 const std::vector<double>& vecWinZBeg () const { return m_vecWinZBeg ; } 00047 const std::vector<double>& vecWinThick () const { return m_vecWinThick; } 00048 00049 DDMaterial trgMat () const { return ddmat(m_TrgMat) ; } 00050 DDMaterial holeMat () const { return ddmat(m_HoleMat) ; } 00051 double trgVetoHoleRadius() const { return m_TrgVetoHoleRadius; } 00052 const std::vector<std::string>& vecTrgName () const { return m_vecTrgName ; } 00053 const std::vector<double>& vecTrgSide () const { return m_vecTrgSide ; } 00054 const std::vector<double>& vecTrgThick() const { return m_vecTrgThick; } 00055 const std::vector<double>& vecTrgPhi () const { return m_vecTrgPhi ; } 00056 const std::vector<double>& vecTrgXOff () const { return m_vecTrgXOff ; } 00057 const std::vector<double>& vecTrgYOff () const { return m_vecTrgYOff ; } 00058 const std::vector<double>& vecTrgZPiv () const { return m_vecTrgZPiv ; } 00059 00060 DDName fibFibName () const { return ddname(m_FibFibName) ; } 00061 DDName fibCladName () const { return ddname(m_FibCladName) ; } 00062 DDMaterial fibFibMat () const { return ddmat(m_FibFibMat) ; } 00063 DDMaterial fibCladMat () const { return ddmat(m_FibCladMat) ; } 00064 double fibSide () const { return m_FibSide ; } 00065 double fibCladThick() const { return m_FibCladThick; } 00066 double fibLength () const { return m_FibLength ; } 00067 const std::vector<double>& vecFibPhi () const { return m_vecFibPhi ; } 00068 const std::vector<double>& vecFibXOff () const { return m_vecFibXOff ; } 00069 const std::vector<double>& vecFibYOff () const { return m_vecFibYOff ; } 00070 const std::vector<double>& vecFibZPiv () const { return m_vecFibZPiv ; } 00071 00072 private: 00073 std::string m_idNameSpace; //Namespace of this and ALL sub-parts 00074 00075 double m_BLZBeg ; // 00076 double m_BLZEnd ; // 00077 double m_BLZPiv ; // 00078 double m_BLRadius ; // 00079 std::string m_VacName ; // 00080 std::string m_VacMat ; // 00081 std::vector<double> m_vecVacZBeg ; // 00082 std::vector<double> m_vecVacZEnd ; // 00083 std::string m_WinName ; // 00084 std::vector<std::string> m_vecWinMat ; // 00085 std::vector<double> m_vecWinZBeg ; // 00086 std::vector<double> m_vecWinThick ; // 00087 00088 std::string m_TrgMat ; // 00089 std::string m_HoleMat ; // 00090 double m_TrgVetoHoleRadius ; // 00091 std::vector<std::string> m_vecTrgName ; // 00092 std::vector<double> m_vecTrgSide ; // 00093 std::vector<double> m_vecTrgThick; // 00094 std::vector<double> m_vecTrgPhi ; // 00095 std::vector<double> m_vecTrgXOff ; // 00096 std::vector<double> m_vecTrgYOff ; // 00097 std::vector<double> m_vecTrgZPiv ; // 00098 00099 std::string m_FibFibName ; // 00100 std::string m_FibCladName ; // 00101 std::string m_FibFibMat ; // 00102 std::string m_FibCladMat ; // 00103 double m_FibSide ; // 00104 double m_FibCladThick; // 00105 double m_FibLength ; // 00106 std::vector<double> m_vecFibPhi ; // 00107 std::vector<double> m_vecFibXOff ; // 00108 std::vector<double> m_vecFibYOff ; // 00109 std::vector<double> m_vecFibZPiv ; // 00110 00111 }; 00112 00113 #endif