312 {
313
315 {
316
319 {
320
321 for (unsigned short isub=0;isub<2;isub++)
322 {
323 if (isub != (
unsigned short)(
m_side))
continue;
324 std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1> sectorData =
inputs->getSectorLogicDataPtr(isys, isub, isec, bcid);
325 if (!sectorData) continue;
326
327
332
334 if (isys == 0)
335 {
336 int sectorNumber=isec;
340 }
341 else
342 {
347 }
348
349
350 for (unsigned int icand=0;icand<LVL1MUONIF::NCAND[isys];icand++)
351 {
352
353 int roiID = sectorData->roi(icand);
354 if (roiID < 0) continue;
355 int ptword = sectorData->pt(icand);
356 if (ptword < 0) continue;
357
358
359
360 L1TopoCoordinates
coord =
m_l1topoLUT->getCoordinates(isub, isys, isec, roiID);
361
362
363 if (
coord == L1TopoCoordinates())
364 {
365 std::stringstream
err;
366 err <<
"Couldn't decode L1Topo coordinates: Side = " << isub <<
", subsystem = " << isys <<
", sector = " << isec <<
", roi = " << roiID;
368 }
369
370 int ptValue = 0;
373 {
375 if (last_enc !=
m_ptEncoding[isys].rend() && ptword > last_enc->first)
376 {
378 }
379 else
380 {
381 std::stringstream
err;
382 err <<
"Pt threshold not found in L1Topo encoding. Thr: " << ptword <<
", subsys: " << isys;
384 }
385 }
386 else ptValue=enc->second;
387
388 if (ptValue < 0)
389 {
390 std::stringstream
err;
391 err <<
"Default value returned for pt encoding. Thr: " << ptword <<
", isys: " << isys;
393 }
394
395
396
397 int etacode=0;
398 int phicode = 0;
399 unsigned int mioctID = 0;
400 unsigned int ptCode=0;
401
402 LVL1::MuCTPIL1TopoCandidate cand;
404 roiID,
405 bcid,
406 (unsigned int)ptword,
407 ptCode,
408 (unsigned int)ptValue,
411 etacode,
412 phicode,
417 mioctID,
420
421 if (isys == 0) cand.
setRPCFlags(sectorData->is2candidates(icand),
422 sectorData->ovl(icand));
424 sectorData->innercoin(icand),
425 sectorData->goodmf(icand),
426 sectorData->charge(icand));
427
428
430 }
431 }
432 }
433 }
434 return "";
435 }
void setRPCFlags(bool is2cand, bool phiOvl)
void setTGCFlags(bool bw2or3, bool innerCoin, bool goodMF, int charge)
void setCandidateData(const std::string §orName, unsigned int roiID, unsigned int bcid, unsigned int ptThresholdID, unsigned int ptL1TopoCode, unsigned int ptValue, float eta, float phi, unsigned int etacode, unsigned int phicode, float etamin, float etamax, float phimin, float phimax, unsigned int mioctID, int ieta, int iphi)
void addCandidate(const MuCTPIL1TopoCandidate &candidate)
std::string sectorName(const std::string &wheel, const uint32_t sec)