17 PixelROCName::PixelROCName() : id_(0) {}
22 std::string mthn =
"[PixelROCName::setIdFPix()]\t\t\t\t ";
30 assert(roc >= 0 && roc < 10);
38 id_ = (
id_ | (disk << 12));
40 id_ = (
id_ | (blade << 7));
42 id_ = (
id_ | ((panel - 1) << 6));
44 id_ = (
id_ | ((plaquet - 1) << 4));
59 assert(roc >= 0 && roc < 16);
69 id_ = (
id_ | ((sec - 1) << 14));
74 id_ = (
id_ | (layer << 12));
76 id_ = (
id_ | (ladder << 6));
78 id_ = (
id_ | ((module - 1) << 4));
86 static std::string mthn =
"[PixelROCName::check()]\t\t\t\t ";
91 cout << __LINE__ <<
"]\t" << mthn <<
"ERROR tried to parse string:'" <<
name;
92 cout <<
"' as a ROC name. Will terminate." << endl;
106 check(name[0] ==
'F' || name[0] ==
'B', name);
108 if (name[0] ==
'F') {
109 check(name[0] ==
'F', name);
110 check(name[1] ==
'P', name);
111 check(name[2] ==
'i', name);
112 check(name[3] ==
'x', name);
113 check(name[4] ==
'_', name);
114 check(name[5] ==
'B', name);
115 check((name[6] ==
'm') || (name[6] ==
'p'), name);
117 check((name[7] ==
'I') || (name[7] ==
'O'), name);
119 check(name[8] ==
'_', name);
120 check(name[9] ==
'D', name);
121 char digit[2] = {0, 0};
123 int disk = atoi(digit);
124 check(name[11] ==
'_', name);
125 check(name[12] ==
'B', name);
126 check(name[13] ==
'L', name);
127 check(name[14] ==
'D', name);
128 check(std::isdigit(name[15]), name);
130 int bld = atoi(digit);
132 if (std::isdigit(name[16])) {
134 bld = 10 * bld + atoi(digit);
137 check(name[16 + offset] ==
'_', name);
138 check(name[17 + offset] ==
'P', name);
139 check(name[18 + offset] ==
'N', name);
140 check(name[19 + offset] ==
'L', name);
141 check(std::isdigit(name[20 + offset]), name);
142 digit[0] = name[20 +
offset];
143 int pnl = atoi(digit);
144 check(name[21 + offset] ==
'_', name);
145 check(name[22 + offset] ==
'P', name);
146 check(name[23 + offset] ==
'L', name);
147 check(name[24 + offset] ==
'Q', name);
148 check(std::isdigit(name[25 + offset]), name);
149 digit[0] = name[25 +
offset];
150 int plq = atoi(digit);
151 check(name[26 + offset] ==
'_', name);
152 check(name[27 + offset] ==
'R', name);
153 check(name[28 + offset] ==
'O', name);
154 check(name[29 + offset] ==
'C', name);
155 check(std::isdigit(name[30 + offset]), name);
156 digit[0] = name[30 +
offset];
157 int roc = atoi(digit);
158 if (name.size() == 32 +
offset) {
159 digit[0] = name[31 +
offset];
160 roc = roc * 10 + atoi(digit);
163 setIdFPix(np, LR, disk, bld, pnl, plq, roc);
165 check(name[0] ==
'B', name);
166 check(name[1] ==
'P', name);
167 check(name[2] ==
'i', name);
168 check(name[3] ==
'x', name);
169 check(name[4] ==
'_', name);
170 check(name[5] ==
'B', name);
171 check((name[6] ==
'm') || (name[6] ==
'p'), name);
173 check((name[7] ==
'I') || (name[7] ==
'O'), name);
175 check(name[8] ==
'_', name);
176 check(name[9] ==
'S', name);
177 check(name[10] ==
'E', name);
178 check(name[11] ==
'C', name);
179 char digit[2] = {0, 0};
181 int sec = atoi(digit);
182 check(name[13] ==
'_', name);
183 check(name[14] ==
'L', name);
184 check(name[15] ==
'Y', name);
185 check(name[16] ==
'R', name);
186 check(std::isdigit(name[17]), name);
188 int layer = atoi(digit);
189 check(name[18] ==
'_', name);
190 check(name[19] ==
'L', name);
191 check(name[20] ==
'D', name);
192 check(name[21] ==
'R', name);
193 check(std::isdigit(name[22]), name);
197 if (std::isdigit(name[23])) {
199 digit[0] = name[22 +
offset];
200 ladder = 10 * ladder + atoi(digit);
202 check(name[23 + offset] ==
'H' || name[23 + offset] ==
'F', name);
204 check(name[24 + offset] ==
'_', name);
205 check(name[25 + offset] ==
'M', name);
206 check(name[26 + offset] ==
'O', name);
207 check(name[27 + offset] ==
'D', name);
208 check(std::isdigit(name[28 + offset]), name);
209 digit[0] = name[28 +
offset];
211 check(name[29 + offset] ==
'_', name);
212 check(name[30 + offset] ==
'R', name);
213 check(name[31 + offset] ==
'O', name);
214 check(name[32 + offset] ==
'C', name);
215 check(std::isdigit(name[33 + offset]), name);
216 digit[0] = name[33 +
offset];
217 int roc = atoi(digit);
218 if (name.size() == 35 +
offset) {
219 digit[0] = name[34 +
offset];
220 roc = roc * 10 + atoi(digit);
223 setIdBPix(np, LR, sec, layer, ladder, HF, module, roc);
238 std::ostringstream s1;
void setIdFPix(char np, char LR, int disk, int blade, int panel, int plaquet, int roc)
const PixelROCName & operator=(const PixelROCName &aROC)
void setIdBPix(char np, char LR, int sec, int layer, int ladder, char HF, int module, int roc)
std::string rocname() const
std::ostream & operator<<(std::ostream &s, const PixelCalibConfiguration &calib)
constexpr std::array< uint8_t, layerIndexSize > layer
void check(bool check, const std::string &name)
void parsename(std::string name)
This class stores the name and related hardware mappings for a ROC.