109 int max_address = (
station == 1) ? 2 : 12;
110 for (
int reladr = 0; reladr < max_address; reladr++) {
112 if (
m_sp.
ovl() && (reladr / 2) % 2 != 0)
122 int phib = ts->
phiB();
123 int qual = ts->
code();
124 bool tag = (reladr % 2 == 1) ?
true :
false;
127 lwheel =
abs(lwheel) / lwheel * (
abs(wheel) + 1);
132 if (qual < pars->get_inrec_qual_st1(lwheel, sector))
137 if (qual < pars->get_inrec_qual_st2(lwheel, sector))
142 if (qual < pars->get_inrec_qual_st3(lwheel, sector))
147 if (qual < pars->get_inrec_qual_st4(lwheel, sector))
173 if (tsPreviousBX_1) {
174 int phiBX = tsPreviousBX_1->
phi();
175 int qualBX = tsPreviousBX_1->
code();
176 if (
abs((phi >> sh_phi) - (phiBX >> sh_phi)) <= tolerance && qualBX > qual)
181 if (tsPreviousBX_2) {
182 int phiBX = tsPreviousBX_2->
phi();
183 int qualBX = tsPreviousBX_2->
code();
184 if (
abs((phi >> sh_phi) - (phiBX >> sh_phi)) <= tolerance && qualBX > qual)
190 int phiBX = tsNextBX_1->
phi();
191 int qualBX = tsNextBX_1->
code();
192 if (
abs((phi >> sh_phi) - (phiBX >> sh_phi)) <= tolerance && qualBX > qual)
198 int phiBX = tsNextBX_2->
phi();
199 int qualBX = tsNextBX_2->
code();
200 if (
abs((phi >> sh_phi) - (phiBX >> sh_phi)) <= tolerance && qualBX > qual)
207 wheel, sector,
station, phi, phib, static_cast<L1MuDTTrackSegPhi::TSQuality>(qual), tag, bx - bx_offset);
222 if (bx < -6 || bx > 6)
230 vector<csctf::TrackStub> csc_list;
231 vector<csctf::TrackStub>::const_iterator csc_iter;
235 int side = (wheel == 3) ? 1 : 2;
237 int csc_sector = (sector == 0) ? 6 : (sector + 1) / 2;
238 int subsector = (sector % 2 == 0) ? 2 : 1;
240 csc_list = csctrig->get(side, station, csc_sector, subsector, bxCSC + bx);
242 for (csc_iter = csc_list.begin(); csc_iter != csc_list.end(); csc_iter++) {
243 bool etaFlag = (csc_iter->etaPacked() > 17);
244 int qualCSC = csc_iter->getQuality();
247 unsigned int qual = 7;
274 int phi = csc_iter->phiPacked();
277 if (phi < -2048 || phi > 2047)
290 int address = 16 + ncsc;
291 bool tag = (ncsc == 1) ?
true :
false;
293 wheel, sector, station + 2, phi, 0, static_cast<L1MuDTTrackSegPhi::TSQuality>(qual), tag, bx, etaFlag);
307 if (adr >= 4 && adr <= 7)
308 sector = (sector + 13) % 12;
309 if (adr >= 8 && adr <= 11)
310 sector = (sector + 11) % 12;
322 if ((adr / 2) % 2 == 1)
void receiveCSCData(int bx, const edm::Event &e, const edm::EventSetup &c)
receive track segment data from CSC chamber trigger
void receiveDTBXData(int bx, const edm::Event &e, const edm::EventSetup &c)
receive track segment data from DTBX chamber trigger
L1MuDTSectorReceiver(L1MuDTSectorProcessor &, edm::ConsumesCollector &&iC)
constructor
int address2sector(int adr) const
find the right sector for a given address
L1MuDTChambPhDigi const * chPhiSegm1(int wheel, int stat, int sect, int bx) const
void reset()
clear Sector Receiver
bool getByToken(EDGetToken token, Handle< PROD > &result) const
bool get_soc_nbx_del(int wh, int sc) const
L1MuDTChambPhDigi const * chPhiSegm2(int wheel, int stat, int sect, int bx) const
bool get_inrec_chdis_st1(int wh, int sc) const
L1MuDTSectorProcessor & m_sp
bool get_inrec_chdis_st3(int wh, int sc) const
edm::InputTag getCSCTrSInputTag() const
bool getTSOutOfTimeFilter() const
int sector() const
return sector number
const L1MuDTDataBuffer * data() const
return pointer to Data Buffer
bool get_soc_csc_etacanc(int wh, int sc) const
edm::ESHandle< L1MuDTTFParameters > pars
int getTSOutOfTimeWindow() const
Abs< T >::type abs(const T &t)
bool get_inrec_chdis_st2(int wh, int sc) const
const L1MuDTSecProcId & id() const
return Sector Processor identifier
int locwheel() const
return physical wheel number (-2,-1,0,+1,+2)
bool get_inrec_chdis_st4(int wh, int sc) const
int address2wheel(int adr) const
find the right wheel for a given address
bool get_inrec_chdis_csc(int wh, int sc) const
static L1MuDTTFConfig * config()
return configuration
edm::ESHandle< L1MuDTTFMasks > msks
void addTSphi(int adr, const L1MuDTTrackSegPhi &)
add new phi track segment to the Data Buffer
const L1MuDTTrackFinder & tf() const
return reference to barrel MTTF
edm::EDGetTokenT< L1MuDTChambPhContainer > m_DTDigiToken
edm::EDGetTokenT< CSCTriggerContainer< csctf::TrackStub > > m_CSCTrSToken
void run(int bx, const edm::Event &e, const edm::EventSetup &c)
receive track segment data from the DTBX and CSC chamber triggers
int wheel() const
return wheel number
int getNbitsExtPhi() const
bool ovl() const
is it an overlap region Sector Processor?
virtual ~L1MuDTSectorReceiver()
destructor