BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
CreateMapTof400_RUN7.C
Go to the documentation of this file.
1
2#include "Riostream.h"
3#include "TString.h"
4
5#include <TMath.h>
6#include <fstream>
7#include <iostream>
8#include <sstream>
9#include <string>
10
11void CreateMapTof400_RUN7(std::string placementMapFile = "TOF400_PlaceMap_RUN7.txt",
12 std::string mapFile = "TOF400_StripMap_RUN7.txt")
13{
14
15 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};
16 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};
17 // 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};
18 // 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};
19
20 // UInt_t crate = 0x01690454;
21 UInt_t crate = 0x76d3027;
22 static const Int_t kNSlot = 23;
23 UInt_t slot[kNSlot] = {0.};
24 slot[1] = 0x076ccf6e;
25 slot[2] = 0x06e9da91;
26 slot[3] = 0x076caef6;
27 slot[4] = 0x076cae7b;
28 slot[5] = 0x046f332f;
29 slot[6] = 0x06e9404b;
30 slot[7] = 0x06e9e4b0;
31 slot[14] = 0x046f408c;
32 slot[15] = 0x06e94033;
33 slot[16] = 0x076cae7a;
34 slot[17] = 0x07a8deb2;
35 slot[18] = 0x076cad52;
36 slot[19] = 0x076ccf62;
37 slot[20] = 0x06e940be;
38
39 fstream ff, ffStrip;
40
41 // 1. Placement map
42 ff.open(placementMapFile.c_str(), std::fstream::out);
43 if (ff.fail()) {
44 cerr << "Cannot open the file " << placementMapFile << endl;
45 return;
46 }
47 for (Int_t i = 0; i < kNSlot; i++)
48 if (slot[i] != 0) {
49 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
50 ff << std::dec << i << '\t';
51 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
52 }
53 ff.close();
54
55 Int_t Num = 14516;
56 cout << "Num = " << Num << endl;
57 cout << "GetSlot(Num) = " << GetSlot(Num) << " GetCon(Num) = " << GetCon(Num) << endl;
58 cout << "GetDet(Num) = " << GetDet(Num) << " GetSide(Num) = " << GetSide(Num) << endl;
59
60 // 1. Fill Strip Map
61 ffStrip.open(mapFile.c_str(), std::fstream::out);
62 if (ffStrip.fail()) {
63 cerr << "Cannot open the file " << mapFile << endl;
64 return;
65 }
66
67 static const Int_t kNIt = 4;
68 static const Int_t kNDet = 10 + 1;
69
70 // Left arm
71 Int_t MapDetL[kNDet][kNIt] = {
72 {1202, 1104, 1001, 2203}, {2112, 2014, 3211, 3113}, {3022, 4224, 4121, 4023},
73 {5232, 5134, 5031, 6233}, {6142, 6044, 7241, 7143}, {14252, 14154, 14051, 15253},
74 {15162, 15064, 16261, 16163}, {16072, 17274, 17171, 17073}, {18282, 18184, 18081, 19283},
75 {19192, 19094, 20291, 20193}, {7005, 20005, 7005, 20005}};
76
77 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
78 // third - detector , fourth - side (1,2 - L, 3,4 - R)
79
80 for (Int_t det = 0; det < kNDet; det++) {
81 for (Int_t i = 0; i < kNIt; i++) {
82 for (Int_t j = 0; j < 24; j++) {
83
84 /* cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = "
85 << i << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
86 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
87 GetDet(MapDet[det][i])
88 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
89 getchar();
90 */
91
92 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetL[det][i])]
93 << std::setfill(' ') << '\t';
94 ffStrip << std::dec << j + 24 * GetCon(MapDetL[det][i]) << '\t';
95 ffStrip << GetDet(MapDetL[det][i]) << '\t';
96 if (GetSide(MapDetL[det][i]) == 1 || GetSide(MapDetL[det][i]) == 2) {
97 if (det < 5)
98 ffStrip << 47 - (MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24) << '\t';
99 else
100 ffStrip << MapL[j] + (GetSide(MapDetL[det][i]) - 1) * 24 << '\t';
101 // ffStrip << MapL[j] + (GetSide(MapDet[det][i]) - 1)*24 << '\t';
102 ffStrip << 'L';
103 ffStrip << endl;
104 } else if (GetSide(MapDetL[det][i]) == 3 || GetSide(MapDetL[det][i]) == 4) {
105 if (det < 5)
106 ffStrip << 47 - (MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24) << '\t';
107 else
108 ffStrip << MapR[j] + (GetSide(MapDetL[det][i]) - 3) * 24 << '\t';
109 // ffStrip << MapR[j] + (GetSide(MapDet[det][i]) - 3)*24 << '\t';
110 ffStrip << 'R';
111 ffStrip << endl;
112 } else {
113 ffStrip << -1 << '\t';
114 ffStrip << 'L';
115 ffStrip << endl;
116 }
117 }
118 }
119 }
120 ffStrip.close();
121 //
122
123 crate = 0x06ea9711;
124 slot[1] = 0x076cad53;
125 slot[2] = 0x06e9403f;
126 slot[3] = 0x06e9da9d;
127 slot[4] = 0x06e9f5cb;
128 slot[5] = 0x06e9404a;
129 slot[6] = 0x046f3872;
130 slot[7] = 0x06e940b2;
131 slot[14] = 0x06e9403e;
132 slot[15] = 0x076ccf56;
133 slot[16] = 0x06e940b1;
134 slot[17] = 0x06e9043c;
135 slot[18] = 0x06e9da86;
136 slot[19] = 0x076ccf5f;
137 slot[20] = 0x06e94032;
138
139 // 2. Fill Placement map
140 ff.open(placementMapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
141 if (ff.fail()) {
142 cerr << "2. Cannot open the file " << placementMapFile << endl;
143 return;
144 }
145 for (Int_t i = 0; i < kNSlot; i++)
146 if (slot[i] != 0) {
147 ff << std::hex << std::setfill('0') << std::setw(8) << crate << '\t';
148 ff << std::dec << i << '\t';
149 ff << std::hex << std::setfill('0') << std::setw(8) << slot[i] << endl;
150 }
151 ff.close();
152
153 Int_t MapDetR[kNDet][kNIt] = {
154 {1201, 1103, 1002, 2204}, {2111, 2013, 3212, 3114}, {3021, 4223, 4122, 4024},
155 {5231, 5133, 5032, 6234}, {6141, 6043, 7242, 7144}, {14251, 14153, 14052, 15254},
156 {15161, 15063, 16262, 16164}, {16071, 17273, 17172, 17074}, {18281, 18183, 18082, 19284},
157 {19191, 19093, 20292, 20194}, {7005, 20005, 7005, 20005}};
158
159 // 2. Fill Strip Map
160 ffStrip.open(mapFile.c_str(), std::fstream::in | std::fstream::out | std::fstream::app);
161 if (ffStrip.fail()) {
162 cerr << "2. Cannot open the file " << mapFile << endl;
163 return;
164 }
165
166 // first number - slot 1-22, second number - connector (0 - 0..23, 1 - 24..47, 2 - 48..71
167 // third - detector , fourth - side (1,2 - L, 3,4 - R)
168
169 for (Int_t det = 0; det < kNDet; det++) {
170 for (Int_t i = 0; i < kNIt; i++) {
171 for (Int_t j = 0; j < 24; j++) {
172 /*
173 cout << std::dec << "MapDet = " << MapDet[det][i] << "; Det = " << det << "; i = " << i
174 << "; j = " << j << "; slot = " << slot[GetSlot(MapDet[det][i])]
175 << "; chTDC = " << j + 24 * GetCon(MapDet[det][i]) << "; GetDet = " <<
176 GetDet(MapDet[det][i])
177 << "; GetSide = " << GetSide(MapDet[det][i]) << endl;
178 getchar();
179 */
180
181 ffStrip << std::hex << std::setfill('0') << std::setw(8) << slot[GetSlot(MapDetR[det][i])]
182 << std::setfill(' ') << '\t';
183 ffStrip << std::dec << j + 24 * GetCon(MapDetR[det][i]) << '\t';
184 ffStrip << GetDet(MapDetR[det][i]) + 10 << '\t';
185 if (GetSide(MapDetR[det][i]) == 1 || GetSide(MapDetR[det][i]) == 2) {
186 if (det >= 5) {
187 Int_t strTemp = 47 - (MapL[j] + (GetSide(MapDetR[det][i]) - 1) * 24);
188 if (strTemp < 24)
189 ffStrip << 48 - (23 - strTemp) - 1 << '\t';
190 else
191 ffStrip << 48 - (71 - strTemp) - 1 << '\t';
192 } else {
193 Int_t strTemp = MapL[j] + (GetSide(MapDetR[det][i]) - 1) * 24;
194 if (strTemp < 24)
195 ffStrip << 48 - (23 - strTemp) - 1 << '\t';
196 else
197 ffStrip << 48 - (71 - strTemp) - 1 << '\t';
198 }
199 // ffStrip << MapL[j] + (GetSide(MapDet[det][i]) - 1)*24 << '\t';
200 ffStrip << 'L';
201 ffStrip << endl;
202 } else if (GetSide(MapDetR[det][i]) == 3 || GetSide(MapDetR[det][i]) == 4) {
203 if (det >= 5) {
204 Int_t strTemp = 47 - (MapR[j] + (GetSide(MapDetR[det][i]) - 3) * 24);
205 if (strTemp < 24)
206 ffStrip << 48 - (23 - strTemp) - 1 << '\t';
207 else
208 ffStrip << 48 - (71 - strTemp) - 1 << '\t';
209 } else {
210 Int_t strTemp = MapR[j] + (GetSide(MapDetR[det][i]) - 3) * 24;
211 if (strTemp < 24)
212 ffStrip << 48 - (23 - strTemp) - 1 << '\t';
213 else
214 ffStrip << 48 - (71 - strTemp) - 1 << '\t';
215 }
216 // ffStrip << MapR[j] + (GetSide(MapDet[det][i]) - 3)*24 << '\t';
217 ffStrip << 'R';
218 ffStrip << endl;
219 } else {
220 ffStrip << -1 << '\t';
221 ffStrip << 'L';
222 ffStrip << endl;
223 }
224 }
225 }
226 }
227}
228
230{
231 Int_t temp = static_cast<int> number / 1000.;
232 return temp;
233}
234
236{
237 Int_t temp = static_cast<int>(number - GetSlot(number) * 1000.) / 100.;
238 return temp;
239}
240
242{
243 Int_t temp = static_cast<int>(number - GetSlot(number) * 1000. - GetCon(number) * 100.) / 10.;
244 return temp;
245}
246
248{
249 Int_t temp = static_cast<int>(number - GetSlot(number) * 1000. - GetCon(number) * 100. - GetDet(number) * 10.);
250 return temp;
251}
Int_t GetSide(Int_t number)
Int_t GetSlot(Int_t number)
void CreateMapTof400_RUN7(std::string placementMapFile="TOF400_PlaceMap_RUN7.txt", std::string mapFile="TOF400_StripMap_RUN7.txt")
Int_t GetCon(Int_t number)
Int_t GetDet(Int_t number)
int i
Definition P4_F32vec4.h:22
int Int_t
unsigned int UInt_t