|
|
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
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()