Go to the documentation of this file.00001 #include "L1TriggerConfig/CSCTFConfigProducers/interface/CSCTFConfigOnlineProd.h"
00002
00003 #include <cstdio>
00004
00005 boost::shared_ptr< L1MuCSCTFConfiguration >
00006 CSCTFConfigOnlineProd::newObject( const std::string& objectKey )
00007 {
00008
00009 edm::LogInfo( "L1-O2O: CSCTFConfigOnlineProd" ) << "Producing "
00010 << "L1MuCSCTFConfiguration "
00011 << "with key CSCTF_KEY="
00012 << objectKey;
00013
00014 std::string csctfreg[12];
00015
00016
00017 for (int iSP=1;iSP<13; iSP++) {
00018
00019 char spName[2];
00020 if (iSP<10) sprintf(spName,"0%d",iSP);
00021 else sprintf(spName, "%d",iSP);
00022
00023 std::string spkey = objectKey + "00" + spName;
00024
00025
00026
00027
00028 std::vector< std::string > columns ;
00029 columns.push_back( "STATIC_CONFIG" ) ;
00030 columns.push_back( "ETA_CONFIG" ) ;
00031 columns.push_back( "FIRMWARE" ) ;
00032
00033
00034 l1t::OMDSReader::QueryResults results = m_omdsReader.basicQuery(
00035 columns,
00036 "CMS_CSC_TF",
00037 "CSCTF_SP_CONF",
00038 "CSCTF_SP_CONF.SP_KEY",
00039 m_omdsReader.singleAttribute( spkey )
00040 ) ;
00041
00042 if( results.queryFailed() )
00043 {
00044 edm::LogError( "L1-O2O" ) << "Problem with L1CSCTFParameters key." ;
00045
00046 return boost::shared_ptr< L1MuCSCTFConfiguration >( new L1MuCSCTFConfiguration() ) ;
00047 }
00048
00049
00050 std::string conf_stat, conf_eta, conf_firmware;
00051 results.fillVariable( "STATIC_CONFIG", conf_stat );
00052 results.fillVariable( "ETA_CONFIG", conf_eta );
00053 results.fillVariable( "FIRMWARE", conf_firmware );
00054
00055 LogDebug( "L1-O2O: CSCTFConfigOnlineProd:" ) << "conf_stat queried: " << conf_stat
00056 << "conf_eta queried:" << conf_eta
00057 << "conf_firmware queried:" << conf_firmware;
00058
00059 for(size_t pos=conf_stat.find("\\n"); pos!=std::string::npos; pos=conf_stat.find("\\n",pos))
00060 {
00061 conf_stat[pos]=' ';
00062 conf_stat[pos+1]='\n';
00063 }
00064
00065 for(size_t pos=conf_eta.find("\\n"); pos!=std::string::npos; pos=conf_eta.find("\\n",pos))
00066 {
00067 conf_eta[pos]=' ';
00068 conf_eta[pos+1]='\n';
00069 }
00070
00071
00072 for(size_t pos=conf_firmware.find("\\n"); pos!=std::string::npos; pos=conf_firmware.find("\\n",pos))
00073 {
00074 conf_firmware[pos]=' ';
00075 conf_firmware[pos+1]='\n';
00076 }
00077
00078 LogDebug( "L1-O2O: CSCTFConfigOnlineProd" ) << "\nSP KEY: " << spkey
00079 << "\n\nSTATIC CONFIGURATION:\n" << conf_stat
00080 << "\nDAT_ETA CONFIGURATION:\n" << conf_eta
00081 << "\nFIRMWARE VERSIONS:\n" << conf_firmware;
00082
00083
00084
00085
00086
00087
00088
00089 std::string conf_firmware_sp;
00090
00091 std::stringstream conf(conf_firmware);
00092 while( !conf.eof() ){
00093 char buff[1024];
00094 conf.getline(buff,1024);
00095 std::stringstream line(buff);
00096
00097 std::string register_ = "FIRMWARE";
00098 std::string chip_; line>>chip_;
00099 std::string muon_; line>>muon_;
00100 std::string writeValue_; line>>writeValue_;
00101
00102 size_t pos;
00103 pos=writeValue_.find('/');
00104
00105 std::string day;
00106 day.push_back(writeValue_[pos-2]);
00107 day.push_back(writeValue_[pos-1]);
00108
00109 std::string month;
00110 month.push_back(writeValue_[pos+1]);
00111 month.push_back(writeValue_[pos+2]);
00112
00113 std::string year("20");
00114 year.push_back(writeValue_[pos+4]);
00115 year.push_back(writeValue_[pos+5]);
00116
00117
00118
00119
00120
00121 std::string date=year+month+day;
00122
00123
00124
00125
00126
00127
00128
00129 if(chip_ == "SP")
00130 conf_firmware_sp+=register_+" "+chip_+" "+muon_+" "+date+"\n";
00131 }
00132
00133 edm::LogInfo( "L1-O2O: CSCTFConfigOnlineProd" ) << "\nSP KEY: " << spkey
00134 << "\n\nSTATIC CONFIGURATION:\n" << conf_stat
00135 << "\nDAT_ETA CONFIGURATION:\n" << conf_eta
00136 << "\nFIRMWARE VERSIONS:\n" << conf_firmware_sp;
00137
00138 std::string conf_read=conf_eta+conf_stat+conf_firmware_sp;
00139
00140 csctfreg[iSP-1]=conf_read;
00141 }
00142
00143
00144 return boost::shared_ptr< L1MuCSCTFConfiguration >( new L1MuCSCTFConfiguration(csctfreg) ) ;
00145
00146 }
00147
00148