CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions
lumi::CMSRunSummary2DB Class Reference
Inheritance diagram for lumi::CMSRunSummary2DB:
lumi::DataPipe

Classes

struct  cmsrunsum
 

Public Member Functions

 CMSRunSummary2DB (const std::string &dest)
 
virtual const std::string dataType () const
 
virtual void retrieveData (unsigned int runnumber)
 
virtual const std::string sourceType () const
 
unsigned int str2int (const std::string &s) const
 
virtual ~CMSRunSummary2DB ()
 
- Public Member Functions inherited from lumi::DataPipe
 DataPipe (const std::string &)
 
std::string getAuthPath () const
 
std::string getMode () const
 
std::string getSource () const
 
void setAuthPath (const std::string &authpath)
 
void setMode (const std::string &mode)
 
void setSource (const std::string &source)
 
virtual ~DataPipe ()
 

Additional Inherited Members

- Protected Attributes inherited from lumi::DataPipe
std::string m_authpath
 
std::string m_dest
 
std::string m_mode
 
std::string m_source
 

Detailed Description

Definition at line 35 of file CMSRunSummary2DB.cc.

Constructor & Destructor Documentation

lumi::CMSRunSummary2DB::CMSRunSummary2DB ( const std::string &  dest)

Definition at line 55 of file CMSRunSummary2DB.cc.

55 :DataPipe(dest){}
DataPipe(const std::string &)
Definition: DataPipe.cc:2
lumi::CMSRunSummary2DB::~CMSRunSummary2DB ( )
virtual

Definition at line 224 of file CMSRunSummary2DB.cc.

224 {}

Member Function Documentation

const std::string lumi::CMSRunSummary2DB::dataType ( ) const
virtual

Implements lumi::DataPipe.

Definition at line 209 of file CMSRunSummary2DB.cc.

209  {
210  return "CMSRUNSUMMARY";
211  }
void lumi::CMSRunSummary2DB::retrieveData ( unsigned int  runnumber)
virtual

select distinct name from runsession_parameter sequence: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:SEQ_NAME' hltkey: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:HLT_KEY_DESCRIPTION'; fillnumber: select string_value from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.SCAL:FILLN' and rownum<=1; start/stop time: select time from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:START_TIME_T'; select time from cms_runinfo.runsession_parameter where runnumber=129265 and name='CMS.LVL0:STOP_TIME_T';

Implements lumi::DataPipe.

Definition at line 56 of file CMSRunSummary2DB.cc.

References lumi::LumiNames::cmsrunsummaryTableName(), gather_cfg::cout, python.DBCopy::destsession, edm::hlt::Exception, lumi::CMSRunSummary2DB::cmsrunsum::fillnumber, lumi::CMSRunSummary2DB::cmsrunsum::hltkey, lumi::DataPipe::m_authpath, lumi::DataPipe::m_dest, lumi::DataPipe::m_source, query::result, runTheMatrix::runData(), lumi::CMSRunSummary2DB::cmsrunsum::sequence, lumi::DBConfig::setAuthentication(), lumi::CMSRunSummary2DB::cmsrunsum::startT, lumi::CMSRunSummary2DB::cmsrunsum::stopT, str2int(), and python.CommonUtils::svc.

