#include <CaloOnlineTools/HcalOnlineDb/interface/HcalChannelQualityXml.h>
Classes | |
struct | _ChannelQuality |
Public Types | |
typedef struct HcalChannelQualityXml::_ChannelQuality | ChannelQuality |
Public Member Functions | |
DOMElement * | add_data (DOMNode *_dataset, int _channel_status, int _on_off, std::string _comment) |
DOMNode * | add_hcal_channel_dataset (int ieta, int iphi, int depth, std::string subdetector, int _channel_status, int _on_off, std::string _comment) |
int | addChannelQualityGeom (std::map< int, ChannelQuality > &_cq) |
int | addChannelToGeomIdMap (int ieta, int iphi, int depth, std::string subdetector, int _channel_status, int _on_off, std::string _comment) |
int | dumpIovsFromOmdsToStdout (std::string tag) |
int | dumpTagsFromOmdsToStdout (void) |
int | getBaseLineFromOmds (std::string _tag, int _iov_begin) |
std::vector< int > | getIovsFromOmds (std::string tag) |
std::vector< std::string > | getTagsFromOmds (void) |
HcalChannelQualityXml () | |
int | makeXmlFromAsciiStream (int _runnumber, int _iov_begin, int _iov_end, std::string _tag, std::string _elements_comment, std::string _base="hex") |
int | readStatusWordFromStdin (std::string base="hex") |
int | set_all_channels_on_off (int _hb, int _he, int _hf, int _ho) |
int | set_all_channels_status (uint32_t _hb, uint32_t _he, uint32_t _hf, uint32_t _ho) |
int | writeBaseLineFromOmdsToStdout (std::string _tag, int _iov_begin, std::string base="hex") |
int | writeStatusWordToStdout (std::string base="hex") |
virtual | ~HcalChannelQualityXml () |
Public Attributes | |
std::map< int, ChannelQuality > | detid_cq |
std::map< int, ChannelQuality > | geomid_cq |
Private Member Functions | |
std::string | get_random_comment (void) |
Private Attributes | |
HcalAssistant | hAss |
Description: <one line="" class="" summary>="">
Usage: <usage>
Definition at line 26 of file HcalChannelQualityXml.h.
HcalChannelQualityXml::HcalChannelQualityXml | ( | ) |
Definition at line 37 of file HcalChannelQualityXml.cc.
References comment.
{ extension_table_name="HCAL_CHANNEL_QUALITY_V1"; type_name="HCAL Channel Quality [V1]"; run_number = -1; channel_map = "HCAL_CHANNELS"; data_set_id = -1; iov_id = 1; iov_begin = 1; iov_end = -1; tag_id = 2; tag_mode = "auto"; tag_name = "test_channel_quality_tag_name"; detector_name = "HCAL"; comment = hcal_ass.getRandomQuote(); tag_idref = 2; iov_idref = 1; data_set_idref = -1; // geomid_cq.clear(); detid_cq.clear(); // //hAss.getListOfChannelsFromDb(); // init_data(); }
HcalChannelQualityXml::~HcalChannelQualityXml | ( | ) | [virtual] |
Definition at line 83 of file HcalChannelQualityXml.cc.
{ }
DOMElement * HcalChannelQualityXml::add_data | ( | DOMNode * | _dataset, |
int | _channel_status, | ||
int | _on_off, | ||
std::string | _comment | ||
) |
Definition at line 88 of file HcalChannelQualityXml.cc.
References XMLProcessor::_toXMLCh().
{ DOMElement * _data_elem = get_data_element(_dataset); add_element(_data_elem, XMLProcessor::_toXMLCh("CHANNEL_STATUS_WORD"), XMLProcessor::_toXMLCh(_channel_status)); add_element(_data_elem, XMLProcessor::_toXMLCh("CHANNEL_ON_OFF_STATE"), XMLProcessor::_toXMLCh(_on_off)); add_element(_data_elem, XMLProcessor::_toXMLCh("COMMENT_DESCRIPTION"), XMLProcessor::_toXMLCh(_comment)); // return _data_elem; }
DOMNode * HcalChannelQualityXml::add_hcal_channel_dataset | ( | int | ieta, |
int | iphi, | ||
int | depth, | ||
std::string | subdetector, | ||
int | _channel_status, | ||
int | _on_off, | ||
std::string | _comment | ||
) |
Definition at line 98 of file HcalChannelQualityXml.cc.
{ DOMNode * _dataset = add_dataset(); add_hcal_channel(_dataset, ieta, iphi, depth, subdetector); add_data(_dataset, _channel_status, _on_off, _comment); return _dataset; }
int HcalChannelQualityXml::addChannelQualityGeom | ( | std::map< int, ChannelQuality > & | _cq | ) |
Definition at line 253 of file HcalChannelQualityXml.cc.
{ int _n_channels = 0; for (std::map<int,ChannelQuality>::const_iterator _chan=_cq.begin(); _chan!=_cq.end(); _chan++ ){ add_hcal_channel_dataset( hAss.getHcalIeta(_chan->first), hAss.getHcalIphi(_chan->first), hAss.getHcalDepth(_chan->first), hAss.getSubdetectorString(hAss.getHcalSubdetector(_chan->first)), _chan->second.status, _chan->second.onoff, _chan->second.comment ); _n_channels++; } return _n_channels; }
int HcalChannelQualityXml::addChannelToGeomIdMap | ( | int | ieta, |
int | iphi, | ||
int | depth, | ||
std::string | subdetector, | ||
int | _channel_status, | ||
int | _on_off, | ||
std::string | _comment | ||
) |
Definition at line 273 of file HcalChannelQualityXml.cc.
References HcalChannelQualityXml::_ChannelQuality::comment, HcalChannelQualityXml::_ChannelQuality::onoff, and HcalChannelQualityXml::_ChannelQuality::status.
{ int _geomId = hAss.getGeomId(hAss.getSubdetector(subdetector), ieta, iphi, depth); HcalChannelQualityXml::ChannelQuality _cq; _cq.status = _channel_status; _cq.onoff = _on_off; _cq.comment = _comment; if (geomid_cq.find(_geomId)==geomid_cq.end()){ geomid_cq.insert(std::pair<int, HcalChannelQualityXml::ChannelQuality>(_geomId,_cq)); } else{ geomid_cq[_geomId]=_cq; } return 0; }
int HcalChannelQualityXml::dumpIovsFromOmdsToStdout | ( | std::string | tag | ) |
Definition at line 451 of file HcalChannelQualityXml.cc.
References gather_cfg::cout.
int HcalChannelQualityXml::dumpTagsFromOmdsToStdout | ( | void | ) |
Definition at line 409 of file HcalChannelQualityXml.cc.
References gather_cfg::cout, and GlobalPosition_Frontier_DevDB_cff::tag.
std::string HcalChannelQualityXml::get_random_comment | ( | void | ) | [private] |
Definition at line 177 of file HcalChannelQualityXml.cc.
{ return hcal_ass.getRandomQuote(); }
int HcalChannelQualityXml::getBaseLineFromOmds | ( | std::string | _tag, |
int | _iov_begin | ||
) |
Definition at line 186 of file HcalChannelQualityXml.cc.
References benchmark_cfg::cerr, HcalChannelQualityXml::_ChannelQuality::comment, ConnectionManager::connect(), ConnectionManager::disconnect(), ConnectionManager::getStatement(), HcalChannelQualityXml::_ChannelQuality::onoff, o2o::query, HcalChannelQualityXml::_ChannelQuality::status, and toString().
{ static ConnectionManager conn; conn.connect(); std::string query = "select "; //query += " sp.record_id as record_id "; query += " sp.subdet as subdetector "; query += " ,sp.ieta as IETA "; query += " ,sp.iphi as IPHI "; query += " ,sp.depth as DEPTH "; query += " ,sp.channel_status_word as STATUS_WORD "; query += " ,sp.channel_on_off_state as ON_OFF "; query += " ,sp.commentdescription "; //query += " ,sp.channel_map_id detid "; //query += " ,sp.interval_of_validity_begin as IOV_BEGIN "; //query += " ,sp.interval_of_validity_end as IOV_END "; query += "from "; query += " ( "; query += " select MAX(cq.record_id) as record_id "; query += " ,MAX(cq.interval_of_validity_begin) as iov_begin "; query += " ,cq.channel_map_id "; query += " from "; query += " cms_hcl_hcal_cond.v_hcal_channel_quality cq "; query += " where "; query += " tag_name=:1 "; query += " and"; query += " cq.interval_of_validity_begin<=:2"; query += " group by "; query += " cq.channel_map_id "; query += " order by "; query += " cq.channel_map_id "; query += " ) fp "; query += "inner join "; query += " cms_hcl_hcal_cond.v_hcal_channel_quality sp "; query += "on "; query += " fp.record_id=sp.record_id "; int _n_channels = 0; try { oracle::occi::Statement* stmt = conn.getStatement(query); stmt->setString(1,_tag); stmt->setInt(2,_iov_begin); oracle::occi::ResultSet *rs = stmt->executeQuery(); geomid_cq.clear(); //detid_cq.clear(); while (rs->next()) { _n_channels++; int _geomId = hAss.getGeomId(hAss.getSubdetector(rs->getString(1)), rs->getInt(2), rs->getInt(3), rs->getInt(4) ); HcalChannelQualityXml::ChannelQuality _cq; _cq.status = rs->getInt(5); _cq.onoff = rs->getInt(6); _cq.comment = rs->getString(7); geomid_cq.insert(std::pair<int, HcalChannelQualityXml::ChannelQuality>(_geomId, _cq)); } } catch (SQLException& e) { std::cerr << ::toolbox::toString("Oracle exception : %s",e.getMessage().c_str()) << std::endl; XCEPT_RAISE(hcal::exception::ConfigurationDatabaseException,::toolbox::toString("Oracle exception : %s",e.getMessage().c_str())); } conn.disconnect(); return _n_channels; }
std::vector< int > HcalChannelQualityXml::getIovsFromOmds | ( | std::string | tag | ) |
Definition at line 462 of file HcalChannelQualityXml.cc.
References benchmark_cfg::cerr, ConnectionManager::connect(), ConnectionManager::disconnect(), ConnectionManager::getStatement(), o2o::query, and toString().
{ std::vector<int> _iovs; static ConnectionManager conn; conn.connect(); std::string query = "select distinct cq.interval_of_validity_begin, min(record_id) as mrid "; query += "from "; query += "cms_hcl_hcal_cond.v_hcal_channel_quality cq "; query += "where "; query += "tag_name=:1 "; query += "group by cq.interval_of_validity_begin "; query += "order by mrid desc "; int _n_iovs = 0; try { oracle::occi::Statement* stmt = conn.getStatement(query); stmt->setString(1,tag); oracle::occi::ResultSet *rs = stmt->executeQuery(); while (rs->next()) { _n_iovs++; _iovs.push_back( rs->getInt(1) ); } } catch (SQLException& e) { std::cerr << ::toolbox::toString("Oracle exception : %s",e.getMessage().c_str()) << std::endl; XCEPT_RAISE(hcal::exception::ConfigurationDatabaseException,::toolbox::toString("Oracle exception : %s",e.getMessage().c_str())); } conn.disconnect(); return _iovs; }
std::vector< std::string > HcalChannelQualityXml::getTagsFromOmds | ( | void | ) |
Definition at line 420 of file HcalChannelQualityXml.cc.
References benchmark_cfg::cerr, ConnectionManager::connect(), ConnectionManager::disconnect(), ConnectionManager::getStatement(), o2o::query, and toString().
{ std::vector<std::string> _tags; static ConnectionManager conn; conn.connect(); std::string query = "select distinct tag_name, min(record_id) as mrid "; query += "from "; query += "cms_hcl_hcal_cond.v_hcal_channel_quality cq "; query += "group by tag_name "; query += "order by mrid desc "; int _n_tags = 0; try { oracle::occi::Statement* stmt = conn.getStatement(query); oracle::occi::ResultSet *rs = stmt->executeQuery(); while (rs->next()) { _n_tags++; _tags.push_back( rs->getString(1) ); } } catch (SQLException& e) { std::cerr << ::toolbox::toString("Oracle exception : %s",e.getMessage().c_str()) << std::endl; XCEPT_RAISE(hcal::exception::ConfigurationDatabaseException,::toolbox::toString("Oracle exception : %s",e.getMessage().c_str())); } conn.disconnect(); return _tags; }
int HcalChannelQualityXml::makeXmlFromAsciiStream | ( | int | _runnumber, |
int | _iov_begin, | ||
int | _iov_end, | ||
std::string | _tag, | ||
std::string | _elements_comment, | ||
std::string | _base = "hex" |
||
) |
Definition at line 378 of file HcalChannelQualityXml.cc.
References TablePrint::write.
{ readStatusWordFromStdin(_base); set_header_run_number(_runnumber); set_elements_iov_begin(_iov_begin); set_elements_iov_end(_iov_end); set_elements_tag_name(_tag); set_elements_comment(_elements_comment); addChannelQualityGeom(geomid_cq); write(); return 0; }
int HcalChannelQualityXml::readStatusWordFromStdin | ( | std::string | base = "hex" | ) |
Definition at line 293 of file HcalChannelQualityXml.cc.
References benchmark_cfg::cerr, HcalChannelQualityXml::_ChannelQuality::comment, cmsRelvalreport::exit, HcalChannelQualityXml::_ChannelQuality::onoff, and HcalChannelQualityXml::_ChannelQuality::status.
{ std::string _row; int _lines = 0; ChannelQuality _cq; _cq.onoff = 0; _cq.status = 0; _cq.comment = "filled from an ASCII stream"; geomid_cq.clear(); while ( getline( std::cin, _row ) > 0 ){ //#(empty) eta phi dep det value DetId(optional) int _eta, _phi, _dep, _value; char _det[32]; int _read; if ( base.find("hex")!=std::string::npos ){ const char * _format = "%d %d %d %s %X"; _read = sscanf( _row . c_str(), _format, &_eta, &_phi, &_dep, _det, &_value ); } else if ( base.find("dec")!=std::string::npos ){ const char * _format = "%d %d %d %s %d"; _read = sscanf( _row . c_str(), _format, &_eta, &_phi, &_dep, _det, &_value ); } else{ std::cerr << "Undefined or invalid base. Specify hex or dec. Exiting..." << std::endl; exit(-1); } if ( _read == 5 ){ _lines++; int _geomId = hAss.getGeomId(hAss.getSubdetector(std::string(_det)) , _eta, _phi, _dep); _cq.status = _value; _cq.onoff = (_value & 65536)>>15; geomid_cq.insert(std::pair<int, HcalChannelQualityXml::ChannelQuality>(_geomId, _cq)); //std::cerr << "Line: " << _geomId << " " << _cq.status << std::endl; } } return _lines; }
int HcalChannelQualityXml::set_all_channels_on_off | ( | int | _hb, |
int | _he, | ||
int | _hf, | ||
int | _ho | ||
) |
Definition at line 107 of file HcalChannelQualityXml.cc.
References HcalChannelIterator::begin(), HcalChannelIterator::end(), HcalChannelIterator::getDepth(), HcalChannelIterator::getHcalSubdetector(), HcalChannelIterator::getIeta(), HcalChannelIterator::getIphi(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalChannelIterator::initHBEFListFromLmapAscii(), and HcalChannelIterator::next().
{ HcalChannelIterator iter; iter.initHBEFListFromLmapAscii(); std::string _subdetector = ""; int _onoff = -1; std::string _comment = get_random_comment(); for (iter.begin(); !iter.end(); iter.next()){ HcalSubdetector _det = iter.getHcalSubdetector(); if (_det == HcalBarrel){ _subdetector = "HB"; _onoff = _hb; } else if (_det == HcalEndcap){ _subdetector = "HE"; _onoff = _he; } if (_det == HcalForward){ _subdetector = "HF"; _onoff = _hf; } if (_det == HcalOuter){ _subdetector = "HO"; _onoff = _ho; } add_hcal_channel_dataset( iter.getIeta(), iter.getIphi(), iter.getDepth(), _subdetector, 0, _onoff, _comment ); } return 0; }
int HcalChannelQualityXml::set_all_channels_status | ( | uint32_t | _hb, |
uint32_t | _he, | ||
uint32_t | _hf, | ||
uint32_t | _ho | ||
) |
Definition at line 140 of file HcalChannelQualityXml.cc.
References HcalChannelIterator::begin(), HcalChannelIterator::end(), HcalChannelIterator::getDepth(), HcalChannelIterator::getHcalSubdetector(), HcalChannelIterator::getIeta(), HcalChannelIterator::getIphi(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalChannelIterator::initHBEFListFromLmapAscii(), and HcalChannelIterator::next().
{ HcalChannelIterator iter; iter.initHBEFListFromLmapAscii(); std::string _subdetector = ""; uint32_t _status = 0; int _onoff = 0; std::string _comment = get_random_comment(); for (iter.begin(); !iter.end(); iter.next()){ HcalSubdetector _det = iter.getHcalSubdetector(); if (_det == HcalBarrel){ _subdetector = "HB"; _status = _hb; } else if (_det == HcalEndcap){ _subdetector = "HE"; _status = _he; } else if (_det == HcalForward){ _subdetector = "HF"; _status = _hf; } else if (_det == HcalOuter){ _subdetector = "HO"; _status = _ho; } else continue; add_hcal_channel_dataset( iter.getIeta(), iter.getIphi(), iter.getDepth(), _subdetector, _status, _onoff, _comment ); } return 0; }
int HcalChannelQualityXml::writeBaseLineFromOmdsToStdout | ( | std::string | _tag, |
int | _iov_begin, | ||
std::string | base = "hex" |
||
) |
Definition at line 398 of file HcalChannelQualityXml.cc.
{ getBaseLineFromOmds(_tag, _iov_begin); writeStatusWordToStdout(base); return 0; }
int HcalChannelQualityXml::writeStatusWordToStdout | ( | std::string | base = "hex" | ) |
Definition at line 337 of file HcalChannelQualityXml.cc.
References benchmark_cfg::cerr, gather_cfg::cout, and cmsRelvalreport::exit.
{ int _lines = 0; char _buf[128]; int _detId = 0; // dummy as it is optional in the ASCII file sprintf(_buf, "# eta phi dep det value DetId"); std::cout << _buf << std::endl; for (std::map<int,ChannelQuality>::const_iterator _cq = geomid_cq.begin(); _cq != geomid_cq.end(); _cq++){ _lines++; _detId = hAss.getRawIdFromCmssw(_cq->first); if ( base.find("hex")!=std::string::npos ){ sprintf(_buf," %16d%16d%16d%16s%16.8X%11.8X", hAss.getHcalIeta(_cq->first), hAss.getHcalIphi(_cq->first), hAss.getHcalDepth(_cq->first), hAss.getSubdetectorString(hAss.getHcalSubdetector(_cq->first)).c_str(), _cq->second.status, _detId ); } else if ( base.find("dec")!=std::string::npos ){ sprintf(_buf," %16d%16d%16d%16s%16d%11.8d", hAss.getHcalIeta(_cq->first), hAss.getHcalIphi(_cq->first), hAss.getHcalDepth(_cq->first), hAss.getSubdetectorString(hAss.getHcalSubdetector(_cq->first)).c_str(), _cq->second.status, _detId ); } else{ std::cerr << "Undefined or invalid base. Specify hex or dec. Exiting..." << std::endl; exit(-1); } std::cout << _buf << std::endl; } return _lines; }
std::map<int,ChannelQuality> HcalChannelQualityXml::detid_cq |
Definition at line 100 of file HcalChannelQualityXml.h.
std::map<int,ChannelQuality> HcalChannelQualityXml::geomid_cq |
Definition at line 101 of file HcalChannelQualityXml.h.
HcalAssistant HcalChannelQualityXml::hAss [private] |
Definition at line 105 of file HcalChannelQualityXml.h.