CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes

L1MuGMTMIAUEtaProLUT Class Reference

#include <L1MuGMTMIAUEtaProLUT.h>

Inheritance diagram for L1MuGMTMIAUEtaProLUT:
L1MuGMTLUT

List of all members.

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]

Detailed Description

MIAUEtaPro look-up table

this class was automatically generated by L1MuGMTLUT::MakeSubClass()

Definition at line 42 of file L1MuGMTMIAUEtaProLUT.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
MIP_DT 
MIP_BRPC 
ISO_DT 
ISO_BRPC 
MIP_CSC 
MIP_FRPC 
ISO_CSC 
ISO_FRPC 

Definition at line 45 of file L1MuGMTMIAUEtaProLUT.h.


Constructor & Destructor Documentation

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]

destructor

Definition at line 56 of file L1MuGMTMIAUEtaProLUT.h.

{};

Member Function Documentation

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

                                                                                              {
    std::vector<unsigned> addr(3);
    addr[0] = eta;
    addr[1] = pt;
    addr[2] = charge;
    return Lookup(idx, addr) [0];
  };
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;
}

Member Data Documentation

float L1MuGMTMIAUEtaProLUT::caloEtaBounds[15] [static, private]

Definition at line 95 of file L1MuGMTMIAUEtaProLUT.h.

Private data members (LUT parameters);.

Definition at line 94 of file L1MuGMTMIAUEtaProLUT.h.

Referenced by InitParameters(), and TheLookupFunction().