test
CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Protected Attributes
HcalLutManager Class Reference

Various manipulations with trigger Lookup Tables. More...

#include <HcalLutManager.h>

Public Member Functions

void addLutMap (std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
 
int create_lut_loader (std::string file_list, std::string _prefix, std::string tag_name, std::string comment="default comment", std::string version="V00-01-01", int subversion=1)
 
int createAllLutXmlFiles (std::string _tag, std::string _lin_file, std::string _comp_file, bool split_by_crate=true)
 
int createAllLutXmlFilesFromCoder (const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
 
int createAllLutXmlFilesLinAsciiCompCoder (std::string _tag, std::string _lin_file, bool split_by_crate=true)
 
int createCompLutXmlFilesFromCoder (std::string _tag, bool split_by_crate=true)
 
int createLinLutXmlFiles (std::string _tag, std::string _lin_file, bool split_by_crate=true)
 
int createLutXmlFiles_HBEFFromCoder_HOFromAscii (std::string _tag, const HcalTPGCoder &_coder, std::string _lin_file, bool split_by_crate=true)
 
int createLutXmlFiles_HBEFFromCoder_HOFromAscii (std::string _tag, const HcalTPGCoder &_coder, const CaloTPGTranscoderULUT &_transcoder, std::string _lin_file, bool split_by_crate=true)
 
int createLutXmlFiles_HBEFFromCoder_HOFromAscii_ZDC (std::string _tag, const HcalTPGCoder &_coder, const CaloTPGTranscoderULUT &_transcoder, std::string _lin_file, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
get_brickSet_from_oracle (std::string tag, const std::string _accessor="occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22")
 
std::string get_checksum (std::vector< unsigned int > &lut)
 
int get_xml_files_from_db (std::string tag, const std::string db_accessor="occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22", bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getCompressionLutXmlFromAsciiMaster (std::string _filename, std::string _tag, int _crate=-1, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getCompressionLutXmlFromCoder (std::string _tag, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getCompressionLutXmlFromCoder (const CaloTPGTranscoderULUT &_coder, std::string _tag, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getLinearizationLutXmlFromAsciiMasterEmap (std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getLinearizationLutXmlFromAsciiMasterEmap_new (std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getLinearizationLutXmlFromCoder (const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getLinearizationLutXmlFromCoderEmap (const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
 
std::vector< unsigned int > getLutFromXml (std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt)
 
std::vector< unsigned int > getLutFromXml_old (std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt)
 
HcalLutSet getLutSetFromFile (std::string _filename, int _type=1)
 
std::string & getLutXml (std::vector< unsigned int > &_lut)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getLutXmlFromAsciiMaster (std::string _filename, std::string _tag, int _crate=-1, bool split_by_crate=true)
 
std::map< int,
boost::shared_ptr< LutXml > > 
getZdcLutXml (std::string _tag, bool split_by_crate=true)
 
 HcalLutManager ()
 
 HcalLutManager (std::vector< HcalGenericDetId > &map)
 
 HcalLutManager (const HcalElectronicsMap *_emap, const HcalChannelQuality *_cq=0, uint32_t _status_word_to_mask=0x0000)
 
void init (void)
 
int initChannelIterator (std::vector< HcalGenericDetId > &map)
 
int local_connect (std::string lut_xml_file, std::string lmap_hbef_file, std::string lmap_ho_file)
 
int read_lmap (std::string lmap_hbef_file, std::string lmap_ho_file)
 
int read_luts (std::string lut_xml_file)
 
int test_direct_xml_parsing (std::string _filename)
 
void test_emap (void)
 
int test_xml_access (std::string _tag, std::string _filename)
 
int writeLutXmlFiles (std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
 
 ~HcalLutManager ()
 

Static Public Member Functions

static HcalSubdetector get_subdetector (std::string _subdet)
 
static std::string get_time_stamp (time_t _time)
 
static int getInt (std::string number)
 

Protected Attributes

HcalAssistant _ass
 
HcalChannelIterator _iter
 
const HcalChannelQualitycq
 
HCALConfigDBdb
 
const HcalElectronicsMapemap
 
LMaplmap
 
XMLDOMBlocklut_checksums_xml
 
LutXmllut_xml
 
uint32_t status_word_to_mask
 

Detailed Description

Various manipulations with trigger Lookup Tables.

Author
Gena Kukartsev, Brown University, March 14, 2008

Definition at line 43 of file HcalLutManager.h.

Constructor & Destructor Documentation

HcalLutManager::HcalLutManager ( void  )

Definition at line 43 of file HcalLutManager.cc.

References init.

44 {
45  init();
46 }
void init(void)
HcalLutManager::HcalLutManager ( std::vector< HcalGenericDetId > &  map)

Definition at line 49 of file HcalLutManager.cc.

References init.

50 {
51  init();
52  _iter . init(map);
53 }
HcalChannelIterator _iter
void init(void)
HcalLutManager::HcalLutManager ( const HcalElectronicsMap _emap,
const HcalChannelQuality _cq = 0,
uint32_t  _status_word_to_mask = 0x0000 
)

Definition at line 56 of file HcalLutManager.cc.

References init.

59 {
60  init();
61  emap = _emap;
62  cq = _cq;
63  status_word_to_mask = _status_word_to_mask;
64 }
const HcalChannelQuality * cq
void init(void)
const HcalElectronicsMap * emap
uint32_t status_word_to_mask
HcalLutManager::~HcalLutManager ( void  )

Definition at line 80 of file HcalLutManager.cc.

References EcalCondDB::db.

81 {
82  delete lut_xml;
83  delete lut_checksums_xml;
84  delete db;
85  delete lmap;
86 }
HCALConfigDB * db
XMLDOMBlock * lut_checksums_xml

Member Function Documentation

void HcalLutManager::addLutMap ( std::map< int, boost::shared_ptr< LutXml > > &  result,
const std::map< int, boost::shared_ptr< LutXml > > &  other 
)

Definition at line 1128 of file HcalLutManager.cc.

References gather_cfg::cout, edm::eventsetup::heterocontainer::insert(), lumiPlot::lut, python.multivaluedict::map(), and query::result.

1129 {
1130  for ( std::map<int, boost::shared_ptr<LutXml> >::const_iterator lut=other.begin(); lut!=other.end(); lut++ ){
1131  std::cout << "Added LUTs for crate " << lut->first << std::endl;
1132  if ( result.count(lut->first)==0 ){
1133  result . insert( *lut );
1134  }
1135  else{
1136  *(result[lut->first]) += *(lut->second);
1137  }
1138  }
1139 }
tuple result
Definition: query.py:137
tuple lut
Definition: lumiPlot.py:244
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:49
tuple cout
Definition: gather_cfg.py:121
int HcalLutManager::create_lut_loader ( std::string  file_list,
std::string  _prefix,
std::string  tag_name,
std::string  comment = "default comment",
std::string  version = "V00-01-01",
int  subversion = 1 
)

Definition at line 1421 of file HcalLutManager.cc.

References python.multivaluedict::append(), begin, comment, dbtoconf::conf, gather_cfg::cout, XMLLUTLoader::_lutDBConfig::crate, end, cmsHarvester::file_name, getInt(), NULL, HcalQIEManager::splitString(), AlCaHLTBitMon_QueryRunRegistry::string, XMLProcessor::_DBConfig::subversion, cond::rpcobgas::time, XMLProcessor::_DBConfig::version, relval_steps::version, and TablePrint::write.

1422 {
1423  std::cout << "Generating XML loader for LUTs..." << std::endl;
1424  //std::cout << _prefix << "..." << tag_name << std::endl;
1425 
1429 
1430  baseConf . tag_name = tag_name;
1431  //baseConf . comment_description = tag_name;
1432  baseConf . comment_description = comment;
1433  baseConf . iov_begin = "1";
1434  baseConf . iov_end = "-1";
1435 
1436  conf . version = version;
1437 
1438  std::stringstream _subversion;
1439  _subversion << subversion;
1440  conf . subversion = _subversion.str();
1441 
1442  CSconf . version = conf . version;
1443  CSconf . subversion = conf . subversion;
1444  CSconf . trig_prim_lookuptbl_data_file = _prefix + "_checksums.xml.dat";
1445  CSconf . comment_description = tag_name;
1446 
1447  XMLLUTLoader doc( &baseConf );
1448 
1449  std::vector<int> crate_number;
1450  std::vector<std::string> file_name = HcalQIEManager::splitString(file_list);
1451  for (std::vector<std::string>::const_iterator _f = file_name.begin(); _f != file_name.end(); _f++){
1452  int crate_begin = _f->rfind("_");
1453  int crate_end = _f->rfind(".xml.dat");
1454  crate_number . push_back(getInt(_f->substr(crate_begin+1,crate_end-crate_begin-1)));
1455  }
1456  //
1457  //_____ fix due to the new convention: version/subversion combo must be unique for every payload
1458  //
1459  char _buf[128];
1460  time_t _offset = time(NULL);
1461  sprintf( _buf, "%d", (uint32_t)_offset );
1462  conf.version.append(".");
1463  conf.version.append(_buf);
1464  CSconf.version = conf.version;
1465  //
1466  for ( std::vector<std::string>::const_iterator _file = file_name . begin(); _file != file_name . end(); _file++ )
1467  {
1468  conf . trig_prim_lookuptbl_data_file = *_file;
1469  //conf . trig_prim_lookuptbl_data_file += ".dat";
1470  conf . crate = crate_number[ _file - file_name . begin() ];
1471  //
1472  //_____ fix due to the new convention: version/subversion combo must be unique for every payload
1473  //
1474  sprintf( _buf, "%.2d", conf.crate );
1475  conf.subversion.clear();
1476  conf.subversion.append(_buf);
1477  sprintf( _buf, "CRATE%.2d", conf . crate );
1478  std::string _namelabel;
1479  _namelabel . append( _buf );
1480  conf . name_label = _namelabel;
1481  doc . addLUT( &conf );
1482  }
1483 
1484  doc . addChecksums( &CSconf );
1485  //doc . write( _prefix + "_Loader.xml" );
1486  doc . write( tag_name + "_Loader.xml" );
1487 
1488  std::cout << "Generating XML loader for LUTs... done." << std::endl;
1489 
1490  return 0;
1491 }
#define NULL
Definition: scimark2.h:8
static std::vector< std::string > splitString(const std::string &fLine)
#define end
Definition: vmac.h:37
tuple conf
Definition: dbtoconf.py:185
#define begin
Definition: vmac.h:30
static int getInt(std::string number)
tuple cout
Definition: gather_cfg.py:121
#define comment(par)
Definition: vmac.h:161
int HcalLutManager::createAllLutXmlFiles ( std::string  _tag,
std::string  _lin_file,
std::string  _comp_file,
bool  split_by_crate = true 
)

Definition at line 987 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

988 {
989  //std::cout << "DEBUG1: split_by_crate = " << split_by_crate << std::endl;
990  std::map<int, boost::shared_ptr<LutXml> > xml;
991  if ( !lut_checksums_xml ){
992  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
993  }
994 
995  if ( _lin_file.size() != 0 ){
996  //addLutMap( xml, getLutXmlFromAsciiMaster( _lin_file, _tag, -1, split_by_crate ) );
997  addLutMap( xml, getLinearizationLutXmlFromAsciiMasterEmap( _lin_file, _tag, -1, split_by_crate ) );
998  }
999  if ( _comp_file.size() != 0 ){
1000  //std::cout << "DEBUG1!!!!" << std::endl;
1001  addLutMap( xml, getCompressionLutXmlFromAsciiMaster( _comp_file, _tag, -1, split_by_crate ) );
1002  //std::cout << "DEBUG2!!!!" << std::endl;
1003  }
1004  writeLutXmlFiles( xml, _tag, split_by_crate );
1005 
1006  std::string checksums_file = _tag + "_checksums.xml";
1007  lut_checksums_xml -> write( checksums_file . c_str() );
1008 
1009  return 0;
1010 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromAsciiMaster(std::string _filename, std::string _tag, int _crate=-1, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
int HcalLutManager::createAllLutXmlFilesFromCoder ( const HcalTPGCoder _coder,
std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 1030 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1031 {
1032  //std::cout << "DEBUG1: split_by_crate = " << split_by_crate << std::endl;
1033  std::map<int, boost::shared_ptr<LutXml> > xml;
1034  if ( !lut_checksums_xml ){
1035  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1036  }
1037 
1038  //addLutMap( xml, getLinearizationLutXmlFromCoder( _coder, _tag, split_by_crate ) );
1039  addLutMap( xml, getLinearizationLutXmlFromCoderEmap( _coder, _tag, split_by_crate ) );
1040  addLutMap( xml, getCompressionLutXmlFromCoder( _tag, split_by_crate ) );
1041 
1042  writeLutXmlFiles( xml, _tag, split_by_crate );
1043 
1044  std::string checksums_file = _tag + "_checksums.xml";
1045  lut_checksums_xml -> write( checksums_file . c_str() );
1046 
1047  return 0;
1048 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromCoderEmap(const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
int HcalLutManager::createAllLutXmlFilesLinAsciiCompCoder ( std::string  _tag,
std::string  _lin_file,
bool  split_by_crate = true 
)

Definition at line 1106 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1107 {
1108  //std::cout << "DEBUG1: split_by_crate = " << split_by_crate << std::endl;
1109  std::map<int, boost::shared_ptr<LutXml> > xml;
1110  if ( !lut_checksums_xml ){
1111  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1112  }
1113 
1114  if ( _lin_file.size() != 0 ){
1115  addLutMap( xml, getLutXmlFromAsciiMaster( _lin_file, _tag, -1, split_by_crate ) );
1116  }
1117  addLutMap( xml, getCompressionLutXmlFromCoder( _tag, split_by_crate ) );
1118  writeLutXmlFiles( xml, _tag, split_by_crate );
1119 
1120  std::string checksums_file = _tag + "_checksums.xml";
1121  lut_checksums_xml -> write( checksums_file . c_str() );
1122 
1123  return 0;
1124 }
std::map< int, boost::shared_ptr< LutXml > > getLutXmlFromAsciiMaster(std::string _filename, std::string _tag, int _crate=-1, bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
int HcalLutManager::createCompLutXmlFilesFromCoder ( std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 1012 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1013 {
1014  //std::cout << "DEBUG1: split_by_crate = " << split_by_crate << std::endl;
1015  std::map<int, boost::shared_ptr<LutXml> > xml;
1016  if ( !lut_checksums_xml ){
1017  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1018  }
1019 
1020  addLutMap( xml, getCompressionLutXmlFromCoder( _tag, split_by_crate ) );
1021 
1022  writeLutXmlFiles( xml, _tag, split_by_crate );
1023 
1024  std::string checksums_file = _tag + "_checksums.xml";
1025  lut_checksums_xml -> write( checksums_file . c_str() );
1026 
1027  return 0;
1028 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
int HcalLutManager::createLinLutXmlFiles ( std::string  _tag,
std::string  _lin_file,
bool  split_by_crate = true 
)

Definition at line 968 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

969 {
970  //std::cout << "DEBUG1: split_by_crate = " << split_by_crate << std::endl;
971  std::map<int, boost::shared_ptr<LutXml> > xml;
972  if ( !lut_checksums_xml ){
973  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
974  }
975 
976  if ( _lin_file.size() != 0 ){
977  addLutMap( xml, getLinearizationLutXmlFromAsciiMasterEmap( _lin_file, _tag, -1, split_by_crate ) );
978  }
979  writeLutXmlFiles( xml, _tag, split_by_crate );
980 
981  std::string checksums_file = _tag + "_checksums.xml";
982  lut_checksums_xml -> write( checksums_file . c_str() );
983 
984  return 0;
985 }
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
int HcalLutManager::createLutXmlFiles_HBEFFromCoder_HOFromAscii ( std::string  _tag,
const HcalTPGCoder _coder,
std::string  _lin_file,
bool  split_by_crate = true 
)

Definition at line 1079 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1080 {
1081  std::map<int, boost::shared_ptr<LutXml> > xml;
1082  if ( !lut_checksums_xml ){
1083  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1084  }
1085 
1086  if ( _lin_file.size() != 0 ){
1087  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_ascii_xml = getLinearizationLutXmlFromAsciiMasterEmap( _lin_file, _tag, -1, split_by_crate );
1088  addLutMap( xml, _lin_lut_ascii_xml );
1089  }
1090  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_xml = getLinearizationLutXmlFromCoderEmap( _coder, _tag, split_by_crate );
1091  addLutMap( xml, _lin_lut_xml );
1092  //
1093  const std::map<int, boost::shared_ptr<LutXml> > _comp_lut_xml = getCompressionLutXmlFromCoder( _tag, split_by_crate );
1094  addLutMap( xml, _comp_lut_xml );
1095 
1096  writeLutXmlFiles( xml, _tag, split_by_crate );
1097 
1098  std::string checksums_file = _tag + "_checksums.xml";
1099  lut_checksums_xml -> write( checksums_file . c_str() );
1100 
1101  return 0;
1102 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromCoderEmap(const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
int HcalLutManager::createLutXmlFiles_HBEFFromCoder_HOFromAscii ( std::string  _tag,
const HcalTPGCoder _coder,
const CaloTPGTranscoderULUT _transcoder,
std::string  _lin_file,
bool  split_by_crate = true 
)

Definition at line 1053 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1054 {
1055  std::map<int, boost::shared_ptr<LutXml> > xml;
1056  if ( !lut_checksums_xml ){
1057  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1058  }
1059 
1060  if ( _lin_file.size() != 0 ){
1061  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_ascii_xml = getLinearizationLutXmlFromAsciiMasterEmap( _lin_file, _tag, -1, split_by_crate );
1062  addLutMap( xml, _lin_lut_ascii_xml );
1063  }
1064  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_xml = getLinearizationLutXmlFromCoderEmap( _coder, _tag, split_by_crate );
1065  addLutMap( xml, _lin_lut_xml );
1066  //
1067  const std::map<int, boost::shared_ptr<LutXml> > _comp_lut_xml = getCompressionLutXmlFromCoder( _transcoder, _tag, split_by_crate );
1068  addLutMap( xml, _comp_lut_xml );
1069 
1070  writeLutXmlFiles( xml, _tag, split_by_crate );
1071 
1072  std::string checksums_file = _tag + "_checksums.xml";
1073  lut_checksums_xml -> write( checksums_file . c_str() );
1074 
1075  return 0;
1076 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromCoderEmap(const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
int HcalLutManager::createLutXmlFiles_HBEFFromCoder_HOFromAscii_ZDC ( std::string  _tag,
const HcalTPGCoder _coder,
const CaloTPGTranscoderULUT _transcoder,
std::string  _lin_file,
bool  split_by_crate = true 
)

Definition at line 1554 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string, and TablePrint::write.

1555 {
1556  std::map<int, boost::shared_ptr<LutXml> > xml;
1557  if ( !lut_checksums_xml ){
1558  lut_checksums_xml = new XMLDOMBlock( "CFGBrick", 1 );
1559  }
1560 
1561  if ( _lin_file.size() != 0 ){
1562  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_ascii_xml = getLinearizationLutXmlFromAsciiMasterEmap( _lin_file, _tag, -1, split_by_crate );
1563  addLutMap( xml, _lin_lut_ascii_xml );
1564  }
1565  const std::map<int, boost::shared_ptr<LutXml> > _lin_lut_xml = getLinearizationLutXmlFromCoderEmap( _coder, _tag, split_by_crate );
1566  addLutMap( xml, _lin_lut_xml );
1567  //
1568  const std::map<int, boost::shared_ptr<LutXml> > _comp_lut_xml = getCompressionLutXmlFromCoder( _transcoder, _tag, split_by_crate );
1569  addLutMap( xml, _comp_lut_xml );
1570  //
1571  const std::map<int, boost::shared_ptr<LutXml> > _zdc_lut_xml = getZdcLutXml( _tag, split_by_crate );
1572  addLutMap( xml, _zdc_lut_xml );
1573 
1574  writeLutXmlFiles( xml, _tag, split_by_crate );
1575 
1576  std::string checksums_file = _tag + "_checksums.xml";
1577  lut_checksums_xml -> write( checksums_file . c_str() );
1578 
1579  return 0;
1580 }
std::map< int, boost::shared_ptr< LutXml > > getCompressionLutXmlFromCoder(std::string _tag, bool split_by_crate=true)
void addLutMap(std::map< int, boost::shared_ptr< LutXml > > &result, const std::map< int, boost::shared_ptr< LutXml > > &other)
std::map< int, boost::shared_ptr< LutXml > > getZdcLutXml(std::string _tag, bool split_by_crate=true)
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
XMLDOMBlock * lut_checksums_xml
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromCoderEmap(const HcalTPGCoder &_coder, std::string _tag, bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > getLinearizationLutXmlFromAsciiMasterEmap(std::string _filename, std::string _tag, int _crate, bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::get_brickSet_from_oracle ( std::string  tag,
const std::string  _accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22" 
)

Definition at line 1350 of file HcalLutManager.cc.

References convertSQLitetoXML_cfg::connect, gather_cfg::cout, EcalCondDB::db, alignCSCRings::e, XMLProcessor::getInstance(), o2o::query, AlCaHLTBitMon_QueryRunRegistry::string, and toolbox::toString().

1351 {
1352  HCALConfigDB * db = new HCALConfigDB();
1353  XMLProcessor::getInstance(); // initialize xerces-c engine
1354  //const std::string _accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22";
1355  db -> connect( _accessor );
1356  oracle::occi::Connection * _connection = db -> getConnection();
1357 
1358  std::cout << "Preparing to request the LUT CLOBs from the database..." << std::endl;
1359 
1360  //int crate = 0;
1361 
1362  //
1363  // _____ query is different for the old validation DB _________________
1364  //
1365  //std::string query = ("SELECT TRIG_PRIM_LOOKUPTBL_DATA_CLOB, CRATE FROM CMS_HCL_HCAL_CONDITION_OWNER.V_HCAL_TRIG_LOOKUP_TABLES");
1366  std::string query = ("SELECT TRIG_PRIM_LOOKUPTBL_DATA_CLOB, CRATE FROM CMS_HCL_HCAL_COND.V_HCAL_TRIG_LOOKUP_TABLES");
1367  //query+=toolbox::toString(" WHERE TAG_NAME='%s' AND CRATE=%d", tag.c_str(), crate);
1368  query+=toolbox::toString(" WHERE TAG_NAME='%s'", tag.c_str() );
1369 
1370  std::string brick_set;
1371 
1372  std::map<int, boost::shared_ptr<LutXml> > lut_map;
1373 
1374  try {
1375  //SELECT
1376  std::cout << "Executing the query..." << std::endl;
1377  Statement* stmt = _connection -> createStatement();
1378  ResultSet *rs = stmt->executeQuery(query.c_str());
1379  std::cout << "Executing the query... done" << std::endl;
1380 
1381  std::cout << "Processing the query results..." << std::endl;
1382  //RooGKCounter _lines;
1383  while (rs->next()) {
1384  //_lines.count();
1385  oracle::occi::Clob clob = rs->getClob (1);
1386  int crate = rs->getInt(2);
1387  if ( crate != -1 ){ // not a brick with checksums
1388  cout << "Getting LUTs for crate #" << crate << " out of the database...";
1389  brick_set = db -> clobToString(clob);
1390  /*
1391  // FIXME: DEBUG lut xml files from simple strings
1392  stringstream file_name;
1393  ofstream out_file;
1394  file_name << tag << "_" << crate << "_debug" << ".xml";
1395  out_file . open( file_name.str().c_str() );
1396  out_file << brick_set;
1397  out_file . close();
1398  */
1399  const char * bs = brick_set . c_str();
1400  MemBufInputSource * lut_clob = new MemBufInputSource( (const XMLByte *)bs, strlen( bs ), "lut_clob", false );
1401  boost::shared_ptr<LutXml> lut_xml = boost::shared_ptr<LutXml>( new LutXml( *lut_clob ) );
1402  lut_map[crate] = lut_xml;
1403  std::cout << " done" << std::endl;
1404  }
1405  }
1406  //Always terminate statement
1407  _connection -> terminateStatement(stmt);
1408  //std::cout << "Query line count: " << _lines.getCount() << std::endl;
1409  } catch (SQLException& e) {
1410  XCEPT_RAISE(hcal::exception::ConfigurationDatabaseException,::toolbox::toString("Oracle exception : %s",e.getMessage().c_str()));
1411  }
1412 
1413  //std::cout << lut_map.size() << std::endl;
1414 
1415  db -> disconnect();
1416  //delete db;
1417  return lut_map;
1418 }
Definition: LutXml.h:27
oracle::occi::SQLException SQLException
Definition: HcalDbOmds.cc:27
HCALConfigDB * db
std::string toString(const char *format,...)
Definition: xdaq_compat.cc:4
Gather config data from online DB.
Definition: HCALConfigDB.h:21
oracle::occi::ResultSet ResultSet
Definition: HcalDbOmds.cc:26
tuple query
Definition: o2o.py:269
tuple cout
Definition: gather_cfg.py:121
static XMLProcessor * getInstance()
Definition: XMLProcessor.h:145
std::string HcalLutManager::get_checksum ( std::vector< unsigned int > &  lut)
HcalSubdetector HcalLutManager::get_subdetector ( std::string  _subdet)
static

Definition at line 122 of file HcalLutManager.cc.

References HcalBarrel, HcalEndcap, HcalForward, HcalOther, HcalOuter, and query::result.

123 {
125  if ( _det.find("HB") != std::string::npos ) result = HcalBarrel;
126  else if ( _det.find("HE") != std::string::npos ) result = HcalEndcap;
127  else if ( _det.find("HF") != std::string::npos ) result = HcalForward;
128  else if ( _det.find("HO") != std::string::npos ) result = HcalOuter;
129  else result = HcalOther;
130 
131  return result;
132 }
tuple result
Definition: query.py:137
HcalSubdetector
Definition: HcalAssistant.h:31
string HcalLutManager::get_time_stamp ( time_t  _time)
static

Definition at line 1144 of file HcalLutManager.cc.

References AlCaHLTBitMon_QueryRunRegistry::string.

1145 {
1146  char timebuf[50];
1147  //strftime( timebuf, 50, "%c", gmtime( &_time ) );
1148  strftime( timebuf, 50, "%Y-%m-%d %H:%M:%S", gmtime( &_time ) );
1149  std::string creationstamp = timebuf;
1150 
1151  return creationstamp;
1152 }
int HcalLutManager::get_xml_files_from_db ( std::string  tag,
const std::string  db_accessor = "occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22",
bool  split_by_crate = true 
)

Definition at line 1331 of file HcalLutManager.cc.

References python.multivaluedict::map(), query::result, and TablePrint::write.

1332 {
1333  std::map<int, boost::shared_ptr<LutXml> > lut_map = get_brickSet_from_oracle( tag, db_accessor );
1334  if (split_by_crate){
1335  writeLutXmlFiles( lut_map, tag, split_by_crate );
1336  }
1337  else{
1338  LutXml result;
1339  for( std::map<int, boost::shared_ptr<LutXml> >::const_iterator xml = lut_map.begin(); xml != lut_map.end(); xml++ ){
1340  result += *(xml->second);
1341  }
1342  std::stringstream out_file;
1343  out_file << tag << ".xml";
1344  result . write(out_file.str());
1345  }
1346 
1347  return 0;
1348 }
Definition: LutXml.h:27
std::map< int, boost::shared_ptr< LutXml > > get_brickSet_from_oracle(std::string tag, const std::string _accessor="occi://CMS_HCL_PRTTYPE_HCAL_READER@anyhost/int2r?PASSWORD=HCAL_Reader_88,LHWM_VERSION=22")
tuple result
Definition: query.py:137
int writeLutXmlFiles(std::map< int, boost::shared_ptr< LutXml > > &_xml, std::string _tag="default_tag", bool split_by_crate=true)
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getCompressionLutXmlFromAsciiMaster ( std::string  _filename,
std::string  _tag,
int  _crate = -1,
bool  split_by_crate = true 
)

Definition at line 530 of file HcalLutManager.cc.

References python.rootplot.argparse::_set, funct::abs(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, HcalLutSet::eta_max, HcalLutSet::eta_min, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, EMap::get_map(), RooGKCounter::getCount(), CaloTPGTranscoderULUT::HTvalid(), i, LutXml::_Config::ieta, LutXml::_Config::iphi, HcalLutSet::lut, LutXml::_Config::lut, LutXml::_Config::lut_type, HcalLutSet::phi_max, HcalLutSet::phi_min, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

531 {
532  std::cout << "Generating compression (output) LUTs from ascii master file..." << std::endl;
533  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
534 
535  std::cout << "instantiating CaloTPGTranscoderULUT in order to check the validity of (ieta,iphi)..." << std::endl;
536  CaloTPGTranscoderULUT _coder;
537 
538  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.03_080817.txt");
539  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.04_080905.txt");
540  EMap _emap(emap);
541  std::vector<EMap::EMapRow> & _map = _emap.get_map();
542  std::cout << "EMap contains " << _map . size() << " channels" << std::endl;
543 
544  // read LUTs and their eta/phi/depth/subdet ranges
545  HcalLutSet _set = getLutSetFromFile( _filename, 2 );
546  int lut_set_size = _set.lut.size(); // number of different luts
547  std::cout << " ==> " << lut_set_size << " sets of different LUTs read from the master file" << std::endl;
548 
549  //loop over all EMap channels
550  RooGKCounter _counter;
551  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
552  LutXml::Config _cfg;
553 
554  // search for the correct LUT for a given channel,
555  // higher LUT numbers have priority in case of overlapping
556  int lut_index=-1;
557  for ( int i=0; i<lut_set_size; i++ ){
558  if ( row->subdet . find("HT") != std::string::npos &&
559  (row->crate == _crate || _crate == -1) && // -1 stands for all crates
560  _set.eta_min[i] <= row->ieta &&
561  _set.eta_max[i] >= row->ieta &&
562  _set.phi_min[i] <= row->iphi &&
563  _set.phi_max[i] >= row->iphi &&
564  _coder.HTvalid(row->ieta, row->iphi) ){
565  lut_index=i;
566  }
567  }
568  if ( lut_index >= 0 ){
569  if ( _xml.count(row->crate) == 0 && split_by_crate ){
570  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
571  }
572  else if ( _xml.count(0) == 0 && !split_by_crate ){
573  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
574  }
575  _cfg.ieta = row->ieta;
576  _cfg.iphi = row->iphi;
577  _cfg.depth = row->idepth;
578  _cfg.crate = row->crate;
579  _cfg.slot = row->slot;
580  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
581  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
582  else std::cout << "Warning! fpga out of range..." << std::endl;
583  _cfg.fiber = row->fiber;
584  _cfg.fiberchan = row->fiberchan;
585  if (_set.lut[lut_index].size() == 128) _cfg.lut_type = 1;
586  else _cfg.lut_type = 2;
587  _cfg.creationtag = _tag;
588  _cfg.creationstamp = get_time_stamp( time(0) );
589  _cfg.targetfirmware = "1.0.0";
590  _cfg.formatrevision = "1"; //???
591  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
592  // int generalizedIndex=id.ietaAbs()+10000*id.iphi()+
593  // ((id.ieta()<0)?(0):(100));
594  _cfg.generalizedindex =
595  _cfg.iphi*10000+
596  (row->ieta>0)*100+abs(row->ieta);
597  _cfg.lut = _set.lut[lut_index];
598  if (split_by_crate ){
599  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
600  _counter.count();
601  }
602  else{
603  _xml[0]->addLut( _cfg, lut_checksums_xml );
604  _counter.count();
605  }
606  }
607  }
608  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
609  std::cout << "Generating compression (output) LUTs from ascii master file...DONE" << std::endl;
610  return _xml;
611 }
int i
Definition: DBlmapReader.cc:9
std::vector< std::vector< unsigned int > > lut
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
std::vector< int > phi_max
int generalizedindex
Definition: LutXml.h:40
std::vector< int > phi_min
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HcalLutSet getLutSetFromFile(std::string _filename, int _type=1)
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
virtual bool HTvalid(const int ieta, const int iphi) const
const HcalElectronicsMap * emap
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
std::vector< int > eta_max
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
std::vector< int > eta_min
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getCompressionLutXmlFromCoder ( std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 868 of file HcalLutManager.cc.

References funct::abs(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, EMap::get_map(), CaloTPGTranscoderULUT::getCompressionLUT(), RooGKCounter::getCount(), CaloTPGTranscoderULUT::HTvalid(), LutXml::_Config::ieta, LutXml::_Config::iphi, LutXml::_Config::lut, LutXml::_Config::lut_type, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

869 {
870  std::cout << "Generating compression (output) LUTs from CaloTPGTranscoderULUT" << std::endl;
871  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
872 
873  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v5_080208.txt");
874  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.03_080817.txt");
875  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.04_080905.txt");
876  EMap _emap(emap);
877 
878  std::vector<EMap::EMapRow> & _map = _emap.get_map();
879  std::cout << "EMap contains " << _map . size() << " channels" << std::endl;
880 
881  // read LUTs and their eta/phi/depth/subdet ranges
882  //HcalLutSet _set = getLutSetFromFile( _filename, 2 );
883  //int lut_set_size = _set.lut.size(); // number of different luts
884 
885  CaloTPGTranscoderULUT _coder;
886 
887  //loop over all EMap channels
888  RooGKCounter _counter;
889  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
890  LutXml::Config _cfg;
891 
892  // only trigger tower channels
893  // and valid (ieta,iphi)
894  if ( row->subdet . find("HT") != std::string::npos && _coder.HTvalid(row->ieta, row->iphi) ){
895  if ( _xml.count(row->crate) == 0 && split_by_crate ){
896  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
897  }
898  else if ( _xml.count(0) == 0 && !split_by_crate ){
899  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
900  }
901  _cfg.ieta = row->ieta;
902  _cfg.iphi = row->iphi;
903  _cfg.depth = row->idepth;
904  _cfg.crate = row->crate;
905  _cfg.slot = row->slot;
906  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
907  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
908  else std::cout << "Warning! fpga out of range..." << std::endl;
909  _cfg.fiber = row->fiber;
910  _cfg.fiberchan = row->fiberchan;
911  _cfg.lut_type = 2;
912  _cfg.creationtag = _tag;
913  _cfg.creationstamp = get_time_stamp( time(0) );
914  _cfg.targetfirmware = "1.0.0";
915  _cfg.formatrevision = "1"; //???
916  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
917  // int generalizedIndex=id.ietaAbs()+10000*id.iphi()+
918  // ((id.ieta()<0)?(0):(100));
919  _cfg.generalizedindex =
920  _cfg.iphi*10000+
921  (row->ieta>0)*100+abs(row->ieta);
922 
923  // FIXME: work around bug in emap v6: rawId wasn't filled
924  //HcalTrigTowerDetId _detid(row->rawId);
925  HcalTrigTowerDetId _detid(row->ieta, row->iphi);
926 
927  std::vector<unsigned char> coder_lut = _coder.getCompressionLUT(_detid);
928  for (std::vector<unsigned char>::const_iterator _i=coder_lut.begin(); _i!=coder_lut.end();_i++){
929  unsigned int _temp = (unsigned int)(*_i);
930  //if (_temp!=0) std::cout << "DEBUG non-zero LUT!!!!!!!!!!!!!!!" << (*_i) << " " << _temp << std::endl;
931  //unsigned int _temp = 0;
932  _cfg.lut.push_back(_temp);
933  }
934  //_cfg.lut = _set.lut[lut_index];
935 
936  if (split_by_crate ){
937  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
938  _counter.count();
939  }
940  else{
941  _xml[0]->addLut( _cfg, lut_checksums_xml );
942  _counter.count();
943  }
944  }
945  }
946  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
947  std::cout << "Generating compression (output) LUTs from CaloTPGTranscoderULUT...DONE" << std::endl;
948  return _xml;
949 }
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
int generalizedindex
Definition: LutXml.h:40
unsigned long int getCount(void)
virtual std::vector< unsigned char > getCompressionLUT(HcalTrigTowerDetId id) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
virtual bool HTvalid(const int ieta, const int iphi) const
const HcalElectronicsMap * emap
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getCompressionLutXmlFromCoder ( const CaloTPGTranscoderULUT _coder,
std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 786 of file HcalLutManager.cc.

References funct::abs(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, EMap::get_map(), CaloTPGTranscoderULUT::getCompressionLUT(), RooGKCounter::getCount(), CaloTPGTranscoderULUT::HTvalid(), LutXml::_Config::ieta, LutXml::_Config::iphi, LutXml::_Config::lut, LutXml::_Config::lut_type, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

787 {
788  std::cout << "Generating compression (output) LUTs from CaloTPGTranscoderULUT," << std::endl;
789  std::cout << "initialized from Event Setup" << std::endl;
790  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
791 
792  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.04_080905.txt");
793  EMap _emap(emap);
794 
795  std::vector<EMap::EMapRow> & _map = _emap.get_map();
796  std::cout << "EMap contains " << _map . size() << " channels" << std::endl;
797 
798  // read LUTs and their eta/phi/depth/subdet ranges
799  //HcalLutSet _set = getLutSetFromFile( _filename, 2 );
800  //int lut_set_size = _set.lut.size(); // number of different luts
801 
802  //loop over all EMap channels
803  RooGKCounter _counter;
804  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
805  LutXml::Config _cfg;
806 
807  // only trigger tower channels
808  // and valid (ieta,iphi)
809  if ( row->subdet . find("HT") != std::string::npos && _coder.HTvalid(row->ieta, row->iphi) ){
810  if ( _xml.count(row->crate) == 0 && split_by_crate ){
811  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
812  }
813  else if ( _xml.count(0) == 0 && !split_by_crate ){
814  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
815  }
816  _cfg.ieta = row->ieta;
817  _cfg.iphi = row->iphi;
818  _cfg.depth = row->idepth;
819  _cfg.crate = row->crate;
820  _cfg.slot = row->slot;
821  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
822  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
823  else std::cout << "Warning! fpga out of range..." << std::endl;
824  _cfg.fiber = row->fiber;
825  _cfg.fiberchan = row->fiberchan;
826  _cfg.lut_type = 2;
827  _cfg.creationtag = _tag;
828  _cfg.creationstamp = get_time_stamp( time(0) );
829  _cfg.targetfirmware = "1.0.0";
830  _cfg.formatrevision = "1"; //???
831  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
832  // int generalizedIndex=id.ietaAbs()+10000*id.iphi()+
833  // ((id.ieta()<0)?(0):(100));
834  _cfg.generalizedindex =
835  _cfg.iphi*10000+
836  (row->ieta>0)*100+abs(row->ieta);
837 
838  // FIXME: work around bug in emap v6: rawId wasn't filled
839  //HcalTrigTowerDetId _detid(row->rawId);
840  HcalTrigTowerDetId _detid(row->ieta, row->iphi);
841 
842  std::vector<unsigned char> coder_lut = _coder.getCompressionLUT(_detid);
843  for (std::vector<unsigned char>::const_iterator _i=coder_lut.begin(); _i!=coder_lut.end();_i++){
844  unsigned int _temp = (unsigned int)(*_i);
845  //if (_temp!=0) std::cout << "DEBUG non-zero LUT!!!!!!!!!!!!!!!" << (*_i) << " " << _temp << std::endl;
846  //unsigned int _temp = 0;
847  _cfg.lut.push_back(_temp);
848  }
849  //_cfg.lut = _set.lut[lut_index];
850 
851  if (split_by_crate ){
852  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
853  _counter.count();
854  }
855  else{
856  _xml[0]->addLut( _cfg, lut_checksums_xml );
857  _counter.count();
858  }
859  }
860  }
861  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
862  std::cout << "Generating compression (output) LUTs from CaloTPGTranscoderULUT...DONE" << std::endl;
863  return _xml;
864 }
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
int generalizedindex
Definition: LutXml.h:40
unsigned long int getCount(void)
virtual std::vector< unsigned char > getCompressionLUT(HcalTrigTowerDetId id) const
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
virtual bool HTvalid(const int ieta, const int iphi) const
const HcalElectronicsMap * emap
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
int HcalLutManager::getInt ( std::string  number)
static

Definition at line 115 of file HcalLutManager.cc.

References query::result.

Referenced by getLutSetFromFile().

116 {
117  int result;
118  sscanf(number.c_str(), "%d", &result);
119  return result;
120 }
tuple result
Definition: query.py:137
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getLinearizationLutXmlFromAsciiMasterEmap ( std::string  _filename,
std::string  _tag,
int  _crate,
bool  split_by_crate = true 
)

Definition at line 337 of file HcalLutManager.cc.

References python.rootplot.argparse::_set, funct::abs(), ecalMGPA::adc(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, HcalLutSet::depth_max, HcalLutSet::depth_min, HcalLutSet::eta_max, HcalLutSet::eta_min, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, EMap::get_map(), RooGKCounter::getCount(), i, LutXml::_Config::ieta, LutXml::_Config::iphi, HcalLutSet::lut, LutXml::_Config::lut, LutXml::_Config::lut_type, HcalLutSet::phi_max, HcalLutSet::phi_min, findQualityFiles::size, LutXml::_Config::slot, HcalLutSet::subdet, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

338 {
339  std::cout << "Generating linearization (input) LUTs from ascii master file..." << std::endl;
340  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
341 
342  EMap _emap(emap);
343  std::vector<EMap::EMapRow> & _map = _emap.get_map();
344  std::cout << "EMap contains " << _map . size() << " entries" << std::endl;
345 
346  // read LUTs and their eta/phi/depth/subdet ranges
347  HcalLutSet _set = getLutSetFromFile( _filename );
348  int lut_set_size = _set.lut.size(); // number of different luts
349  std::cout << " ==> " << lut_set_size << " sets of different LUTs read from the master file" << std::endl;
350 
351  // setup "zero" LUT for channel masking
352  std::vector<unsigned int> zeroLut;
353  for (size_t adc = 0; adc < 128; adc++) zeroLut.push_back(0);
354 
355  RooGKCounter _counter;
356  //loop over all EMap channels
357  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
358  if( (row->subdet.find("HB")!=string::npos ||
359  row->subdet.find("HE")!=string::npos ||
360  row->subdet.find("HO")!=string::npos ||
361  row->subdet.find("HF")!=string::npos ) &&
362  row->subdet.size()==2
363  ){
364  LutXml::Config _cfg;
365 
366  // search for the correct LUT for a given channel,
367  // higher LUT numbers have priority in case of overlapping
368  int lut_index=-1;
369  for ( int i=0; i<lut_set_size; i++ ){
370  if ( (row->crate == _crate || _crate == -1) && // -1 stands for all crates
371  _set.eta_min[i] <= row->ieta &&
372  _set.eta_max[i] >= row->ieta &&
373  _set.phi_min[i] <= row->iphi &&
374  _set.phi_max[i] >= row->iphi &&
375  _set.depth_min[i] <= row->idepth &&
376  _set.depth_max[i] >= row->idepth &&
377  _set.subdet[i].find(row->subdet)!=string::npos ){
378  lut_index=i;
379  }
380  }
381  if ( lut_index >= 0 ){
382  if ( _xml.count(row->crate) == 0 && split_by_crate ){
383  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
384  }
385  else if ( _xml.count(0) == 0 && !split_by_crate ){
386  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
387  }
388  _cfg.ieta = row->ieta;
389  _cfg.iphi = row->iphi;
390  _cfg.depth = row->idepth;
391  _cfg.crate = row->crate;
392  _cfg.slot = row->slot;
393  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
394  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
395  else std::cout << "Warning! fpga out of range..." << std::endl;
396  _cfg.fiber = row->fiber;
397  _cfg.fiberchan = row->fiberchan;
398  _cfg.lut_type = 1;
399  _cfg.creationtag = _tag;
400  _cfg.creationstamp = get_time_stamp( time(0) );
401  _cfg.targetfirmware = "1.0.0";
402  _cfg.formatrevision = "1"; //???
403  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
404  // int generalizedIndex=id.ietaAbs()+1000*id.depth()+10000*id.iphi()+
405  // ((id.ieta()<0)?(0):(100))+((id.subdet()==HcalForward && id.ietaAbs()==29)?(4*10000):(0));
406  _cfg.generalizedindex =
407  _cfg.iphi*10000 + _cfg.depth*1000 +
408  (row->ieta>0)*100 + abs(row->ieta) +
409  (((row->subdet.find("HF")!=string::npos) && abs(row->ieta)==29)?(4*10000):(0));
410  //
411  // consider channel status here
412  DetId _detId(row->rawId);
413  uint32_t status_word = cq->getValues(_detId)->getValue();
414  if ((status_word & status_word_to_mask) > 0){
415  _cfg.lut = zeroLut;
416  }
417  else{
418  _cfg.lut = _set.lut[lut_index];
419  }
420  if (split_by_crate ){
421  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
422  _counter.count();
423  }
424  else{
425  _xml[0]->addLut( _cfg, lut_checksums_xml );
426  _counter.count();
427  }
428  }
429  }
430  }
431  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
432  std::cout << "Generating linearization (input) LUTs from ascii master file...DONE" << std::endl;
433  return _xml;
434 }
int adc(sample_type sample)
get the ADC sample (12 bits)
int i
Definition: DBlmapReader.cc:9
std::vector< std::vector< unsigned int > > lut
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
std::vector< int > phi_max
int generalizedindex
Definition: LutXml.h:40
std::vector< std::string > subdet
std::vector< int > phi_min
std::vector< int > depth_max
const Item * getValues(DetId fId, bool throwOnFail=true) const
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
const HcalChannelQuality * cq
std::string creationtag
Definition: LutXml.h:36
std::vector< int > depth_min
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HcalLutSet getLutSetFromFile(std::string _filename, int _type=1)
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
const HcalElectronicsMap * emap
Definition: DetId.h:18
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
std::vector< int > eta_max
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
uint32_t getValue() const
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
std::vector< int > eta_min
uint32_t status_word_to_mask
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getLinearizationLutXmlFromAsciiMasterEmap_new ( std::string  _filename,
std::string  _tag,
int  _crate,
bool  split_by_crate = true 
)

Definition at line 437 of file HcalLutManager.cc.

References python.rootplot.argparse::_set, funct::abs(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, HcalLutSet::depth_max, HcalLutSet::depth_min, HcalLutSet::eta_max, HcalLutSet::eta_min, LutXml::_Config::fiber, LutXml::_Config::fiberchan, LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, RooGKCounter::getCount(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, i, LutXml::_Config::ieta, LutXml::_Config::iphi, HcalLutSet::lut, LutXml::_Config::lut, LutXml::_Config::lut_type, HcalLutSet::phi_max, HcalLutSet::phi_min, LutXml::_Config::slot, HcalLutSet::subdet, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

438 {
439  std::cout << "Generating linearization (input) LUTs from ascii master file..." << std::endl;
440  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
441 
442  // read LUTs and their eta/phi/depth/subdet ranges
443  HcalLutSet _set = getLutSetFromFile( _filename );
444  int lut_set_size = _set.lut.size(); // number of different luts
445  std::cout << " ==> " << lut_set_size << " sets of different LUTs read from the master file" << std::endl;
446 
447  RooGKCounter _counter;
448  //loop over all EMap channels
449  for( _iter.begin(); !_iter.end(); _iter.next() ){
451  if( (_subdet == HcalBarrel ||
452  _subdet == HcalEndcap ||
453  _subdet == HcalForward ||
454  _subdet == HcalOuter )
455  ){
456  int _ieta = _iter.getIeta();
457  int _iphi = _iter.getIphi();
458  int _depth = _iter.getDepth();
459 
460  // FIXME: this is probably wrong, raw ids are different
462  int aCrate = _eId . readoutVMECrateId();
463  int aSlot = _eId . htrSlot();
464  int aTopBottom = _eId . htrTopBottom();
465  int aFiber = _eId . fiberIndex();
466  int aFiberChan = _eId . fiberChanId();
467 
468  LutXml::Config _cfg;
469 
470  // search for the correct LUT for a given channel,
471  // higher LUT numbers have priority in case of overlapping
472  int lut_index=-1;
473  for ( int i=0; i<lut_set_size; i++ ){
474  if ( (aCrate == _crate || _crate == -1) && // -1 stands for all crates
475  _set.eta_min[i] <= _ieta &&
476  _set.eta_max[i] >= _ieta &&
477  _set.phi_min[i] <= _iphi &&
478  _set.phi_max[i] >= _iphi &&
479  _set.depth_min[i] <= _depth &&
480  _set.depth_max[i] >= _depth &&
481  _set.subdet[i].find(_ass.getSubdetectorString(_subdet))!=string::npos ){
482  lut_index=i;
483  }
484  }
485  if ( lut_index >= 0 ){
486  if ( _xml.count(aCrate) == 0 && split_by_crate ){
487  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(aCrate,boost::shared_ptr<LutXml>(new LutXml())) );
488  }
489  else if ( _xml.count(0) == 0 && !split_by_crate ){
490  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
491  }
492  _cfg.ieta = _ieta;
493  _cfg.iphi = _iphi;
494  _cfg.depth = _depth;
495  _cfg.crate = aCrate;
496  _cfg.slot = aSlot;
497  _cfg.topbottom = aTopBottom;
498  _cfg.fiber = aFiber;
499  _cfg.fiberchan = aFiberChan;
500  _cfg.lut_type = 1;
501  _cfg.creationtag = _tag;
502  _cfg.creationstamp = get_time_stamp( time(0) );
503  _cfg.targetfirmware = "1.0.0";
504  _cfg.formatrevision = "1"; //???
505  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
506  // int generalizedIndex=id.ietaAbs()+1000*id.depth()+10000*id.iphi()+
507  // ((id.ieta()<0)?(0):(100))+((id.subdet()==HcalForward && id.ietaAbs()==29)?(4*10000):(0));
508  _cfg.generalizedindex =
509  _cfg.iphi*10000 + _cfg.depth*1000 +
510  (_ieta>0)*100 + abs(_ieta) +
511  (((_subdet==HcalForward) && abs(_ieta)==29)?(4*10000):(0));
512  _cfg.lut = _set.lut[lut_index];
513  if (split_by_crate ){
514  _xml[aCrate]->addLut( _cfg, lut_checksums_xml );
515  _counter.count();
516  }
517  else{
518  _xml[0]->addLut( _cfg, lut_checksums_xml );
519  _counter.count();
520  }
521  }
522  }
523  }
524  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
525  std::cout << "Generating linearization (input) LUTs from ascii master file...DONE" << std::endl;
526  return _xml;
527 }
int i
Definition: DBlmapReader.cc:9
std::vector< std::vector< unsigned int > > lut
std::string getSubdetectorString(HcalSubdetector _det)
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
std::vector< int > phi_max
int generalizedindex
Definition: LutXml.h:40
std::vector< std::string > subdet
std::vector< int > phi_min
std::vector< int > depth_max
unsigned long int getCount(void)
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
std::vector< int > depth_min
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HcalLutSet getLutSetFromFile(std::string _filename, int _type=1)
HcalChannelIterator _iter
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
void count(void)
Definition: RooGKCounter.cc:66
HcalAssistant _ass
static std::string get_time_stamp(time_t _time)
std::vector< int > eta_max
tuple cout
Definition: gather_cfg.py:121
HcalGenericDetId getHcalGenericDetId(void)
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
Readout chain identification for Hcal.
int fiberchan
Definition: LutXml.h:35
std::vector< int > eta_min
HcalSubdetector getHcalSubdetector(void)
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getLinearizationLutXmlFromCoder ( const HcalTPGCoder _coder,
std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 614 of file HcalLutManager.cc.

References RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, LMap::get_map(), RooGKCounter::getCount(), HcalForward, LutXml::_Config::ieta, LutXml::_Config::iphi, LutXml::_Config::lut, LutXml::_Config::lut_type, SiPixelLorentzAngle_cfi::read, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

615 {
616  std::cout << "Generating linearization (input) LUTs from HcaluLUTTPGCoder..." << std::endl;
617  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
618 
619  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.03_080817.txt");
620  //std::vector<EMap::EMapRow> & _map = _emap.get_map();
621  //std::cout << "EMap contains " << _map . size() << " entries" << std::endl;
622 
623  LMap _lmap;
624  _lmap . read( "backup/HCALmapHBEF.txt", "HBEF" );
625  // HO is not part of trigger, so TPGCoder cannot generate LUTs for it
626  //_lmap . read( "backup/HCALmapHO.txt", "HO" );
627  std::map<int,LMapRow> & _map = _lmap.get_map();
628  std::cout << "LMap contains " << _map . size() << " channels" << std::endl;
629 
630  // read LUTs and their eta/phi/depth/subdet ranges
631  //HcalLutSet _set = getLinearizationLutSetFromCoder();
632  //int lut_set_size = _set.lut.size(); // number of different luts
633 
634  //loop over all HCAL channels
635  RooGKCounter _counter;
636  for( std::map<int,LMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
637  LutXml::Config _cfg;
638 
639  if ( _xml.count(row->second.crate) == 0 && split_by_crate ){
640  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->second.crate,boost::shared_ptr<LutXml>(new LutXml())) );
641  }
642  else if ( _xml.count(0) == 0 && !split_by_crate ){
643  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
644  }
645  _cfg.ieta = row->second.side*row->second.eta;
646  _cfg.iphi = row->second.phi;
647  _cfg.depth = row->second.depth;
648  _cfg.crate = row->second.crate;
649  _cfg.slot = row->second.htr;
650  if (row->second.fpga . find("top") != std::string::npos) _cfg.topbottom = 1;
651  else if (row->second.fpga . find("bot") != std::string::npos) _cfg.topbottom = 0;
652  else std::cout << "Warning! fpga out of range..." << std::endl;
653  // FIXME: probably fixed. fiber==htr_fi, not rm_fi in LMAP notation.
654  //_cfg.fiber = row->second.rm_fi;
655  _cfg.fiber = row->second.htr_fi;
656  _cfg.fiberchan = row->second.fi_ch;
657  _cfg.lut_type = 1;
658  _cfg.creationtag = _tag;
659  _cfg.creationstamp = get_time_stamp( time(0) );
660  _cfg.targetfirmware = "1.0.0";
661  _cfg.formatrevision = "1"; //???
662  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
663  // int generalizedIndex=id.ietaAbs()+1000*id.depth()+10000*id.iphi()+
664  // ((id.ieta()<0)?(0):(100))+((id.subdet()==HcalForward && id.ietaAbs()==29)?(4*10000):(0));
665  _cfg.generalizedindex =
666  _cfg.iphi*10000 + _cfg.depth*1000 +
667  (row->second.side>0)*100 + row->second.eta +
668  ((row->second.det==HcalForward && row->second.eta==29)?(4*10000):(0));
669 
670  //HcalDetId _detid(row->first);
671  HcalDetId _detid(row->second.det, row->second.side*row->second.eta, row->second.phi, row->second.depth);
672  //std::cout << "### DEBUG: rawid = " << _detid.rawId() << std::endl;
673 
674  //std::cout << "### DEBUG: subdetector = " << row->second.det << std::endl;
675  std::vector<unsigned short> coder_lut = _coder . getLinearizationLUT(_detid);
676  for (std::vector<unsigned short>::const_iterator _i=coder_lut.begin(); _i!=coder_lut.end();_i++){
677  unsigned int _temp = (unsigned int)(*_i);
678  //if (_temp!=0) std::cout << "DEBUG non-zero LUT!!!!!!!!!!!!!!!" << (*_i) << " " << _temp << std::endl;
679  //unsigned int _temp = 0;
680  _cfg.lut.push_back(_temp);
681  }
682  if (split_by_crate ){
683  _xml[row->second.crate]->addLut( _cfg, lut_checksums_xml );
684  _counter.count();
685  }
686  else{
687  _xml[0]->addLut( _cfg, lut_checksums_xml );
688  _counter.count();
689  }
690  }
691  std::cout << "Generated LUTs: " << _counter.getCount() << std::endl;
692  std::cout << "Generating linearization (input) LUTs from HcaluLUTTPGCoder...DONE" << std::endl;
693  return _xml;
694 }
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
int generalizedindex
Definition: LutXml.h:40
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
std::map< int, LMapRow > & get_map(void)
Definition: LMap.cc:59
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
tuple cout
Definition: gather_cfg.py:121
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
Definition: LMap.h:75
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getLinearizationLutXmlFromCoderEmap ( const HcalTPGCoder _coder,
std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 699 of file HcalLutManager.cc.

References funct::abs(), ecalMGPA::adc(), RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, EMap::get_map(), RooGKCounter::getCount(), HcalBarrel, HcalEndcap, HcalForward, HcalOther, HcalOuter, LutXml::_Config::ieta, LutXml::_Config::iphi, LutXml::_Config::lut, LutXml::_Config::lut_type, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

700 {
701  std::cout << "Generating linearization (input) LUTs from HcaluLUTTPGCoder..." << std::endl;
702  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
703 
704  EMap _emap(emap);
705  std::vector<EMap::EMapRow> & _map = _emap.get_map();
706  std::cout << "EMap contains " << _map . size() << " entries" << std::endl;
707 
708  std::vector<unsigned int> zeroLut;
709  for (size_t adc = 0; adc < 128; adc++) zeroLut.push_back(0);
710 
711  RooGKCounter _counter;
712  //loop over all EMap channels
713  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
714  if( (row->subdet.find("HB")!=string::npos ||
715  row->subdet.find("HE")!=string::npos ||
716  row->subdet.find("HF")!=string::npos ) &&
717  row->subdet.size()==2
718  ){
719  LutXml::Config _cfg;
720 
721  if ( _xml.count(row->crate) == 0 && split_by_crate ){
722  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
723  }
724  else if ( _xml.count(0) == 0 && !split_by_crate ){
725  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
726  }
727  _cfg.ieta = row->ieta;
728  _cfg.iphi = row->iphi;
729  _cfg.depth = row->idepth;
730  _cfg.crate = row->crate;
731  _cfg.slot = row->slot;
732  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
733  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
734  else std::cout << "Warning! fpga out of range..." << std::endl;
735  _cfg.fiber = row->fiber;
736  _cfg.fiberchan = row->fiberchan;
737  _cfg.lut_type = 1;
738  _cfg.creationtag = _tag;
739  _cfg.creationstamp = get_time_stamp( time(0) );
740  _cfg.targetfirmware = "1.0.0";
741  _cfg.formatrevision = "1"; //???
742  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
743  // int generalizedIndex=id.ietaAbs()+1000*id.depth()+10000*id.iphi()+
744  // ((id.ieta()<0)?(0):(100))+((id.subdet()==HcalForward && id.ietaAbs()==29)?(4*10000):(0));
745  _cfg.generalizedindex =
746  _cfg.iphi*10000 + _cfg.depth*1000 +
747  (row->ieta>0)*100 + abs(row->ieta) +
748  (((row->subdet.find("HF")!=string::npos) && abs(row->ieta)==29)?(4*10000):(0));
749  HcalSubdetector _subdet;
750  if ( row->subdet.find("HB")!=string::npos ) _subdet = HcalBarrel;
751  else if ( row->subdet.find("HE")!=string::npos ) _subdet = HcalEndcap;
752  else if ( row->subdet.find("HO")!=string::npos ) _subdet = HcalOuter;
753  else if ( row->subdet.find("HF")!=string::npos ) _subdet = HcalForward;
754  else _subdet = HcalOther;
755  HcalDetId _detid(_subdet, row->ieta, row->iphi, row->idepth);
756  //
757  // consider channel status here
758  uint32_t status_word = cq->getValues(_detid)->getValue();
759  if ((status_word & status_word_to_mask) > 0){
760  _cfg.lut = zeroLut;
761  }
762  else{
763  std::vector<unsigned short> coder_lut = _coder . getLinearizationLUT(_detid);
764  for (std::vector<unsigned short>::const_iterator _i=coder_lut.begin(); _i!=coder_lut.end();_i++){
765  unsigned int _temp = (unsigned int)(*_i);
766  _cfg.lut.push_back(_temp);
767  }
768  }
769  if (split_by_crate ){
770  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
771  _counter.count();
772  }
773  else{
774  _xml[0]->addLut( _cfg, lut_checksums_xml );
775  _counter.count();
776  }
777  }
778  }
779  std::cout << "Generated LUTs: " << _counter.getCount() << std::endl;
780  std::cout << "Generating linearization (input) LUTs from HcaluLUTTPGCoder...DONE" << std::endl;
781  return _xml;
782 }
int adc(sample_type sample)
get the ADC sample (12 bits)
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
int generalizedindex
Definition: LutXml.h:40
const Item * getValues(DetId fId, bool throwOnFail=true) const
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
const HcalChannelQuality * cq
std::string creationtag
Definition: LutXml.h:36
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
const HcalElectronicsMap * emap
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
uint32_t getValue() const
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
uint32_t status_word_to_mask
std::vector< unsigned int > HcalLutManager::getLutFromXml ( std::string  tag,
uint32_t  _rawid,
hcal::ConfigurationDatabase::LUTType  _lt 
)

Definition at line 1271 of file HcalLutManager.cc.

References gather_cfg::cout, and query::result.

1272 {
1273  std::cout << "getLutFromXml (new version) is not implemented. Use getLutFromXml_old() for now" << std::endl;
1274 
1275  std::vector<unsigned int> result;
1276 
1277 
1278 
1279  return result;
1280 }
tuple result
Definition: query.py:137
tuple cout
Definition: gather_cfg.py:121
std::vector< unsigned int > HcalLutManager::getLutFromXml_old ( std::string  tag,
uint32_t  _rawid,
hcal::ConfigurationDatabase::LUTType  _lt 
)

Definition at line 1284 of file HcalLutManager.cc.

References gather_cfg::cout, EcalCondDB::db, cmsRelvalreport::exit, spr::find(), query::result, and AlCaHLTBitMon_QueryRunRegistry::string.

1285 {
1286  if ( !lmap ){
1287  std::cout << "HcalLutManager: cannot find LUT without LMAP, exiting..." << std::endl;
1288  exit(-1);
1289  }
1290  if ( !db ){
1291  std::cout << "HcalLutManager: cannot find LUT, no source (local XML file), exiting..." << std::endl;
1292  exit(-1);
1293  }
1294 
1295  std::vector<unsigned int> result;
1296 
1297  std::map<int,LMapRow> & _map = lmap -> get_map();
1298  //std::cout << "HcalLutManager: LMap contains " << _map . size() << " channels (out of 9072 total)" << std::endl;
1299 
1300  HcalDetId _id( _rawid );
1301 
1302  unsigned int _crate, _slot, _fiber, _channel;
1303  std::string _fpga;
1304  int topbottom, luttype;
1305 
1306  // FIXME: check validity of _rawid
1307  if ( _map . find(_rawid) != _map.end() ){
1308  _crate = _map[_rawid] . crate;
1309  _slot = _map[_rawid] . htr;
1310  _fiber = _map[_rawid] . htr_fi;
1311  _channel = _map[_rawid] . fi_ch;
1312  _fpga = _map[_rawid] . fpga;
1313 
1314  if ( _fpga . find("top") != std::string::npos ) topbottom = 1;
1315  else if ( _fpga . find("bot") != std::string::npos ) topbottom = 0;
1316  else{
1317  std::cout << "HcalLutManager: irregular LMAP fpga value... do not know what to do - exiting" << std::endl;
1318  exit(-1);
1319  }
1320  if ( _lt == hcal::ConfigurationDatabase::LinearizerLUT ) luttype = 1;
1321  else luttype = 2;
1322 
1323  result = db -> getOnlineLUT( tag, _crate, _slot, topbottom, _fiber, _channel, luttype );
1324  }
1325 
1326  return result;
1327 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
HCALConfigDB * db
tuple result
Definition: query.py:137
tuple cout
Definition: gather_cfg.py:121
HcalLutSet HcalLutManager::getLutSetFromFile ( std::string  _filename,
int  _type = 1 
)

Definition at line 165 of file HcalLutManager.cc.

References gather_cfg::cout, HcalLutSet::depth_max, HcalLutSet::depth_min, HcalLutSet::eta_max, HcalLutSet::eta_min, getInt(), i, EdgesToViz::infile, diffTwoXMLs::label, HcalLutSet::lut, lumiPlot::lut, HcalLutSet::phi_max, HcalLutSet::phi_min, HcalQIEManager::splitString(), and AlCaHLTBitMon_QueryRunRegistry::string.

166 {
167  HcalLutSet _lutset;
168 
169  ifstream infile( _filename . c_str() );
170  std::string buf;
171 
172  if ( infile . is_open() ){
173  std::cout << "File " << _filename << " is open..." << std::endl;
174  std::cout << "Reading LUTs and their eta/phi/depth/subdet ranges...";
175 
176  // get label
177  getline( infile, _lutset . label );
178 
179  if ( _type == 1 ){ // for linearization LUTs get subdetectors (default)
180  //get subdetectors
181  getline( infile, buf );
182  _lutset . subdet = HcalQIEManager::splitString( buf );
183  }
184 
185  //get min etas
186  std::vector<std::string> buf_vec;
187  getline( infile, buf );
188  buf_vec = HcalQIEManager::splitString( buf );
189  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
190  _lutset.eta_min.push_back(HcalLutManager::getInt(*iter));
191  }
192 
193  //get max etas
194  getline( infile, buf );
195  buf_vec = HcalQIEManager::splitString( buf );
196  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
197  _lutset.eta_max.push_back(HcalLutManager::getInt(*iter));
198  }
199 
200  //get min phis
201  getline( infile, buf );
202  buf_vec = HcalQIEManager::splitString( buf );
203  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
204  _lutset.phi_min.push_back(HcalLutManager::getInt(*iter));
205  }
206 
207  //get max phis
208  getline( infile, buf );
209  buf_vec = HcalQIEManager::splitString( buf );
210  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
211  _lutset.phi_max.push_back(HcalLutManager::getInt(*iter));
212  }
213 
214  if ( _type == 1 ){ // for linearization LUTs get depth range (default)
215  //get min depths
216  getline( infile, buf );
217  buf_vec = HcalQIEManager::splitString( buf );
218  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
219  _lutset.depth_min.push_back(HcalLutManager::getInt(*iter));
220  }
221 
222  //get max depths
223  getline( infile, buf );
224  buf_vec = HcalQIEManager::splitString( buf );
225  for (std::vector<std::string>::const_iterator iter = buf_vec.begin(); iter != buf_vec.end(); iter++){
226  _lutset.depth_max.push_back(HcalLutManager::getInt(*iter));
227  }
228  }
229 
230  bool first_lut_entry = true;
231  while (getline( infile, buf )) {
232  buf_vec = HcalQIEManager::splitString( buf );
233  for (unsigned int i = 0; i < buf_vec.size(); i++){
234  if (first_lut_entry){
235  std::vector<unsigned int> _l;
236  _lutset.lut.push_back(_l);
237  }
238  _lutset . lut[i] . push_back(HcalLutManager::getInt(buf_vec[i]));
239  }
240  first_lut_entry = false;
241  }
242  }
243 
244  std::cout << "done." << std::endl;
245 
246  return _lutset;
247 }
int i
Definition: DBlmapReader.cc:9
std::vector< std::vector< unsigned int > > lut
std::vector< int > phi_max
std::vector< int > phi_min
std::vector< int > depth_max
static std::vector< std::string > splitString(const std::string &fLine)
std::vector< int > depth_min
tuple lut
Definition: lumiPlot.py:244
list infile
Definition: EdgesToViz.py:90
static int getInt(std::string number)
std::vector< int > eta_max
tuple cout
Definition: gather_cfg.py:121
std::vector< int > eta_min
std::string & HcalLutManager::getLutXml ( std::vector< unsigned int > &  _lut)

Definition at line 96 of file HcalLutManager.cc.

References LutXml::_Config::lut.

97 {
98 
99  if (lut_xml) delete lut_xml;
100 
101  lut_xml = new LutXml();
102 
103  LutXml::Config _config;
104  _config.lut = _lut;
105  lut_xml -> addLut( _config );
106  lut_xml -> addLut( _config );
107  lut_xml -> addLut( _config );
108 
109  //return lut_xml->getString();
110  return lut_xml->getCurrentBrick();
111 
112 }
Definition: LutXml.h:27
std::string & getCurrentBrick(void)
Definition: LutXml.cc:329
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getLutXmlFromAsciiMaster ( std::string  _filename,
std::string  _tag,
int  _crate = -1,
bool  split_by_crate = true 
)

Definition at line 251 of file HcalLutManager.cc.

References python.rootplot.argparse::_set, RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, HcalLutSet::depth_max, HcalLutSet::depth_min, HcalLutSet::eta_max, HcalLutSet::eta_min, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, LMap::get_map(), HcalDbOmds::get_subdetector(), RooGKCounter::getCount(), HcalForward, i, LutXml::_Config::ieta, LutXml::_Config::iphi, HcalLutSet::lut, LutXml::_Config::lut, LutXml::_Config::lut_type, HcalLutSet::phi_max, HcalLutSet::phi_min, SiPixelLorentzAngle_cfi::read, findQualityFiles::size, LutXml::_Config::slot, HcalLutSet::subdet, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

252 {
253  std::cout << "Generating linearization (input) LUTs from ascii master file..." << std::endl;
254  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
255 
256  LMap _lmap;
257  _lmap . read( "./backup/HCALmapHBEF.txt", "HBEF" );
258  _lmap . read( "./backup/HCALmapHO.txt", "HO" );
259  std::map<int,LMapRow> & _map = _lmap.get_map();
260  std::cout << "LMap contains " << _map . size() << " channels" << std::endl;
261 
262  // read LUTs and their eta/phi/depth/subdet ranges
263  HcalLutSet _set = getLutSetFromFile( _filename );
264  int lut_set_size = _set.lut.size(); // number of different luts
265 
266  RooGKCounter _counter;
267  //loop over all HCAL channels
268  for( std::map<int,LMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
269  LutXml::Config _cfg;
270 
271  // search for the correct LUT for a given channel,
272  // higher LUT numbers have priority in case of overlapping
273  int lut_index=-1;
274  for ( int i=0; i<lut_set_size; i++ ){
275  if ( (row->second.crate == _crate || _crate == -1) && // -1 stands for all crates
276  _set.eta_min[i] <= row->second.side*row->second.eta &&
277  _set.eta_max[i] >= row->second.side*row->second.eta &&
278  _set.phi_min[i] <= row->second.phi &&
279  _set.phi_max[i] >= row->second.phi &&
280  _set.depth_min[i] <= row->second.depth &&
281  _set.depth_max[i] >= row->second.depth &&
282  get_subdetector(_set.subdet[i]) == row->second.det ){
283  lut_index=i;
284  }
285  }
286  if ( lut_index >= 0 ){
287  if ( _xml.count(row->second.crate) == 0 && split_by_crate ){
288  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->second.crate,boost::shared_ptr<LutXml>(new LutXml())) );
289  }
290  else if ( _xml.count(0) == 0 && !split_by_crate ){
291  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
292  }
293  _cfg.ieta = row->second.side*row->second.eta;
294  _cfg.iphi = row->second.phi;
295  _cfg.depth = row->second.depth;
296  _cfg.crate = row->second.crate;
297  _cfg.slot = row->second.htr;
298  if (row->second.fpga . find("top") != std::string::npos) _cfg.topbottom = 1;
299  else if (row->second.fpga . find("bot") != std::string::npos) _cfg.topbottom = 0;
300  else std::cout << "Warning! fpga out of range..." << std::endl;
301  // FIXME: probably fixed. fiber==htr_fi, not rm_fi in LMAP notation.
302  //_cfg.fiber = row->second.rm_fi;
303  _cfg.fiber = row->second.htr_fi;
304  _cfg.fiberchan = row->second.fi_ch;
305  if (_set.lut[lut_index].size() == 128) _cfg.lut_type = 1;
306  else _cfg.lut_type = 2;
307  _cfg.creationtag = _tag;
308  _cfg.creationstamp = get_time_stamp( time(0) );
309  _cfg.targetfirmware = "1.0.0";
310  _cfg.formatrevision = "1"; //???
311  // "original" definition of GENERALIZEDINDEX from Mike Weinberger
312  // int generalizedIndex=id.ietaAbs()+1000*id.depth()+10000*id.iphi()+
313  // ((id.ieta()<0)?(0):(100))+((id.subdet()==HcalForward && id.ietaAbs()==29)?(4*10000):(0));
314  _cfg.generalizedindex =
315  _cfg.iphi*10000 + _cfg.depth*1000 +
316  (row->second.side>0)*100 + row->second.eta +
317  ((row->second.det==HcalForward && row->second.eta==29)?(4*10000):(0));
318  _cfg.lut = _set.lut[lut_index];
319  if (split_by_crate ){
320  _xml[row->second.crate]->addLut( _cfg, lut_checksums_xml );
321  _counter.count();
322  }
323  else{
324  _xml[0]->addLut( _cfg, lut_checksums_xml );
325  _counter.count();
326  }
327  }
328  }
329  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
330  std::cout << "Generating linearization (input) LUTs from ascii master file...DONE" << std::endl;
331  return _xml;
332 }
int i
Definition: DBlmapReader.cc:9
std::vector< std::vector< unsigned int > > lut
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
std::vector< int > phi_max
int generalizedindex
Definition: LutXml.h:40
std::vector< std::string > subdet
std::vector< int > phi_min
std::vector< int > depth_max
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
static HcalSubdetector get_subdetector(std::string _subdet)
std::map< int, LMapRow > & get_map(void)
Definition: LMap.cc:59
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
std::vector< int > depth_min
HcalLutSet getLutSetFromFile(std::string _filename, int _type=1)
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
std::vector< int > eta_max
tuple cout
Definition: gather_cfg.py:121
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
Definition: LMap.h:75
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
std::vector< int > eta_min
std::map< int, boost::shared_ptr< LutXml > > HcalLutManager::getZdcLutXml ( std::string  _tag,
bool  split_by_crate = true 
)

Definition at line 1583 of file HcalLutManager.cc.

References RooGKCounter::count(), gather_cfg::cout, LutXml::_Config::crate, LutXml::_Config::creationstamp, LutXml::_Config::creationtag, LutXml::_Config::depth, LutXml::_Config::fiber, LutXml::_Config::fiberchan, spr::find(), LutXml::_Config::formatrevision, LutXml::_Config::generalizedindex, ZdcLut::get_lut(), EMap::get_map(), RooGKCounter::getCount(), LutXml::_Config::ieta, LutXml::_Config::lut, LutXml::_Config::lut_type, findQualityFiles::size, LutXml::_Config::slot, LutXml::_Config::targetfirmware, cond::rpcobgas::time, and LutXml::_Config::topbottom.

1585 {
1586  std::cout << "Generating ZDC LUTs ...may the Force be with us..." << std::endl;
1587  std::map<int, boost::shared_ptr<LutXml> > _xml; // index - crate number
1588 
1589  EMap _emap(emap);
1590 
1591  ZdcLut zdc;
1592 
1593  std::vector<EMap::EMapRow> & _map = _emap.get_map();
1594  std::cout << "EMap contains " << _map . size() << " channels" << std::endl;
1595 
1596  //loop over all EMap channels
1597  RooGKCounter _counter;
1598  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
1599  LutXml::Config _cfg;
1600 
1601  // only ZDC channels
1602  if ( row->zdc_section . find("ZDC") != std::string::npos ){
1603  if ( _xml.count(row->crate) == 0 && split_by_crate ){
1604  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(row->crate,boost::shared_ptr<LutXml>(new LutXml())) );
1605  }
1606  else if ( _xml.count(0) == 0 && !split_by_crate ){
1607  _xml.insert( std::pair<int,boost::shared_ptr<LutXml> >(0,boost::shared_ptr<LutXml>(new LutXml())) );
1608  }
1609  // FIXME: introduce proper tag names in ZDC bricks for logical channel info
1610  _cfg.ieta = row->zdc_channel; // int
1611  //_cfg.ieta = row->zdc_zside; // int
1612  //_cfg.iphi = row->zdc_section; // string
1613  _cfg.depth = row->idepth; // int
1614  _cfg.crate = row->crate;
1615  _cfg.slot = row->slot;
1616  if (row->topbottom . find("t") != std::string::npos) _cfg.topbottom = 1;
1617  else if (row->topbottom . find("b") != std::string::npos) _cfg.topbottom = 0;
1618  else std::cout << "Warning! fpga out of range..." << std::endl;
1619  _cfg.fiber = row->fiber;
1620  _cfg.fiberchan = row->fiberchan;
1621  _cfg.lut_type = 1;
1622  _cfg.creationtag = _tag;
1623  _cfg.creationstamp = get_time_stamp( time(0) );
1624  _cfg.targetfirmware = "1.0.0";
1625  _cfg.formatrevision = "1"; //???
1626  _cfg.generalizedindex = 0;
1627 
1628  //HcalZDCDetId _detid(row->zdc_section, (row->zdc_zside>0), row->zdc_channel);
1629 
1630  std::vector<int> coder_lut = zdc.get_lut(row->zdc_section,
1631  row->zdc_zside,
1632  row->zdc_channel);
1633  std::cout << "***DEBUG: ZDC lut size: " << coder_lut.size() << std::endl;
1634  if (coder_lut.size()!=0){
1635  for (std::vector<int>::const_iterator _i=coder_lut.begin(); _i!=coder_lut.end();_i++){
1636  unsigned int _temp = (unsigned int)(*_i);
1637  //if (_temp!=0) std::cout << "DEBUG non-zero LUT!!!!!!!!!!!!!!!" << (*_i) << " " << _temp << std::endl;
1638  //unsigned int _temp = 0;
1639  _cfg.lut.push_back(_temp);
1640  }
1641  //_cfg.lut = _set.lut[lut_index];
1642 
1643  if (split_by_crate ){
1644  _xml[row->crate]->addLut( _cfg, lut_checksums_xml );
1645  _counter.count();
1646  }
1647  else{
1648  _xml[0]->addLut( _cfg, lut_checksums_xml );
1649  _counter.count();
1650  }
1651  } //size of lut
1652  }
1653  }
1654  std::cout << "LUTs generated: " << _counter.getCount() << std::endl;
1655  std::cout << "Generating ZDC LUTs...DONE" << std::endl;
1656 
1657  return _xml;
1658 }
std::vector< int > get_lut(int emap_side, int emap_htr_fiber, int emap_fi_ch)
Definition: ZdcLut.cc:212
std::string targetfirmware
Definition: LutXml.h:39
Definition: LutXml.h:27
int generalizedindex
Definition: LutXml.h:40
Generation of ZDC Lookup tables and associate helper methods.
Definition: ZdcLut.h:25
unsigned long int getCount(void)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
int topbottom
Definition: LutXml.h:35
std::vector< unsigned int > lut
Definition: LutXml.h:41
std::string creationtag
Definition: LutXml.h:36
std::string formatrevision
Definition: LutXml.h:38
XMLDOMBlock * lut_checksums_xml
const HcalElectronicsMap * emap
void count(void)
Definition: RooGKCounter.cc:66
static std::string get_time_stamp(time_t _time)
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
int lut_type
Definition: LutXml.h:35
std::string creationstamp
Definition: LutXml.h:37
int fiberchan
Definition: LutXml.h:35
tuple size
Write out results.
void HcalLutManager::init ( void  )

Definition at line 67 of file HcalLutManager.cc.

References EcalCondDB::db.

68 {
69  lut_xml = 0;
71  db = 0;
72  lmap = 0;
73  emap = 0;
74  cq = 0;
75  status_word_to_mask = 0x0000;
76 }
HCALConfigDB * db
const HcalChannelQuality * cq
XMLDOMBlock * lut_checksums_xml
const HcalElectronicsMap * emap
uint32_t status_word_to_mask
int HcalLutManager::initChannelIterator ( std::vector< HcalGenericDetId > &  map)

Definition at line 89 of file HcalLutManager.cc.

References init.

90 {
91  _iter . init(map);
92  return _iter.size();
93 }
HcalChannelIterator _iter
void init(void)
int HcalLutManager::local_connect ( std::string  lut_xml_file,
std::string  lmap_hbef_file,
std::string  lmap_ho_file 
)

Definition at line 1261 of file HcalLutManager.cc.

1262 {
1263  read_lmap( lmap_hbef_file, lmap_ho_file );
1264  read_luts( lut_xml_file );
1265  return 0;
1266 }
int read_luts(std::string lut_xml_file)
int read_lmap(std::string lmap_hbef_file, std::string lmap_ho_file)
int HcalLutManager::read_lmap ( std::string  lmap_hbef_file,
std::string  lmap_ho_file 
)

Definition at line 1237 of file HcalLutManager.cc.

References gather_cfg::cout, SiPixelLorentzAngle_cfi::read, and findQualityFiles::size.

1238 {
1239  delete lmap;
1240  lmap = new LMap();
1241  lmap -> read( lmap_hbef_file, "HBEF" );
1242  lmap -> read( lmap_ho_file, "HO" );
1243  std::cout << "LMap contains " << lmap -> get_map() . size() << " channels (compare to 9072 of all HCAL channels)" << std::endl;
1244  return 0;
1245 }
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:75
tuple size
Write out results.
int HcalLutManager::read_luts ( std::string  lut_xml_file)

Definition at line 1249 of file HcalLutManager.cc.

References convertSQLitetoXML_cfg::connect, and EcalCondDB::db.

1250 {
1251  delete db;
1252  db = new HCALConfigDB();
1253  db -> connect( lut_xml_file );
1254  return 0;
1255 }
HCALConfigDB * db
Gather config data from online DB.
Definition: HCALConfigDB.h:21
int HcalLutManager::test_direct_xml_parsing ( std::string  _filename)

Definition at line 1521 of file HcalLutManager.cc.

1521  {
1522  /*
1523  XMLDOMBlock _xml(_filename);
1524  //DOMElement * data_set_elem = (DOMElement *)(document -> getElementsByTagName( XMLProcessor::_toXMLCh( "DATA_SET" ) ) -> item(0));
1525  DOMNodeList * brick_list = _xml . getDocument() -> getElementsByTagName( XMLProcessor::_toXMLCh( "CFGBrick" ));
1526 
1527  double n_bricks = brick_list->getLength();
1528  std::cout << "amount of LUT bricks: " << n_bricks << std::endl;
1529 
1530  for (int iter=0; iter!=n_bricks; iter++){
1531  DOMElement * _brick = (DOMElement *)(brick_list->item(iter));
1532 
1533  DOMElement * _param = 0;
1534  // loop over brick parameters
1535  int par_iter = 0;
1536  while(1){
1537  _param = (DOMElement *)(_brick->getElementsByTagName(XMLProcessor::_toXMLCh("Parameter")));
1538  std::string _name = _param->getAttribute( XMLProcessor::_toXMLCh( "name" ) );
1539  if (_name.find("IETA")==string::npos) break;
1540 
1541  std::string _tag = "Parameter";
1542  std::cout << "### Parameter IETA = " << _xml.getTagValue( _tag, 0, _brick);
1543  par_iter++;
1544  }
1545  }
1546  */
1547  return 0;
1548 }
void HcalLutManager::test_emap ( void  )

Definition at line 1493 of file HcalLutManager.cc.

References funct::abs(), gather_cfg::cout, spr::find(), EMap::get_map(), and findQualityFiles::size.

1493  {
1494  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v5_080208.txt");
1495  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.03_080817.txt");
1496  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.04_080905.txt");
1497  EMap _emap(emap);
1498  std::vector<EMap::EMapRow> & _map = _emap.get_map();
1499  std::cout << "EMap contains " << _map . size() << " channels" << std::endl;
1500 
1501  //loop over all EMap channels
1502  //RooGKCounter _c;
1503  for( std::vector<EMap::EMapRow>::const_iterator row=_map.begin(); row!=_map.end(); row++ ){
1504 
1505  // only trigger tower channels
1506  if ( row->subdet . find("HT") != std::string::npos ){
1507  std::cout << " -----> Subdet = " << row->subdet << std::endl;
1508 
1509  if (abs(row->ieta)>28){
1510  //if (row->iphi == 71){
1511  cout << " ==> (ieta,iphi) = " << row->ieta << ", " << row->iphi << std::endl;
1512  }
1513  }
1514  }
1515 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const HcalElectronicsMap * emap
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
tuple size
Write out results.
int HcalLutManager::test_xml_access ( std::string  _tag,
std::string  _filename 
)

Definition at line 1157 of file HcalLutManager.cc.

References begin, gather_cfg::cout, EcalCondDB::db, end, EMap::get_map(), HcalBarrel, HcalEndcap, HcalForward, HcalOther, HcalOuter, i, NULL, rand(), DetId::rawId(), and findQualityFiles::size.

1158 {
1159  local_connect( _filename, "backup/HCALmapHBEF.txt", "backup/HCALmapHO.txt" );
1160 
1161  //EMap _emap("../../../CondFormats/HcalObjects/data/official_emap_v6.04_080905.txt");
1162  EMap _emap(emap);
1163  std::vector<EMap::EMapRow> & _map = _emap.get_map();
1164  int map_size = _map . size();
1165  std::cout << "EMap contains " << map_size << " channels" << std::endl;
1166 
1167  // make sure that all init is done
1168  std::vector<unsigned int> _lut;
1169  _lut = getLutFromXml( _tag, 1107313727, hcal::ConfigurationDatabase::LinearizerLUT );
1170 
1171 
1172  std::cout << std::endl << "Testing direct parsing of the LUT XML" << std::endl;
1173  struct timeval _t;
1174  gettimeofday( &_t, NULL );
1175  double _time =(double)(_t . tv_sec) + (double)(_t . tv_usec)/1000000.0;
1176  test_direct_xml_parsing(_filename);
1177  gettimeofday( &_t, NULL );
1178  std::cout << "parsing took that much time: " << (double)(_t . tv_sec) + (double)(_t . tv_usec)/1000000.0 - _time << std::endl;
1179 
1180 
1181  gettimeofday( &_t, NULL );
1182  _time =(double)(_t . tv_sec) + (double)(_t . tv_usec)/1000000.0;
1183  std::cout << "before loop over random LUTs: " << _time << std::endl;
1184  int _raw_id;
1185 
1186  // loop over random LUTs
1187  for (int _iter=0; _iter<100; _iter++){
1188  gettimeofday( &_t, NULL );
1189  //std::cout << "before getting a LUT: " << _t . tv_sec << "." << _t . tv_usec << std::endl;
1190 
1191  // select valid random emap channel
1192  while(1){
1193  int _key = (rand() % map_size);
1194  //_key = 3356;
1195  if( (_map[_key].subdet.find("HB")!=string::npos ||
1196  _map[_key].subdet.find("HE")!=string::npos ||
1197  _map[_key].subdet.find("HO")!=string::npos ||
1198  _map[_key].subdet.find("HF")!=string::npos ) &&
1199  _map[_key].subdet.size()==2
1200  ){
1201  HcalSubdetector _subdet;
1202  if ( _map[_key].subdet.find("HB")!=string::npos ) _subdet = HcalBarrel;
1203  else if ( _map[_key].subdet.find("HE")!=string::npos ) _subdet = HcalEndcap;
1204  else if ( _map[_key].subdet.find("HO")!=string::npos ) _subdet = HcalOuter;
1205  else if ( _map[_key].subdet.find("HF")!=string::npos ) _subdet = HcalForward;
1206  else _subdet = HcalOther;
1207  HcalDetId _detid(_subdet, _map[_key].ieta, _map[_key].iphi, _map[_key].idepth);
1208  _raw_id = _detid.rawId();
1209  break;
1210  }
1211  }
1212  _lut = getLutFromXml( _tag, _raw_id, hcal::ConfigurationDatabase::LinearizerLUT );
1213 
1214  gettimeofday( &_t, NULL );
1215  }
1216  double d_time = _t.tv_sec+_t.tv_usec/1000000.0 - _time;
1217  std::cout << "after the loop over random LUTs: " << _time+d_time << std::endl;
1218  std::cout << "total time: " << d_time << std::endl;
1219 
1220  std::cout << "LUT length = " << _lut . size() << std::endl;
1221  for ( std::vector<unsigned int>::const_iterator i = _lut . end() - 1; i != _lut . begin()-1; i-- )
1222  {
1223  std::cout << (i-_lut.begin()) << " " << _lut[(i-_lut.begin())] << std::endl;
1224  break;
1225  }
1226 
1227  db -> disconnect();
1228 
1229  delete db;
1230  db = 0;
1231 
1232  return 0;
1233 }
int i
Definition: DBlmapReader.cc:9
#define NULL
Definition: scimark2.h:8
HCALConfigDB * db
int test_direct_xml_parsing(std::string _filename)
HcalSubdetector
Definition: HcalAssistant.h:31
#define end
Definition: vmac.h:37
HcalChannelIterator _iter
const HcalElectronicsMap * emap
#define begin
Definition: vmac.h:30
Signal rand(Signal arg)
Definition: vlib.cc:442
int local_connect(std::string lut_xml_file, std::string lmap_hbef_file, std::string lmap_ho_file)
std::vector< unsigned int > getLutFromXml(std::string tag, uint32_t _rawid, hcal::ConfigurationDatabase::LUTType _lt)
tuple cout
Definition: gather_cfg.py:121
Definition: LMap.h:94
tuple size
Write out results.
int HcalLutManager::writeLutXmlFiles ( std::map< int, boost::shared_ptr< LutXml > > &  _xml,
std::string  _tag = "default_tag",
bool  split_by_crate = true 
)

Definition at line 953 of file HcalLutManager.cc.

References python.multivaluedict::map(), and cmsHarvester::output_file_name.

954 {
955  for (std::map<int,boost::shared_ptr<LutXml> >::const_iterator cr = _xml.begin(); cr != _xml.end(); cr++){
956  std::stringstream output_file_name;
957  if ( split_by_crate ){
958  output_file_name << _tag << "_" << cr->first << ".xml";
959  }
960  else{
961  output_file_name << _tag << ".xml";
962  }
963  cr->second->write( output_file_name.str().c_str() );
964  }
965  return 0;
966 }

Member Data Documentation

HcalAssistant HcalLutManager::_ass
protected

Definition at line 157 of file HcalLutManager.h.

HcalChannelIterator HcalLutManager::_iter
protected

Definition at line 156 of file HcalLutManager.h.

const HcalChannelQuality* HcalLutManager::cq
protected

Definition at line 159 of file HcalLutManager.h.

HCALConfigDB* HcalLutManager::db
protected

Definition at line 154 of file HcalLutManager.h.

const HcalElectronicsMap* HcalLutManager::emap
protected

Definition at line 158 of file HcalLutManager.h.

LMap* HcalLutManager::lmap
protected

Definition at line 155 of file HcalLutManager.h.

XMLDOMBlock* HcalLutManager::lut_checksums_xml
protected

Definition at line 153 of file HcalLutManager.h.

LutXml* HcalLutManager::lut_xml
protected

Definition at line 152 of file HcalLutManager.h.

uint32_t HcalLutManager::status_word_to_mask
protected

Definition at line 160 of file HcalLutManager.h.