00001 #ifndef DDEcalPreshowerAlgo_h
00002 #define DDEcalPreshowerAlgo_h
00003
00004 #include <vector>
00005 #include <string>
00006
00007 #include "DetectorDescription/Algorithm/interface/DDAlgorithm.h"
00008 #include "DetectorDescription/Core/interface/DDMaterial.h"
00009
00010 class DDEcalPreshowerAlgo : public DDAlgorithm {
00011
00012 public:
00013
00014 DDMaterial getMaterial(unsigned int i) const {return DDMaterial(materials_[i]);}
00015 DDMaterial getLaddMaterial() const { return DDMaterial(LaddMaterial_) ; }
00016 std::string getLayName(unsigned int i) const {return layName_[i];}
00017 std::string getLadPrefix(unsigned int i) const {return ladPfx_[i];}
00018
00019 DDEcalPreshowerAlgo();
00020 void initialize(const DDNumericArguments & nArgs,
00021 const DDVectorArguments & vArgs,
00022 const DDMapArguments & mArgs,
00023 const DDStringArguments & sArgs,
00024 const DDStringVectorArguments & vsArgs);
00025 void execute();
00026
00027 private:
00028
00029 void doLayers();
00030 void doLadders();
00031 void doSens();
00032
00033 int nmat_;
00034 double thickness_;
00035 std::vector<std::string> materials_;
00036 std::vector<std::string> layName_;
00037 std::vector<std::string> ladPfx_ ;
00038 std::string LaddMaterial_;
00039 std::vector<double> thickLayers_;
00040 std::vector<double> abs1stx;
00041 std::vector<double> abs1sty;
00042 std::vector<double> abs2ndx;
00043 std::vector<double> abs2ndy;
00044 std::vector<double> asym_ladd_;
00045 std::vector<double> rminVec;
00046 std::vector<double> rmaxVec;
00047 std::vector<double> noLaddInCol_;
00048 std::vector<double> startOfFirstLadd_;
00049 std::vector<std::string> types_l5_;
00050 std::vector<std::string> types_l4_;
00051 std::vector<double> ladd_l5_map_;
00052 std::vector<double> ladd_l4_map_;
00053 std::vector<std::string> typeOfLaddRow0;
00054 std::vector<std::string> typeOfLaddRow1;
00055 std::vector<std::string> typeOfLaddRow2;
00056 std::vector<std::string> typeOfLaddRow3;
00057
00058 double zlead1_, zlead2_, zfoam1_, zfoam2_;
00059 double waf_intra_col_sep, waf_inter_col_sep, waf_active, wedge_length, wedge_offset, zwedge_ceramic_diff, ywedge_ceramic_diff, wedge_angle, box_thick,dee_separation, In_rad_Abs_Al, In_rad_Abs_Pb;
00060 double ladder_thick, yladder_1stwedge_diff, ladder_width, ladder_length, micromodule_length;
00061 double absAlX_X_, absAlX_Y_, absAlX_subtr1_Xshift_, absAlX_subtr1_Yshift_, rMax_Abs_Al_;
00062 double absAlY_X_, absAlY_Y_, absAlY_subtr1_Xshift_, absAlY_subtr1_Yshift_;
00063 double LdrBck_Length, LdrFrnt_Length,LdrFrnt_Offset,LdrBck_Offset, ceramic_length, wedge_back_thick;
00064
00065 };
00066
00067
00068 #endif // DDEcalPreshowerAlgo_h