CMS 3D CMS Logo

SiStripPopConConfigDbObjHandler.h
Go to the documentation of this file.
1 #ifndef SISTRIPPOPCON_CONFIGDB_HANDLER_H
2 #define SISTRIPPOPCON_CONFIGDB_HANDLER_H
3 
9 
12 
16 
17 #include <sstream>
18 #include <vector>
19 #include <string>
20 #include <iostream>
21 #include <typeinfo>
22 
23 namespace popcon {
24 
25  template <typename T>
27  public:
28  //---------------------------------------
29  //
31  : m_name(pset.getUntrackedParameter<std::string>("name", "SiStripPopPopConConfigDbObjHandler")),
32  m_since(pset.getUntrackedParameter<uint32_t>("since", 5)),
33  m_debugMode(pset.getUntrackedParameter<bool>("debug", false)){};
34 
35  //---------------------------------------
36  //
38 
39  //---------------------------------------
40  //
41  void getNewObjects() override {
42  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "[getNewObjects] for PopCon application " << m_name;
43 
44  if (m_debugMode) {
45  std::stringstream ss;
46  ss << "\n\n------- " << m_name << " - > getNewObjects\n";
47  if (this->tagInfo().size) {
48  //check whats already inside of database
49  ss << "got offlineInfo" << this->tagInfo().name << ", size " << this->tagInfo().size << " "
50  << this->tagInfo().token << " , last object valid since " << this->tagInfo().lastInterval.first
51  << " token " << this->tagInfo().lastPayloadToken << "\n\n UserText " << this->userTextLog()
52  << "\n LogDBEntry \n"
53  << this->logDBEntry().logId << "\n"
54  << this->logDBEntry().destinationDB << "\n"
55  << this->logDBEntry().provenance << "\n"
56  << this->logDBEntry().usertext << "\n"
57  << this->logDBEntry().iovtag << "\n"
58  << this->logDBEntry().iovtimetype << "\n"
59  << this->logDBEntry().payloadIdx << "\n"
60  << this->logDBEntry().payloadClass << "\n"
61  << this->logDBEntry().payloadToken << "\n"
62  << this->logDBEntry().exectime << "\n"
63  << this->logDBEntry().execmessage << "\n"
64  << "\n\n-- user text "
65  << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_last_of("@"));
66  } else {
67  ss << " First object for this tag ";
68  }
69  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << ss.str();
70  }
71  if (isTransferNeeded())
73 
74  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
75  << "[getNewObjects] for PopCon application " << m_name << " Done\n--------------\n";
76  }
77 
78  //---------------------------------------
79  //
80  std::string id() const override { return m_name; }
81 
82  //---------------------------------------
83  //
85  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
86  << "[isTransferNeeded] checking for transfer: " << typeid(T).name() << std::endl;
87  std::stringstream ss_logdb, ss;
88 
89  //get log information from previous upload
90  if (!this->logDBEntry().usertext.empty())
91  ss_logdb << this->logDBEntry().usertext.substr(this->logDBEntry().usertext.find_first_of("@"));
92  else
93  ss_logdb << "";
94 
95  std::string label = "";
96  if (typeid(T) == typeid(SiStripFedCabling))
97  label = "Cabling";
98 
99  if (typeid(T) == typeid(SiStripApvGain))
100  label = "ApvTiming";
101 
102  if (typeid(T) == typeid(SiStripLatency))
103  label = "ApvLatency";
104 
105  if (!condObjBuilder->checkForCompatibility(ss_logdb, ss, label)) {
106  //string are equal, no need to do transfer
107  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
108  << "[isTransferNeeded] the selected conditions are already uploaded in the last iov ("
109  << this->tagInfo().lastInterval.first << ") open for the object " << this->logDBEntry().payloadClass
110  << " in the db " << this->logDBEntry().destinationDB << " parameters: " << ss_logdb.str()
111  << "\n NO TRANSFER NEEDED";
112  return false;
113  }
114 
115  this->m_userTextLog = ss.str();
116  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
117  << "[isTransferNeeded] the selected conditions will be uploaded: " << ss.str()
118  << "\n Going to Upload: " << ss.str() << "\n Last Upload: " << ss_logdb.str() << "\n Fine";
119 
120  return true;
121  }
122 
123  //---------------------------------------
124  //
125  void setForTransfer() {
126  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
127  << "[setForTransfer] " << m_name << " getting data to be transferred " << std::endl;
128 
129  T* obj = nullptr;
130  condObjBuilder->getValue(obj);
131 
132  edm::LogInfo("SiStripPopPopConConfigDbObjHandler")
133  << "[setForTransfer] " << m_name << " got data to be transferred from condObjBuilder " << std::endl;
134 
135  if (!this->tagInfo().size)
136  m_since = 1;
137  else if (m_debugMode)
138  m_since = this->tagInfo().lastInterval.first + 1;
139  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "[setForTransfer] setting since = " << m_since << std::endl;
140 
141  if (obj != nullptr) {
142  edm::LogInfo("SiStripPopPopConConfigDbObjHandler") << "[setForTransfer] filling map m_to_transfer" << std::endl;
143  this->m_to_transfer.push_back(std::make_pair(obj, m_since));
144  } else {
145  edm::LogError("SiStripPopPopConConfigDbObjHandler")
146  << "[setForTransfer] " << m_name << " : NULL pointer of obj " << typeid(T).name()
147  << " reported by SiStripCondObjBuilderFromDb\n Transfer aborted" << std::endl;
148  }
149  }
150 
151  private:
152  // data members
154  unsigned long long m_since;
157  };
158 } // namespace popcon
159 
160 #endif //SISTRIPPOPCON_CONFIGDB_HANDLER_H
size
Write out results.
std::string const & userTextLog() const
edm::Service< SiStripCondObjBuilderFromDb > condObjBuilder
unsigned long long logId
Definition: Types.h:91
std::string provenance
Definition: Types.h:93
std::string payloadToken
Definition: Types.h:100
size_t size
Definition: Types.h:76
std::string execmessage
Definition: Types.h:102
SiStripPopConConfigDbObjHandler(const edm::ParameterSet &pset)
std::string name
Definition: Types.h:72
char const * label
cond::ValidityInterval lastInterval
Definition: Types.h:74
bool checkForCompatibility(std::stringstream &input, std::stringstream &output, std::string &label)
std::string payloadClass
Definition: Types.h:99
void getValue(SiStripFedCabling *&val)
cond::LogDBEntry_t const & logDBEntry() const
std::string destinationDB
Definition: Types.h:92
std::string exectime
Definition: Types.h:101
std::string lastPayloadToken
Definition: Types.h:75
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
unsigned int payloadIdx
Definition: Types.h:97
std::string usertext
Definition: Types.h:94
long double T
std::string token
Definition: Types.h:73
cond::TagInfo_t const & tagInfo() const
std::string iovtimetype
Definition: Types.h:96
std::string iovtag
Definition: Types.h:95