3 #include <FairLogger.h>
5 #include <Math/Point2D.h>
10 #include <boost/multi_array/base.hpp>
11 #include <boost/multi_array/extent_gen.hpp>
12 #include <boost/multi_array/multi_array_ref.hpp>
13 #include <boost/multi_array/subarray.hpp>
22 constexpr
auto cRED =
"\033[1;31m";
32 std::cout <<
" GADGETII Map initialized " << std::endl;
33 std::cout <<
" GADGETII Pad Coordinates container initialized " << std::endl;
45 LOG(error) <<
"Skipping generation of pad plane, it is already parsed!";
49 Float_t pad_size = 2.2;
50 Float_t pad_spacing = 0.001;
52 std::vector<int> pads_per_row{18, 18, 18, 17, 17, 17, 17, 16, 16, 15, 15, 14, 13, 12, 11, 9, 7, 3};
56 for (
auto irow = 0; irow < pads_per_row.size(); ++irow) {
58 for (
auto ipad = 0; ipad < pads_per_row[irow]; ++ipad) {
59 AtPadCoord[ipad + pad_num][0][0] = ipad * pad_size;
60 AtPadCoord[ipad + pad_num][0][1] = -irow * pad_size;
61 AtPadCoord[ipad + pad_num][1][0] = ipad * pad_size + pad_size;
62 AtPadCoord[ipad + pad_num][1][1] = -irow * pad_size;
63 AtPadCoord[ipad + pad_num][2][0] = ipad * pad_size + pad_size;
64 AtPadCoord[ipad + pad_num][2][1] = -pad_size - irow * pad_size;
65 AtPadCoord[ipad + pad_num][3][0] = ipad * pad_size;
66 AtPadCoord[ipad + pad_num][3][1] = -pad_size - irow * pad_size;
69 std::cout <<
" Row " << irow <<
" Number of pads " << pad_num <<
"\n";
70 pad_num += pads_per_row[irow];
96 for (
auto irow = 0; irow < pads_per_row.size(); ++irow) {
98 for (
auto ipad = 0; ipad < pads_per_row[irow]; ++ipad) {
99 AtPadCoord[ipad + pad_num][0][0] = -ipad * pad_size;
100 AtPadCoord[ipad + pad_num][0][1] = -irow * pad_size;
101 AtPadCoord[ipad + pad_num][1][0] = -ipad * pad_size - pad_size;
102 AtPadCoord[ipad + pad_num][1][1] = -irow * pad_size;
103 AtPadCoord[ipad + pad_num][2][0] = -ipad * pad_size - pad_size;
104 AtPadCoord[ipad + pad_num][2][1] = -pad_size - irow * pad_size;
105 AtPadCoord[ipad + pad_num][3][0] = -ipad * pad_size;
106 AtPadCoord[ipad + pad_num][3][1] = -pad_size - irow * pad_size;
109 std::cout <<
" Row " << irow <<
" Number of pads " << pad_num <<
"\n";
110 pad_num += pads_per_row[irow];
136 for (
auto irow = 0; irow < pads_per_row.size(); ++irow) {
138 for (
auto ipad = 0; ipad < pads_per_row[irow]; ++ipad) {
139 AtPadCoord[ipad + pad_num][0][0] = -ipad * pad_size;
140 AtPadCoord[ipad + pad_num][0][1] = irow * pad_size;
141 AtPadCoord[ipad + pad_num][1][0] = -ipad * pad_size - pad_size;
142 AtPadCoord[ipad + pad_num][1][1] = irow * pad_size;
143 AtPadCoord[ipad + pad_num][2][0] = -ipad * pad_size - pad_size;
144 AtPadCoord[ipad + pad_num][2][1] = pad_size + irow * pad_size;
145 AtPadCoord[ipad + pad_num][3][0] = -ipad * pad_size;
146 AtPadCoord[ipad + pad_num][3][1] = pad_size + irow * pad_size;
149 std::cout <<
" Row " << irow <<
" Number of pads " << pad_num <<
"\n";
150 pad_num += pads_per_row[irow];
176 for (
auto irow = 0; irow < pads_per_row.size(); ++irow) {
178 for (
auto ipad = 0; ipad < pads_per_row[irow]; ++ipad) {
179 AtPadCoord[ipad + pad_num][0][0] = ipad * pad_size;
180 AtPadCoord[ipad + pad_num][0][1] = irow * pad_size;
181 AtPadCoord[ipad + pad_num][1][0] = ipad * pad_size + pad_size;
182 AtPadCoord[ipad + pad_num][1][1] = irow * pad_size;
183 AtPadCoord[ipad + pad_num][2][0] = ipad * pad_size + pad_size;
184 AtPadCoord[ipad + pad_num][2][1] = pad_size + irow * pad_size;
185 AtPadCoord[ipad + pad_num][3][0] = ipad * pad_size;
186 AtPadCoord[ipad + pad_num][3][1] = pad_size + irow * pad_size;
189 std::cout <<
" Row " << irow <<
" Number of pads " << pad_num <<
"\n";
190 pad_num += pads_per_row[irow];
216 std::cout <<
" Total pads " << pad_num <<
"\n";
222 for (
auto ipad = 0; ipad < pad_num; ++ipad) {
239 LOG(error) <<
" AtGadgetMap::CalcPadCenter Error : Pad plane has not been generated or parsed";
240 return {-9999, -9999};
244 LOG(debug) <<
" AtGadgetMap::CalcPadCenter Error : Pad not found";
245 return {-9999, -9999};
255 TString dir = getenv(
"VMCWORKDIR");
256 TString mapFile =
"GADGETII_BinToPad_08232021.txt";
257 TString mapFileWithPath = dir +
"/scripts/" + mapFile;
264 file.open(mapFileWithPath.Data());
266 while (!file.eof()) {
269 std::getline(file, line);
271 Int_t pad = 0, bin = 0;
274 std::istringstream isxs(line);
278 std::cout <<
" Pad " << pad <<
" - Bin " << bin <<
"\n";
280 fBinToPadTable.emplace(bin, pad);
284 std::cout <<
" AtGadgetIIMap::SetBinToPadMap : Error when reading " << mapFileWithPath.Data() <<
"!" <<
cNORMAL