#include <interface/RBCProcessRPCSimDigis.h>
Public Member Functions | |
void | builddata () |
void | configure () |
void | initialize (std::vector< RPCData * > &) |
int | next () |
void | print_output () |
RBCProcessRPCSimDigis (const edm::ESHandle< RPCGeometry > &, const edm::Handle< edm::DetSetVector< RPCDigiSimLink > > &) | |
RBCProcessRPCSimDigis () | |
Standard constructor. | |
void | reset () |
RPCInputSignal * | retrievedata () |
void | rewind () |
void | showfirst () |
virtual | ~RBCProcessRPCSimDigis () |
Destructor. | |
Private Member Functions | |
int | getBarrelLayer (const int &, const int &) |
void | setDigiAt (int, int) |
void | setInputBit (std::bitset< 15 > &, int) |
Private Attributes | |
RPCData * | m_block |
std::map< int, RBCInput * > | m_data |
bool | m_debug |
edm::DetSet< RPCDigiSimLink > ::const_iterator | m_digiItr |
std::map< int, int > | m_layermap |
RPCInputSignal * | m_lbin |
edm::DetSetVector < RPCDigiSimLink > ::const_iterator | m_linkItr |
int | m_maxBxWindow |
const edm::Handle < edm::DetSetVector < RPCDigiSimLink > > * | m_ptr_digiSimLink |
const edm::ESHandle < RPCGeometry > * | m_ptr_rpcGeom |
std::vector< int > | m_sec1id |
std::vector< int > | m_sec2id |
std::map< int, std::vector < RPCData * > > | m_vecDataperBx |
std::vector< int > | m_wheelid |
Definition at line 40 of file RBCProcessRPCSimDigis.h.
RBCProcessRPCSimDigis::RBCProcessRPCSimDigis | ( | ) |
Standard constructor.
RBCProcessRPCSimDigis::RBCProcessRPCSimDigis | ( | const edm::ESHandle< RPCGeometry > & | rpcGeom, |
const edm::Handle< edm::DetSetVector< RPCDigiSimLink > > & | digiSimLink | ||
) |
Definition at line 15 of file RBCProcessRPCSimDigis.cc.
References configure(), m_data, m_debug, m_lbin, m_ptr_digiSimLink, and m_ptr_rpcGeom.
{ m_ptr_rpcGeom = & rpcGeom; m_ptr_digiSimLink = & digiSimLink; m_lbin = dynamic_cast<RPCInputSignal*>( new RBCLinkBoardGLSignal( &m_data ) ); m_debug = false; configure(); }
RBCProcessRPCSimDigis::~RBCProcessRPCSimDigis | ( | ) | [virtual] |
Destructor.
Definition at line 82 of file RBCProcessRPCSimDigis.cc.
References m_layermap, m_lbin, m_sec1id, m_sec2id, m_wheelid, and reset().
void RBCProcessRPCSimDigis::builddata | ( | ) |
Definition at line 248 of file RBCProcessRPCSimDigis.cc.
References abs, gather_cfg::cout, gen::k, m_data, m_debug, m_vecDataperBx, and RBCInput::needmapping.
Referenced by next().
{ int bx(0); int code(0); int bxsign(1); std::vector<RPCData*>::iterator itr; std::map<int, std::vector<RPCData*> >::iterator itr2; itr2 = m_vecDataperBx.begin(); if( itr2 == ( m_vecDataperBx.end() ) ) return; while ( itr2 != m_vecDataperBx.end() ) { bx = (*itr2).first; if ( bx != 0 ) bxsign = ( bx / abs(bx) ); else bxsign = 1; for(itr = (*itr2).second.begin(); itr != (*itr2).second.end(); ++itr) { for(int k=0; k < 6; ++k) { code = bxsign * ( 1000000*abs(bx) + 10000*(*itr)->wheelIdx() + 100 *(*itr)->m_sec1[k] + 1 *(*itr)->m_sec2[k] ); RBCInput * signal = & (*itr)->m_orsignals[k]; signal->needmapping = false; if ( signal->hasData ) m_data.insert( std::make_pair( code , signal) ); } } ++itr2; } if ( m_debug ) std::cout << "builddata: completed. size of data: " << m_data.size() << std::endl; }
void RBCProcessRPCSimDigis::configure | ( | ) |
Definition at line 30 of file RBCProcessRPCSimDigis.cc.
References m_layermap, m_maxBxWindow, m_sec1id, m_sec2id, and m_wheelid.
Referenced by RBCProcessRPCSimDigis().
{ m_wheelid.push_back(-2); //-2 m_wheelid.push_back(-1); //-1 m_wheelid.push_back(0); // 0 m_wheelid.push_back( 1); //+1 m_wheelid.push_back( 2); //+2 m_sec1id.push_back(12); m_sec2id.push_back(1); m_sec1id.push_back(2); m_sec2id.push_back(3); m_sec1id.push_back(4); m_sec2id.push_back(5); m_sec1id.push_back(6); m_sec2id.push_back(7); m_sec1id.push_back(8); m_sec2id.push_back(9); m_sec1id.push_back(10); m_sec2id.push_back(11); m_layermap[113] = 0; //RB1InFw m_layermap[123] = 1; //RB1OutFw m_layermap[20213] = 2; //RB22Fw m_layermap[20223] = 2; //RB22Fw m_layermap[30223] = 3; //RB23Fw m_layermap[30213] = 3; //RB23Fw m_layermap[30212] = 4; //RB23M m_layermap[30222] = 4; //RB23M m_layermap[313] = 5; //RB3Fw m_layermap[413] = 6; //RB4Fw m_layermap[111] = 7; //RB1InBk m_layermap[121] = 8; //RB1OutBk m_layermap[20211] = 9; //RB22Bw m_layermap[20221] = 9; //RB22Bw m_layermap[30211] = 10; //RB23Bw m_layermap[30221] = 10; //RB23Bw m_layermap[311] = 11; //RB3Bk m_layermap[411] = 12; //RB4Bk m_maxBxWindow = 3; }
int RBCProcessRPCSimDigis::getBarrelLayer | ( | const int & | _layer, |
const int & | _station | ||
) | [private] |
Definition at line 294 of file RBCProcessRPCSimDigis.cc.
Referenced by next().
{ //... Calculates the generic Barrel Layer (1 to 6) int blayer(0); if ( _station < 3 ) { blayer = ( (_station-1) * 2 ) + _layer; } else { blayer = _station + 2; } return blayer; }
void RBCProcessRPCSimDigis::initialize | ( | std::vector< RPCData * > & | dataVec | ) |
Definition at line 217 of file RBCProcessRPCSimDigis.cc.
References gather_cfg::cout, RBCInput::hasData, i, RBCInput::input_sec, j, m_block, m_debug, RPCData::m_orsignals, RPCData::m_sec1, m_sec1id, RPCData::m_sec2, m_sec2id, RPCData::m_wheel, m_wheelid, and RBCInput::needmapping.
Referenced by next().
{ if ( m_debug ) std::cout << "initialize" << std::endl; int maxWheels = 5; int maxRbcBrds = 6; for(int i=0; i < maxWheels; ++i) { m_block = new RPCData(); m_block->m_wheel = m_wheelid[i]; for(int j=0; j < maxRbcBrds; ++j) { m_block->m_sec1[j] = m_sec1id[j]; m_block->m_sec2[j] = m_sec2id[j]; m_block->m_orsignals[j].input_sec[0].reset(); m_block->m_orsignals[j].input_sec[1].reset(); m_block->m_orsignals[j].needmapping = false; m_block->m_orsignals[j].hasData = false; } dataVec.push_back( m_block ); } if ( m_debug ) std::cout << "initialize: completed" << std::endl; }
int RBCProcessRPCSimDigis::next | ( | void | ) | [virtual] |
Implements ProcessInputSignal.
Definition at line 96 of file RBCProcessRPCSimDigis.cc.
References abs, edm::DetSetVector< T >::begin(), builddata(), gather_cfg::cout, cond::rpcobgas::detid, edm::DetSetVector< T >::end(), getBarrelLayer(), errorMatrix2Lands_multiChannel::id, RPCRoll::id(), initialize(), RPCRoll::isForward(), RPCDetId::layer(), m_block, m_data, m_debug, m_digiItr, m_linkItr, m_maxBxWindow, m_vecDataperBx, print_output(), reset(), RPCDetId::ring(), RPCDetId::sector(), setDigiAt(), relativeConstraints::station, and RPCDetId::station().
{ //...clean up previous data contents reset(); int ndigis(0); for( m_linkItr = (*m_ptr_digiSimLink)->begin(); m_linkItr != (*m_ptr_digiSimLink)->end(); ++m_linkItr ) { for ( m_digiItr = m_linkItr->data.begin(); m_digiItr != m_linkItr->data.end(); ++m_digiItr ) { if ( m_debug ) std::cout << "looping over digis 1 ..." << std::endl; int bx = (*m_digiItr).getBx(); if ( abs(bx) >= m_maxBxWindow ) { if ( m_debug ) std::cout << "RBCProcessRPCSimDigis> found a bx bigger than max allowed: " << bx << std::endl; continue; } uint32_t detid = m_digiItr->getDetUnitId(); const RPCDetId id( detid ); const RPCRoll * roll = dynamic_cast<const RPCRoll* >( (*m_ptr_rpcGeom)->roll(id)); if((roll->isForward())) { if( m_debug ) std::cout << "RBCProcessRPCSimDigis: roll is forward" << std::endl; continue; } int wheel = roll->id().ring(); // -2,-1,0,+1,+2 int sector = roll->id().sector(); // 1 to 12 int layer = roll->id().layer(); // 1,2 int station = roll->id().station(); // 1-4 int blayer = getBarrelLayer( layer, station ); // 1 to 6 int rollid = id.roll(); int digipos = (station * 100) + (layer * 10) + rollid; if ( (wheel == -1 || wheel == 0 || wheel == 1) && station == 2 && layer == 1 ) digipos = 30000 + digipos; if ( (wheel == -2 || wheel == 2) && station == 2 && layer == 2 ) digipos = 30000 + digipos; if ( (wheel == -1 || wheel == 0 || wheel == 1) && station == 2 && layer == 2 ) digipos = 20000 + digipos; if ( (wheel == -2 || wheel == 2) && station == 2 && layer == 1 ) digipos = 20000 + digipos; if ( m_debug ) std::cout << "Bx: " << bx << '\t' << "Wheel: " << wheel << '\t' << "Sector: " << sector << '\t' << "Station: " << station << '\t' << "Layer: " << layer << '\t' << "B-Layer: " << blayer << '\t' << "Roll id: " << rollid << '\t' << "Digi at: " << digipos << '\n'; //... Construct the RBCinput objects std::map<int,std::vector<RPCData*> >::iterator itr; itr = m_vecDataperBx.find( bx ); if ( itr == m_vecDataperBx.end() ) { if ( m_debug ) std::cout << "Found a new Bx: " << bx << std::endl; std::vector<RPCData*> wheelData; initialize(wheelData); m_vecDataperBx[bx] = wheelData; this->m_block = wheelData[ (wheel + 2) ]; setDigiAt( sector, digipos ); } else{ this->m_block = (*itr).second[ (wheel + 2) ]; setDigiAt( sector, digipos ); } if ( m_debug ) std::cout << "looping over digis 2 ..." << std::endl; ++ndigis; } } if ( m_debug ) std::cout << "size of data vectors: " << m_vecDataperBx.size() << std::endl; builddata(); if ( m_debug ) { std::cout << "after reset" << std::endl; print_output(); } if ( m_debug ) std::cout << "RBCProcessRPCSimDigis: DataSize: " << m_data.size() << " ndigis " << ndigis << std::endl; if ( m_data.size() <= 0 ) return 0; return 1; }
void RBCProcessRPCSimDigis::print_output | ( | ) |
Definition at line 354 of file RBCProcessRPCSimDigis.cc.
References gather_cfg::cout, and m_data.
Referenced by next().
{ std::cout << "RBCProcessRPCSimDigis> Output starts" << std::endl; std::map<int,RBCInput*>::const_iterator itr; for( itr = m_data.begin(); itr != m_data.end(); ++itr) { std::cout << (*itr).first << '\t' << (* (*itr).second ) << '\n'; } std::cout << "RBCProcessRPCSimDigis> Output ends" << std::endl; }
void RBCProcessRPCSimDigis::reset | ( | void | ) |
Definition at line 202 of file RBCProcessRPCSimDigis.cc.
References m_vecDataperBx.
Referenced by next(), and ~RBCProcessRPCSimDigis().
{ std::map<int,std::vector<RPCData*> >::iterator itr1; for( itr1 = m_vecDataperBx.begin(); itr1 != m_vecDataperBx.end(); ++itr1) { std::vector<RPCData*>::iterator itr2; for(itr2 = (*itr1).second.begin(); itr2 != (*itr1).second.end();++itr2 ) if ( (*itr2) ) delete *itr2; (*itr1).second.clear(); } m_vecDataperBx.clear(); }
RPCInputSignal* RBCProcessRPCSimDigis::retrievedata | ( | ) | [inline, virtual] |
Implements ProcessInputSignal.
Definition at line 60 of file RBCProcessRPCSimDigis.h.
References m_lbin.
{ return m_lbin; };
void RBCProcessRPCSimDigis::rewind | ( | ) | [inline] |
Definition at line 64 of file RBCProcessRPCSimDigis.h.
{};
void RBCProcessRPCSimDigis::setDigiAt | ( | int | sector, |
int | digipos | ||
) | [private] |
Definition at line 312 of file RBCProcessRPCSimDigis.cc.
References gather_cfg::cout, spr::find(), RBCInput::hasData, RBCInput::input_sec, m_block, m_debug, RPCData::m_orsignals, RPCData::m_sec1, m_sec1id, m_sec2id, pos, and setInputBit().
Referenced by next().
{ int pos = 0; int isAoB = 0; if ( m_debug ) std::cout << "setDigiAt" << std::endl; std::vector<int>::const_iterator itr; itr = std::find( m_sec1id.begin(), m_sec1id.end(), sector ); if ( itr == m_sec1id.end()) { itr = std::find( m_sec2id.begin(), m_sec2id.end(), sector ); isAoB = 1; } for ( pos = 0; pos < 6; ++pos ) { if (this->m_block->m_sec1[pos] == sector || this->m_block->m_sec2[pos] == sector ) break; } if ( m_debug ) std::cout << this->m_block->m_orsignals[pos]; setInputBit( this->m_block->m_orsignals[pos].input_sec[ isAoB ] , digipos ); this->m_block->m_orsignals[pos].hasData = true; if ( m_debug ) std::cout << this->m_block->m_orsignals[pos]; if ( m_debug ) std::cout << "setDigiAt completed" << std::endl; }
void RBCProcessRPCSimDigis::setInputBit | ( | std::bitset< 15 > & | signals, |
int | digipos | ||
) | [private] |
Definition at line 345 of file RBCProcessRPCSimDigis.cc.
References gather_cfg::cout, m_debug, and m_layermap.
Referenced by setDigiAt().
{ int bitpos = m_layermap[digipos]; if( m_debug ) std::cout << "Bitpos: " << bitpos << std::endl; signals.set( bitpos , 1 ); }
void RBCProcessRPCSimDigis::showfirst | ( | ) | [inline] |
Definition at line 65 of file RBCProcessRPCSimDigis.h.
{};
RPCData* RBCProcessRPCSimDigis::m_block [private] |
Definition at line 85 of file RBCProcessRPCSimDigis.h.
Referenced by initialize(), next(), and setDigiAt().
std::map<int, RBCInput*> RBCProcessRPCSimDigis::m_data [private] |
Definition at line 91 of file RBCProcessRPCSimDigis.h.
Referenced by builddata(), next(), print_output(), and RBCProcessRPCSimDigis().
bool RBCProcessRPCSimDigis::m_debug [private] |
Definition at line 95 of file RBCProcessRPCSimDigis.h.
Referenced by builddata(), initialize(), next(), RBCProcessRPCSimDigis(), setDigiAt(), and setInputBit().
edm::DetSet<RPCDigiSimLink>::const_iterator RBCProcessRPCSimDigis::m_digiItr [private] |
Definition at line 83 of file RBCProcessRPCSimDigis.h.
Referenced by next().
std::map<int, int> RBCProcessRPCSimDigis::m_layermap [private] |
Definition at line 89 of file RBCProcessRPCSimDigis.h.
Referenced by configure(), setInputBit(), and ~RBCProcessRPCSimDigis().
RPCInputSignal* RBCProcessRPCSimDigis::m_lbin [private] |
Definition at line 87 of file RBCProcessRPCSimDigis.h.
Referenced by RBCProcessRPCSimDigis(), retrievedata(), and ~RBCProcessRPCSimDigis().
edm::DetSetVector<RPCDigiSimLink>::const_iterator RBCProcessRPCSimDigis::m_linkItr [private] |
Definition at line 82 of file RBCProcessRPCSimDigis.h.
Referenced by next().
int RBCProcessRPCSimDigis::m_maxBxWindow [private] |
Definition at line 96 of file RBCProcessRPCSimDigis.h.
Referenced by configure(), and next().
const edm::Handle<edm::DetSetVector<RPCDigiSimLink> >* RBCProcessRPCSimDigis::m_ptr_digiSimLink [private] |
Definition at line 80 of file RBCProcessRPCSimDigis.h.
Referenced by RBCProcessRPCSimDigis().
const edm::ESHandle<RPCGeometry>* RBCProcessRPCSimDigis::m_ptr_rpcGeom [private] |
Definition at line 79 of file RBCProcessRPCSimDigis.h.
Referenced by RBCProcessRPCSimDigis().
std::vector<int> RBCProcessRPCSimDigis::m_sec1id [private] |
Definition at line 99 of file RBCProcessRPCSimDigis.h.
Referenced by configure(), initialize(), setDigiAt(), and ~RBCProcessRPCSimDigis().
std::vector<int> RBCProcessRPCSimDigis::m_sec2id [private] |
Definition at line 100 of file RBCProcessRPCSimDigis.h.
Referenced by configure(), initialize(), setDigiAt(), and ~RBCProcessRPCSimDigis().
std::map<int, std::vector<RPCData*> > RBCProcessRPCSimDigis::m_vecDataperBx [private] |
Definition at line 93 of file RBCProcessRPCSimDigis.h.
Referenced by builddata(), next(), and reset().
std::vector<int> RBCProcessRPCSimDigis::m_wheelid [private] |
Definition at line 98 of file RBCProcessRPCSimDigis.h.
Referenced by configure(), initialize(), and ~RBCProcessRPCSimDigis().