CMS 3D CMS Logo

Public Member Functions | Private Attributes

L1MuDTSEU Class Reference

#include <L1MuDTSEU.h>

Inheritance diagram for L1MuDTSEU:
L1AbstractProcessor

List of all members.

Public Member Functions

const L1MuDTERSers () const
 return pointer to Extrapolation Result Selector
const std::vector< L1MuDTEUX * > & eux () const
 return pointer to an Extrapolator
Extrapolation ext () const
 return extrapolation type
const std::bitset< 12 > & exTable () const
 return Extrapolator table
bool isNextWheelSEU () const
 is it a next wheel Single Extrapolation Unit
bool isOwnWheelSEU () const
 is it a own wheel Single Extrapolation Unit
 L1MuDTSEU (const L1MuDTSectorProcessor &sp, Extrapolation ext, unsigned int tsId)
 constructor
void load (const L1MuDTTrackSegPhi *startTS)
 load data into the SEU
int numberOfExt () const
 return number of successful extrapolations
const std::bitset< 12 > & qsTable () const
 return Quality Sorter table
void reset (unsigned int relAdr)
 reset single extrapolation
virtual void reset ()
 reset SEU
virtual void run (const edm::EventSetup &c)
 run SEU
unsigned int tsId () const
 return start track segment identifier (relative address)
virtual ~L1MuDTSEU ()
 destructor

Private Attributes

L1MuDTERSm_ERS
std::vector< L1MuDTEUX * > m_EUXs
Extrapolation m_ext
std::bitset< 12 > m_EXtable
std::bitset< 12 > m_QStable
const L1MuDTSectorProcessorm_sp
const L1MuDTTrackSegPhim_startTS
unsigned int m_startTS_Id

Detailed Description

Single Extrapolation Unit:

performs for a given start track segment and a given extrapolation type extrapolations to all possible target track segments (12 or 6)

Date:
2008/02/18 17:38:04
Revision:
1.4

N. Neumeister CERN EP

Definition at line 50 of file L1MuDTSEU.h.


Constructor & Destructor Documentation

L1MuDTSEU::L1MuDTSEU ( const L1MuDTSectorProcessor sp,
Extrapolation  ext,
unsigned int  tsId 
)

constructor

Definition at line 52 of file L1MuDTSEU.cc.

References m_ERS, m_EUXs, and m_sp.

                                                                                          : 
     m_sp(sp), m_ext(ext), 
     m_startTS_Id(tsId), m_startTS(0), m_EUXs(), m_ERS() {
 
  m_EUXs.reserve(12);

  for ( int target_ts = 0; target_ts < 12; target_ts++ ) {
    m_EUXs.push_back( new L1MuDTEUX(m_sp,*this,target_ts) );
  }

  m_ERS = new L1MuDTERS(*this);

}
L1MuDTSEU::~L1MuDTSEU ( ) [virtual]

destructor

Definition at line 71 of file L1MuDTSEU.cc.

References m_ERS, m_EUXs, and m_startTS.

                      {

  vector<L1MuDTEUX*>::iterator iter_eux;
  for ( iter_eux = m_EUXs.begin(); iter_eux != m_EUXs.end(); iter_eux++ ) {
    delete (*iter_eux);
    *iter_eux = 0;
  }

  m_startTS = 0;
  m_EUXs.clear();

  delete m_ERS;

}

Member Function Documentation

const L1MuDTERS* L1MuDTSEU::ers ( ) const [inline]

return pointer to Extrapolation Result Selector

Definition at line 97 of file L1MuDTSEU.h.

References m_ERS.

{ return m_ERS; }
const std::vector<L1MuDTEUX*>& L1MuDTSEU::eux ( ) const [inline]

return pointer to an Extrapolator

Definition at line 94 of file L1MuDTSEU.h.

References m_EUXs.

Referenced by L1MuDTERS::run().

{ return m_EUXs; }
Extrapolation L1MuDTSEU::ext ( ) const [inline]

