CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripDetVOffHandler.cc
Go to the documentation of this file.
2 
4  name_(pset.getUntrackedParameter<std::string>("name","SiStripDetVOffHandler")),
5  deltaTmin_(pset.getParameter<uint32_t>("DeltaTmin")),
6  maxIOVlength_(pset.getParameter<uint32_t>("MaxIOVlength")),
7  debug_(pset.getUntrackedParameter<bool>("Debug", false))
8 { }
9 
11  LogTrace("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::" << __func__ << "] Destructing ...";
12 }
13 
15 {
16  std::cout << "[SiStripDetVOffHandler::getNewObjects]" << std::endl;
17 
18  std::stringstream dbstr;
19  dbstr << "\n\n---------------------\n " << name_
20  << " - > getNewObjects\n";
21  if (tagInfo().size){
22  //check whats already inside of database
23  std::string userText("No data");
24  size_t splitPoint = logDBEntry().usertext.find_last_of("@");
25  if( splitPoint != std::string::npos ) {
26  userText = logDBEntry().usertext.substr(splitPoint);
27  }
28  dbstr << "got offlineInfo" << tagInfo().name << ", size " << tagInfo().size << " " << tagInfo().token
29  << " , last object valid since "
30  << tagInfo().lastInterval.first << " token "
31  << tagInfo().lastPayloadToken << "\n\n UserText " << userTextLog()
32  << "\n LogDBEntry \n"
33  << logDBEntry().logId << "\n"
34  << logDBEntry().destinationDB << "\n"
35  << logDBEntry().provenance << "\n"
36  << logDBEntry().usertext << "\n"
37  << logDBEntry().iovtag << "\n"
38  << logDBEntry().iovtimetype << "\n"
39  << logDBEntry().payloadIdx << "\n"
40  << logDBEntry().payloadName << "\n"
41  << logDBEntry().payloadToken << "\n"
42  << logDBEntry().payloadContainer << "\n"
43  << logDBEntry().exectime << "\n"
44  << logDBEntry().execmessage << "\n"
45  << "\n\n-- user text " << userText;
46  } else {
47  dbstr << " First object for this tag ";
48  }
49  dbstr << "\n-------------------------\n";
50  edm::LogInfo ("SiStripDetVOffHandler") << dbstr.str();
51 
52  // Do the transfer!
53  std::cout << "getNewObjects setForTransfer" << std::endl;
54  setForTransfer();
55  std::cout << "getNewObjects setForTransfer end" << std::endl;
56 }
57 
59  edm::LogInfo("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::setForTransfer]" << std::endl;
60 
61  // retrieve the last object transferred
62  if (tagInfo().size ) {
63  Ref payload = lastPayload();
64  SiStripDetVOff * lastV = new SiStripDetVOff( *payload );
65  modHVBuilder->setLastSiStripDetVOff( lastV, tagInfo().lastInterval.first );
66  }
67 
68  // build the object!
69  resultVec.clear();
70  modHVBuilder->BuildDetVOffObj();
71  resultVec = modHVBuilder->getModulesVOff(deltaTmin_, maxIOVlength_);
72 
73  if (!resultVec.empty()){
74  // assume by default that transfer is needed
75  unsigned int firstPayload = 0;
76 
77  // check if there is an existing payload and retrieve if there is
78  if (tagInfo().size > 0) {
79  Ref payload = lastPayload();
80  // resultVec does not contain duplicates, so only need to compare payload with resultVec[0]
81  SiStripDetVOff * modV = resultVec[0].first;
82  if (*modV == *payload) {
83  edm::LogInfo("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::setForTransfer] Transfer of first element not required!";
84  cout << "[SiStripDetVOffHandler::setForTransfer] Transfer of first element not required!" << endl;
85  firstPayload = 1;
86  }
87  else {
88  cout << "[SiStripDetVOffHandler::setForTransfer] Transfer of first element required" << endl;
89  }
90  } else {
91  edm::LogInfo("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::setForTransfer] No previous payload";
92  cout << "[SiStripDetVOffHandler::setForTransfer] No previous payload" << endl;
93  }
94 
95  setUserTextLog();
96 
97  for (unsigned int i = firstPayload; i < resultVec.size(); i++) {
98  this->m_to_transfer.push_back(resultVec[i]);
99  }
100 
101  } else {
102  edm::LogError("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::" << __func__ << "] "
103  << name_ << " : NULL pointer reported by SiStripDetVOffBuilder"
104  << "\n Transfer aborted"<< std::endl;
105  }
106 }
107 
108 
110 {
111  std::stringstream ss;
112  ss << "@@@ Number of payloads transferred " << resultVec.size() << "." << std::endl;
113  std::vector< std::pair<SiStripDetVOff*,cond::Time_t> >::const_iterator it = resultVec.begin();
114  ss << "time \t #LV off \t #HV off" << std::endl;
115  for( ; it != resultVec.end(); ++it ) {
116  ss << boost::posix_time::to_iso_extended_string( cond::time::to_boost(it->second) );
117  ss << "\t\t " << it->first->getLVoffCounts() << "\t\t " << it->first->getHVoffCounts() << std::endl;
118  }
119 
120  if( debug_ ) {
121  ss << "PayloadNo/Badmodules/NoAdded/NoRemoved: ";
122  std::vector< std::vector<uint32_t> > payloadStats = modHVBuilder->getPayloadStats();
123  for (unsigned int j = 0; j < payloadStats.size(); j++) {
124  ss << j << "/" << payloadStats[j][0] << "/" << payloadStats[j][1] << "/" << payloadStats[j][2] << "\t ";
125  }
126  }
127 
128  this->m_userTextLog = ss.str();
129 
130  LogTrace("SiStripDetVOffHandler") << "[SiStripDetVOffHandler::setUserTextLog] " << ss.str();
131 
132 
133 }
int i
Definition: DBlmapReader.cc:9
int j
Definition: DBlmapReader.cc:9
#define LogTrace(id)
SiStripDetVOffHandler(const edm::ParameterSet &pset)
tuple cout
Definition: gather_cfg.py:41
tuple size
Write out results.
boost::posix_time::ptime to_boost(Time_t iValue)