BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CreateMapTof400_Run8.C
Go to the documentation of this file.
1/*
2 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
3 * Click nbfs://nbhost/SystemFileSystem/Templates/cFiles/main.c to edit this template
4 */
5
6/*
7 * File: CreateMapTof400_Run9.C
8 * Author: mikhailr
9 *
10 * Created on November 25, 2022, 3:02 PM
11 */
12
13#include "Riostream.h"
14#include "TString.h"
15
16#include <TMath.h>
17#include <fstream>
18#include <iostream>
19#include <sstream>
20#include <string>
21
22using namespace std;
23
25{
26 Int_t temp = static_cast<int>(number / 1000.);
27 return temp;
28}
29
31{
32 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000.) / 100.);
33 return temp;
34}
35
37{
38 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000. - GetCon(number) * 100.) / 10.);
39 return temp;
40}
41
43{
44 Int_t temp = static_cast<int>((number - GetSlot(number) * 1000. - GetCon(number) * 100. - GetDet(number) * 10.));
45 return temp;
46}
47
48void CreateMapTof400_Run9(std::string placementMapFile = "../../../../input/TOF400_PlaceMap_RUN9.txt",
49 std::string mapFile = "../../../../input/TOF400_StripMap_RUN9.txt")
50{
51
52 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};
53 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};
54 // 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};
55 // 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};
56
57 // Left Side
58 UInt_t crate = 0x0cd91420; // TTVXS Left side slot 12
59 static const Int_t kNSlot = 23;
60 UInt_t slot[kNSlot] = {0};
61 memset(slot, 0, sizeof(slot));
62
63 // box2 det 5-9 +++++
64 slot[4] = 0x06e9404b;
65 slot[5] = 0x06e9da9e;
66 slot[6] = 0x06e940b1;
67 slot[7] = 0x07a8deb2;
68 slot[8] = 0x06e9403e;
69 slot[9] = 0x06e9da86;
70 slot[10] = 0x076cae7a;
71 // box1 det 0-4 +++++
72 slot[14] = 0x06e9e4b0;
73 slot[15] = 0x06e9da9d;
74 slot[16] = 0x076cad53;
75 slot[17] = 0x06e940be;
76 slot[18] = 0x076ccf5f;
77 slot[19] = 0x076ccf56;
78 slot[20] = 0x06e9da91;
79
80 fstream ff, ffStrip;
81
82 // 1. Placement map
83 ff.open(placementMapFile.c_str(), std::fstream::out);
84 if (ff.fail()) {
85 cerr << "Cannot open the file " << placementMapFile << endl;
86 return;
87 }
88 for (Int_t i = 0; i < kNSlot; i++)
89 if (slot[i] != 0) {
90 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
91 ff << std::dec << i << '\t';
92 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
93 }
94 ff.close();
95
96 Int_t Num = 14516;
97 cout << "Num = " << Num << endl;
98 cout << "GetSlot(Num) = " << GetSlot(Num) << " GetCon(Num) = " << GetCon(Num) << endl;
99 cout << "GetDet(Num) = " << GetDet(Num) << " GetSide(Num) = " << GetSide(Num) << endl;
100
101 // 1. Fill Strip Map
102 ffStrip.open(mapFile.c_str(), std::fstream::out);
103 if (ffStrip.fail()) {
104 cerr << "Cannot open the file " << mapFile << endl;
105 return;
106 }
107
108 static const Int_t kNIt = 4;
109 static const Int_t kNDet = 10;
110
111 // Right arm
112 Int_t MapDetL[kNDet][kNIt] = {
113 // box1
114 {14003, 14101, 14204, 15002}, // det 0
115 {15113, 15211, 16014, 16112}, // det 1
116 {16223, 17021, 17124, 17222}, // det 2
117 {18033, 18131, 18234, 19032}, // det 3
118 {19143, 19241, 20044, 20142}, // det 4
119 // box2
120 {4053, 4151, 4254, 5052}, // det 5
121 {5163, 5261, 6064, 6162}, // det 6
122 {6273, 7071, 7174, 7272}, // det 7
123 {8083, 8181, 8284, 9082}, // det 8
124 {9193, 9291, 10094, 10192}, // det 9
125 };
126
127 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
128 // third - detector , fourth - side (1,2 - L (Down) , 3,4 - R (Up))
129
130 for (Int_t det = 0; det < kNDet; det++) {
131 for (Int_t i = 0; i < kNIt; i++) {
132 for (Int_t j = 0; j < 24; j++) {
133
134 /* cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = "
135 << i << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
136 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
137 GetDet(MapDet[det][i])
138 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
139 getchar();
140 */
141
142 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetL[det][i])]
143 << std::setfill(' ') << '\t';
144 ffStrip << std::dec << j + 24 * GetCon(MapDetL[det][i]) << '\t';
145 ffStrip << GetDet(MapDetL[det][i]) << '\t';
146 if (GetSide(MapDetL[det][i]) == 1 || GetSide(MapDetL[det][i]) == 2) {
147 if (det < 5)
148 ffStrip << 47 - (MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24) << '\t';
149 else
150 ffStrip << MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24 << '\t';
151 // ffStrip << MapL[j] + (GetSide(MapDet[det][i]) - 1)*24 << '\t';
152 ffStrip << 'L';
153 ffStrip << endl;
154 } else if (GetSide(MapDetL[det][i]) == 3 || GetSide(MapDetL[det][i]) == 4) {
155 if (det < 5)
156 ffStrip << 47 - (MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24) << '\t';
157 else
158 ffStrip << MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24 << '\t';
159 // ffStrip << MapR[j] + (GetSide(MapDet[det][i]) - 3)*24 << '\t';
160 ffStrip << 'R';
161 ffStrip << endl;
162 } else {
163 ffStrip << -1 << '\t';
164 // ffStrip << 'L';
165 ffStrip << endl;
166 }
167 }
168 }
169 }
170 ffStrip.close();
171 //
172
173 // Right side
174 memset(slot, 0, sizeof(slot));
175 crate = 0x0cd9687a; // TTVXS slot 12
176
177 // box4 det 15-19 +++++
178 slot[4] = 0x076caef6;
179 slot[5] = 0x06e9404a;
180 slot[6] = 0x076d180a;
181 slot[7] = 0x06e940b2;
182 slot[8] = 0x080c05e4;
183 slot[9] = 0x076d445b;
184 slot[10] = 0x07a96e8a;
185 // box3 det 10-14 +++++
186 slot[14] = 0x07a9fc6f;
187 slot[15] = 0x07a9b249;
188 slot[16] = 0x080bcc14;
189 slot[17] = 0x07a9b1d6;
190 slot[18] = 0x07a9e7d0;
191 slot[19] = 0x07a9fbf8;
192 slot[20] = 0x07a9eef2;
193
194 // 2. Fill Placement map
195 ff.open(placementMapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
196 if (ff.fail()) {
197 cerr << "2. Cannot open the file " << placementMapFile << endl;
198 return;
199 }
200 for (Int_t i = 0; i < kNSlot; i++)
201 if (slot[i] != 0) {
202 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
203 ff << std::dec << i << '\t';
204 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
205 }
206 ff.close();
207
208 // fill it !!!!!!!!!!!!!!!!!
209
210 Int_t MapDetR[kNDet][kNIt] = {
211 // box3
212 {14003, 14101, 14204, 15002}, // det 10
213 {15113, 15211, 16014, 16112}, // det 11
214 {16223, 17021, 17124, 17222}, // det 12
215 {18033, 18131, 18234, 19032}, // det 13
216 {19143, 19241, 20044, 20142}, // det 14
217 // box4
218 {4053, 4151, 4254, 5052}, // det 15
219 {5163, 5261, 6064, 6162}, // det 16
220 {6273, 7071, 7174, 7272}, // det 17
221 {8083, 8181, 8284, 9082}, // det 18
222 {9193, 9291, 10094, 10192}, // det 19
223 };
224
225 // 2. Fill Strip Map
226 ffStrip.open(mapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
227 if (ffStrip.fail()) {
228 cerr << "2. Cannot open the file " << mapFile << endl;
229 return;
230 }
231
232 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
233 // third - detector , fourth - side (1,2 - L, 3,4 - R)
234
235 for (Int_t det = 0; det < kNDet; det++) {
236 for (Int_t i = 0; i < kNIt; i++) {
237 for (Int_t j = 0; j < 24; j++) {
238 /*
239 cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = " << i
240 << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
241 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
242 GetDet(MapDet[det][i])
243 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
244 getchar();
245 */
246
247 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetL[det][i])]
248 << std::setfill(' ') << '\t';
249 ffStrip << std::dec << j + 24 * GetCon(MapDetL[det][i]) << '\t';
250 ffStrip << GetDet(MapDetL[det][i]) + 10 << '\t';
251 if (GetSide(MapDetL[det][i]) == 1 || GetSide(MapDetL[det][i]) == 2) {
252 if (det >= 5)
253 ffStrip << 47 - (MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24) << '\t';
254 else
255 ffStrip << MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24 << '\t';
256 // ffStrip << MapL[j] + (GetSide(MapDet[det][i]) - 1)*24 << '\t';
257 ffStrip << 'L';
258 ffStrip << endl;
259 } else if (GetSide(MapDetL[det][i]) == 3 || GetSide(MapDetL[det][i]) == 4) {
260 if (det >= 5)
261 ffStrip << 47 - (MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24) << '\t';
262 else
263 ffStrip << MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24 << '\t';
264 // ffStrip << MapR[j] + (GetSide(MapDet[det][i]) - 3)*24 << '\t';
265 ffStrip << 'R';
266 ffStrip << endl;
267 } else {
268 ffStrip << -1 << '\t';
269 // ffStrip << 'L';
270 ffStrip << endl;
271 }
272 }
273 }
274 }
275 ffStrip.close();
276}
Int_t GetSide(Int_t number)
Int_t GetSlot(Int_t number)
Int_t GetCon(Int_t number)
Int_t GetDet(Int_t number)
void CreateMapTof400_Run9(std::string placementMapFile="../../../../input/TOF400_PlaceMap_RUN9.txt", std::string mapFile="../../../../input/TOF400_StripMap_RUN9.txt")
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