56  {
66  cmsrunsum result;
67  std::string runinfoschema("CMS_RUNINFO");
68  std::string runsessionParamTable("RUNSESSION_PARAMETER");
69  coral::ConnectionService* svc=new coral::ConnectionService;
70  lumi::DBConfig dbconf(*svc);
71  if(!m_authpath.empty()){
72  dbconf.setAuthentication(m_authpath);
73  }
74 
75  //std::cout<<"m_source "<<m_source<<std::endl;
76  coral::ISessionProxy* runinfosession=svc->connect(m_source,coral::ReadOnly);
77  try{
78  coral::ITypeConverter& tpc=runinfosession->typeConverter();
79  tpc.setCppTypeForSqlType("unsigned int","NUMBER(38)");
80  runinfosession->transaction().start(true);
81  coral::ISchema& runinfoschemaHandle=runinfosession->schema(runinfoschema);
82  if(!runinfoschemaHandle.existsTable(runsessionParamTable)){
83  throw lumi::Exception(std::string("non-existing table "+runsessionParamTable),"CMSRunSummary2DB","retrieveData");
84  }
85  coral::IQuery* seqQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
86  coral::AttributeList seqBindVariableList;
87  seqBindVariableList.extend("runnumber",typeid(unsigned int));
88  seqBindVariableList.extend("name",typeid(std::string));
89 
90  seqBindVariableList["runnumber"].data<unsigned int>()=runnumber;
91  seqBindVariableList["name"].data<std::string>()=std::string("CMS.LVL0:SEQ_NAME");
92  seqQuery->setCondition("RUNNUMBER =:runnumber AND NAME =:name",seqBindVariableList);
93  seqQuery->addToOutputList("STRING_VALUE");
94  coral::ICursor& seqCursor=seqQuery->execute();
95 
96  while( seqCursor.next() ){
97  const coral::AttributeList& row=seqCursor.currentRow();
98  result.sequence=row["STRING_VALUE"].data<std::string>();
99  }
100  delete seqQuery;
101 
102  coral::IQuery* hltkeyQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
103  coral::AttributeList hltkeyBindVariableList;
104  hltkeyBindVariableList.extend("runnumber",typeid(unsigned int));
105  hltkeyBindVariableList.extend("name",typeid(std::string));
106 
107  hltkeyBindVariableList["runnumber"].data<unsigned int>()=runnumber;
108  hltkeyBindVariableList["name"].data<std::string>()=std::string("CMS.LVL0:HLT_KEY_DESCRIPTION");
109  hltkeyQuery->setCondition("RUNNUMBER =:runnumber AND NAME =:name",hltkeyBindVariableList);
110  hltkeyQuery->addToOutputList("STRING_VALUE");
111  coral::ICursor& hltkeyCursor=hltkeyQuery->execute();
112 
113  while( hltkeyCursor.next() ){
114  const coral::AttributeList& row=hltkeyCursor.currentRow();
115  result.hltkey=row["STRING_VALUE"].data<std::string>();
116  }
117  delete hltkeyQuery;
118 
119  coral::IQuery* fillQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
120  coral::AttributeList fillBindVariableList;
121  fillBindVariableList.extend("runnumber",typeid(unsigned int));
122  fillBindVariableList.extend("name",typeid(std::string));
123 
124  fillBindVariableList["runnumber"].data<unsigned int>()=runnumber;
125  fillBindVariableList["name"].data<std::string>()=std::string("CMS.SCAL:FILLN");
126  fillQuery->setCondition("RUNNUMBER =:runnumber AND NAME =:name",fillBindVariableList);
127  fillQuery->addToOutputList("STRING_VALUE");
128  fillQuery->limitReturnedRows(1);
129  coral::ICursor& fillCursor=fillQuery->execute();
130 
131  while( fillCursor.next() ){
132  const coral::AttributeList& row=fillCursor.currentRow();
133  result.fillnumber=row["STRING_VALUE"].data<std::string>();
134  }
135  delete fillQuery;
136  if (result.fillnumber.empty()){
137  throw nonCollisionException("retrieveData","CMSRunSummary2DB");
138  }
139  coral::IQuery* startTQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
140  coral::AttributeList startTVariableList;
141  startTVariableList.extend("runnumber",typeid(unsigned int));
142  startTVariableList.extend("name",typeid(std::string));
143 
144  startTVariableList["runnumber"].data<unsigned int>()=runnumber;
145  startTVariableList["name"].data<std::string>()=std::string("CMS.LVL0:START_TIME_T");
146  startTQuery->setCondition("RUNNUMBER =:runnumber AND NAME =:name",startTVariableList);
147  startTQuery->addToOutputList("TIME");
148  coral::ICursor& startTCursor=startTQuery->execute();
149 
150  while( startTCursor.next() ){
151  const coral::AttributeList& row=startTCursor.currentRow();
152  result.startT=row["TIME"].data<coral::TimeStamp>();
153  }
154  delete startTQuery;
155  coral::IQuery* stopTQuery=runinfoschemaHandle.tableHandle(runsessionParamTable).newQuery();
156  coral::AttributeList stopTVariableList;
157  stopTVariableList.extend("runnumber",typeid(unsigned int));
158  stopTVariableList.extend("name",typeid(std::string));
159 
160  stopTVariableList["runnumber"].data<unsigned int>()=runnumber;
161  stopTVariableList["name"].data<std::string>()=std::string("CMS.LVL0:STOP_TIME_T");
162  stopTQuery->setCondition("RUNNUMBER =:runnumber AND NAME =:name",stopTVariableList);
163  stopTQuery->addToOutputList("TIME");
164  coral::ICursor& stopTCursor=stopTQuery->execute();
165 
166  while( stopTCursor.next() ){
167  const coral::AttributeList& row=stopTCursor.currentRow();
168  result.stopT=row["TIME"].data<coral::TimeStamp>();
169  }
170  delete stopTQuery;
171  }catch( const coral::Exception& er){
172  runinfosession->transaction().rollback();
173  delete runinfosession;
174  delete svc;
175  throw er;
176  }
177  runinfosession->transaction().commit();
178  delete runinfosession;
179  //std::cout<<"result for run "<<runnumber<<" : sequence : "<<result.sequence<<" : "<<result.hltkey<<" : hltkey : "<<result.hltkey<<" : fillnumber : "<<result.fillnumber<<std::endl;
180 
181  //std::cout<<"connecting to dest "<<m_dest<<std::endl;
182  coral::ISessionProxy* destsession=svc->connect(m_dest,coral::Update);
183 
184  coral::ITypeConverter& desttpc=destsession->typeConverter();
185  desttpc.setCppTypeForSqlType("unsigned int","NUMBER(10)");
186  try{
187  destsession->transaction().start(false);
188  coral::ISchema& destschema=destsession->nominalSchema();
189  coral::ITable& destruntable=destschema.tableHandle(LumiNames::cmsrunsummaryTableName());
190  coral::AttributeList runData;
191  destruntable.dataEditor().rowBuffer(runData);
192  runData["RUNNUM"].data<unsigned int>()=runnumber;
193  runData["FILLNUM"].data<unsigned int>()=str2int(result.fillnumber);
194  runData["SEQUENCE"].data<std::string>()=result.sequence;
195  runData["HLTKEY"].data<std::string>()=result.hltkey;
196  runData["STARTTIME"].data<coral::TimeStamp>()=result.startT;
197  runData["STOPTIME"].data<coral::TimeStamp>()=result.stopT;
198  destruntable.dataEditor().insertRow(runData);
199  }catch( const coral::Exception& er){
200  std::cout<<"database problem "<<er.what()<<std::endl;
201  destsession->transaction().rollback();
202  delete destsession;
203  delete svc;
204  throw er;
205  }
206  destsession->transaction().commit();
207  delete svc;
208  }
unsigned int str2int(const std::string &s) const
std::string m_dest
Definition: DataPipe.h:23
tuple result
Definition: query.py:137
std::string m_source
Definition: DataPipe.h:24
std::string m_authpath
Definition: DataPipe.h:25
tuple cout
Definition: gather_cfg.py:41
static const std::string cmsrunsummaryTableName()
Definition: LumiNames.cc:2
tuple destsession
Definition: DBCopy.py:270
const std::string lumi::CMSRunSummary2DB::sourceType ( ) const
virtual

Implements lumi::DataPipe.

Definition at line 212 of file CMSRunSummary2DB.cc.

212  {
213  return "DB";
214  }
unsigned int lumi::CMSRunSummary2DB::str2int ( const std::string &  s) const

Definition at line 215 of file CMSRunSummary2DB.cc.

References edm::hlt::Exception, and i.

Referenced by retrieveData().

215  {
216  std::istringstream myStream(s);
217  unsigned int i;
218  if(myStream>>i){
219  return i;
220  }else{
221  throw lumi::Exception(std::string("str2int error"),"str2int","CMSRunSummary2DB");
222  }
223  }
int i
Definition: DBlmapReader.cc:9
string s
Definition: asciidump.py:422