CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/L1Trigger/RPCTechnicalTrigger/src/ProcessTestSignal.cc

Go to the documentation of this file.
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