00001 #ifndef DD_TIDModulePosAlgo_h 00002 #define DD_TIDModulePosAlgo_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 DDTIDModulePosAlgo : public DDAlgorithm { 00011 public: 00012 //Constructor and Destructor 00013 DDTIDModulePosAlgo(); 00014 virtual ~DDTIDModulePosAlgo(); 00015 00016 void initialize(const DDNumericArguments & nArgs, 00017 const DDVectorArguments & vArgs, 00018 const DDMapArguments & mArgs, 00019 const DDStringArguments & sArgs, 00020 const DDStringVectorArguments & vsArgs); 00021 void execute(DDCompactView& cpv); 00022 00023 private: 00024 00025 int detectorN; //Number of detectors 00026 double detTilt; //Tilt of stereo detector 00027 double fullHeight; //Height 00028 std::string boxFrameName; //Top frame Name 00029 double boxFrameHeight; // height 00030 double boxFrameWidth; // width 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 std::vector<double> boxFrameZ; // z-positions 00035 double bottomFrameHeight; //Bottom of the frame 00036 double bottomFrameOver; // overlap 00037 double topFrameHeight; //Top of the frame 00038 double topFrameOver; // overlap 00039 00040 std::vector<std::string> sideFrameName; //Side Frame name 00041 std::vector<double> sideFrameZ; // z-positions 00042 std::vector<std::string> sideFrameRot; // rotation matrix (required for correct positiong of the hole in the StereoR) 00043 double sideFrameWidth; // width 00044 double sideFrameOver; // overlap (wrt wafer) 00045 00046 std::vector<std::string> kaptonName; //Kapton Circuit name 00047 std::vector<double> kaptonZ; // z-positions 00048 std::vector<std::string> kaptonRot; // rotation matrix (required for correct positiong of the hole in the StereoR) 00049 std::vector<std::string> waferName; //Wafer name 00050 std::vector<double> waferZ; // z-positions 00051 std::vector<std::string> waferRot; // rotation matrix 00052 std::string hybridName; //Hybrid name 00053 double hybridHeight; // height 00054 std::vector<double> hybridZ; // z-positions 00055 std::vector<std::string> pitchName; //Pitch adapter rotation matrix 00056 double pitchHeight; // height 00057 std::vector<double> pitchZ; // z-positions 00058 std::vector<std::string> pitchRot; // rotation matrix 00059 std::string coolName; //Cool Insert name 00060 double coolHeight; // height 00061 double coolZ; // z-position 00062 double coolWidth; // width 00063 std::vector<double> coolRadShift; // 00064 00065 00066 bool doSpacers; //Spacers (alumina) to be made (Should be "Yes" for DS modules only) 00067 std::string botSpacersName; // Spacers at the "bottom" of the module 00068 double botSpacersHeight; // 00069 double botSpacersZ; // z-position 00070 std::string sidSpacersName; //Spacers at the "sides" of the module 00071 double sidSpacersHeight; 00072 double sidSpacersZ; // z-position 00073 double sidSpacersWidth; // width 00074 double sidSpacersRadShift; // 00075 }; 00076 00077 #endif