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