CMS 3D CMS Logo

RunInfoUpdate.cc
Go to the documentation of this file.
4 
5 namespace {
6  boost::posix_time::ptime parseTimeFromIsoString( const std::string& isoString ){
7  boost::posix_time::time_input_facet* tif = new boost::posix_time::time_input_facet;
8  tif->set_iso_extended_format();
9  std::istringstream iss( isoString );
10  iss.imbue(std::locale(std::locale::classic(),tif));
11  boost::posix_time::ptime ret;
12  iss >> ret;
13  return ret;
14  }
15 
16  void getRunTimeParams( const RunInfo& runInfo, boost::posix_time::ptime& start, boost::posix_time::ptime& end ){
17  std::string startStr = runInfo.m_start_time_str;
18  if( startStr != "null" ){
19  start = parseTimeFromIsoString( startStr );
20  }
21  end = start;
22  std::string stopStr = runInfo.m_stop_time_str;
23  if( stopStr != "null" ){
24  end = parseTimeFromIsoString( stopStr );
25  }
26  }
27 }
28 
30  m_dbSession(dbSession){
31 }
32 
34 
35 void RunInfoUpdate::appendNewRun( const RunInfo& runInfo ){
37  boost::posix_time::ptime start;
38  boost::posix_time::ptime end;
39  getRunTimeParams( runInfo, start, end );
40  edm::LogInfo( "RunInfoUpdate" ) << "[RunInfoUpdate::" << __func__ << "]: Checking run " <<runInfo.m_run<<" for insertion in Condition DB"<< std::endl;
41  runInfoWriter.insertNew( runInfo.m_run, start, end );
42  size_t newRuns = runInfoWriter.flush();
43  edm::LogInfo( "RunInfoUpdate" ) << "[RunInfoUpdate::" << __func__ << "]: "<<newRuns<<" new run(s) inserted."<< std::endl;
44 }
45 
46 // only used in import command tool
49  std::cout << "# Loading tag "<<sourceTag<<"..."<<std::endl;
50  cond::persistency::IOVProxy runInfoTag = sourceSession.readIov( sourceTag, true );
51  editor = m_dbSession.editRunInfo();
53  std::cout <<"# Last run found in RunInfo db : "<<lastRun<<std::endl;
55  if( lastRun>0 ){
56  it = runInfoTag.find( lastRun+1 );
57  }
58  if( it == runInfoTag.end() || (*it).since==lastRun ){
59  std::cout <<"# No more run found to be imported."<<std::endl;
60  return 0;
61  }
62  size_t n_entries = 0;
63  while( it != runInfoTag.end() && n_entries<=maxEntries){
64  auto h = (*it).payloadId;
65  std::shared_ptr<RunInfo> runInfo = sourceSession.fetchPayload<RunInfo>( h );
66  if(runInfo->m_run != -1){
67  n_entries++;
68  std::cout <<"# Inserting run #"<<runInfo->m_run<<" (from since="<<(*it).since<<")" << std::endl;
69  boost::posix_time::ptime start;
70  boost::posix_time::ptime end;
71  getRunTimeParams( *runInfo, start, end );
72  editor.insert( runInfo->m_run, start, end );
73  } else {
74  std::cout <<"# Skipping fake run #" <<std::endl;
75  }
76  it++;
77  }
78  editor.flush();
79  return n_entries;
80 }
81 
Definition: start.py:1
RunInfoUpdate(cond::persistency::Session &dbSession)
void insert(cond::Time_t runNumber, const boost::posix_time::ptime &start, const boost::posix_time::ptime &end)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
RunInfoEditor editRunInfo()
Definition: Session.cc:218
void insertNew(cond::Time_t runNumber, const boost::posix_time::ptime &start, const boost::posix_time::ptime &end)
size_t import(size_t maxEntries, const std::string &tag, cond::persistency::Session &sourceSession)
std::unique_ptr< T > fetchPayload(const cond::Hash &payloadHash)
Definition: Session.h:215
const unsigned int maxEntries
Iterator begin() const
Definition: IOVProxy.cc:289
IOVProxy readIov(const std::string &tag, bool full=false)
Definition: Session.cc:81
unsigned long long Time_t
Definition: Time.h:16
std::string m_start_time_str
Definition: RunInfo.h:23
Iterator find(cond::Time_t time)
Definition: IOVProxy.cc:320
#define end
Definition: vmac.h:39
void appendNewRun(const RunInfo &run)
cond::persistency::Session & m_dbSession
Definition: RunInfoUpdate.h:21
std::string m_stop_time_str
Definition: RunInfo.h:25
int m_run
Definition: RunInfo.h:21
Iterator end() const
Definition: IOVProxy.cc:297