52 m_sp(sp), m_seu(seu), m_id(id),
53 m_result(
false), m_quality(0), m_address(15),
54 m_start(0), m_target(0),
55 theExtFilter(sp.tf().
config()->getExtTSFilter()),
56 nbit_phi(sp.tf().
config()->getNbitsExtPhi()),
57 nbit_phib(sp.tf().
config()->getNbitsExtPhib())
78 if (
m_id != eux.
id() )
return false;
96 if ( debug4 )
cout <<
"Run EUX " <<
m_id << endl;
97 if ( debug4 )
cout <<
"start : " << *
m_start << endl;
101 if ( debug4 )
cout <<
"Error: EUX has no data loaded" << endl;
116 case EX13 : { lut_idx =
EX15;
break; }
117 case EX23 : { lut_idx =
EX25;
break; }
118 default : { lut_idx =
m_seu.
ext();
break; }
124 << static_cast<Extrapolation>(lut_idx)
145 int phib_start = (
m_start->
phib() >> sh_phib) << sh_phib;
146 if ( phib_start < 0 ) phib_start += (1 << sh_phib) -1;
149 int diff = phi_target - phi_start;
153 int offset = -2144 >> sh_phi;
154 offset *=
sec_mod(sector_ta - sector_st);
157 if ( low < 0 ) low += (1 << sh_phi) - 1;
158 if ( high < 0 ) high += (1 << sh_phi) - 1;
159 low = (low >> sh_phi) + offset;
160 high = (high >> sh_phi) + offset;
162 int phi_offset = phi_target -
offset;
163 if ( ( lut_idx ==
EX34 ) || ( lut_idx ==
EX21 ) )
164 phi_offset = phi_start +
offset;
165 if ( phi_offset >= (1 << (
nbit_phi-1)) -1 )
return;
166 if ( phi_offset < -(1 << (
nbit_phi-1)) +1 )
return;
175 m_quality = ( qual_st == 7 ) ? 0 : qual_st + 1;
178 m_quality = ( qual_ta == 7 ) ? 0 : qual_ta + 1;
184 << diff <<
" " << high <<
" : " 227 pair<const L1MuDTTrackSegPhi* ,const L1MuDTTrackSegPhi*>
L1MuDTEUX::ts()
const {
229 return pair<const L1MuDTTrackSegPhi*, const L1MuDTTrackSegPhi*>(
m_start,
m_target);
240 int new_sector = sector%12;
241 if ( new_sector >= 6 )
242 new_sector = new_sector - 12;
243 if ( new_sector < -6 )
244 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
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
static L1MuDTTFConfig * config()
return configuration
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
const L1MuDTTrackFinder & tf() const
return reference to barrel MTTF
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