|
||||
File indexing completed on 2024-04-06 12:03:25
0001 // -*- C++ -*- 0002 // 0003 // Package: CondTools/SiPixel 0004 // Class: PixelPopConCalibSourceHandler 0005 // 0006 /**\class PixelPopConCalibSourcehandler PixelPopConCalibSourceHandler.cc CondTools/SiPixel/src/PixelPopConCalibSourceHandler.cc 0007 0008 Description: <one line class summary> 0009 0010 Implementation: 0011 <Notes on implementation> 0012 */ 0013 // 0014 // Original Author: Michael Eads 0015 // Created: 8 Feb 2008 0016 // $Id: PixelPopConCalibSourceHandler.cc,v 1.3 2010/01/21 21:11:46 meads Exp $ 0017 // 0018 // 0019 0020 #include "CondTools/SiPixel/interface/PixelPopConCalibSourceHandler.h" 0021 0022 #include <iostream> 0023 #include <sstream> 0024 0025 // DBCommon includes 0026 // #include "CondCore/DBCommon/interface/SessionConfiguration.h" 0027 // #include "CondCore/DBCommon/interface/Exception.h" 0028 // #include "CondCore/DBCommon/interface/Connection.h" 0029 0030 // CORAL includes 0031 // #include "RelationalAccess/IView.h" 0032 // #include "RelationalAccess/ISessionProxy.h" 0033 // #include "RelationalAccess/ISchema.h" 0034 // #include "RelationalAccess/ISessionProperties.h" 0035 // #include "RelationalAccess/IQuery.h" 0036 // #include "RelationalAccess/ICursor.h" 0037 // #include "CoralBase/AttributeList.h" 0038 // #include "CoralBase/Attribute.h" 0039 0040 #include "CalibFormats/SiPixelObjects/interface/PixelCalibConfiguration.h" 0041 0042 // test poolDBOutput 0043 #include "FWCore/ServiceRegistry/interface/Service.h" 0044 0045 using namespace std; 0046 0047 // constructor 0048 PixelPopConCalibSourceHandler::PixelPopConCalibSourceHandler(edm::ParameterSet const &pset) { 0049 // try to get a parameter 0050 _connectString = pset.getParameter<string>("connectString"); 0051 //cout << " connectString: " << _connectString << endl; 0052 0053 // get the schema and view name to use from the config file 0054 _viewName = pset.getParameter<string>("viewName"); 0055 _schemaName = pset.getParameter<string>("schemaName"); 0056 0057 // get the key name and/or run number to use 0058 _runNumber = pset.getParameter<int>("runNumber"); 0059 _configKeyName = pset.getParameter<string>("configKeyName"); 0060 0061 // get the "since" IOV parameter 0062 _sinceIOV = pset.getParameter<unsigned int>("sinceIOV"); 0063 0064 } // constructor 0065 0066 // destructor 0067 PixelPopConCalibSourceHandler::~PixelPopConCalibSourceHandler() {} // destructor 0068 0069 string PixelPopConCalibSourceHandler::id() const { 0070 return string("PixelPopConCalibSourceHandler"); 0071 0072 } // string PixelPopConCalibSourceHandler::id() 0073 0074 // getNewObjects method using coral 0075 void PixelPopConCalibSourceHandler::getNewObjects_coral() { 0076 cout << "I'm sorry, the PixelPopConCalibSourceHandler::getNewObjects_coral() is not currently working." << endl; 0077 cout << "I am not able to build calibration configuration objects from the database" << endl; 0078 return; 0079 0080 // // create the empty SiPixelCalibConfiguration object 0081 // SiPixelCalibConfiguration* calibConfig = new SiPixelCalibConfiguration(); 0082 0083 // // set up the DB session 0084 // cond::DBSession* dbsession = new cond::DBSession(); 0085 // dbsession->configuration().setAuthenticationMethod(cond::XML); 0086 // dbsession->configuration().setMessageLevel(cond::Error); 0087 // try{ 0088 // dbsession->open(); 0089 // }catch(cond::Exception& er){ 0090 // std::cerr<< "CoralIface::initialize cond " << er.what()<<std::endl; 0091 // throw; 0092 // }catch(std::exception& er){ 0093 // std::cerr<< "CoralIface::initialize std " << er.what()<<std::endl; 0094 // throw; 0095 // } 0096 0097 // cond::Connection dbconn(_connectString); 0098 // dbconn.connect(dbsession); 0099 // cond::CoralTransaction& coraldb=dbconn.coralTransaction(); 0100 // coraldb.start(true); 0101 0102 // // build and execute the query 0103 // coral::IQuery* query = coraldb.coralSessionProxy().schema(_schemaName).newQuery(); 0104 // query->addToTableList(_viewName); 0105 // query->addToOutputList("CONFG_KEY"); 0106 // query->addToOutputList("VERSION"); 0107 // query->addToOutputList("RUN_TYPE"); 0108 // query->addToOutputList("RUN_NUMBER"); 0109 // query->addToOutputList("CALIB_OBJ_DATA_FILE"); 0110 // query->addToOutputList("CALIB_OBJ_DATA_CLOB"); 0111 0112 // // if _runNumber is -1, query by config key name 0113 // if (_runNumber == -1) 0114 // query->setCondition("CONFG_KEY = '" + _configKeyName + "'", coral::AttributeList()); 0115 // else // query by run number 0116 // query->setCondition("RUN_NUMBER = " + _runNumber, coral::AttributeList()); 0117 // coral::ICursor& cursor = query->execute(); 0118 0119 // // parse the response, build the Calib object 0120 // bool found_fNtriggers = false; 0121 // bool found_fRowPattern = false; 0122 // bool found_fColumnPattern = false; 0123 // bool found_fVCalValues = false; 0124 // bool found_fMode = false; 0125 // while ( cursor.next() ) { 0126 // cout << "Inside cursor.next() loop" << endl; 0127 // //cursor.currentRow().toOutputStream( std::cout ) << std::endl; 0128 // coral::AttributeList row = cursor.currentRow(); 0129 0130 // string mystring = row["CALIB_OBJ_DATA_CLOB"].data<string>(); 0131 // cout << "mystring: " << mystring << endl; 0132 0133 // // get fMode 0134 // if (!found_fMode) { 0135 // calibConfig->setCalibrationMode(row["CALIB_MODE"].data<string>()); 0136 // found_fMode = true; 0137 // } // if (!found_fMode) 0138 0139 // // fill fNTriggers 0140 // if (row["PARAMETER"].data<string>() == "Number of Triggers") { 0141 // if (found_fNtriggers) { 0142 // cout << "Warning: found mulitple entries for fNtriggers!" << endl; 0143 // } 0144 // int fNtriggers = atoi(row["VALUE"].data<string>().c_str()); 0145 // //cout << "Number of triggers: " << fNtriggers << endl; 0146 // calibConfig->setNTriggers(static_cast<short>(fNtriggers)); 0147 // found_fNtriggers = true; 0148 // } // fill fNTriggers 0149 0150 // /* 0151 // // fill fROCIds 0152 // if (row["PARAMETER"].data<string>() == "ROC") { 0153 // if (found_fROCIds) { 0154 // cout << "Warning: found mulitple entries for fROCIds!" << endl; 0155 // } 0156 // string rocidlist = row["VALUE"].data<string>(); 0157 // // split the string 0158 // string buff; 0159 // vector<string> ROCIds; 0160 // stringstream ss(rocidlist); 0161 // while (ss >> buff) { 0162 // ROCIds.push_back(buff); 0163 // } 0164 // calibConfig->setROCIds(ROCIds); 0165 // found_fROCIds = true; 0166 // } // fill fROCIds 0167 // */ 0168 0169 // // fill fRowPattern 0170 // if (row["PARAMETER"].data<string>() == "RowNums") { 0171 // if (found_fRowPattern) { 0172 // cout << "Warning: found mulitple entries for fRowPattern!" << endl; 0173 // } 0174 // string rowlist = row["VALUE"].data<string>(); 0175 // // split the string 0176 // string buff; 0177 // vector<short> rows; 0178 // stringstream ss(rowlist); 0179 // while (ss >> buff) { 0180 // rows.push_back(static_cast<short>(atoi(buff.c_str()))); 0181 // } 0182 // calibConfig->setRowPattern(rows); 0183 // found_fRowPattern = true; 0184 // } // fill fRowPattern 0185 0186 // // fill fColumnPattern 0187 // if (row["PARAMETER"].data<string>() == "ColNums") { 0188 // if (found_fColumnPattern) { 0189 // cout << "Warning: found mulitple entries for fColumnPattern!" << endl; 0190 // } 0191 // string collist = row["VALUE"].data<string>(); 0192 // // split the string 0193 // string buff; 0194 // vector<short> cols; 0195 // stringstream ss(collist); 0196 // while (ss >> buff) { 0197 // cols.push_back(static_cast<short>(atoi(buff.c_str()))); 0198 // } 0199 // calibConfig->setColumnPattern(cols); 0200 // found_fColumnPattern = true; 0201 // } // fill fColumnPattern 0202 0203 // // fill fVCalValues 0204 // if (row["CALIB_OBJECT"].data<string>() == "Vcal DAC") { 0205 // if (found_fVCalValues) { 0206 // cout << "Warning: found mulitple entries for fVCalValues!" << endl; 0207 // } 0208 // string vcallist = row["VALUE"].data<string>(); 0209 // // split the string 0210 // string buff; 0211 // vector<short> vcals; 0212 // stringstream ss(vcallist); 0213 // while (ss >> buff) { 0214 // vcals.push_back(static_cast<short>(atoi(buff.c_str()))); 0215 // } 0216 // calibConfig->setVCalValues(vcals); 0217 // found_fVCalValues = true; 0218 // } // fill fRowPattern 0219 0220 // /* 0221 // for (coral::AttributeList::iterator it = row.begin(); 0222 // it != row.end(); ++it) { 0223 // if it->specification().name() == "PARAMETER" 0224 0225 // if (it->specification().name() == "RUN_NUMBER") 0226 // cout << it->specification().name() << ", " << it->data<long long>() << endl; 0227 // else 0228 // cout << it->specification().name() << ", " << it->data<string>() << endl; 0229 0230 // } // loop over attribute list 0231 // */ 0232 // } // while (cursor.next()) 0233 0234 // // spit out calibConfig object 0235 // cout << endl << "** calibConfig: " << endl; 0236 // cout << " fNtriggers: " << calibConfig->getNTriggers() << endl; 0237 // /* 0238 // cout << " fROCIds: "; 0239 // vector<string> rocids = calibConfig->getROCIds(); 0240 // for (vector<string>::const_iterator it = rocids.begin(); 0241 // it != rocids.end(); ++it) 0242 // cout << *it << ", "; 0243 // cout << endl; 0244 // */ 0245 // cout << " fRowPattern: "; 0246 // vector<short> rowpattern = calibConfig->getRowPattern(); 0247 // for (vector<short>::const_iterator it = rowpattern.begin(); 0248 // it != rowpattern.end(); ++it) 0249 // cout << *it << ", "; 0250 // cout << endl; 0251 // cout << " fColumnPattern: "; 0252 // vector<short> columnpattern = calibConfig->getColumnPattern(); 0253 // for (vector<short>::const_iterator it = columnpattern.begin(); 0254 // it != columnpattern.end(); ++it) 0255 // cout << *it << ", "; 0256 // cout << endl; 0257 // cout << " fVcalValues: "; 0258 // vector<short> vcalvalues = calibConfig->getVCalValues(); 0259 // for (vector<short>::const_iterator it = vcalvalues.begin(); 0260 // it != vcalvalues.end(); ++it) 0261 // cout << *it << ", "; 0262 // cout << endl; 0263 // cout << " fNmode: " << calibConfig->getCalibrationMode() << endl; 0264 0265 // // see what's in the db 0266 // //cout << "tagInfo: " << tagInfo().name << ", " << tagInfo().lastInterval.first << endl; 0267 0268 // m_to_transfer.push_back(std::make_pair(calibConfig,_sinceIOV)); 0269 0270 // delete dbsession; 0271 } // void PixelPopConCalibSourceHandler::getNewObjects_coral() 0272 0273 // getNewObjects method using a text file 0274 void PixelPopConCalibSourceHandler::getNewObjects_file() { 0275 // check to make sure the _connectString begins with "file//" 0276 if (_connectString.find("file://") != 0) { 0277 cout << "Invalid connectString: " << _connectString << endl; 0278 cout << "It should begin with \"file://\"" << endl; 0279 return; 0280 } 0281 // strip the "file://" from the connect string 0282 string inputFilename = _connectString.erase(0, 7); 0283 0284 cout << "PopCon-ing the calibration configuration file located at " << inputFilename << endl; 0285 0286 // use online code to parse the file 0287 pos::PixelCalibConfiguration fancyCalib(inputFilename); 0288 auto calibConfig = std::make_shared<SiPixelCalibConfiguration>(fancyCalib); 0289 0290 m_iovs.insert(std::make_pair(_sinceIOV, calibConfig)); 0291 0292 } // void PixelPopConCalibSourceHandler::getNewObjects_file()
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |