00001 // $Id: ProcessTestSignal.cc,v 1.3 2009/05/16 19:43:31 aosorio Exp $ 00002 // Include files 00003 00004 00005 // local 00006 #include "L1Trigger/RPCTechnicalTrigger/interface/ProcessTestSignal.h" 00007 #include "L1Trigger/RPCTechnicalTrigger/interface/RBCLinkBoardGLSignal.h" 00008 00009 //----------------------------------------------------------------------------- 00010 // Implementation file for class : ProcessTestSignal 00011 // 00012 // 2008-11-17 : Andres Osorio 00013 //----------------------------------------------------------------------------- 00014 00015 //============================================================================= 00016 // Standard constructor, initializes variables 00017 //============================================================================= 00018 ProcessTestSignal::ProcessTestSignal( const char * f_name ) 00019 { 00020 00021 m_in = new std::ifstream(); 00022 m_in->open(f_name); 00023 00024 if(!m_in->is_open()) { 00025 std::cout << "ProcessTestSignal> cannot open file" << std::endl; 00026 } else { 00027 std::cout << "ProcessTestSignal> file is now open" << std::endl; 00028 } 00029 00030 m_lbin = dynamic_cast<RPCInputSignal*>( new RBCLinkBoardGLSignal( &m_data ) ); 00031 00032 } 00033 //============================================================================= 00034 // Destructor 00035 //============================================================================= 00036 ProcessTestSignal::~ProcessTestSignal() { 00037 00038 if ( m_lbin ) delete m_lbin; 00039 00040 if( m_in ) { 00041 m_in->close(); 00042 delete m_in; 00043 } 00044 00045 } 00046 00047 //============================================================================= 00048 int ProcessTestSignal::next() 00049 { 00050 00051 reset(); 00052 00053 if ( m_in->fail() ) return 0; 00054 00055 for(int j=0; j < 5; ++j) { 00056 00057 m_block = new RPCData(); 00058 (*m_in) >> (*m_block); 00059 m_vecdata.push_back( m_block ); 00060 } 00061 00062 builddata(); 00063 00064 if ( m_in->eof() ) return 0; 00065 return 1; 00066 00067 } 00068 00069 void ProcessTestSignal::showfirst() 00070 { 00071 rewind(); 00072 std::vector<RPCData*>::iterator itr; 00073 for(itr=m_vecdata.begin();itr!=m_vecdata.end();++itr) 00074 std::cout << (*(*itr)); 00075 rewind(); 00076 00077 } 00078 00079 void ProcessTestSignal::rewind() 00080 { 00081 m_in->clear(); 00082 m_in->seekg(0,std::ios::beg); 00083 } 00084 00085 void ProcessTestSignal::reset() 00086 { 00087 00088 std::vector<RPCData*>::iterator itr; 00089 for(itr=m_vecdata.begin();itr!=m_vecdata.end();++itr) 00090 delete *itr; 00091 m_vecdata.clear(); 00092 00093 } 00094 00095 void ProcessTestSignal::builddata() 00096 { 00097 00098 int _code(0); 00099 std::vector<RPCData*>::iterator itr; 00100 00101 for(itr = m_vecdata.begin(); itr != m_vecdata.end(); ++itr) 00102 { 00103 for(int k=0; k < 6; ++k) { 00104 00105 _code = 10000*(*itr)->m_wheel 00106 + 100*(*itr)->m_sec1[k] 00107 + 1*(*itr)->m_sec2[k]; 00108 RBCInput * _signal = & (*itr)->m_orsignals[k]; 00109 _signal->needmapping = true; 00110 m_data.insert( std::make_pair( _code , _signal) ); 00111 00112 } 00113 } 00114 00115 } 00116