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);
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 L1MuDTTrackSegPhi* ,const L1MuDTTrackSegPhi*>
L1MuDTEUX::ts()
const {
227 return pair<const L1MuDTTrackSegPhi*, const L1MuDTTrackSegPhi*>(
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
int quality() const
return quality code
edm::ESHandle< L1MuDTExtLut > theExtLUTs
virtual void reset()
reset Extrapolator
int phi() const
return phi
void load(const L1MuDTTrackSegPhi *start_ts, const L1MuDTTrackSegPhi *target_ts)
load data into EUX
int sec_mod(int) const
output sector numbers in the range -6 to +5
int sector() const
return sector number
unsigned short int get_soc_qcut_st1(int wh, int sc) const
bool operator==(const L1MuDTEUX &) const
equal operator
static bool getopenLUTs()
unsigned short const nbit_phib
virtual void run()
run processor logic
int getLow(int ext_ind, int address) const
get low_value for a given address
unsigned short const nbit_phi
Abs< T >::type abs(const T &t)
int getHigh(int ext_ind, int address) const
get high_value for a given address
int phib() const
return phib
const L1MuDTSecProcId & id() const
return Sector Processor identifier
virtual ~L1MuDTEUX()
destructor
edm::ESHandle< L1MuDTTFParameters > pars
unsigned short int address() const
return extrapolation address (0-11) (address = 15 indicates negative ext. result) ...
unsigned short int get_soc_qcut_st2(int wh, int sc) const
L1MuDTEUX(const L1MuDTSectorProcessor &sp, const L1MuDTSEU &seu, int id)
constructor
bool get_soc_openlut_extr(int wh, int sc) const
const L1MuDTTrackSegPhi * m_target
unsigned short int m_quality
const L1MuDTSectorProcessor & m_sp
std::pair< const L1MuDTTrackSegPhi *, const L1MuDTTrackSegPhi * > ts() const
return pointer to start and target track segment
int id() const
return Extrapolation identifier
int sector() const
return sector
int wheel() const
return wheel
int wheel() const
return wheel number
unsigned int quality() const
return extrapolation quality
unsigned short int get_soc_qcut_st4(int wh, int sc) const
const L1MuDTTrackSegPhi * m_start
unsigned short int m_address
bool result() const
return extrapolation result