#include <L1MuGMTMIAUEtaProLUT.h>
Public Types | |
enum | { MIP_DT, MIP_BRPC, ISO_DT, ISO_BRPC, MIP_CSC, MIP_FRPC, ISO_CSC, ISO_FRPC } |
Public Member Functions | |
L1MuGMTMIAUEtaProLUT () | |
constuctor using function-lookup | |
virtual unsigned | LookupFunctionPacked (int idx, unsigned address) const |
access to lookup function with packed input and output | |
unsigned | SpecificLookup (int idx, unsigned eta, unsigned pt, unsigned charge) const |
specific lookup function for entire output field | |
unsigned | SpecificLookup_eta_sel (int idx, unsigned eta, unsigned pt, unsigned charge) const |
specific lookup function for eta_sel | |
virtual | ~L1MuGMTMIAUEtaProLUT () |
destructor | |
Private Member Functions | |
void | InitParameters () |
Initialize scales, configuration parameters, alignment constants, ... | |
unsigned | TheLookupFunction (int idx, unsigned eta, unsigned pt, unsigned charge) const |
The lookup function - here the functionality of the LUT is implemented. | |
Private Attributes | |
int | m_IsolationCellSizeEta |
Private data members (LUT parameters);. | |
Static Private Attributes | |
static float | caloEtaBounds [15] |
MIAUEtaPro look-up table
this class was automatically generated by L1MuGMTLUT::MakeSubClass()
Definition at line 42 of file L1MuGMTMIAUEtaProLUT.h.
anonymous enum |
L1MuGMTMIAUEtaProLUT::L1MuGMTMIAUEtaProLUT | ( | ) | [inline] |
constuctor using function-lookup
Definition at line 48 of file L1MuGMTMIAUEtaProLUT.h.
References InitParameters().
: L1MuGMTLUT("MIAUEtaPro", "MIP_DT MIP_BRPC ISO_DT ISO_BRPC MIP_CSC MIP_FRPC ISO_CSC ISO_FRPC", "eta(6) pt(5) charge(1)", "eta_sel(10)", 12, false) { InitParameters(); } ;
virtual L1MuGMTMIAUEtaProLUT::~L1MuGMTMIAUEtaProLUT | ( | ) | [inline, virtual] |
void L1MuGMTMIAUEtaProLUT::InitParameters | ( | ) | [private] |
Initialize scales, configuration parameters, alignment constants, ...
Definition at line 45 of file L1MuGMTMIAUEtaProLUT.cc.
References L1MuGMTConfig::getIsolationCellSizeEta(), and m_IsolationCellSizeEta.
Referenced by L1MuGMTMIAUEtaProLUT().
virtual unsigned L1MuGMTMIAUEtaProLUT::LookupFunctionPacked | ( | int | idx, |
unsigned | address | ||
) | const [inline, virtual] |
access to lookup function with packed input and output
Reimplemented from L1MuGMTLUT.
Definition at line 80 of file L1MuGMTMIAUEtaProLUT.h.
References L1MuGMTLUT::m_Inputs, TheLookupFunction(), and L1MuGMTLUT::u2vec().
{ std::vector<unsigned> addr = u2vec(address, m_Inputs); return TheLookupFunction(idx ,addr[0] ,addr[1] ,addr[2]); };
unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup | ( | int | idx, |
unsigned | eta, | ||
unsigned | pt, | ||
unsigned | charge | ||
) | const [inline] |
specific lookup function for entire output field
Definition at line 68 of file L1MuGMTMIAUEtaProLUT.h.
References DeDxDiscriminatorTools::charge(), eta(), and L1MuGMTLUT::LookupPacked().
{ std::vector<unsigned> addr(3); addr[0] = eta; addr[1] = pt; addr[2] = charge; return LookupPacked(idx, addr); };
unsigned L1MuGMTMIAUEtaProLUT::SpecificLookup_eta_sel | ( | int | idx, |
unsigned | eta, | ||
unsigned | pt, | ||
unsigned | charge | ||
) | const [inline] |
specific lookup function for eta_sel
Definition at line 59 of file L1MuGMTMIAUEtaProLUT.h.
References DeDxDiscriminatorTools::charge(), eta(), and L1MuGMTLUT::Lookup().
Referenced by L1MuGMTEtaProjectionUnit::run().
unsigned L1MuGMTMIAUEtaProLUT::TheLookupFunction | ( | int | idx, |
unsigned | eta, | ||
unsigned | pt, | ||
unsigned | charge | ||
) | const [private] |
The lookup function - here the functionality of the LUT is implemented.
Definition at line 69 of file L1MuGMTMIAUEtaProLUT.cc.
References eta(), L1MuGMTConfig::getCaloGeom(), L1MuScale::getCenter(), L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), L1MuTriggerScales::getRegionalEtaScale(), L1MuGMTConfig::getTriggerPtScale(), L1MuGMTConfig::getTriggerScales(), L1CaloGeometry::globalEtaBinCenter(), L1CaloGeometry::globalEtaIndex(), i, m_IsolationCellSizeEta, L1MuGMTLUT::m_saveFlag, and L1CaloGeometry::numberGctForwardEtaBinsPerHalf().
Referenced by LookupFunctionPacked().
{ // idx is MIP_DT, MIP_BRPC, ISO_DT, ISO_BRPC, MIP_CSC, MIP_FRPC, ISO_CSC, ISO_FRPC // INPUTS: eta(6) pt(5) charge(1) // OUTPUTS: eta_sel(10) // const L1MuGMTScales* theGMTScales = L1MuGMTConfig::getGMTScales(); const L1MuTriggerScales* theTriggerScales = L1MuGMTConfig::getTriggerScales(); const L1MuTriggerPtScale* theTriggerPtScale = L1MuGMTConfig::getTriggerPtScale(); const L1CaloGeometry* theCaloGeom = L1MuGMTConfig::getCaloGeom() ; int isRPC = idx % 2; int isFWD = idx / 4; int isISO = (idx / 2) % 2; int idx_drcr = isFWD * 2 + isRPC; if (pt==0) return 0; // empty candidate int ch_idx = (charge == 0) ? 1 : 0; // positive charge is 0 (but idx 1) float oldeta = theTriggerScales->getRegionalEtaScale(idx_drcr)->getCenter(eta); if (idx_drcr==2) oldeta = theTriggerScales->getRegionalEtaScale(idx_drcr)->getLowEdge(eta); //FIXME use center when changed in ORCA if ( (isRPC && isFWD && fabs(oldeta) < 1.04 ) || (isRPC && !isFWD && fabs(oldeta) > 1.04 ) ) { if(!m_saveFlag) edm::LogWarning("LUTRangeViolation") << "L1MuGMTMIAUEtaProLUT::TheLookupFunction: RPC " << (isFWD?"fwd":"brl") << " eta value out of range: " << oldeta; } // eta conversion depends only on isys by default int isys = isFWD + 2 * isRPC; // DT, CSC, BRPC, FRPC float neweta = L1MuGMTEtaLUT::eta (isys, isISO, ch_idx, oldeta, theTriggerPtScale->getPtScale()->getLowEdge(pt) ); // use old LUT, here // theTriggerScales->getPtScale()->getLowEdge(pt) ); // use old LUT, here // unsigned icenter = theGMTScales->getCaloEtaScale()->getPacked( neweta ); // globalEtaIndex is 0-21 for forward+central; need to shift to 0-13 for central only unsigned icenter = theCaloGeom->globalEtaIndex( neweta ) - theCaloGeom->numberGctForwardEtaBinsPerHalf() ; unsigned eta_select_word_14 = 1 << icenter; // for the whole detector // for ISOlation bit assignment, multiple regions can be selected according to the IsolationCellSize if (isISO) { int imin = icenter - ( m_IsolationCellSizeEta-1 ) / 2; int imax = icenter + ( m_IsolationCellSizeEta-1 ) / 2; // for even number of isolation cells check the fine grain info if (m_IsolationCellSizeEta%2 == 0) { // float bincenter = theGMTScales->getCaloEtaScale()->getCenter( icenter ); // globalEtaIndex is 0-21 for forward+central; need to shift to 0-13 for central only float bincenter = theCaloGeom->globalEtaBinCenter( icenter + theCaloGeom->numberGctForwardEtaBinsPerHalf() ); if ( neweta > bincenter ) imax++; else imin--; } if (imin<0) imin=0; if (imax>13) imax=13; for (int i=imin; i<=imax; i++ ) eta_select_word_14 |= 1 << i ; } // generate select words for barrel (10 central bits) // and for forward (5+5 fwd bits) case unsigned eta_select_word; if (isFWD) { unsigned mask5 = (1<<5)-1; eta_select_word = eta_select_word_14 & mask5; eta_select_word |= ( eta_select_word_14 & (mask5 << 9) ) >> 4; } else { unsigned mask10 = (1<<10)-1; eta_select_word = ( eta_select_word_14 & (mask10 << 2) ) >> 2; } return eta_select_word; }
float L1MuGMTMIAUEtaProLUT::caloEtaBounds[15] [static, private] |
Definition at line 95 of file L1MuGMTMIAUEtaProLUT.h.
int L1MuGMTMIAUEtaProLUT::m_IsolationCellSizeEta [private] |
Private data members (LUT parameters);.
Definition at line 94 of file L1MuGMTMIAUEtaProLUT.h.
Referenced by InitParameters(), and TheLookupFunction().