#include <MuonSectorProcessor.h>
Definition at line 36 of file MuonSectorProcessor.h.
◆ MuonSectorProcessor() [1/3]
LVL1MUCTPIPHASE1::MuonSectorProcessor::MuonSectorProcessor |
( |
bool |
side | ) |
|
◆ ~MuonSectorProcessor()
LVL1MUCTPIPHASE1::MuonSectorProcessor::~MuonSectorProcessor |
( |
| ) |
|
◆ MuonSectorProcessor() [2/3]
◆ MuonSectorProcessor() [3/3]
◆ configureOverlapRemoval()
void LVL1MUCTPIPHASE1::MuonSectorProcessor::configureOverlapRemoval |
( |
const std::string & |
lutFile | ) |
|
◆ configurePtEncoding()
bool LVL1MUCTPIPHASE1::MuonSectorProcessor::configurePtEncoding |
( |
| ) |
|
Definition at line 212 of file MuonSectorProcessor.cxx.
217 m_ptEncoding = std::vector<std::map<int, int> >(3, std::map<int, int>());
227 auto rpcPtValues = exMU->knownRpcPtValues();
228 auto tgcPtValues = exMU->knownTgcPtValues();
229 for (
unsigned i=0;
i<rpcPtValues.size();
i++){
232 for (
unsigned i=0;
i<tgcPtValues.size();
i++){
◆ getSide()
bool LVL1MUCTPIPHASE1::MuonSectorProcessor::getSide |
( |
| ) |
const |
|
inline |
◆ makeL1TopoData()
Definition at line 310 of file MuonSectorProcessor.cxx.
321 for (
unsigned short isub=0;isub<2;isub++)
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;
328 std::stringstream sectorName;
329 if (isys == 0) sectorName<<
"B";
330 else if (isys == 1) sectorName<<
"E";
331 else if (isys == 2) sectorName<<
"F";
336 int sectorNumber=isec;
338 if (sectorNumber < 10) sectorName <<
"0";
339 sectorName << sectorNumber;
344 else sectorName <<
"C";
345 if (isec < 10) sectorName <<
"0";
350 for (
unsigned int icand=0;icand<LVL1MUONIF::NCAND[isys];icand++)
353 int roiID = sectorData->
roi(icand);
354 if (roiID < 0)
continue;
355 int ptword = sectorData->
pt(icand);
356 if (ptword < 0)
continue;
363 if (
coord == L1TopoCoordinates())
365 std::stringstream
err;
366 err <<
"Couldn't decode L1Topo coordinates: Side = " << isub <<
", subsystem = " << isys <<
", sector = " << isec <<
", roi = " << roiID;
375 if (last_enc !=
m_ptEncoding[isys].rend() && ptword > last_enc->first)
381 std::stringstream
err;
382 err <<
"Pt threshold not found in L1Topo encoding. Thr: " << ptword <<
", subsys: " << isys;
386 else ptValue=enc->second;
390 std::stringstream
err;
391 err <<
"Default value returned for pt encoding. Thr: " << ptword <<
", isys: " << isys;
399 unsigned int mioctID = 0;
400 unsigned int ptCode=0;
406 (
unsigned int)ptword,
408 (
unsigned int)ptValue,
422 sectorData->
ovl(icand));
425 sectorData->
goodmf(icand),
426 sectorData->
charge(icand));
◆ runOverlapRemoval()
Definition at line 241 of file MuonSectorProcessor.cxx.
243 std::map<std::string,std::vector<std::pair<std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1>,
unsigned> > > buckets;
252 for (
size_t isub=0;isub<2;isub++)
254 if (isub !=
size_t(
m_side))
continue;
257 std::shared_ptr<LVL1MUONIF::Lvl1MuSectorLogicDataPhase1> sectorData =
inputs->getSectorLogicDataPtr(isys, isub, isec,
bcid);
258 if (!sectorData)
continue;
260 for (
unsigned int icand=0;icand<LVL1MUONIF::NCAND[isys];icand++)
263 std::string sectorName=
"";
264 if (isys == 0) sectorName=
"B";
265 else if (isys == 1) sectorName=
"E";
266 else if (isys == 2) sectorName=
"F";
268 int roiID = sectorData->
roi(icand);
269 if (roiID < 0)
continue;
270 int ptword = sectorData->
pt(icand);
271 if (ptword < 0)
continue;
274 sectorData->
veto(icand,0);
279 if(
std::count(
rr.begin(),
rr.end(),
'B') == 2 && isys == 0 && sectorData->
ovl(icand) == 0 )
continue;
280 buckets[
rr].push_back(std::make_pair(sectorData, icand));
287 for(
auto candidate_vector : buckets){
290 unsigned i_notRemove = 0;
292 for (
unsigned i=0;
i<candidate_vector.second.size();
i++){
293 if( candidate_vector.second[
i].first->veto(candidate_vector.second[
i].second)==1 )
continue;
294 int pt = candidate_vector.second[
i].first->pt(candidate_vector.second[
i].second);
302 for (
unsigned i=0;
i<candidate_vector.second.size();
i++)
304 if( candidate_vector.second[
i].first->veto(candidate_vector.second[
i].second)==1 )
continue;
305 candidate_vector.second[
i].first->veto(candidate_vector.second[
i].second, (
i==i_notRemove)?0:1 );
◆ setL1TopoLUT()
void LVL1MUCTPIPHASE1::MuonSectorProcessor::setL1TopoLUT |
( |
const L1TopoLUT * |
l1topoLUT | ) |
|
|
inline |
◆ setMenu()
◆ m_l1menu
◆ m_l1topoLUT
const L1TopoLUT* LVL1MUCTPIPHASE1::MuonSectorProcessor::m_l1topoLUT = nullptr |
|
private |
◆ m_overlapHelper
std::unique_ptr<OverlapHelper> LVL1MUCTPIPHASE1::MuonSectorProcessor::m_overlapHelper |
|
private |
◆ m_ptEncoding
std::vector<std::map<int, int> > LVL1MUCTPIPHASE1::MuonSectorProcessor::m_ptEncoding |
|
private |
◆ m_side
bool LVL1MUCTPIPHASE1::MuonSectorProcessor::m_side = false |
|
private |
The documentation for this class was generated from the following files:
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)