00001 #ifndef DD_TIDModuleAlgo_h 00002 #define DD_TIDModuleAlgo_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 00010 class DDTIDModuleAlgo : public DDAlgorithm { 00011 public: 00012 //Constructor and Destructor 00013 DDTIDModuleAlgo(); 00014 virtual ~DDTIDModuleAlgo(); 00015 00016 void initialize(const DDNumericArguments & nArgs, 00017 const DDVectorArguments & vArgs, 00018 const DDMapArguments & mArgs, 00019 const DDStringArguments & sArgs, 00020 const DDStringVectorArguments & vsArgs); 00021 00022 void execute(DDCompactView& cpv); 00023 00024 private: 00025 00026 std::string genMat; //General material name 00027 int detectorN; //Detector planes 00028 double moduleThick; //Module thickness 00029 double detTilt; //Tilt of stereo detector 00030 double fullHeight; //Height 00031 double dlTop; //Width at top of wafer 00032 double dlBottom; //Width at bottom of wafer 00033 double dlHybrid; //Width at the hybrid end 00034 bool doComponents; //Components to be made 00035 00036 std::string boxFrameName; //Top frame name 00037 std::string boxFrameMat; // material 00038 double boxFrameHeight; // height 00039 double boxFrameThick; // thickness 00040 double boxFrameWidth; // extra width 00041 double bottomFrameHeight; //Bottom of the frame 00042 double bottomFrameOver; // overlap 00043 double topFrameHeight; //Top of the frame 00044 double topFrameOver; // overlap 00045 std::vector<std::string> sideFrameName; //Side frame name 00046 std::string sideFrameMat; // material 00047 double sideFrameWidth; // width 00048 double sideFrameThick; // thickness 00049 double sideFrameOver; // overlap (wrt wafer) 00050 std::vector<std::string> holeFrameName; //Hole in the frame name 00051 std::vector<std::string> holeFrameRot; // Rotation matrix 00052 00053 std::vector<std::string> kaptonName; //Kapton circuit name 00054 std::string kaptonMat; // material 00055 // double kaptonWidth; // width -> computed internally from sideFrameWidth and kaptonOver 00056 double kaptonThick; // thickness 00057 double kaptonOver; // overlap (wrt Wafer) 00058 std::vector<std::string> holeKaptonName; //Hole in the kapton circuit name 00059 std::vector<std::string> holeKaptonRot; // Rotation matrix 00060 00061 std::vector<std::string> waferName; //Wafer name 00062 std::string waferMat; // material 00063 double sideWidthTop; // width on the side Top 00064 double sideWidthBottom; // Bottom 00065 std::vector<std::string> activeName; //Sensitive name 00066 std::string activeMat; // material 00067 double activeHeight; // height 00068 std::vector<double> waferThick; // wafer thickness (active = wafer - backplane) 00069 std::string activeRot; // Rotation matrix 00070 std::vector<double> backplaneThick; // thickness 00071 std::string hybridName; //Hybrid name 00072 std::string hybridMat; // material 00073 double hybridHeight; // height 00074 double hybridWidth; // width 00075 double hybridThick; // thickness 00076 std::vector<std::string> pitchName; //Pitch adapter name 00077 std::string pitchMat; // material 00078 double pitchHeight; // height 00079 double pitchThick; // thickness 00080 double pitchStereoTol; // tolerance in dimensions of the stereo 00081 std::string coolName; // Cool insert name 00082 std::string coolMat; // material 00083 double coolHeight; // height 00084 double coolThick; // thickness 00085 double coolWidth; // width 00086 00087 }; 00088 00089 #endif