return extrapolation type

Definition at line 82 of file L1MuDTSEU.h.

References m_ext.

Referenced by L1MuDTEUX::load(), L1MuDTEUX::run(), and L1MuDTExtrapolationUnit::run().

{ return m_ext; }
const std::bitset<12>& L1MuDTSEU::exTable ( ) const [inline]

return Extrapolator table

Definition at line 73 of file L1MuDTSEU.h.

References m_EXtable.

{ return m_EXtable; }
bool L1MuDTSEU::isNextWheelSEU ( ) const [inline]

is it a next wheel Single Extrapolation Unit

Definition at line 91 of file L1MuDTSEU.h.

References m_startTS_Id.

Referenced by run().

{ return ( m_startTS_Id == 2 || m_startTS_Id == 3 ); }
bool L1MuDTSEU::isOwnWheelSEU ( ) const [inline]

is it a own wheel Single Extrapolation Unit

Definition at line 88 of file L1MuDTSEU.h.

References m_startTS_Id.

{ return ( m_startTS_Id == 0 || m_startTS_Id == 1 ); }
void L1MuDTSEU::load ( const L1MuDTTrackSegPhi startTS) [inline]

load data into the SEU

Definition at line 70 of file L1MuDTSEU.h.

References m_startTS.

{ m_startTS = startTS; }
int L1MuDTSEU::numberOfExt ( ) const

return number of successful extrapolations

Definition at line 189 of file L1MuDTSEU.cc.

References m_EUXs.

Referenced by run(), and L1MuDTERS::run().

                                 {

  int number = 0;
  vector<L1MuDTEUX*>::const_iterator iter_eux;
  for ( iter_eux = m_EUXs.begin(); iter_eux != m_EUXs.end(); iter_eux++ ) {
    if ( (*iter_eux)->result() ) number++;
  }

  return number;

}
const std::bitset<12>& L1MuDTSEU::qsTable ( ) const [inline]

return Quality Sorter table

Definition at line 76 of file L1MuDTSEU.h.

References m_QStable.

{ return m_QStable; }
void L1MuDTSEU::reset ( void  ) [virtual]

reset SEU

Implements L1AbstractProcessor.

Definition at line 157 of file L1MuDTSEU.cc.

References m_ERS, m_EUXs, m_EXtable, m_QStable, m_startTS, and L1MuDTERS::reset().

                      {

  m_startTS = 0;
  vector<L1MuDTEUX*>::iterator iter_eux;
  for ( iter_eux = m_EUXs.begin(); iter_eux != m_EUXs.end(); iter_eux++ ) {
    (*iter_eux)->reset();
  }

  m_ERS->reset();
  
  m_EXtable.reset();
  m_QStable.reset();
  
}
void L1MuDTSEU::reset ( unsigned int  relAdr)

reset single extrapolation

Definition at line 176 of file L1MuDTSEU.cc.

References m_EUXs, m_EXtable, and m_QStable.

                                         {

  m_EXtable.reset(relAdr);
  m_QStable.reset(relAdr);
  m_EUXs[relAdr]->reset();
//  m_ERS->reset();
  
}
void L1MuDTSEU::run ( const edm::EventSetup c) [virtual]

run SEU

Reimplemented from L1AbstractProcessor.

Definition at line 94 of file L1MuDTSEU.cc.

