![]() |
![]() |
00001 #include "CalibTracker/SiStripCommon/interface/SiStripFedIdListReader.h" 00002 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00003 #include <sstream> 00004 00005 // ----------------------------------------------------------------------------- 00006 // 00007 SiStripFedIdListReader::SiStripFedIdListReader( std::string filePath ) { 00008 fedIds_.clear(); 00009 inputFile_.open( filePath.c_str() ); 00010 00011 if ( inputFile_.is_open() ) { 00012 00013 for(;;) { 00014 00015 uint32_t fed_id; 00016 inputFile_ >> fed_id; 00017 00018 if ( !( inputFile_.eof() || inputFile_.fail() ) ) { 00019 00020 std::vector<uint16_t>::const_iterator it = find( fedIds_.begin(), fedIds_.end(), fed_id ); 00021 if( it == fedIds_.end() ) { fedIds_.push_back(fed_id); } 00022 else { 00023 edm::LogWarning("Unknown") 00024 << "[SiStripFedIdListReader::" << __func__ << "]" 00025 << " FedId " << fed_id << " has already been found in file!" << std::endl; 00026 continue; 00027 } 00028 00029 } else if ( inputFile_.eof() ) { 00030 edm::LogVerbatim("Unknown") 00031 << "[SiStripFedIdListReader::" << __func__ << "]" 00032 << " End of file reached! Found " << fedIds_.size() 00033 << " valid FedIds!" << std::endl; 00034 break; 00035 } else if ( inputFile_.fail() ) { 00036 edm::LogVerbatim("Unknown") 00037 << "[SiStripFedIdListReader::" << __func__ << "]" 00038 << " Error while reading file \"" << filePath << "\"!" << std::endl; 00039 break; 00040 } 00041 } 00042 00043 inputFile_.close(); 00044 } else { 00045 edm::LogVerbatim("Unknown") 00046 << "[SiStripFedIdListReader::" << __func__ << "]" 00047 << " Unable to open file \"" << filePath << "\"!" << std::endl; 00048 return; 00049 00050 } 00051 00052 } 00053 00054 // ----------------------------------------------------------------------------- 00055 // 00056 SiStripFedIdListReader::SiStripFedIdListReader( const SiStripFedIdListReader& copy ) { 00057 edm::LogVerbatim("Unknown") 00058 << "[SiStripFedIdListReader::" << __func__ << "]"; 00059 fedIds_ = copy.fedIds_; 00060 } 00061 00062 // ----------------------------------------------------------------------------- 00063 // 00064 SiStripFedIdListReader& SiStripFedIdListReader::operator=( const SiStripFedIdListReader& copy ) { 00065 edm::LogVerbatim("Unknown") 00066 << "[SiStripFedIdListReader::" << __func__ << "]"; 00067 fedIds_ = copy.fedIds_; 00068 return *this; 00069 } 00070 00071 // ----------------------------------------------------------------------------- 00072 // 00073 SiStripFedIdListReader::~SiStripFedIdListReader(){ 00074 edm::LogVerbatim("Unknown") 00075 << "[SiStripFedIdListReader::" << __func__ << "]"; 00076 } 00077 00078 00079 // ----------------------------------------------------------------------------- 00080 // 00081 std::ostream& operator<< ( std::ostream& os, const SiStripFedIdListReader& in ) { 00082 std::vector<uint16_t> fed_ids = in.fedIds(); 00083 std::stringstream ss; 00084 ss << "[SiStripFedIdListReader::" << __func__ << "]" 00085 << " Found " << fed_ids.size() << " valid FED ids with values: "; 00086 std::vector<uint16_t>::const_iterator iter = fed_ids.begin(); 00087 for ( ; iter != fed_ids.end(); ++iter ) { ss << *iter << " "; } 00088 os << ss.str(); 00089 return os; 00090 } 00091