CMS 3D CMS Logo

Public Member Functions | Private Types | Private Attributes

RPCTriggerBoard Class Reference

#include <RPCTriggerBoard.h>

List of all members.

Public Member Functions

 RPCTriggerBoard (RPCTriggerConfiguration *triggerConfig, int tbNum, int tcNum)
bool runCone (const RPCLogCone &cone)
L1RpcTBMuonsVec runTBGB ()

Private Types

typedef std::map< int, PACsVecPACsAll
typedef std::vector
< boost::shared_ptr< RPCPac > > 
PACsVec

Private Attributes

PACsAll m_pacs
L1RpcTBMuonsVec m_PacsMuonsVec
RPCTBGhostBuster m_TBGhostBuster
int m_TBNumber
 0...8 , 0 = tbn4, m_tower -16..-13, 4 = tb0
RPCTriggerConfigurationm_TriggerConfig

Detailed Description

Class describing the Trigger Board. In hardware on one TB thera are m_PAC procesors for 3 or 4 towers of one sector. In this implementation the RPCTriggerBoard does not holds the m_PAC, but acces them through RPCTriggerConfiguration, beacouse deifferent configuration are possible (for example the same m_PAC for every Log Segment of given m_tower).

Author:
Karol Bunkowski (Warsaw)

Definition at line 20 of file RPCTriggerBoard.h.


Member Typedef Documentation

typedef std::map<int,PACsVec> RPCTriggerBoard::PACsAll [private]

Definition at line 48 of file RPCTriggerBoard.h.

typedef std::vector<boost::shared_ptr< RPCPac > > RPCTriggerBoard::PACsVec [private]

Definition at line 47 of file RPCTriggerBoard.h.


Constructor & Destructor Documentation

RPCTriggerBoard::RPCTriggerBoard ( RPCTriggerConfiguration triggerConfig,
int  tbNum,
int  tcNum 
)

Definition at line 13 of file RPCTriggerBoard.cc.

References RPCTriggerConfiguration::getPac(), RPCTriggerConfiguration::getTowsCntOnTB(), i, RPCConst::l1RpcConeCrdnts::m_LogSector, RPCConst::l1RpcConeCrdnts::m_LogSegment, m_pacs, m_TBNumber, RPCConst::l1RpcConeCrdnts::m_Tower, and m_TriggerConfig.

{
  
  m_TriggerConfig = triggerConfig;
  m_TBNumber = tbNum;

  int towerMin=-16;
  int towerMax=-16;
  
  // Calculate tower boundaries for this TB
  for (int i=0;i <= tbNum; i++){ // Trigger Boards are numbered from 0 to 8
    towerMin=towerMax;
    towerMax+=m_TriggerConfig->getTowsCntOnTB(i);
  }
  towerMax--;
  
  for (int tower = towerMin; tower <= towerMax; tower++){
    for (int logSegment = 0; logSegment < 12; logSegment++){ // One logSegment = one PAC
      //m_pacs[cone.getTower()][cone.getLogSegment()]
      RPCConst::l1RpcConeCrdnts coneCrds;
      coneCrds.m_Tower=tower;  
      coneCrds.m_LogSector=tcNum;
      coneCrds.m_LogSegment=logSegment;
      
      const RPCPacData *pacData = m_TriggerConfig->getPac(coneCrds);
      
      // one trigger crate covers one logsector:
      //RPCPac *pac = new RPCPac(pacData, tower, tcNum, logSegment); 
      boost::shared_ptr< RPCPac > pac (new RPCPac(pacData, tower, tcNum, logSegment) ); 

      m_pacs[tower].push_back(pac);
    
    }
  }
           
           
}

Member Function Documentation

bool RPCTriggerBoard::runCone ( const RPCLogCone cone)

Runs RPCPacData::run() for cone. Converts RPCPacMuon to RPCTBMuon and puts it to the m_PacsMuonsVec.

Returns:
true if non-empty muon was return by m_PAC

Definition at line 52 of file RPCTriggerBoard.cc.

