Convert to coincidences.
102{
103 bool hit[8];
104 int delta[8];
106
107 bool isFirstHit = true;
108
110 const bool * bitArray = slb->getBitArray(iBc);
111 bool forward;
113
115 switch(slb->getType()) {
118
120 if(!hit[i]) continue;
121
123 subDetectorId, rodId,
124 slb->getSswId(), slb->getSbLoc(),
125 slb->getL1Id(), slb->getBcId(),
127 delta[i],
128 0, i, pos[i]);
129 vChannel.push_back(rCh);
130
131
132 if(isFirstHit) {
134 << " slb type =" << slb->getType() );
135 isFirstHit = false;
136 }
138 "TgcRawData : LPT_D_W " : "TgcRawData : LPT_D_S ")
139 << " BC:" << iBc
140 << " subDetId:" << subDetectorId
141 << " rodId:" << rodId
142 << " sswId:" << slb->getSswId()
143 << " sbLoc:" << slb->getSbLoc()
144 << " slbId:" << slb->getSlbId()
145 << " sub: " << i
146 << " pos:" << pos[i]
147 << " delta:" << delta[i] );
148 }
149 break;
150
153
155 if(!hit[i]) continue;
156
158 subDetectorId, rodId,
159 slb->getSswId(), slb->getSbLoc(),
160 slb->getL1Id(), slb->getBcId(),
162 delta[i],
163 0, i, pos[i]);
164 vChannel.push_back(rCh);
165
166 if(isFirstHit) {
168 << " slb type =" << slb->getType() );
169 isFirstHit = false;
170 }
172 "TgcRawData : LPT_D_W " : "TgcRawData : LPT_D_S ")
173 << " BC:" << iBc
174 << " subDetId:" << subDetectorId
175 << " rodId:" << rodId
176 << " sswId:" << slb->getSswId()
177 << " sbLoc:" << slb->getSbLoc()
178 << " slbId:" << slb->getSlbId()
179 << " sub: " << i
180 << " pos:" << pos[i]
181 << " delta:" << delta[i] );
182 }
183 break;
184
188 if(!hit[i]) continue;
190
192 subDetectorId, rodId,
193 slb->getSswId(), slb->getSbLoc(),
194 slb->getL1Id(), slb->getBcId(),
196 delta[i],
197 0, i, pos[i]);
198 vChannel.push_back(rCh);
199 if(isFirstHit) {
201 << " slb type =" << slb->getType() );
202 isFirstHit = false;
203 }
205 << " BC:" << iBc
206 << " subDetId:" << subDetectorId
207 << " rodId:" << rodId
208 << " sswId:" << slb->getSswId()
209 << " sbLoc:" << slb->getSbLoc()
210 << " slbId:" << slb->getSlbId()
211 << " sub: " << i
212 << " pos:" << pos[i] );
213 }
214 break;
215
219 if(!hit[i]) continue;
221 int seg = 0;
223 if(i>3) {
224 seg = 1;
226 }
227
229 subDetectorId, rodId,
230 slb->getSswId(), slb->getSbLoc(),
231 slb->getL1Id(), slb->getBcId(),
233 delta[i],
234 seg, subc, pos[i]);
235 vChannel.push_back(rCh);
236 if(isFirstHit) {
238 << " slb type =" << slb->getType() );
239 isFirstHit = false;
240 }
242 << " BC:" << iBc
243 << " subDetId:" << subDetectorId
244 << " rodId:" << rodId
245 << " sswId:" << slb->getSswId()
246 << " sbLoc:" << slb->getSbLoc()
247 << " slbId:" << slb->getSlbId()
248 << " seg: " << seg
249 << " sub: " << subc
250 << " pos:" << pos[i] );
251 }
252 break;
253
255
256
261 if(!hit[i]) continue;
263 subDetectorId,
264 rodId,
265 slb->getSswId(),
266 slb->getSbLoc(),
267 slb->getL1Id(),
268 slb->getBcId(),
271
272
273 0,
276
277 0);
278 vChannel.push_back(rCh);
279 if(isFirstHit) {
281 << " slb type =" << slb->getType() );
282 isFirstHit = false;
283 }
286 <<
" BC:" << rCh->
bcTag()
288 <<
" rodId:" << rCh->
rodId()
289 <<
" sswId:" << rCh->
sswId()
290 <<
" sbLoc:" << rCh->
slbId()
291 << " slbId:" << slb->getSlbId()
295 }
296
297 break;
298
301
303 sector =
getSector(forward, subDetectorId, rodId, slb);
304
305
306 bool cand3plus;
307 bool hitSL[2];
308 bool muplus[2];
310 bool overlap[2];
312 if(forward) {
314 hitSL,
315 muplus, threshold,
316 overlap, roi) ;
317 } else {
319 hitSL,
320 muplus, threshold,
321 overlap, roi) ;
322 }
323
324 for(
size_t i=0;
i<2; ++
i) {
325 if(!hitSL[i]) continue;
326
327 bool veto[2] = {
false};
329 subDetectorId, rodId,
330 slb->getL1Id(), slb->getBcId(),
331 cand3plus,
332 forward,
333 sector,
334 i,
335 muplus[i],
336 threshold[i],
337 overlap[i],
339 roi[i]);
340 vChannel.push_back(rCh);
341 if(isFirstHit) {
343 << " slb type =" << slb->getType() );
344 isFirstHit = false;
345 }
347 << " BC:" << iBc
348 << " subDetId:" << subDetectorId
349 << " rodId:" << rodId
350 << " sswId:" << slb->getSswId()
351 << " sbLoc:" << slb->getSbLoc()
352 << " slbId:" << slb->getSlbId()
353 << " roi:" << roi[i]
354 << " pt:" << threshold[i] );
355 }
356
357
366
367 size_t numberOfHit;
368 if(forward) {
372 chip, index,
374 sub, deltaHPT);
375 } else {
379 chip, index,
381 sub, deltaHPT);
382 }
383
384 for(
size_t i=0;
i<numberOfHit; ++
i) {
385 if(!hitP[i]) continue;
386
387
389 chip[i], index[i],
391 sub[i], deltaHPT[i])) {
392 std::string hpt_Type="E";
393 if(forward) hpt_Type ="F";
394 if(
strip[i]) hpt_Type+=
"S";
395 else hpt_Type +="W";
396
397 if(isFirstHit) {
399 << " slb type =" << slb->getType() );
400 isFirstHit = false;
401 }
403 << " BC:" << iBc
404 << " subDetId:" << subDetectorId
405 << " rodId:" << rodId
406 << " sswId:" << slb->getSswId()
407 << " sbLoc:" << slb->getSbLoc()
408 << " slbId:" << slb->getSlbId()
409 << std::dec
410 << " chip:" << chip[i]
411 << " index:" << index[i]
412 << " hitId:" << hitId[i]
413 << " delta:" << deltaHPT[i] );
414 continue;
415 }
416
417
418 {
421 subDetectorId, rodId,
422 slb->getL1Id(), slb->getBcId(),
424 forward,
425 sector,
426 chip[i],
427 index[i],
429 hitId[i],
430 sub[i],
431 deltaHPT[i],
432 inner[i]);
433 }
434 vChannel.push_back(rCh);
435 if(isFirstHit) {
437 << " slb type =" << slb->getType() );
438 isFirstHit = false;
439 }
440 auto hptType = [&]() {
441 std::string hptType="E";
442 if(forward) hptType ="F";
443 if(
strip[i]) hptType+=
"S";
444 else hptType +="W";
445 return hptType;
446 };
448 << " BC:" << iBc
449 << " subDetId:" << subDetectorId
450 << " rodId:" << rodId
451 << " sswId:" << slb->getSswId()
452 << " sbLoc:" << slb->getSbLoc()
453 << " slbId:" << slb->getSlbId()
454 << std::dec
455 << " chip:" << chip[i]
456 << " index:" << index[i]
457 << " hitId:" << hitId[i]
458 << " delta:" << deltaHPT[i] );
459 }
460
461 break;
462
463 default:
464 break;
465
466 }
467 }
468}
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TgcRawData
static bool isValid_HPT(bool hit, bool strip, uint16_t chip, uint16_t index, bool hipt, uint16_t hitId, uint16_t pos, int16_t delta)
Check if it is valid high-pT coincidence or not.
void getLPTforInner(const bool *bitArray, bool hit[]) const
Decode low-pT coincidence (tracklet) information for inner from bit array.
void getHPT_E(const bool *bitArray, bool hit[], bool strip[], uint16_t chip[], uint16_t index[], bool hipt[], uint16_t hitId[], uint16_t sub[], int16_t delta[]) const
Decode high-pT coincidence information for endcap region from bit array.
void getLPTforTripletStrip(const bool *bitArray, bool hit[], int pos[]) const
Decode low-pT coincidence (tracklet) information for triplet strip from bit array.
void getSL_F(const bool *bitArray, bool &cand3plus, bool hit[], bool muplus[], uint16_t pt[], bool overlap[], uint16_t roi[]) const
Decode Sector Logic coincidence information for forward region from bit array.
void getSL_E(const bool *bitArray, bool &cand3plus, bool hit[], bool muplus[], uint16_t pt[], bool overlap[], uint16_t roi[]) const
Decode Sector Logic coincidence information for endcap region from bit array.
void getLPTforTripletWire(const bool *bitArray, bool hit[], int pos[]) const
Decode low-pT coincidence (tracklet) information for triplet wire from bit array.
void getHPT_F(const bool *bitArray, bool hit[], bool strip[], uint16_t chip[], uint16_t index[], bool hipt[], uint16_t hitId[], uint16_t sub[], int16_t delta[]) const
Decode high-pT coincidence information for forward region from bit array.
static uint16_t getSector(bool forward, uint16_t subDetectorId, uint16_t rodId, const TgcSlbData *slb)
Set sector for HpT/SL based on slbId.
void getLPTforDoublet(const bool *bitArray, bool hit[], int delta[], int pos[]) const
Decode low-pT coincidence (tracklet) information for doublet from bit array.
uint16_t position() const
uint16_t subMatrix() const
uint16_t subDetectorId() const
std::vector< std::string > veto
these patterns are anded
setScaleOne setStatusOne setSaturated int16_t