File indexing completed on 2024-04-06 12:00:08
0001 #include "CaloOnlineTools/HcalOnlineDb/interface/ZdcLut.h"
0002 #include <cstdlib>
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 ZdcLut::ZdcLut() {
0014
0015 double ADC_GEV_EM = 13.55, ADC_GEV_HAD = 0.6;
0016 int LSB_EM = 1, LSB_HAD = 5;
0017 std::vector<int> fC_TDR;
0018
0019 fC_TDR.push_back(0);
0020 fC_TDR.push_back(1);
0021 fC_TDR.push_back(2);
0022 fC_TDR.push_back(3);
0023 fC_TDR.push_back(4);
0024 fC_TDR.push_back(5);
0025 fC_TDR.push_back(6);
0026 fC_TDR.push_back(7);
0027 fC_TDR.push_back(8);
0028 fC_TDR.push_back(9);
0029 fC_TDR.push_back(10);
0030 fC_TDR.push_back(11);
0031 fC_TDR.push_back(12);
0032 fC_TDR.push_back(13);
0033 fC_TDR.push_back(14);
0034 fC_TDR.push_back(16);
0035 fC_TDR.push_back(18);
0036 fC_TDR.push_back(20);
0037 fC_TDR.push_back(22);
0038 fC_TDR.push_back(24);
0039 fC_TDR.push_back(26);
0040 fC_TDR.push_back(28);
0041 fC_TDR.push_back(31);
0042 fC_TDR.push_back(34);
0043 fC_TDR.push_back(37);
0044 fC_TDR.push_back(40);
0045 fC_TDR.push_back(44);
0046 fC_TDR.push_back(48);
0047 fC_TDR.push_back(52);
0048 fC_TDR.push_back(57);
0049 fC_TDR.push_back(62);
0050 fC_TDR.push_back(67);
0051 fC_TDR.push_back(62);
0052 fC_TDR.push_back(67);
0053 fC_TDR.push_back(72);
0054 fC_TDR.push_back(77);
0055 fC_TDR.push_back(82);
0056 fC_TDR.push_back(87);
0057 fC_TDR.push_back(92);
0058 fC_TDR.push_back(97);
0059 fC_TDR.push_back(102);
0060 fC_TDR.push_back(107);
0061 fC_TDR.push_back(112);
0062 fC_TDR.push_back(117);
0063 fC_TDR.push_back(122);
0064 fC_TDR.push_back(127);
0065 fC_TDR.push_back(132);
0066 fC_TDR.push_back(142);
0067 fC_TDR.push_back(152);
0068 fC_TDR.push_back(162);
0069 fC_TDR.push_back(172);
0070 fC_TDR.push_back(182);
0071 fC_TDR.push_back(192);
0072 fC_TDR.push_back(202);
0073 fC_TDR.push_back(217);
0074 fC_TDR.push_back(232);
0075 fC_TDR.push_back(247);
0076 fC_TDR.push_back(262);
0077 fC_TDR.push_back(282);
0078 fC_TDR.push_back(302);
0079 fC_TDR.push_back(322);
0080 fC_TDR.push_back(347);
0081 fC_TDR.push_back(372);
0082 fC_TDR.push_back(397);
0083 fC_TDR.push_back(372);
0084 fC_TDR.push_back(397);
0085 fC_TDR.push_back(422);
0086 fC_TDR.push_back(447);
0087 fC_TDR.push_back(472);
0088 fC_TDR.push_back(497);
0089 fC_TDR.push_back(522);
0090 fC_TDR.push_back(547);
0091 fC_TDR.push_back(572);
0092 fC_TDR.push_back(597);
0093 fC_TDR.push_back(622);
0094 fC_TDR.push_back(647);
0095 fC_TDR.push_back(672);
0096 fC_TDR.push_back(697);
0097 fC_TDR.push_back(722);
0098 fC_TDR.push_back(772);
0099 fC_TDR.push_back(822);
0100 fC_TDR.push_back(872);
0101 fC_TDR.push_back(922);
0102 fC_TDR.push_back(972);
0103 fC_TDR.push_back(1022);
0104 fC_TDR.push_back(1072);
0105 fC_TDR.push_back(1147);
0106 fC_TDR.push_back(1222);
0107 fC_TDR.push_back(1297);
0108 fC_TDR.push_back(1372);
0109 fC_TDR.push_back(1472);
0110 fC_TDR.push_back(1572);
0111 fC_TDR.push_back(1672);
0112 fC_TDR.push_back(1797);
0113 fC_TDR.push_back(1922);
0114 fC_TDR.push_back(2047);
0115 fC_TDR.push_back(1922);
0116 fC_TDR.push_back(2047);
0117 fC_TDR.push_back(2172);
0118 fC_TDR.push_back(2297);
0119 fC_TDR.push_back(2422);
0120 fC_TDR.push_back(2547);
0121 fC_TDR.push_back(2672);
0122 fC_TDR.push_back(1797);
0123 fC_TDR.push_back(2922);
0124 fC_TDR.push_back(3047);
0125 fC_TDR.push_back(3172);
0126 fC_TDR.push_back(3297);
0127 fC_TDR.push_back(3422);
0128 fC_TDR.push_back(2547);
0129 fC_TDR.push_back(3672);
0130 fC_TDR.push_back(3922);
0131 fC_TDR.push_back(4172);
0132 fC_TDR.push_back(4422);
0133 fC_TDR.push_back(4672);
0134 fC_TDR.push_back(4922);
0135 fC_TDR.push_back(5172);
0136 fC_TDR.push_back(5422);
0137 fC_TDR.push_back(5797);
0138 fC_TDR.push_back(6172);
0139 fC_TDR.push_back(6547);
0140 fC_TDR.push_back(6922);
0141 fC_TDR.push_back(7422);
0142 fC_TDR.push_back(7922);
0143 fC_TDR.push_back(8422);
0144 fC_TDR.push_back(9047);
0145 fC_TDR.push_back(9672);
0146 fC_TDR.push_back(10297);
0147
0148
0149 std::vector<int> HADlut(128);
0150 std::vector<int> EMlut(128);
0151
0152 for (int zdci = 0; zdci < 128; zdci++) {
0153 EMlut[zdci] = (int)((fC_TDR[zdci] / ADC_GEV_EM) / LSB_EM + 0.5);
0154 }
0155 for (int zdci = 0; zdci < 128; zdci++) {
0156 HADlut[zdci] = (int)((fC_TDR[zdci] / ADC_GEV_HAD) / LSB_HAD + 0.5);
0157 }
0158
0159 side.resize(2);
0160 side[0].fiber.resize(3);
0161 side[1].fiber.resize(3);
0162 side[0].fiber[0].channel.resize(3);
0163 side[0].fiber[1].channel.resize(3);
0164 side[0].fiber[2].channel.resize(3);
0165 side[1].fiber[0].channel.resize(3);
0166 side[1].fiber[1].channel.resize(3);
0167 side[1].fiber[2].channel.resize(3);
0168 side[0].fiber[0].channel[0].LUT = EMlut;
0169 side[0].fiber[0].channel[1].LUT = EMlut;
0170 side[0].fiber[0].channel[2].LUT = EMlut;
0171 side[0].fiber[1].channel[0].LUT = EMlut;
0172 side[0].fiber[1].channel[1].LUT = EMlut;
0173 side[0].fiber[1].channel[2].LUT = HADlut;
0174 side[0].fiber[2].channel[0].LUT = HADlut;
0175 side[0].fiber[2].channel[1].LUT = HADlut;
0176 side[0].fiber[2].channel[2].LUT = HADlut;
0177 side[1].fiber[0].channel[0].LUT = EMlut;
0178 side[1].fiber[0].channel[1].LUT = EMlut;
0179 side[1].fiber[0].channel[2].LUT = EMlut;
0180 side[1].fiber[1].channel[0].LUT = EMlut;
0181 side[1].fiber[1].channel[1].LUT = EMlut;
0182 side[1].fiber[1].channel[2].LUT = HADlut;
0183 side[1].fiber[2].channel[0].LUT = HADlut;
0184 side[1].fiber[2].channel[1].LUT = HADlut;
0185 side[1].fiber[2].channel[2].LUT = HADlut;
0186 }
0187
0188 ZdcLut::~ZdcLut(void) {}
0189
0190 int ZdcLut::simple_loop() {
0191 for (unsigned int zdcs = 0; zdcs < side.size(); zdcs++) {
0192 for (unsigned int zdcf = 0; zdcf < side[zdcs].fiber.size(); zdcf++) {
0193 for (unsigned int zdcc = 0; zdcc < side[zdcs].fiber[zdcf].channel.size(); zdcc++) {
0194 for (unsigned int zdcl = 0; zdcl < side[zdcs].fiber[zdcf].channel[zdcc].LUT.size(); zdcl++) {
0195 std::cout << side[zdcs].fiber[zdcf].channel[zdcc].LUT[zdcl] << " ";
0196 }
0197 std::cout << std::endl;
0198 }
0199 std::cout << std::endl;
0200 }
0201 std::cout << std::endl;
0202 }
0203 return 0;
0204 }
0205
0206 std::vector<int> ZdcLut::get_lut(int emap_side, int emap_htr_fiber, int emap_fi_ch) {
0207 int side_num = (1 - emap_side) / 2;
0208 int fiber_num = (int)(emap_htr_fiber / 4) + (emap_htr_fiber % 4);
0209 int channel_num = emap_fi_ch;
0210 return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
0211 }
0212
0213
0214 std::vector<int> ZdcLut::get_lut(std::string zdc_section, int zdc_side, int zdc_channel) {
0215 int side_num = (1 - zdc_side) / 2;
0216 int fiber_num = -1;
0217 int channel_num = -1;
0218 if (zdc_section.find("ZDC EM") != std::string::npos) {
0219 fiber_num = (int)(zdc_channel / 4);
0220 channel_num = (int)((zdc_channel - 1) / 3) % 3;
0221 } else if (zdc_section.find("ZDC HAD") != std::string::npos) {
0222 if (zdc_channel == 1) {
0223 fiber_num = 1;
0224 channel_num = 2;
0225 } else if (zdc_channel == 2) {
0226 fiber_num = 2;
0227 channel_num = 0;
0228 } else if (zdc_channel == 3) {
0229 fiber_num = 2;
0230 channel_num = 1;
0231 } else if (zdc_channel == 4) {
0232 fiber_num = 2;
0233 channel_num = 2;
0234 } else {
0235 std::cout << zdc_channel << ": unknown ZDC channel, exiting..." << std::endl;
0236 exit(-1);
0237 }
0238 } else {
0239 std::cout << zdc_section << ": unknown ZDC section, exiting..." << std::endl;
0240 exit(-1);
0241 }
0242
0243 if (1 == 1) {
0244 return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
0245 } else
0246 return side[side_num].fiber[fiber_num].channel[channel_num].LUT;
0247 }