References MuonsGrabber::addMuon(), gather_cfg::cout, RPCTriggerConfiguration::getDebugLevel(), RPCLogCone::getLogSegment(), RPCLogCone::getTower(), MuonsGrabber::Instance(), m_pacs, m_PacsMuonsVec, m_TBNumber, m_TriggerConfig, and asciidump::s.

                                                     {

    //RPCTBMuon tbMuon(m_TriggerConfig->getPac(cone.getConeCrdnts())->run(cone) );
    if(m_pacs.find(cone.getTower())==m_pacs.end()){
      std::stringstream s;
      s << "RPCTriggerBoard::runCone() wrong tower: " << cone.getTower() << " in TB=" << m_TBNumber;
      throw RPCException(s.str());
    }
    
    RPCTBMuon tbMuon(m_pacs[cone.getTower()][cone.getLogSegment()]->run(cone));  
    //Reference: RPCTBMuon(int ptCode, int quality, int sign, int patternNum, unsigned short firedPlanes);

    //RPCPacMuon pmuon = m_pacs[cone.getTower()][cone.getLogSegment()]->run(cone);
    //RPCTBMuon tbMuon(pmuon.getPtCode(), pmuon.getQuality(), pmuon.getSign(), pmuon.getPatternNum(), pmuon.getFiredPlanes());
    

    if(tbMuon.getCode() > 0) {
        m_PacsMuonsVec.push_back(tbMuon);
        if (m_TriggerConfig->getDebugLevel()!=0){
#ifndef _STAND_ALONE
        //  LogDebug("RPCHwDebug") << "GB 0 -1 "
        //                       << tbMuon.printDebugInfo(m_TriggerConfig->getDebugLevel());
          MuonsGrabber::Instance().addMuon(tbMuon, 0, -1, -1, -1);  
#else
          std::cout << "GB 0 -1 "
                    << tbMuon.printDebugInfo(m_TriggerConfig->getDebugLevel())
                    << std::endl;
#endif //_STAND_ALONE
        }
      return true;
    }
    else
      return false;
      
}
L1RpcTBMuonsVec RPCTriggerBoard::runTBGB ( )

Creates L1RpcTBMuonsVec2 from muons from m_PacsMuonsVec. Then runs RPCTBGhostBuster::run().

Returns:
4 muons or empty vector.

Definition at line 88 of file RPCTriggerBoard.cc.

References RPCTriggerConfiguration::getTowerNumOnTb(), m_PacsMuonsVec, RPCConst::m_SEGMENTS_IN_SECTOR_CNT, m_TBGhostBuster, RPCConst::m_TOWERS_ON_TB_CNT, m_TriggerConfig, RPCTBGhostBuster::run(), and findQualityFiles::size.

                                         { //4 muons or empty vector
  if(m_PacsMuonsVec.size() == 0)
    return L1RpcTBMuonsVec();

  L1RpcTBMuonsVec2 gbMuons(RPCConst::m_TOWERS_ON_TB_CNT, L1RpcTBMuonsVec());
  for(unsigned int iMu = 0; iMu < m_PacsMuonsVec.size(); iMu++) {
    int tbTower = m_TriggerConfig->getTowerNumOnTb(m_PacsMuonsVec[iMu].getConeCrdnts());

    if(gbMuons[tbTower].size() == 0)
      gbMuons[tbTower].assign(RPCConst::m_SEGMENTS_IN_SECTOR_CNT, RPCTBMuon());

    gbMuons[tbTower][m_PacsMuonsVec[iMu].getLogSegment()] = m_PacsMuonsVec[iMu];
  }

  m_PacsMuonsVec.clear();
  return m_TBGhostBuster.run(gbMuons);
}

Member Data Documentation

Definition at line 50 of file RPCTriggerBoard.h.

Referenced by RPCTriggerBoard(), and runCone().

Definition at line 44 of file RPCTriggerBoard.h.

Referenced by runCone(), and runTBGB().

Definition at line 42 of file RPCTriggerBoard.h.

Referenced by runTBGB().

0...8 , 0 = tbn4, m_tower -16..-13, 4 = tb0

Definition at line 38 of file RPCTriggerBoard.h.

Referenced by RPCTriggerBoard(), and runCone().

Definition at line 40 of file RPCTriggerBoard.h.

Referenced by RPCTriggerBoard(), runCone(), and runTBGB().