00001 #ifndef DD_TOBRodAlgo_h 00002 #define DD_TOBRodAlgo_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 DDTOBRodAlgo : public DDAlgorithm { 00011 public: 00012 //Constructor and Destructor 00013 DDTOBRodAlgo(); 00014 virtual ~DDTOBRodAlgo(); 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(); 00023 00024 private: 00025 00026 std::string central; // Name of the central piece 00027 std::string idNameSpace; // Namespace of this and ALL sub-parts 00028 00029 double shift; // Shift in z 00030 std::vector<std::string> sideRod; // Name of the Side Rod 00031 std::vector<double> sideRodX; // x-positions 00032 std::vector<double> sideRodY; // y-positions 00033 std::vector<double> sideRodZ; // z-positions 00034 std::string endRod1; // Name of the End Rod of type 1 00035 std::vector<double> endRod1Y; // y-positions 00036 std::vector<double> endRod1Z; // z-positions 00037 std::string endRod2; // Name of the End Rod of type 2 00038 double endRod2Y; // y-position 00039 double endRod2Z; // z-position 00040 00041 std::string cable; // Name of the Mother cable 00042 double cableZ; // z-position 00043 00044 std::string clamp; // Name of the clamp 00045 std::vector<double> clampX; // x-positions 00046 std::vector<double> clampZ; // z-positions 00047 std::string sideCool; // Name of the Side Cooling Tube 00048 std::vector<double> sideCoolX; // x-positions 00049 std::vector<double> sideCoolY; // y-positions to avoid overlap with the module (be at the same level of EndCool) 00050 std::vector<double> sideCoolZ; // z-positions 00051 std::string endCool; // Name of the End Cooling Tube 00052 std::string endCoolRot; // Rotation matrix name for end cool 00053 double endCoolY; // y-position to avoid overlap with the module 00054 double endCoolZ; // z-position 00055 00056 std::string optFibre; // Name of the Optical Fibre 00057 std::vector<double> optFibreX; // x-positions 00058 std::vector<double> optFibreZ; // z-positions 00059 00060 std::string sideClamp1; // Name of the side clamp of type 1 00061 std::vector<double> sideClampX; // x-positions 00062 std::vector<double> sideClamp1DZ; // Delta(z)-positions 00063 std::string sideClamp2; // Name of the side clamp of type 2 00064 std::vector<double> sideClamp2DZ; // Delta(z)-positions 00065 00066 std::string module; // Name of the detector modules 00067 std::vector<std::string> moduleRot; // Rotation matrix name for module 00068 std::vector<double> moduleY; // y-positions 00069 std::vector<double> moduleZ; // z-positions 00070 std::vector<std::string> connect; // Name of the connectors 00071 std::vector<double> connectY; // y-positions 00072 std::vector<double> connectZ; // z-positions 00073 00074 std::string aohName; // AOH name 00075 std::vector<double> aohCopies; // AOH copies to be positioned on each ICC 00076 std::vector<double> aohX; // AOH translation with respect small-ICC center (X) 00077 std::vector<double> aohY; // AOH translation with respect small-ICC center (Y) 00078 std::vector<double> aohZ; // AOH translation with respect small-ICC center (Z) 00079 }; 00080 00081 #endif