51 m_sp(sp), m_seu(seu),
m_id(id),
52 m_result(
false), m_quality(0), m_address(15),
53 m_start(0), m_target(0),
77 if (
m_id != eux.
id() )
return false;
114 case EX13 : { lut_idx =
EX15;
break; }
115 case EX23 : { lut_idx =
EX25;
break; }
116 default : { lut_idx =
m_seu.
ext();
break; }
143 int phib_start = (
m_start->
phib() >> sh_phib) << sh_phib;
144 if ( phib_start < 0 ) phib_start += (1 << sh_phib) -1;
147 int diff = phi_target - phi_start;
151 int offset = -2144 >> sh_phi;
152 offset *=
sec_mod(sector_ta - sector_st);
153 int low =
theExtLUTs->getLow(lut_idx,phib_start );
154 int high =
theExtLUTs->getHigh(lut_idx,phib_start );
155 if ( low < 0 ) low += (1 << sh_phi) - 1;
156 if ( high < 0 ) high += (1 << sh_phi) - 1;
157 low = (low >> sh_phi) + offset;
158 high = (high >> sh_phi) + offset;
160 int phi_offset = phi_target -
offset;
161 if ( ( lut_idx ==
EX34 ) || ( lut_idx ==
EX21 ) )
162 phi_offset = phi_start +
offset;
163 if ( phi_offset >= (1 << (
nbit_phi-1)) -1 )
return;
164 if ( phi_offset < -(1 << (
nbit_phi-1)) +1 )
return;
173 m_quality = ( qual_st == 7 ) ? 0 : qual_st + 1;
176 m_quality = ( qual_ta == 7 ) ? 0 : qual_ta + 1;
182 << diff <<
" " << high <<
" : "
225 pair<const L1MuBMTrackSegPhi* ,const L1MuBMTrackSegPhi*>
L1MuBMEUX::ts()
const {
227 return pair<const L1MuBMTrackSegPhi*, const L1MuBMTrackSegPhi*>(
m_start,
m_target);
238 int new_sector = sector%12;
239 if ( new_sector >= 6 )
240 new_sector = new_sector - 12;
241 if ( new_sector < -6 )
242 new_sector = new_sector + 12;
Extrapolation ext() const
return extrapolation type
edm::ESHandle< L1MuDTExtLut > theExtLUTs
static bool getopenLUTs()
virtual void reset()
reset Extrapolator
int wheel() const
return wheel
std::pair< const L1MuBMTrackSegPhi *, const L1MuBMTrackSegPhi * > ts() const
return pointer to start and target track segment
unsigned short int m_address
const L1MuBMTrackSegPhi * m_target
int sec_mod(int) const
output sector numbers in the range -6 to +5
const L1MuBMTrackSegPhi * m_start
int sector() const
return sector number
int phib() const
return phib
int id() const
return Extrapolation identifier
bool operator==(const L1MuBMEUX &) const
equal operator
virtual void run()
run processor logic
const L1MuBMSectorProcessor & m_sp
Abs< T >::type abs(const T &t)
const L1MuBMSecProcId & id() const
return Sector Processor identifier
int phi() const
return phi
bool result() const
return extrapolation result
unsigned short const nbit_phi
void load(const L1MuBMTrackSegPhi *start_ts, const L1MuBMTrackSegPhi *target_ts)
load data into EUX
unsigned short const nbit_phib
virtual ~L1MuBMEUX()
destructor
unsigned int quality() const
return extrapolation quality
unsigned short int address() const
return extrapolation address (0-11) (address = 15 indicates negative ext. result) ...
unsigned short int m_quality
volatile std::atomic< bool > shutdown_flag false
edm::ESHandle< L1MuDTTFParameters > pars
int sector() const
return sector
int quality() const
return quality code
L1MuBMEUX(const L1MuBMSectorProcessor &sp, const L1MuBMSEU &seu, int id)
constructor
int wheel() const
return wheel number