CMS 3D CMS Logo

MonPNMGPADat.cc
Go to the documentation of this file.
1 #include <stdexcept>
2 #include <string>
4 
8 
9 using namespace std;
10 using namespace oracle::occi;
11 
13 {
14  m_env = nullptr;
15  m_conn = nullptr;
16  m_writeStmt = nullptr;
17  m_readStmt = nullptr;
18 
19  m_adcMeanG1 =0;
20  m_adcRMSG1 = 0;
21  m_adcMeanG16 = 0;
22  m_adcRMSG16 = 0;
23  m_pedMeanG1 = 0;
24  m_pedRMSG1 = 0;
25  m_pedMeanG16 = 0;
26  m_pedRMSG16 = 0;
27  m_taskStatus = false;
28 }
29 
30 
31 
33 {
34 }
35 
36 
37 
40 {
41  this->checkConnection();
42 
43  try {
44  m_writeStmt = m_conn->createStatement();
45  m_writeStmt->setSQL("INSERT INTO mon_pn_mgpa_dat (iov_id, logic_id, "
46  "adc_mean_g1, adc_rms_g1, adc_mean_g16, adc_rms_g16, ped_mean_g1, ped_rms_g1, ped_mean_g16, ped_rms_g16, task_status) "
47  "VALUES (:iov_id, :logic_id, "
48  ":3, :4, :5, :6, :7, :8, :9, :10, :11)");
49  } catch (SQLException &e) {
50  throw(std::runtime_error("MonPNMGPADat::prepareWrite(): "+e.getMessage()));
51  }
52 }
53 
54 
55 
56 void MonPNMGPADat::writeDB(const EcalLogicID* ecid, const MonPNMGPADat* item, MonRunIOV* iov)
57  noexcept(false)
58 {
59  this->checkConnection();
60  this->checkPrepare();
61 
62  int iovID = iov->fetchID();
63  if (!iovID) { throw(std::runtime_error("MonPNMGPADat::writeDB: IOV not in DB")); }
64 
65  int logicID = ecid->getLogicID();
66  if (!logicID) { throw(std::runtime_error("MonPNMGPADat::writeDB: Bad EcalLogicID")); }
67 
68  try {
69  m_writeStmt->setInt(1, iovID);
70  m_writeStmt->setInt(2, logicID);
71 
72  m_writeStmt->setFloat(3, item->getADCMeanG1() );
73  m_writeStmt->setFloat(4, item->getADCRMSG1() );
74  m_writeStmt->setFloat(5, item->getADCMeanG16() );
75  m_writeStmt->setFloat(6, item->getADCRMSG16() );
76  m_writeStmt->setFloat(7, item->getPedMeanG1() );
77  m_writeStmt->setFloat(8, item->getPedRMSG1() );
78  m_writeStmt->setFloat(9, item->getPedMeanG16() );
79  m_writeStmt->setFloat(10, item->getPedRMSG16() );
80  m_writeStmt->setInt(11, item->getTaskStatus() );
81 
82  m_writeStmt->executeUpdate();
83  } catch (SQLException &e) {
84  throw(std::runtime_error("MonPNMGPADat::writeDB(): "+e.getMessage()));
85  }
86 }
87 
88 
89 
90 void MonPNMGPADat::fetchData(std::map< EcalLogicID, MonPNMGPADat >* fillMap, MonRunIOV* iov)
91  noexcept(false)
92 {
93  this->checkConnection();
94  fillMap->clear();
95 
96  iov->setConnection(m_env, m_conn);
97  int iovID = iov->fetchID();
98  if (!iovID) {
99  // throw(std::runtime_error("MonPNMGPADat::writeDB: IOV not in DB"));
100  return;
101  }
102 
103  try {
104 
105  m_readStmt->setSQL("SELECT cv.name, cv.logic_id, cv.id1, cv.id2, cv.id3, cv.maps_to, "
106  "d.adc_mean_g1, d.adc_rms_g1, d.adc_mean_g16, d.adc_rms_g16, d.ped_mean_g1,d.ped_rms_g1, d.ped_mean_g16, d.ped_rms_g16, d.task_status "
107  "FROM channelview cv JOIN mon_pn_mgpa_dat d "
108  "ON cv.logic_id = d.logic_id AND cv.name = cv.maps_to "
109  "WHERE d.iov_id = :iov_id");
110  m_readStmt->setInt(1, iovID);
111  ResultSet* rset = m_readStmt->executeQuery();
112 
113  std::pair< EcalLogicID, MonPNMGPADat > p;
114  MonPNMGPADat dat;
115  while(rset->next()) {
116  p.first = EcalLogicID( rset->getString(1), // name
117  rset->getInt(2), // logic_id
118  rset->getInt(3), // id1
119  rset->getInt(4), // id2
120  rset->getInt(5), // id3
121  rset->getString(6)); // maps_to
122 
123  dat.setADCMeanG1( rset->getFloat(7) );
124  dat.setADCRMSG1( rset->getFloat(8) );
125  dat.setADCMeanG16( rset->getFloat(9) );
126  dat.setADCRMSG16( rset->getFloat(10) );
127  dat.setPedMeanG1( rset->getFloat(11) );
128  dat.setPedRMSG1( rset->getFloat(12) );
129  dat.setPedMeanG16( rset->getFloat(13) );
130  dat.setPedRMSG16( rset->getFloat(14) );
131  dat.setTaskStatus( rset->getInt(15) );
132  p.second = dat;
133  fillMap->insert(p);
134  }
135  } catch (SQLException &e) {
136  throw(std::runtime_error("MonPNMGPADat::fetchData(): "+e.getMessage()));
137  }
138 }
139 
140 void MonPNMGPADat::writeArrayDB(const std::map< EcalLogicID, MonPNMGPADat >* data, MonRunIOV* iov)
141  noexcept(false)
142 {
143  this->checkConnection();
144  this->checkPrepare();
145 
146  int iovID = iov->fetchID();
147  if (!iovID) { throw(std::runtime_error("MonPNMGPADat::writeArrayDB: IOV not in DB")); }
148 
149 
150  int nrows=data->size();
151  int* ids= new int[nrows];
152  int* iovid_vec= new int[nrows];
153  float* xx= new float[nrows];
154  float* yy= new float[nrows];
155  float* zz= new float[nrows];
156  float* ww= new float[nrows];
157  float* uu= new float[nrows];
158  float* tt= new float[nrows];
159  float* rr= new float[nrows];
160  float* pp= new float[nrows];
161  int* st= new int[nrows];
162 
163  ub2* ids_len= new ub2[nrows];
164  ub2* iov_len= new ub2[nrows];
165  ub2* x_len= new ub2[nrows];
166  ub2* y_len= new ub2[nrows];
167  ub2* z_len= new ub2[nrows];
168  ub2* w_len= new ub2[nrows];
169  ub2* u_len= new ub2[nrows];
170  ub2* t_len= new ub2[nrows];
171  ub2* r_len= new ub2[nrows];
172  ub2* p_len= new ub2[nrows];
173  ub2* st_len= new ub2[nrows];
174 
175  const EcalLogicID* channel;
176  const MonPNMGPADat* dataitem;
177  int count=0;
178  typedef map< EcalLogicID, MonPNMGPADat >::const_iterator CI;
179  for (CI p = data->begin(); p != data->end(); ++p) {
180  channel = &(p->first);
181  int logicID = channel->getLogicID();
182  if (!logicID) { throw(std::runtime_error("MonPNMGPADat::writeArrayDB: Bad EcalLogicID")); }
183  ids[count]=logicID;
184  iovid_vec[count]=iovID;
185 
186  dataitem = &(p->second);
187  // dataIface.writeDB( channel, dataitem, iov);
188  float x=dataitem->getADCMeanG1();
189  float y=dataitem->getADCRMSG1();
190  float z=dataitem->getADCMeanG16();
191  float w=dataitem->getADCRMSG16();
192  float u=dataitem->getPedMeanG1();
193  float t=dataitem->getPedRMSG1();
194  float r=dataitem->getPedMeanG16();
195  float pi=dataitem->getPedRMSG16();
196  int statu=dataitem->getTaskStatus();
197 
198 
199 
200  xx[count]=x;
201  yy[count]=y;
202  zz[count]=z;
203  ww[count]=w;
204  uu[count]=u;
205  tt[count]=t;
206  rr[count]=r;
207  pp[count]=pi;
208  st[count]=statu;
209 
210 
211  ids_len[count]=sizeof(ids[count]);
212  iov_len[count]=sizeof(iovid_vec[count]);
213 
214  x_len[count]=sizeof(xx[count]);
215  y_len[count]=sizeof(yy[count]);
216  z_len[count]=sizeof(zz[count]);
217  w_len[count]=sizeof(ww[count]);
218  u_len[count]=sizeof(uu[count]);
219  t_len[count]=sizeof(tt[count]);
220  r_len[count]=sizeof(rr[count]);
221  p_len[count]=sizeof(pp[count]);
222  st_len[count]=sizeof(st[count]);
223 
224  count++;
225  }
226 
227 
228  try {
229  m_writeStmt->setDataBuffer(1, (dvoid*)iovid_vec, OCCIINT, sizeof(iovid_vec[0]),iov_len);
230  m_writeStmt->setDataBuffer(2, (dvoid*)ids, OCCIINT, sizeof(ids[0]), ids_len );
231  m_writeStmt->setDataBuffer(3, (dvoid*)xx, OCCIFLOAT , sizeof(xx[0]), x_len );
232  m_writeStmt->setDataBuffer(4, (dvoid*)yy, OCCIFLOAT , sizeof(yy[0]), y_len );
233  m_writeStmt->setDataBuffer(5, (dvoid*)zz, OCCIFLOAT , sizeof(zz[0]), z_len );
234  m_writeStmt->setDataBuffer(6, (dvoid*)ww, OCCIFLOAT , sizeof(ww[0]), w_len );
235  m_writeStmt->setDataBuffer(7, (dvoid*)uu, OCCIFLOAT , sizeof(uu[0]), u_len );
236  m_writeStmt->setDataBuffer(8, (dvoid*)tt, OCCIFLOAT , sizeof(tt[0]), t_len );
237  m_writeStmt->setDataBuffer(9, (dvoid*)rr, OCCIFLOAT , sizeof(rr[0]), r_len );
238  m_writeStmt->setDataBuffer(10, (dvoid*)pp, OCCIFLOAT , sizeof(pp[0]), p_len );
239  m_writeStmt->setDataBuffer(11, (dvoid*)st, OCCIINT , sizeof(st[0]), st_len );
240 
241 
242  m_writeStmt->executeArrayUpdate(nrows);
243 
244  delete [] ids;
245  delete [] iovid_vec;
246  delete [] xx;
247  delete [] yy;
248  delete [] zz;
249  delete [] ww;
250  delete [] uu;
251  delete [] tt;
252  delete [] rr;
253  delete [] pp;
254  delete [] st;
255 
256  delete [] ids_len;
257  delete [] iov_len;
258  delete [] x_len;
259  delete [] y_len;
260  delete [] z_len;
261  delete [] w_len;
262  delete [] u_len;
263  delete [] t_len;
264  delete [] r_len;
265  delete [] p_len;
266  delete [] st_len;
267 
268 
269 
270  } catch (SQLException &e) {
271  throw(std::runtime_error("MonPNMGPADat::writeArrayDB(): "+e.getMessage()));
272  }
273 }
void setPedRMSG1(float mean)
Definition: MonPNMGPADat.h:36
float getADCMeanG1() const
Definition: MonPNMGPADat.h:22
const double w
Definition: UKUtility.cc:23
float getADCRMSG1() const
Definition: MonPNMGPADat.h:25
bool getTaskStatus() const
Definition: MonPNMGPADat.h:46
float getPedRMSG1() const
Definition: MonPNMGPADat.h:37
void setTaskStatus(bool status)
Definition: MonPNMGPADat.h:45
float getADCMeanG16() const
Definition: MonPNMGPADat.h:28
void fetchData(std::map< EcalLogicID, MonPNMGPADat > *fillVec, MonRunIOV *iov) noexcept(false)
Definition: MonPNMGPADat.cc:90
const Double_t pi
void writeDB(const EcalLogicID *ecid, const MonPNMGPADat *item, MonRunIOV *iov) noexcept(false)
Definition: MonPNMGPADat.cc:56
void setADCMeanG16(float mean)
Definition: MonPNMGPADat.h:27
~MonPNMGPADat() override
Definition: MonPNMGPADat.cc:32
int getLogicID() const
Definition: EcalLogicID.cc:41
void writeArrayDB(const std::map< EcalLogicID, MonPNMGPADat > *data, MonRunIOV *iov) noexcept(false)
float getPedMeanG1() const
Definition: MonPNMGPADat.h:34
float getADCRMSG16() const
Definition: MonPNMGPADat.h:31
#define noexcept
float getPedMeanG16() const
Definition: MonPNMGPADat.h:40
void setPedMeanG16(float mean)
Definition: MonPNMGPADat.h:39
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
void setADCRMSG1(float mean)
Definition: MonPNMGPADat.h:24
void setADCMeanG1(float mean)
Definition: MonPNMGPADat.h:21
void prepareWrite() noexcept(false) override
Definition: MonPNMGPADat.cc:38
void setADCRMSG16(float mean)
Definition: MonPNMGPADat.h:30
float getPedRMSG16() const
Definition: MonPNMGPADat.h:43
void setPedMeanG1(float mean)
Definition: MonPNMGPADat.h:33
void setPedRMSG16(float mean)
Definition: MonPNMGPADat.h:42