BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CreateMapTof400_Run8_SRC.C
Go to the documentation of this file.
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6
7#include "Riostream.h"
8#include "TString.h"
9
10#include <TMath.h>
11#include <fstream>
12#include <iostream>
13#include <sstream>
14#include <string>
15
16using namespace std;
17
19{
20 Int_t temp = static_cast<int>(number / 1000.);
21 return temp;
22}
23
25{
26 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000.) / 100.);
27 return temp;
28}
29
31{
32 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000. - GetCon(number) * 100.) / 10.);
33 return temp;
34}
35
37{
38 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000. - GetCon(number) * 100. - GetDet(number) * 10.));
39 return temp;
40}
41
42void CreateMapTof400_Run8(std::string placementMapFile = "../../../../input/TOF400_PlaceMap_RUN8_SRC.txt",
43 std::string mapFile = "../../../../input/TOF400_StripMap_RUN8_SRC.txt")
44{
45
46 Int_t MapR[24] = {3, 0, 9, 6, 4, 1, 10, 7, 5, 2, 11, 8, 18, 21, 12, 15, 19, 22, 13, 16, 20, 23, 14, 17};
47 Int_t MapL[24] = {20, 23, 14, 17, 19, 22, 13, 16, 18, 21, 12, 15, 5, 2, 11, 8, 4, 1, 10, 7, 3, 0, 9, 6};
48 // Int_t MapL[24] = {4, 1, 10, 7, 5, 2, 11, 8, 6, 3, 12, 9, 19, 22, 13, 16, 20, 23, 14, 17, 21, 0, 15, 18};
49 // Int_t MapR[24] = {21, 0, 15, 18, 20, 23, 14, 17, 19, 22, 13, 16, 6, 3, 12, 9, 5, 2, 11, 8, 4, 1, 10, 7};
50
51 UInt_t crate = 0x76d3027; // Right side slot 13
52 static const Int_t kNSlot = 23;
53 UInt_t slot[kNSlot] = {0};
54 memset(slot, 0, sizeof(slot));
55
56 // box2 det 15-19
57 slot[1] = 0x06e9f5cb;
58 slot[2] = 0x06e9da9d;
59 slot[3] = 0x07a9e7d0;
60 slot[4] = 0x076cad53;
61 slot[5] = 0x06e940b2;
62 slot[6] = 0x046f3872;
63 slot[7] = 0x06e9404a;
64 // box3 det 10-14
65 slot[14] = 0x06e9403e;
66 slot[15] = 0x06e9da86;
67 slot[16] = 0x06e9043c;
68 slot[17] = 0x06e940b1;
69 slot[18] = 0x076ccf56;
70 slot[19] = 0x06e94032;
71 slot[20] = 0x076ccf5f;
72
73 fstream ff, ffStrip;
74
75 // 1. Placement map
76 ff.open(placementMapFile.c_str(), std::fstream::out);
77 if (ff.fail()) {
78 cerr << "Cannot open the file " << placementMapFile << endl;
79 return;
80 }
81 for (Int_t i = 0; i < kNSlot; i++)
82 if (slot[i] != 0) {
83 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
84 ff << std::dec << i << '\t';
85 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
86 }
87 ff.close();
88
89 Int_t Num = 14516;
90 cout << "Num = " << Num << endl;
91 cout << "GetSlot(Num) = " << GetSlot(Num) << " GetCon(Num) = " << GetCon(Num) << endl;
92 cout << "GetDet(Num) = " << GetDet(Num) << " GetSide(Num) = " << GetSide(Num) << endl;
93
94 // 1. Fill Strip Map
95 ffStrip.open(mapFile.c_str(), std::fstream::out);
96 if (ffStrip.fail()) {
97 cerr << "Cannot open the file " << mapFile << endl;
98 return;
99 }
100
101 static const Int_t kNIt = 4;
102 static const Int_t kNDet = 10;
103
104 // Right arm
105 Int_t MapDetL[kNDet][kNIt] = {
106 // box2
107 {1053, 1154, 1251, 2052}, // det 15
108 {2163, 2264, 3061, 3162}, // det 16
109 {3273, 4074, 4171, 4372}, // det 17
110 {5083, 5184, 5281, 6082}, // det 18
111 {6193, 6294, 7091, 7192}, // det 19
112 // box3
113 {14003, 14104, 14201, 15002}, // det 10
114 {15113, 15214, 16011, 16112}, // det 11
115 {16223, 17024, 17121, 17222}, // det 12
116 {18033, 18134, 18231, 19032}, // det 13
117 {19142, 19244, 20041, 20142}, // det 14
118 };
119
120 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
121 // third - detector , fourth - side (1,2 - L (Down) , 3,4 - R (Up))
122
123 for (Int_t det = 0; det < kNDet; det++) {
124 for (Int_t i = 0; i < kNIt; i++) {
125 for (Int_t j = 0; j < 24; j++) {
126
127 /* cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = "
128 << i << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
129 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
130 GetDet(MapDet[det][i])
131 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
132 getchar();
133 */
134
135 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetL[det][i])]
136 << std::setfill(' ') << '\t';
137 ffStrip << std::dec << j + 24 * GetCon(MapDetL[det][i]) << '\t';
138 ffStrip << GetDet(MapDetL[det][i]) + 10 << '\t';
139 if (GetSide(MapDetL[det][i]) == 1 || GetSide(MapDetL[det][i]) == 2) {
140 if (det < 5)
141 ffStrip << 47 - (MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24) << '\t';
142 else
143 ffStrip << MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24 << '\t';
144 // ffStrip << MapL[j] + (GetSide(MapDet[det][i]) - 1)*24 << '\t';
145 ffStrip << 'L';
146 ffStrip << endl;
147 } else if (GetSide(MapDetL[det][i]) == 3 || GetSide(MapDetL[det][i]) == 4) {
148 if (det < 5)
149 ffStrip << 47 - (MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24) << '\t';
150 else
151 ffStrip << MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24 << '\t';
152 // ffStrip << MapR[j] + (GetSide(MapDet[det][i]) - 3)*24 << '\t';
153 ffStrip << 'R';
154 ffStrip << endl;
155 } else {
156 ffStrip << -1 << '\t';
157 ffStrip << 'L';
158 ffStrip << endl;
159 }
160 }
161 }
162 }
163 ffStrip.close();
164 //
165
166 // Left side
167 memset(slot, 0, sizeof(slot));
168 // box 1
169 crate = 0x06ea9711; // slot 10
170
171 // box1
172 slot[2] = 0x076ccf6e;
173 slot[3] = 0x06e9404b;
174 slot[4] = 0x076cae7b;
175 slot[5] = 0x076caef6;
176 slot[6] = 0x06e9da91;
177 slot[7] = 0x076cae7a;
178 slot[8] = 0x07a8deb2;
179 // box4
180 slot[15] = 0x06e94033;
181 slot[16] = 0x046f408c;
182 slot[17] = 0x06e9e4b0;
183 slot[18] = 0x06e940be;
184 slot[19] = 0x076ccf62;
185 slot[20] = 0x076cad52;
186 slot[21] = 0x07a9fbf8;
187
188 // 2. Fill Placement map
189 ff.open(placementMapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
190 if (ff.fail()) {
191 cerr << "2. Cannot open the file " << placementMapFile << endl;
192 return;
193 }
194 for (Int_t i = 0; i < kNSlot; i++)
195 if (slot[i] != 0) {
196 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
197 ff << std::dec << i << '\t';
198 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
199 }
200 ff.close();
201
202 // fill it !!!!!!!!!!!!!!!!!
203
204 Int_t MapDetR[kNDet][kNIt] = {
205 // Box1 det 0-4
206 {2003, 2104, 2201, 5202},
207 {3113, 3214, 4011, 4112},
208 {4223, 5024, 5121, 3022},
209 {6033, 6134, 6231, 7032},
210 {7143, 7244, 8041, 8142},
211 // box4 det 5-9
212 {15053, 15154, 15251, 16052},
213 {16163, 16264, 17061, 17162},
214 {17273, 18074, 18171, 18272},
215 {19083, 19184, 19281, 20082},
216 {20193, 20294, 21091, 21192},
217 };
218
219 // 2. Fill Strip Map
220 ffStrip.open(mapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
221 if (ffStrip.fail()) {
222 cerr << "2. Cannot open the file " << mapFile << endl;
223 return;
224 }
225
226 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
227 // third - detector , fourth - side (1,2 - L, 3,4 - R)
228
229 for (Int_t det = 0; det < kNDet; det++) {
230 for (Int_t i = 0; i < kNIt; i++) {
231 for (Int_t j = 0; j < 24; j++) {
232 /*
233 cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = " << i
234 << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
235 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
236 GetDet(MapDet[det][i])
237 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
238 getchar();
239 */
240
241 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetR[det][i])]
242 << std::setfill(' ') << '\t';
243 ffStrip << std::dec << j + 24 * GetCon(MapDetR[det][i]) << '\t';
244 ffStrip << GetDet(MapDetR[det][i]) << '\t';
245 if (GetSide(MapDetR[det][i]) == 1 || GetSide(MapDetR[det][i]) == 2) {
246 Int_t str_temp = -1;
247 Int_t str_temp2 = -1;
248 if (det >= 5) {
249
250 str_temp = 47 - (MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24);
251 if (str_temp < 24)
252 str_temp2 = 48 - (23 - str_temp) - 1;
253 else
254 str_temp2 = 48 - (71 - str_temp) - 1;
255
256 } else {
257 cout << "Det " << det << endl;
258 str_temp = MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24;
259 if (str_temp < 24)
260 str_temp2 = 48 - (23 - str_temp) - 1;
261 else
262 str_temp2 = 48 - (71 - str_temp) - 1;
263 cout << "str_temp = " << str_temp2 << "; str_temp2 = " << str_temp << endl;
264 }
265
266 if (str_temp2 < 24)
267 str_temp = 23 - str_temp2;
268 else
269 str_temp = 71 - str_temp2;
270
271 ffStrip << str_temp << '\t';
272 ffStrip << 'L';
273 ffStrip << endl;
274 } else if (GetSide(MapDetR[det][i]) == 3 || GetSide(MapDetR[det][i]) == 4) {
275 Int_t str_temp = -1;
276 Int_t str_temp2 = -1;
277 if (det >= 5) {
278 str_temp = 47 - (MapR[j] + (GetSide(MapDetR[det][i]) - 3) * 24);
279 if (str_temp < 24)
280 str_temp2 = 48 - (23 - str_temp) - 1;
281 else
282 str_temp2 = 48 - (71 - str_temp) - 1;
283 } else {
284 str_temp = MapR[j] + (GetSide(MapDetR[det][i]) - 3) * 24;
285 if (str_temp < 24)
286 str_temp2 = 48 - (23 - str_temp) - 1;
287 else
288 str_temp2 = 48 - (71 - str_temp) - 1;
289 }
290
291 if (str_temp2 < 24)
292 str_temp = 23 - str_temp2;
293 else
294 str_temp = 71 - str_temp2;
295
296 ffStrip << str_temp << '\t';
297 ffStrip << 'R';
298 ffStrip << endl;
299 } else {
300 ffStrip << -1 << '\t';
301 ffStrip << 'L';
302 ffStrip << endl;
303 }
304 }
305 }
306 }
307 ffStrip.close();
308}
Int_t GetSide(Int_t number)
Int_t GetSlot(Int_t number)
void CreateMapTof400_Run8(std::string placementMapFile="../../../../input/TOF400_PlaceMap_RUN8_SRC.txt", std::string mapFile="../../../../input/TOF400_StripMap_RUN8_SRC.txt")
Int_t GetCon(Int_t number)
Int_t GetDet(Int_t number)
void memset(T *dest, T i, size_t num)
Copy to memory block [@dest, @dest+@num] num number of times the value of i of type @T with size @typ...
Definition L1Grid.h:27
int i
Definition P4_F32vec4.h:22
int Int_t
unsigned int UInt_t
Definition json.hpp:4446