File indexing completed on 2025-08-06 08:17:52
0001 #include "MbdGeomV2.h"
0002
0003 #include <cmath>
0004
0005
0006
0007
0008
0009 static const float PmtLoc[64][2] = {
0010 {-12.2976, 4.26},
0011 {-12.2976, 1.42},
0012 {-9.83805, 8.52},
0013 {-9.83805, 5.68},
0014 {-9.83805, 2.84},
0015 {-7.37854, 9.94},
0016 {-7.37854, 7.1},
0017 {-7.37854, 4.26},
0018 {-7.37854, 1.42},
0019 {-4.91902, 11.36},
0020 {-4.91902, 8.52},
0021 {-4.91902, 5.68},
0022 {-2.45951, 12.78},
0023 {-2.45951, 9.94},
0024 {-2.45951, 7.1},
0025 {0, 11.36},
0026 {0, 8.52},
0027 {2.45951, 12.78},
0028 {2.45951, 9.94},
0029 {2.45951, 7.1},
0030 {4.91902, 11.36},
0031 {4.91902, 8.52},
0032 {4.91902, 5.68},
0033 {7.37854, 9.94},
0034 {7.37854, 7.1},
0035 {7.37854, 4.26},
0036 {7.37854, 1.42},
0037 {9.83805, 8.52},
0038 {9.83805, 5.68},
0039 {9.83805, 2.84},
0040 {12.2976, 4.26},
0041 {12.2976, 1.42},
0042 {12.2976, -4.26},
0043 {12.2976, -1.42},
0044 {9.83805, -8.52},
0045 {9.83805, -5.68},
0046 {9.83805, -2.84},
0047 {7.37854, -9.94},
0048 {7.37854, -7.1},
0049 {7.37854, -4.26},
0050 {7.37854, -1.42},
0051 {4.91902, -11.36},
0052 {4.91902, -8.52},
0053 {4.91902, -5.68},
0054 {2.45951, -12.78},
0055 {2.45951, -9.94},
0056 {2.45951, -7.1},
0057 {0, -11.36},
0058 {0, -8.52},
0059 {-2.45951, -12.78},
0060 {-2.45951, -9.94},
0061 {-2.45951, -7.1},
0062 {-4.91902, -11.36},
0063 {-4.91902, -8.52},
0064 {-4.91902, -5.68},
0065 {-7.37854, -9.94},
0066 {-7.37854, -7.1},
0067 {-7.37854, -4.26},
0068 {-7.37854, -1.42},
0069 {-9.83805, -8.52},
0070 {-9.83805, -5.68},
0071 {-9.83805, -2.84},
0072 {-12.2976, -4.26},
0073 {-12.2976, -1.42}};
0074
0075 MbdGeomV2::MbdGeomV2()
0076 {
0077
0078 for (unsigned int ipmt = 0; ipmt < 128; ipmt++)
0079 {
0080 int arm = ipmt / 64;
0081
0082 float xsign = 1.;
0083 float zsign = -1.;
0084 if (arm == 1)
0085 {
0086 xsign = -1.;
0087 zsign = 1.;
0088 }
0089
0090 float tube_x = xsign * PmtLoc[ipmt % 64][0];
0091 float tube_y = PmtLoc[ipmt % 64][1];
0092 float tube_z = zsign * 253.;
0093
0094 MbdGeomV2::set_xyz(ipmt, tube_x, tube_y, tube_z);
0095 }
0096
0097 }
0098
0099 void MbdGeomV2::set_xyz(const unsigned int ipmt, const float x, const float y, const float z)
0100 {
0101 pmt_x[ipmt] = x;
0102 pmt_y[ipmt] = y;
0103 pmt_z[ipmt] = z;
0104 pmt_r[ipmt] = std::sqrt((x * x) + (y * y));
0105 pmt_phi[ipmt] = std::atan2(y, x);
0106 }
0107
0108 const std::multimap<int,int>& MbdGeomV2::get_hvmap()
0109 {
0110 if ( pmt_hv.empty() )
0111 {
0112 download_hv();
0113 }
0114 return pmt_hv;
0115 }
0116
0117 void MbdGeomV2::download_hv()
0118 {
0119
0120 pmt_hv.insert(std::pair<int, int>( 0, 0 ));
0121 pmt_hv.insert(std::pair<int, int>( 0, 1 ));
0122 pmt_hv.insert(std::pair<int, int>( 0, 2 ));
0123 pmt_hv.insert(std::pair<int, int>( 0, 3 ));
0124 pmt_hv.insert(std::pair<int, int>( 0, 4 ));
0125 pmt_hv.insert(std::pair<int, int>( 0, 5 ));
0126 pmt_hv.insert(std::pair<int, int>( 0, 6 ));
0127 pmt_hv.insert(std::pair<int, int>( 0, 10 ));
0128 pmt_hv.insert(std::pair<int, int>( 1, 9 ));
0129 pmt_hv.insert(std::pair<int, int>( 1, 12 ));
0130 pmt_hv.insert(std::pair<int, int>( 1, 13 ));
0131 pmt_hv.insert(std::pair<int, int>( 1, 15 ));
0132 pmt_hv.insert(std::pair<int, int>( 1, 17 ));
0133 pmt_hv.insert(std::pair<int, int>( 1, 18 ));
0134 pmt_hv.insert(std::pair<int, int>( 1, 20 ));
0135 pmt_hv.insert(std::pair<int, int>( 1, 23 ));
0136 pmt_hv.insert(std::pair<int, int>( 2, 7 ));
0137 pmt_hv.insert(std::pair<int, int>( 2, 8 ));
0138 pmt_hv.insert(std::pair<int, int>( 2, 11 ));
0139 pmt_hv.insert(std::pair<int, int>( 2, 14 ));
0140 pmt_hv.insert(std::pair<int, int>( 2, 16 ));
0141 pmt_hv.insert(std::pair<int, int>( 2, 19 ));
0142 pmt_hv.insert(std::pair<int, int>( 2, 22 ));
0143 pmt_hv.insert(std::pair<int, int>( 2, 25 ));
0144 pmt_hv.insert(std::pair<int, int>( 2, 26 ));
0145 pmt_hv.insert(std::pair<int, int>( 3, 21 ));
0146 pmt_hv.insert(std::pair<int, int>( 3, 24 ));
0147 pmt_hv.insert(std::pair<int, int>( 3, 27 ));
0148 pmt_hv.insert(std::pair<int, int>( 3, 28 ));
0149 pmt_hv.insert(std::pair<int, int>( 3, 29 ));
0150 pmt_hv.insert(std::pair<int, int>( 3, 30 ));
0151 pmt_hv.insert(std::pair<int, int>( 3, 31 ));
0152 pmt_hv.insert(std::pair<int, int>( 4, 32 ));
0153 pmt_hv.insert(std::pair<int, int>( 4, 33 ));
0154 pmt_hv.insert(std::pair<int, int>( 4, 34 ));
0155 pmt_hv.insert(std::pair<int, int>( 4, 35 ));
0156 pmt_hv.insert(std::pair<int, int>( 4, 36 ));
0157 pmt_hv.insert(std::pair<int, int>( 4, 37 ));
0158 pmt_hv.insert(std::pair<int, int>( 4, 38 ));
0159 pmt_hv.insert(std::pair<int, int>( 4, 42 ));
0160 pmt_hv.insert(std::pair<int, int>( 5, 41 ));
0161 pmt_hv.insert(std::pair<int, int>( 5, 44 ));
0162 pmt_hv.insert(std::pair<int, int>( 5, 45 ));
0163 pmt_hv.insert(std::pair<int, int>( 5, 47 ));
0164 pmt_hv.insert(std::pair<int, int>( 5, 49 ));
0165 pmt_hv.insert(std::pair<int, int>( 5, 50 ));
0166 pmt_hv.insert(std::pair<int, int>( 5, 52 ));
0167 pmt_hv.insert(std::pair<int, int>( 6, 39 ));
0168 pmt_hv.insert(std::pair<int, int>( 6, 40 ));
0169 pmt_hv.insert(std::pair<int, int>( 6, 43 ));
0170 pmt_hv.insert(std::pair<int, int>( 6, 46 ));
0171 pmt_hv.insert(std::pair<int, int>( 6, 48 ));
0172 pmt_hv.insert(std::pair<int, int>( 6, 51 ));
0173 pmt_hv.insert(std::pair<int, int>( 6, 54 ));
0174 pmt_hv.insert(std::pair<int, int>( 6, 57 ));
0175 pmt_hv.insert(std::pair<int, int>( 6, 58 ));
0176 pmt_hv.insert(std::pair<int, int>( 6, 60 ));
0177 pmt_hv.insert(std::pair<int, int>( 7, 53 ));
0178 pmt_hv.insert(std::pair<int, int>( 7, 55 ));
0179 pmt_hv.insert(std::pair<int, int>( 7, 56 ));
0180 pmt_hv.insert(std::pair<int, int>( 7, 59 ));
0181 pmt_hv.insert(std::pair<int, int>( 7, 61 ));
0182 pmt_hv.insert(std::pair<int, int>( 7, 62 ));
0183 pmt_hv.insert(std::pair<int, int>( 7, 63 ));
0184
0185
0186 pmt_hv.insert(std::pair<int, int>( 8, 64 ));
0187 pmt_hv.insert(std::pair<int, int>( 8, 65 ));
0188 pmt_hv.insert(std::pair<int, int>( 8, 66 ));
0189 pmt_hv.insert(std::pair<int, int>( 8, 67 ));
0190 pmt_hv.insert(std::pair<int, int>( 8, 68 ));
0191 pmt_hv.insert(std::pair<int, int>( 8, 70 ));
0192 pmt_hv.insert(std::pair<int, int>( 8, 74 ));
0193 pmt_hv.insert(std::pair<int, int>( 8, 77 ));
0194 pmt_hv.insert(std::pair<int, int>( 9, 76 ));
0195 pmt_hv.insert(std::pair<int, int>( 9, 81 ));
0196 pmt_hv.insert(std::pair<int, int>( 9, 84 ));
0197 pmt_hv.insert(std::pair<int, int>( 9, 87 ));
0198 pmt_hv.insert(std::pair<int, int>( 9, 91 ));
0199 pmt_hv.insert(std::pair<int, int>( 9, 94 ));
0200 pmt_hv.insert(std::pair<int, int>( 9, 95 ));
0201 pmt_hv.insert(std::pair<int, int>( 10, 71 ));
0202 pmt_hv.insert(std::pair<int, int>( 10, 72 ));
0203 pmt_hv.insert(std::pair<int, int>( 10, 75 ));
0204 pmt_hv.insert(std::pair<int, int>( 10, 78 ));
0205 pmt_hv.insert(std::pair<int, int>( 10, 80 ));
0206 pmt_hv.insert(std::pair<int, int>( 10, 83 ));
0207 pmt_hv.insert(std::pair<int, int>( 10, 86 ));
0208 pmt_hv.insert(std::pair<int, int>( 10, 89 ));
0209 pmt_hv.insert(std::pair<int, int>( 10, 90 ));
0210 pmt_hv.insert(std::pair<int, int>( 11, 69 ));
0211 pmt_hv.insert(std::pair<int, int>( 11, 73 ));
0212 pmt_hv.insert(std::pair<int, int>( 11, 79 ));
0213 pmt_hv.insert(std::pair<int, int>( 11, 82 ));
0214 pmt_hv.insert(std::pair<int, int>( 11, 85 ));
0215 pmt_hv.insert(std::pair<int, int>( 11, 88 ));
0216 pmt_hv.insert(std::pair<int, int>( 11, 92 ));
0217 pmt_hv.insert(std::pair<int, int>( 11, 93 ));
0218 pmt_hv.insert(std::pair<int, int>( 12, 96 ));
0219 pmt_hv.insert(std::pair<int, int>( 12, 97 ));
0220 pmt_hv.insert(std::pair<int, int>( 12, 98 ));
0221 pmt_hv.insert(std::pair<int, int>( 12, 99 ));
0222 pmt_hv.insert(std::pair<int, int>( 12, 100 ));
0223 pmt_hv.insert(std::pair<int, int>( 12, 102 ));
0224 pmt_hv.insert(std::pair<int, int>( 12, 106 ));
0225 pmt_hv.insert(std::pair<int, int>( 12, 108 ));
0226 pmt_hv.insert(std::pair<int, int>( 12, 109 ));
0227 pmt_hv.insert(std::pair<int, int>( 13, 101 ));
0228 pmt_hv.insert(std::pair<int, int>( 13, 105 ));
0229 pmt_hv.insert(std::pair<int, int>( 13, 111 ));
0230 pmt_hv.insert(std::pair<int, int>( 13, 119 ));
0231 pmt_hv.insert(std::pair<int, int>( 14, 103 ));
0232 pmt_hv.insert(std::pair<int, int>( 14, 104 ));
0233 pmt_hv.insert(std::pair<int, int>( 14, 107 ));
0234 pmt_hv.insert(std::pair<int, int>( 14, 110 ));
0235 pmt_hv.insert(std::pair<int, int>( 14, 112 ));
0236 pmt_hv.insert(std::pair<int, int>( 14, 115 ));
0237 pmt_hv.insert(std::pair<int, int>( 14, 116 ));
0238 pmt_hv.insert(std::pair<int, int>( 14, 118 ));
0239 pmt_hv.insert(std::pair<int, int>( 14, 121 ));
0240 pmt_hv.insert(std::pair<int, int>( 14, 122 ));
0241 pmt_hv.insert(std::pair<int, int>( 15, 113 ));
0242 pmt_hv.insert(std::pair<int, int>( 15, 114 ));
0243 pmt_hv.insert(std::pair<int, int>( 15, 117 ));
0244 pmt_hv.insert(std::pair<int, int>( 15, 120 ));
0245 pmt_hv.insert(std::pair<int, int>( 15, 123 ));
0246 pmt_hv.insert(std::pair<int, int>( 15, 124 ));
0247 pmt_hv.insert(std::pair<int, int>( 15, 125 ));
0248 pmt_hv.insert(std::pair<int, int>( 15, 126 ));
0249 pmt_hv.insert(std::pair<int, int>( 15, 127 ));
0250
0251 }
0252