Go to the documentation of this file.00001 #include "CaloOnlineTools/HcalOnlineDb/interface/ZdcLut.h"
00002 #include <stdlib.h>
00003
00013 ZdcLut::ZdcLut()
00014 {
00015
00016 double ADC_GEV_EM = 13.55, ADC_GEV_HAD = 0.6;
00017 int LSB_EM = 1, LSB_HAD = 5;
00018 std::vector <int> fC_TDR;
00019
00020 fC_TDR.push_back(0);
00021 fC_TDR.push_back(1);
00022 fC_TDR.push_back(2);
00023 fC_TDR.push_back(3);
00024 fC_TDR.push_back(4);
00025 fC_TDR.push_back(5);
00026 fC_TDR.push_back(6);
00027 fC_TDR.push_back(7);
00028 fC_TDR.push_back(8);
00029 fC_TDR.push_back(9);
00030 fC_TDR.push_back(10);
00031 fC_TDR.push_back(11);
00032 fC_TDR.push_back(12);
00033 fC_TDR.push_back(13);
00034 fC_TDR.push_back(14);
00035 fC_TDR.push_back(16);
00036 fC_TDR.push_back(18);
00037 fC_TDR.push_back(20);
00038 fC_TDR.push_back(22);
00039 fC_TDR.push_back(24);
00040 fC_TDR.push_back(26);
00041 fC_TDR.push_back(28);
00042 fC_TDR.push_back(31);
00043 fC_TDR.push_back(34);
00044 fC_TDR.push_back(37);
00045 fC_TDR.push_back(40);
00046 fC_TDR.push_back(44);
00047 fC_TDR.push_back(48);
00048 fC_TDR.push_back(52);
00049 fC_TDR.push_back(57);
00050 fC_TDR.push_back(62);
00051 fC_TDR.push_back(67);
00052 fC_TDR.push_back(62);
00053 fC_TDR.push_back(67);
00054 fC_TDR.push_back(72);
00055 fC_TDR.push_back(77);
00056 fC_TDR.push_back(82);
00057 fC_TDR.push_back(87);
00058 fC_TDR.push_back(92);
00059 fC_TDR.push_back(97);
00060 fC_TDR.push_back(102);
00061 fC_TDR.push_back(107);
00062 fC_TDR.push_back(112);
00063 fC_TDR.push_back(117);
00064 fC_TDR.push_back(122);
00065 fC_TDR.push_back(127);
00066 fC_TDR.push_back(132);
00067 fC_TDR.push_back(142);
00068 fC_TDR.push_back(152);
00069 fC_TDR.push_back(162);
00070 fC_TDR.push_back(172);
00071 fC_TDR.push_back(182);
00072 fC_TDR.push_back(192);
00073 fC_TDR.push_back(202);
00074 fC_TDR.push_back(217);
00075 fC_TDR.push_back(232);
00076 fC_TDR.push_back(247);
00077 fC_TDR.push_back(262);
00078 fC_TDR.push_back(282);
00079 fC_TDR.push_back(302);
00080 fC_TDR.push_back(322);
00081 fC_TDR.push_back(347);
00082 fC_TDR.push_back(372);
00083 fC_TDR.push_back(397);
00084 fC_TDR.push_back(372);
00085 fC_TDR.push_back(397);
00086 fC_TDR.push_back(422);
00087 fC_TDR.push_back(447);
00088 fC_TDR.push_back(472);
00089 fC_TDR.push_back(497);
00090 fC_TDR.push_back(522);
00091 fC_TDR.push_back(547);
00092 fC_TDR.push_back(572);
00093 fC_TDR.push_back(597);
00094 fC_TDR.push_back(622);
00095 fC_TDR.push_back(647);
00096 fC_TDR.push_back(672);
00097 fC_TDR.push_back(697);
00098 fC_TDR.push_back(722);
00099 fC_TDR.push_back(772);
00100 fC_TDR.push_back(822);
00101 fC_TDR.push_back(872);
00102 fC_TDR.push_back(922);
00103 fC_TDR.push_back(972);
00104 fC_TDR.push_back(1022);
00105 fC_TDR.push_back(1072);
00106 fC_TDR.push_back(1147);
00107 fC_TDR.push_back(1222);
00108 fC_TDR.push_back(1297);
00109 fC_TDR.push_back(1372);
00110 fC_TDR.push_back(1472);
00111 fC_TDR.push_back(1572);
00112 fC_TDR.push_back(1672);
00113 fC_TDR.push_back(1797);
00114 fC_TDR.push_back(1922);
00115 fC_TDR.push_back(2047);
00116 fC_TDR.push_back(1922);
00117 fC_TDR.push_back(2047);
00118 fC_TDR.push_back(2172);
00119 fC_TDR.push_back(2297);
00120 fC_TDR.push_back(2422);
00121 fC_TDR.push_back(2547);
00122 fC_TDR.push_back(2672);
00123 fC_TDR.push_back(1797);
00124 fC_TDR.push_back(2922);
00125 fC_TDR.push_back(3047);
00126 fC_TDR.push_back(3172);
00127 fC_TDR.push_back(3297);
00128 fC_TDR.push_back(3422);
00129 fC_TDR.push_back(2547);
00130 fC_TDR.push_back(3672);
00131 fC_TDR.push_back(3922);
00132 fC_TDR.push_back(4172);
00133 fC_TDR.push_back(4422);
00134 fC_TDR.push_back(4672);
00135 fC_TDR.push_back(4922);
00136 fC_TDR.push_back(5172);
00137 fC_TDR.push_back(5422);
00138 fC_TDR.push_back(5797);
00139 fC_TDR.push_back(6172);
00140 fC_TDR.push_back(6547);
00141 fC_TDR.push_back(6922);
00142 fC_TDR.push_back(7422);
00143 fC_TDR.push_back(7922);
00144 fC_TDR.push_back(8422);
00145 fC_TDR.push_back(9047);
00146 fC_TDR.push_back(9672);
00147 fC_TDR.push_back(10297);
00148
00149
00150 std::vector <int> HADlut(128);
00151 std::vector <int> EMlut(128);
00152
00153 for(int zdci = 0; zdci < 128; zdci++)
00154 { EMlut[zdci] = (int)((fC_TDR[zdci]/ADC_GEV_EM)/LSB_EM + 0.5);}
00155 for(int zdci = 0; zdci < 128; zdci++)
00156 { HADlut[zdci] = (int)((fC_TDR[zdci]/ADC_GEV_HAD)/LSB_HAD + 0.5);}
00157
00158 side.resize(2);
00159 side[0].fiber.resize(3);
00160 side[1].fiber.resize(3);
00161 side[0].fiber[0].channel.resize(3);
00162 side[0].fiber[1].channel.resize(3);
00163 side[0].fiber[2].channel.resize(3);
00164 side[1].fiber[0].channel.resize(3);
00165 side[1].fiber[1].channel.resize(3);
00166 side[1].fiber[2].channel.resize(3);
00167 side[0].fiber[0].channel[0].LUT = EMlut;
00168 side[0].fiber[0].channel[1].LUT = EMlut;
00169 side[0].fiber[0].channel[2].LUT = EMlut;
00170 side[0].fiber[1].channel[0].LUT = EMlut;
00171 side[0].fiber[1].channel[1].LUT = EMlut;
00172 side[0].fiber[1].channel[2].LUT = HADlut;
00173 side[0].fiber[2].channel[0].LUT = HADlut;
00174 side[0].fiber[2].channel[1].LUT = HADlut;
00175 side[0].fiber[2].channel[2].LUT = HADlut;
00176 side[1].fiber[0].channel[0].LUT = EMlut;
00177 side[1].fiber[0].channel[1].LUT = EMlut;
00178 side[1].fiber[0].channel[2].LUT = EMlut;
00179 side[1].fiber[1].channel[0].LUT = EMlut;
00180 side[1].fiber[1].channel[1].LUT = EMlut;
00181 side[1].fiber[1].channel[2].LUT = HADlut;
00182 side[1].fiber[2].channel[0].LUT = HADlut;
00183 side[1].fiber[2].channel[1].LUT = HADlut;
00184 side[1].fiber[2].channel[2].LUT = HADlut;
00185 }
00186
00187
00188 ZdcLut::~ZdcLut( void )
00189 {
00190 }
00191
00192 int ZdcLut::simple_loop()
00193 {
00194 for(unsigned int zdcs = 0; zdcs < side.size(); zdcs++)
00195 {
00196 for (unsigned int zdcf = 0; zdcf < side[zdcs].fiber.size(); zdcf++)
00197 {
00198 for (unsigned int zdcc = 0; zdcc < side[zdcs].fiber[zdcf].channel.size(); zdcc++)
00199 {
00200 for (unsigned int zdcl = 0; zdcl < side[zdcs].fiber[zdcf].channel[zdcc].LUT.size(); zdcl++)
00201 { std::cout << side[zdcs].fiber[zdcf].channel[zdcc].LUT[zdcl] << " "; }
00202 std::cout << std::endl;
00203 }
00204 std::cout << std::endl;
00205 }
00206 std::cout << std::endl;
00207 }
00208 return 0;
00209 }
00210
00211
00212 std::vector <int> ZdcLut::get_lut(int emap_side,
00213 int emap_htr_fiber,
00214 int emap_fi_ch){
00215 int side_num = (1-emap_side)/2;
00216 int fiber_num = (int)(emap_htr_fiber/4)+(emap_htr_fiber%4);
00217 int channel_num = emap_fi_ch;
00218 return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
00219 }
00220
00221
00222
00223 std::vector <int> ZdcLut::get_lut(std::string zdc_section,
00224 int zdc_side,
00225 int zdc_channel){
00226 int side_num = (1-zdc_side)/2;
00227 int fiber_num = -1;
00228 int channel_num = -1;
00229 if (zdc_section.find("ZDC EM")!=std::string::npos){
00230 fiber_num = (int)(zdc_channel/4);
00231 channel_num = (int)((zdc_channel-1)/3) % 3;
00232 }
00233 else if (zdc_section.find("ZDC HAD")!=std::string::npos){
00234 if (zdc_channel==1){
00235 fiber_num = 1;
00236 channel_num = 2;
00237 }
00238 else if (zdc_channel==2){
00239 fiber_num = 2;
00240 channel_num = 0;
00241 }
00242 else if (zdc_channel==3){
00243 fiber_num = 2;
00244 channel_num = 1;
00245 }
00246 else if (zdc_channel==4){
00247 fiber_num = 2;
00248 channel_num = 2;
00249 }
00250 else{
00251 std::cout << zdc_channel << ": unknown ZDC channel, exiting..." << std::endl;
00252 exit(-1);
00253 }
00254 }
00255 else{
00256 std::cout << zdc_section << ": unknown ZDC section, exiting..." << std::endl;
00257 exit(-1);
00258 }
00259
00260 if (1==1){
00261 return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
00262 }
00263 else return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
00264 }