|
|
Go to the documentation of this file.
96 vector<const L1MuBMTrackSegPhi*>::const_iterator iter =
m_TSphi.begin();
97 int bx = (*iter)->bx();
140 phi2 =
second->phi() >> sh_phi;
141 sector =
second->sector();
143 phi2 =
first->phi() >> sh_phi;
144 sector =
first->sector();
145 }
else if (
second ==
nullptr && forth) {
146 phi2 = forth->
phi() >> sh_phi;
154 int sectordiff = (sector - sector0) % 12;
161 int phi_precision = 4096 >> sh_phi;
162 const double k = 57.2958 / 0.625 / static_cast<float>(phi_precision);
163 double phi_f = static_cast<double>(phi2);
164 int bit_div_phi = static_cast<int>(phi2) % 4;
167 phi_f = phi_f -
std::abs(bit_div_phi);
168 int phi_8 = static_cast<int>(floor(phi_f *
k));
171 int bend_angle = (
first->phib() >> sh_phib) << sh_phib;
174 }
else if (
second ==
nullptr && forth) {
175 int bend_angle = (forth->
phib() >> sh_phib) << sh_phib;
182 phi_8 += sectordiff * 48;
184 int phi = phi_8 + 24;
228 if (
abs(bend_angle) < 512)
233 if (
abs(bend_angle) < 512)
246 int charge = (bend_carga >= 0) ? chsign : -1 * chsign;
400 vector<const L1MuBMTrackSegPhi*>::const_iterator iter;
402 int stat = (*iter)->station();
417 const int sectorvalues[12] = {0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132};
419 return sectorvalues[sector];
505 if (
s.test(0) &&
s.test(3))
507 if (
s.test(0) &&
s.test(2))
509 if (
s.test(0) &&
s.test(1))
511 if (!
s.test(0) &&
s.test(1) &&
s.test(3))
513 if (!
s.test(0) &&
s.test(1) &&
s.test(2))
515 if (!
s.test(0) && !
s.test(1) &&
s.test(2) &&
s.test(3))
625 bendangle = (bendangle + 8192) % 4096;
626 if (bendangle > 2047)
634 bendangle = (bendangle + 2048) % 1024;
665 int offset = (2144 >> sh_phi) * sectordiff;
666 int bendangle = (phi2 - phi1 +
offset) << sh_phi;
767 int bendangle = -999;
813 int bendangle = -999;
T const * product() const
int address(int id, int stat) const
get address of a single station of selected track candidate
const TSPhivector & getTSphi() const
get all track segments from the buffer
L1MuBMLUTHandler * thePtaLUTs
pt-assignment look-up tables
void QuaAU()
assign quality
static unsigned short nbit_phib
L1MuBMLUTHandler::PtAssMethod getPt1Method(L1MuBMLUTHandler::PtAssMethod) const
int phiDiff(int stat1, int stat2) const
build difference of two phi values
void setTC(TrackClass tc)
set track-class of muon candidate
static int getNbitsPtaPhib()
void setPt(int pt)
set pt-code of muon candidate
int getPt(int pta_ind, int address) const
get pt-value for a given address
void PhiAU(const edm::EventSetup &c)
assign phi
void setAddresses(const L1MuBMAddressArray &addr)
set relative addresses of muon candidate
const L1MuBMTrackSegPhi * getTSphi(int station) const
get track segment from a given station
unsigned short station(int stat) const
get address of a given station [1-4]
U second(std::pair< T, U > const &p)
L1MuBMLUTHandler::PtAssMethod getPtMethod() const
determine pt assignment method
void setPhi(int phi)
set phi-code of muon candidate
edm::ESHandle< L1TMuonBarrelParams > bmtfParamsHandle
static unsigned short nbit_phi
bool get_DisableNewAlgo() const
void enable()
enable muon candidate
int sector() const
return sector number
int getDeltaPhi(int idx, int address) const
get delta-phi for a given address (bend-angle)
int getPtLutThreshold(int pta_ind) const
get pt-assignment LUT threshold
static int getNbitsPhiPhib()
void reset()
reset address array
static int getNbitsPtaPhi()
void reset() override
reset Assignment Unit
const uint32_t *__restrict__ Quality * quality
int quality() const
return quality code
void setQuality(unsigned int quality)
set quality of muon candidate
static int getCharge(L1MuBMLUTHandler::PtAssMethod)
determine charge
static void setPrecision()
set precision of phi and phib
const std::bitset< 4 > & trackBitMap(int id) const
return bitmap of found track
void setCharge(int charge)
set charge of muon candidate
L1MuBMLUTHandler::PtAssMethod getPt2Method(L1MuBMLUTHandler::PtAssMethod) const
L1MuBMLUTHandler * thePhiLUTs
phi-assignment look-up tables
int getPtAddress(L1MuBMLUTHandler::PtAssMethod, int bendcharge=0) const
calculate bend angle
void PtAU(const edm::EventSetup &c)
assign pt and charge
int getPt1Address(L1MuBMLUTHandler::PtAssMethod) const
const L1MuBMSecProcId & id() const
return Sector Processor identifier
~L1MuBMAssignmentUnit() override
destructor
std::vector< const L1MuBMTrackSegPhi * > m_TSphi
L1MuBMAssignmentUnit(L1MuBMSectorProcessor &sp, int id)
constructor
virtual void run()
run processor logic
void TSR()
Track Segment Router.
void setTSphi(const std::vector< const L1MuBMTrackSegPhi * > &tsList)
set phi track segments used to form the muon candidate
L1MuBMTrack * track(int id) const
return pointer to muon candidate, index [0,1]
TrackClass trackClass(int id) const
return Track Class of found track
void setBx(int bx)
set charge of muon candidate
L1MuBMSectorProcessor & m_sp
int phib() const
return phib
static int convertSector(int)
convert sector Id to 8 bit code (= sector center)
const L1MuBMDataBuffer * data() const
return pointer to Data Buffer
L1MuBMAddressArray m_addArray
int getPt2Address(L1MuBMLUTHandler::PtAssMethod) const
const L1MuBMTrackAssembler * TA() const
return pointer to Track Assembler
PRODUCT const & get(ESGetToken< PRODUCT, T > const &iToken) const
int sector() const
return sector
int phi() const
return phi
Abs< T >::type abs(const T &t)
L1MuBMLUTHandler::PtAssMethod m_ptAssMethod
L1MuBMTrack * tracK(int id) const
return pointer to muon candidate, index [0,1]
static int getNbitsPhiPhi()