References gather_cfg::cout, L1MuDTSectorProcessor::data(), L1MuDTTFConfig::Debug(), L1MuDTTrackSegPhi::empty(), L1MuDTDataBuffer::getTSphi(), isNextWheelSEU(), m_ERS, m_EUXs, m_ext, m_EXtable, m_QStable, m_sp, m_startTS, m_startTS_Id, numberOfExt(), query::result, L1MuDTERS::run(), filterCSVwithJSON::target, and L1MuDTExtrapolationUnit::which_ext().

                                          {

  if ( L1MuDTTFConfig::Debug(3) ) cout << "Run SEU " << m_ext << " " 
                                       << m_startTS_Id << endl;

  pair<int,int> ext_pair = L1MuDTExtrapolationUnit::which_ext(m_ext);
  int target = ext_pair.second;

  // check if it is a nextWheel or ownWheel SEU
  bool nextWheel = isNextWheelSEU();

  // relative addresses used
  //                                         nextWheel
  //           extrapolation               extrapolation
  //              address                    address
  //        +--------+--------+         +--------+--------+
  //    +   |        |        |     +   |        |        |
  //        |  4   5 |  6   7 |         |        |  6   7 |
  //    |   |        |        |     |   |        |        |
  //    |   +--------+--------+     |   +--------+--------+
  //        |........|        |         |........|        |
  //   phi  |..0...1.|  2   3 |    phi  |........|  2   3 |
  //        |........|        |         |........|        |
  //    |   +--------+--------+     |   +--------+--------+
  //    |   |        |        |     |   |        |        |
  //        |  8   9 | 10  11 |         |        | 10  11 |
  //    -   |        |        |     -   |        |        |
  //        +--------+--------+         +--------+--------+
  //
  //             -- eta --                   -- eta --  

  // loop over all 12 target addresses
  for ( int reladr = 0; reladr < 12; reladr++ ) {

    // for the nextWheel extrapolations only reladr: 2,3,6,7,10,11 
    if ( nextWheel && (reladr/2)%2 == 0 ) continue;

    const L1MuDTTrackSegPhi* target_ts = m_sp.data()->getTSphi(target, reladr);
    if ( target_ts && !target_ts->empty() ) {
      m_EUXs[reladr]->load(m_startTS, target_ts);
      m_EUXs[reladr]->run(c);
      if ( m_EUXs[reladr]->result() ) m_EXtable.set(reladr);
    }

  }

  if ( L1MuDTTFConfig::Debug(3) ) {
    int n_ext = numberOfExt();
    if ( n_ext > 0 ) cout << "number of successful EUX : " <<  n_ext << endl;
  }

  if ( m_ERS ) m_ERS->run();

  //  if ( m_ERS->address(0) != 15 ) m_QStable.set(m_ERS->address(0));
  //  if ( m_ERS->address(1) != 15 ) m_QStable.set(m_ERS->address(1));
  m_QStable = m_EXtable;

}
unsigned int L1MuDTSEU::tsId ( ) const [inline]

return start track segment identifier (relative address)

Definition at line 85 of file L1MuDTSEU.h.

References m_startTS_Id.

Referenced by L1MuDTExtrapolationUnit::run().

{ return m_startTS_Id; }

Member Data Documentation

Definition at line 107 of file L1MuDTSEU.h.

Referenced by ers(), L1MuDTSEU(), reset(), run(), and ~L1MuDTSEU().

std::vector<L1MuDTEUX*> L1MuDTSEU::m_EUXs [private]

Definition at line 106 of file L1MuDTSEU.h.

Referenced by eux(), L1MuDTSEU(), numberOfExt(), reset(), run(), and ~L1MuDTSEU().

Definition at line 102 of file L1MuDTSEU.h.

Referenced by ext(), and run().

std::bitset<12> L1MuDTSEU::m_EXtable [private]

Definition at line 109 of file L1MuDTSEU.h.

Referenced by exTable(), reset(), and run().

std::bitset<12> L1MuDTSEU::m_QStable [private]

Definition at line 110 of file L1MuDTSEU.h.

Referenced by qsTable(), reset(), and run().

Definition at line 101 of file L1MuDTSEU.h.

Referenced by L1MuDTSEU(), and run().

Definition at line 105 of file L1MuDTSEU.h.

Referenced by load(), reset(), run(), and ~L1MuDTSEU().

unsigned int L1MuDTSEU::m_startTS_Id [private]

Definition at line 103 of file L1MuDTSEU.h.

Referenced by isNextWheelSEU(), isOwnWheelSEU(), run(), and tsId().