CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EETestPulseClient.cc
Go to the documentation of this file.
1 /*
2  * \file EETestPulseClient.cc
3  *
4  * $Date: 2010/08/30 13:14:08 $
5  * $Revision: 1.123 $
6  * \author G. Della Ricca
7  * \author F. Cossutti
8  *
9 */
10 
11 #include <memory>
12 #include <iostream>
13 #include <fstream>
14 #include <iomanip>
15 #include <math.h>
16 
18 
20 
21 #ifdef WITH_ECAL_COND_DB
30 #endif
31 
33 
36 
38 
40 
42 
43  // cloneME switch
44  cloneME_ = ps.getUntrackedParameter<bool>("cloneME", true);
45 
46  // verbose switch
47  verbose_ = ps.getUntrackedParameter<bool>("verbose", true);
48 
49  // debug switch
50  debug_ = ps.getUntrackedParameter<bool>("debug", false);
51 
52  // prefixME path
53  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
54 
55  // enableCleanup_ switch
56  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
57 
58  // vector of selected Super Modules (Defaults to all 18).
59  superModules_.reserve(18);
60  for ( unsigned int i = 1; i <= 18; i++ ) superModules_.push_back(i);
61  superModules_ = ps.getUntrackedParameter<std::vector<int> >("superModules", superModules_);
62 
63  MGPAGains_.reserve(3);
64  for ( unsigned int i = 1; i <= 3; i++ ) MGPAGains_.push_back(i);
65  MGPAGains_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGains", MGPAGains_);
66 
67  MGPAGainsPN_.reserve(2);
68  for ( unsigned int i = 1; i <= 3; i++ ) MGPAGainsPN_.push_back(i);
69  MGPAGainsPN_ = ps.getUntrackedParameter<std::vector<int> >("MGPAGainsPN", MGPAGainsPN_);
70 
71  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
72 
73  int ism = superModules_[i];
74 
75  ha01_[ism-1] = 0;
76  ha02_[ism-1] = 0;
77  ha03_[ism-1] = 0;
78 
79  hs01_[ism-1] = 0;
80  hs02_[ism-1] = 0;
81  hs03_[ism-1] = 0;
82 
83  i01_[ism-1] = 0;
84  i02_[ism-1] = 0;
85  i03_[ism-1] = 0;
86  i04_[ism-1] = 0;
87 
88  }
89 
90  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
91 
92  int ism = superModules_[i];
93 
94  meg01_[ism-1] = 0;
95  meg02_[ism-1] = 0;
96  meg03_[ism-1] = 0;
97 
98  meg04_[ism-1] = 0;
99  meg05_[ism-1] = 0;
100 
101  mea01_[ism-1] = 0;
102  mea02_[ism-1] = 0;
103  mea03_[ism-1] = 0;
104 
105  mer04_[ism-1] = 0;
106  mer05_[ism-1] = 0;
107 
108  me_hs01_[ism-1] = 0;
109  me_hs02_[ism-1] = 0;
110  me_hs03_[ism-1] = 0;
111 
112  }
113 
114  percentVariation_ = 0.2;
115  RMSThreshold_ = 300.0;
116  amplitudeThreshold_ = 10.;
117 
118  amplitudeThresholdPnG01_ = 200./16.;
120 
121  pedPnExpectedMean_[0] = 750.0;
122  pedPnExpectedMean_[1] = 750.0;
123 
124  pedPnDiscrepancyMean_[0] = 100.0;
125  pedPnDiscrepancyMean_[1] = 100.0;
126 
127  pedPnRMSThreshold_[0] = 999.;
128  pedPnRMSThreshold_[1] = 999.;
129 
130 }
131 
133 
134 }
135 
137 
139 
140  if ( debug_ ) std::cout << "EETestPulseClient: beginJob" << std::endl;
141 
142  ievt_ = 0;
143  jevt_ = 0;
144 
145 }
146 
148 
149  if ( debug_ ) std::cout << "EETestPulseClient: beginRun" << std::endl;
150 
151  jevt_ = 0;
152 
153  this->setup();
154 
155 }
156 
158 
159  if ( debug_ ) std::cout << "EETestPulseClient: endJob, ievt = " << ievt_ << std::endl;
160 
161  this->cleanup();
162 
163 }
164 
166 
167  if ( debug_ ) std::cout << "EETestPulseClient: endRun, jevt = " << jevt_ << std::endl;
168 
169  this->cleanup();
170 
171 }
172 
174 
175  char histo[200];
176 
177  dqmStore_->setCurrentFolder( prefixME_ + "/EETestPulseClient" );
178 
179  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
180 
181  int ism = superModules_[i];
182 
183  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
184  if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
185  sprintf(histo, "EETPT test pulse quality G01 %s", Numbers::sEE(ism).c_str());
186  meg01_[ism-1] = dqmStore_->book2D(histo, histo, 50, Numbers::ix0EE(ism)+0., Numbers::ix0EE(ism)+50., 50, Numbers::iy0EE(ism)+0., Numbers::iy0EE(ism)+50.);
187  meg01_[ism-1]->setAxisTitle("ix", 1);
188  if ( ism >= 1 && ism <= 9 ) meg01_[ism-1]->setAxisTitle("101-ix", 1);
189  meg01_[ism-1]->setAxisTitle("iy", 2);
190  }
191  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
192  if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
193  sprintf(histo, "EETPT test pulse quality G06 %s", Numbers::sEE(ism).c_str());
194  meg02_[ism-1] = dqmStore_->book2D(histo, histo, 50, Numbers::ix0EE(ism)+0., Numbers::ix0EE(ism)+50., 50, Numbers::iy0EE(ism)+0., Numbers::iy0EE(ism)+50.);
195  meg02_[ism-1]->setAxisTitle("ix", 1);
196  if ( ism >= 1 && ism <= 9 ) meg02_[ism-1]->setAxisTitle("101-ix", 1);
197  meg02_[ism-1]->setAxisTitle("iy", 2);
198  }
199  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
200  if ( meg03_[ism-1] ) dqmStore_->removeElement( meg03_[ism-1]->getName() );
201  sprintf(histo, "EETPT test pulse quality G12 %s", Numbers::sEE(ism).c_str());
202  meg03_[ism-1] = dqmStore_->book2D(histo, histo, 50, Numbers::ix0EE(ism)+0., Numbers::ix0EE(ism)+50., 50, Numbers::iy0EE(ism)+0., Numbers::iy0EE(ism)+50.);
203  meg03_[ism-1]->setAxisTitle("ix", 1);
204  if ( ism >= 1 && ism <= 9 ) meg03_[ism-1]->setAxisTitle("101-ix", 1);
205  meg03_[ism-1]->setAxisTitle("iy", 2);
206  }
207 
208  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
209  if ( meg04_[ism-1] ) dqmStore_->removeElement( meg04_[ism-1]->getName() );
210  sprintf(histo, "EETPT test pulse quality PNs G01 %s", Numbers::sEE(ism).c_str());
211  meg04_[ism-1] = dqmStore_->book2D(histo, histo, 10, 0., 10., 1, 0., 5.);
212  meg04_[ism-1]->setAxisTitle("pseudo-strip", 1);
213  meg04_[ism-1]->setAxisTitle("channel", 2);
214  }
215  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
216  if ( meg05_[ism-1] ) dqmStore_->removeElement( meg05_[ism-1]->getName() );
217  sprintf(histo, "EETPT test pulse quality PNs G16 %s", Numbers::sEE(ism).c_str());
218  meg05_[ism-1] = dqmStore_->book2D(histo, histo, 10, 0., 10., 1, 0., 5.);
219  meg05_[ism-1]->setAxisTitle("pseudo-strip", 1);
220  meg05_[ism-1]->setAxisTitle("channel", 2);
221  }
222 
223  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
224  if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
225  sprintf(histo, "EETPT test pulse amplitude G01 %s", Numbers::sEE(ism).c_str());
226  mea01_[ism-1] = dqmStore_->book1D(histo, histo, 850, 0., 850.);
227  mea01_[ism-1]->setAxisTitle("channel", 1);
228  mea01_[ism-1]->setAxisTitle("amplitude", 2);
229  }
230  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
231  if ( mea02_[ism-1] ) dqmStore_->removeElement( mea02_[ism-1]->getName() );
232  sprintf(histo, "EETPT test pulse amplitude G06 %s", Numbers::sEE(ism).c_str());
233  mea02_[ism-1] = dqmStore_->book1D(histo, histo, 850, 0., 850.);
234  mea02_[ism-1]->setAxisTitle("channel", 1);
235  mea02_[ism-1]->setAxisTitle("amplitude", 2);
236  }
237  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
238  if ( mea03_[ism-1] ) dqmStore_->removeElement( mea03_[ism-1]->getName() );
239  sprintf(histo, "EETPT test pulse amplitude G12 %s", Numbers::sEE(ism).c_str());
240  mea03_[ism-1] = dqmStore_->book1D(histo, histo, 850, 0., 850.);
241  mea03_[ism-1]->setAxisTitle("channel", 1);
242  mea03_[ism-1]->setAxisTitle("amplitude", 2);
243  }
244 
245  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
246  if ( mer04_[ism-1] ) dqmStore_->removeElement( mer04_[ism-1]->getName() );
247  sprintf(histo, "EETPT PNs pedestal rms %s G01", Numbers::sEE(ism).c_str());
248  mer04_[ism-1] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
249  mer04_[ism-1]->setAxisTitle("rms", 1);
250  }
251  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
252  if ( mer05_[ism-1] ) dqmStore_->removeElement( mer05_[ism-1]->getName() );
253  sprintf(histo, "EETPT PNs pedestal rms %s G16", Numbers::sEE(ism).c_str());
254  mer05_[ism-1] = dqmStore_->book1D(histo, histo, 100, 0., 10.);
255  mer05_[ism-1]->setAxisTitle("rms", 1);
256  }
257 
258  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
259  if ( me_hs01_[ism-1] ) dqmStore_->removeElement( me_hs01_[ism-1]->getName() );
260  sprintf(histo, "EETPT test pulse shape G01 %s", Numbers::sEE(ism).c_str());
261  me_hs01_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
262  me_hs01_[ism-1]->setAxisTitle("sample", 1);
263  me_hs01_[ism-1]->setAxisTitle("amplitude", 2);
264  }
265  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
266  if ( me_hs02_[ism-1] ) dqmStore_->removeElement( me_hs02_[ism-1]->getName() );
267  sprintf(histo, "EETPT test pulse shape G06 %s", Numbers::sEE(ism).c_str());
268  me_hs02_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
269  me_hs02_[ism-1]->setAxisTitle("sample", 1);
270  me_hs02_[ism-1]->setAxisTitle("amplitude", 2);
271  }
272  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
273  if ( me_hs03_[ism-1] ) dqmStore_->removeElement( me_hs03_[ism-1]->getName() );
274  sprintf(histo, "EETPT test pulse shape G12 %s", Numbers::sEE(ism).c_str());
275  me_hs03_[ism-1] = dqmStore_->book1D(histo, histo, 10, 0., 10.);
276  me_hs03_[ism-1]->setAxisTitle("sample", 1);
277  me_hs03_[ism-1]->setAxisTitle("amplitude", 2);
278  }
279 
280  }
281 
282  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
283 
284  int ism = superModules_[i];
285 
286  if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
287  if ( meg02_[ism-1] ) meg02_[ism-1]->Reset();
288  if ( meg03_[ism-1] ) meg03_[ism-1]->Reset();
289 
290  if ( meg04_[ism-1] ) meg04_[ism-1]->Reset();
291  if ( meg05_[ism-1] ) meg05_[ism-1]->Reset();
292 
293  for ( int ix = 1; ix <= 50; ix++ ) {
294  for ( int iy = 1; iy <= 50; iy++ ) {
295 
296  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 6. );
297  if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ix, iy, 6. );
298  if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ix, iy, 6. );
299 
300  int jx = ix + Numbers::ix0EE(ism);
301  int jy = iy + Numbers::iy0EE(ism);
302 
303  if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
304 
305  if ( Numbers::validEE(ism, jx, jy) ) {
306  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 2. );
307  if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ix, iy, 2. );
308  if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ix, iy, 2. );
309  }
310 
311  }
312  }
313 
314  for ( int i = 1; i <= 10; i++ ) {
315 
316  if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 6. );
317  if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 6. );
318 
319  // non-existing mem
320  if ( (ism >= 3 && ism <= 4) || (ism >= 7 && ism <= 9) ) continue;
321  if ( (ism >= 12 && ism <= 13) || (ism >= 16 && ism <= 18) ) continue;
322 
323  if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 2. );
324  if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 2. );
325 
326  }
327 
328  if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
329  if ( mea02_[ism-1] ) mea02_[ism-1]->Reset();
330  if ( mea03_[ism-1] ) mea03_[ism-1]->Reset();
331 
332  if ( mer04_[ism-1] ) mer04_[ism-1]->Reset();
333  if ( mer05_[ism-1] ) mer05_[ism-1]->Reset();
334 
335  if ( me_hs01_[ism-1] ) me_hs01_[ism-1]->Reset();
336  if ( me_hs02_[ism-1] ) me_hs02_[ism-1]->Reset();
337  if ( me_hs03_[ism-1] ) me_hs03_[ism-1]->Reset();
338 
339  }
340 
341 }
342 
344 
345  if ( ! enableCleanup_ ) return;
346 
347  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
348 
349  int ism = superModules_[i];
350 
351  if ( cloneME_ ) {
352  if ( ha01_[ism-1] ) delete ha01_[ism-1];
353  if ( ha02_[ism-1] ) delete ha02_[ism-1];
354  if ( ha03_[ism-1] ) delete ha03_[ism-1];
355 
356  if ( hs01_[ism-1] ) delete hs01_[ism-1];
357  if ( hs02_[ism-1] ) delete hs02_[ism-1];
358  if ( hs03_[ism-1] ) delete hs03_[ism-1];
359 
360  if ( i01_[ism-1] ) delete i01_[ism-1];
361  if ( i02_[ism-1] ) delete i02_[ism-1];
362  if ( i03_[ism-1] ) delete i03_[ism-1];
363  if ( i04_[ism-1] ) delete i04_[ism-1];
364  }
365 
366  ha01_[ism-1] = 0;
367  ha02_[ism-1] = 0;
368  ha03_[ism-1] = 0;
369 
370  hs01_[ism-1] = 0;
371  hs02_[ism-1] = 0;
372  hs03_[ism-1] = 0;
373 
374  i01_[ism-1] = 0;
375  i02_[ism-1] = 0;
376  i03_[ism-1] = 0;
377  i04_[ism-1] = 0;
378 
379  }
380 
381  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
382 
383  int ism = superModules_[i];
384 
385  dqmStore_->setCurrentFolder( prefixME_ + "/EETestPulseClient" );
386 
387  if ( meg01_[ism-1] ) dqmStore_->removeElement( meg01_[ism-1]->getName() );
388  meg01_[ism-1] = 0;
389  if ( meg02_[ism-1] ) dqmStore_->removeElement( meg02_[ism-1]->getName() );
390  meg02_[ism-1] = 0;
391  if ( meg03_[ism-1] ) dqmStore_->removeElement( meg03_[ism-1]->getName() );
392  meg03_[ism-1] = 0;
393 
394  if ( meg04_[ism-1] ) dqmStore_->removeElement( meg04_[ism-1]->getName() );
395  meg04_[ism-1] = 0;
396  if ( meg05_[ism-1] ) dqmStore_->removeElement( meg05_[ism-1]->getName() );
397  meg05_[ism-1] = 0;
398 
399  if ( mea01_[ism-1] ) dqmStore_->removeElement( mea01_[ism-1]->getName() );
400  mea01_[ism-1] = 0;
401  if ( mea02_[ism-1] ) dqmStore_->removeElement( mea02_[ism-1]->getName() );
402  mea02_[ism-1] = 0;
403  if ( mea03_[ism-1] ) dqmStore_->removeElement( mea03_[ism-1]->getName() );
404  mea03_[ism-1] = 0;
405 
406  if ( mer04_[ism-1] ) dqmStore_->removeElement( mer04_[ism-1]->getName() );
407  mer04_[ism-1] = 0;
408  if ( mer05_[ism-1] ) dqmStore_->removeElement( mer05_[ism-1]->getName() );
409  mer05_[ism-1] = 0;
410 
411  if ( me_hs01_[ism-1] ) dqmStore_->removeElement( me_hs01_[ism-1]->getName() );
412  me_hs01_[ism-1] = 0;
413  if ( me_hs02_[ism-1] ) dqmStore_->removeElement( me_hs02_[ism-1]->getName() );
414  me_hs02_[ism-1] = 0;
415  if ( me_hs03_[ism-1] ) dqmStore_->removeElement( me_hs03_[ism-1]->getName() );
416  me_hs03_[ism-1] = 0;
417 
418  }
419 
420 }
421 
422 #ifdef WITH_ECAL_COND_DB
423 bool EETestPulseClient::writeDb(EcalCondDBInterface* econn, RunIOV* runiov, MonRunIOV* moniov, bool& status) {
424 
425  status = true;
426 
427  EcalLogicID ecid;
428 
430  std::map<EcalLogicID, MonTestPulseDat> dataset1;
431  MonPulseShapeDat shape;
432  std::map<EcalLogicID, MonPulseShapeDat> dataset2;
433 
434  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
435 
436  int ism = superModules_[i];
437 
438  if ( verbose_ ) {
439  std::cout << " " << Numbers::sEE(ism) << " (ism=" << ism << ")" << std::endl;
440  std::cout << std::endl;
441  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
443  }
444  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
446  }
447  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
449  }
450  }
451 
452  for ( int ix = 1; ix <= 50; ix++ ) {
453  for ( int iy = 1; iy <= 50; iy++ ) {
454 
455  int jx = ix + Numbers::ix0EE(ism);
456  int jy = iy + Numbers::iy0EE(ism);
457 
458  if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
459 
460  if ( ! Numbers::validEE(ism, jx, jy) ) continue;
461 
462  bool update01;
463  bool update02;
464  bool update03;
465 
466  float num01, num02, num03;
467  float mean01, mean02, mean03;
468  float rms01, rms02, rms03;
469 
470  update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ix, iy, num01, mean01, rms01);
471  update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ix, iy, num02, mean02, rms02);
472  update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ix, iy, num03, mean03, rms03);
473 
474  if ( update01 || update02 || update03 ) {
475 
476  if ( Numbers::icEE(ism, jx, jy) == 1 ) {
477 
478  if ( verbose_ ) {
479  std::cout << "Preparing dataset for " << Numbers::sEE(ism) << " (ism=" << ism << ")" << std::endl;
480  std::cout << "G01 (" << Numbers::ix0EE(i+1)+ix << "," << Numbers::iy0EE(i+1)+iy << ") " << num01 << " " << mean01 << " " << rms01 << std::endl;
481  std::cout << "G06 (" << Numbers::ix0EE(i+1)+ix << "," << Numbers::iy0EE(i+1)+iy << ") " << num02 << " " << mean02 << " " << rms02 << std::endl;
482  std::cout << "G12 (" << Numbers::ix0EE(i+1)+ix << "," << Numbers::iy0EE(i+1)+iy << ") " << num03 << " " << mean03 << " " << rms03 << std::endl;
483  std::cout << std::endl;
484  }
485 
486  }
487 
488  adc.setADCMeanG1(mean01);
489  adc.setADCRMSG1(rms01);
490 
491  adc.setADCMeanG6(mean02);
492  adc.setADCRMSG6(rms02);
493 
494  adc.setADCMeanG12(mean03);
495  adc.setADCRMSG12(rms03);
496 
497  if ( UtilsClient::getBinStatus(meg01_[ism-1], ix, iy) &&
498  UtilsClient::getBinStatus(meg02_[ism-1], ix, iy) &&
499  UtilsClient::getBinStatus(meg03_[ism-1], ix, iy) ) {
500  adc.setTaskStatus(true);
501  } else {
502  adc.setTaskStatus(false);
503  }
504 
505  status = status && UtilsClient::getBinQuality(meg01_[ism-1], ix, iy) &&
506  UtilsClient::getBinQuality(meg02_[ism-1], ix, iy) &&
507  UtilsClient::getBinQuality(meg03_[ism-1], ix, iy);
508 
509  if ( Numbers::icEE(ism, jx, jy) == 1 ) {
510 
511  std::vector<float> sample01, sample02, sample03;
512 
513  sample01.clear();
514  sample02.clear();
515  sample03.clear();
516 
517  if ( me_hs01_[ism-1] ) {
518  for ( int i = 1; i <= 10; i++ ) {
519  sample01.push_back(int(me_hs01_[ism-1]->getBinContent(i)));
520  }
521  } else {
522  for ( int i = 1; i <= 10; i++ ) { sample01.push_back(-1.); }
523  }
524 
525  if ( me_hs02_[ism-1] ) {
526  for ( int i = 1; i <= 10; i++ ) {
527  sample02.push_back(int(me_hs02_[ism-1]->getBinContent(i)));
528  }
529  } else {
530  for ( int i = 1; i <= 10; i++ ) { sample02.push_back(-1.); }
531  }
532 
533  if ( me_hs03_[ism-1] ) {
534  for ( int i = 1; i <= 10; i++ ) {
535  sample03.push_back(int(me_hs03_[ism-1]->getBinContent(i)));
536  }
537  } else {
538  for ( int i = 1; i <= 10; i++ ) { sample03.push_back(-1.); }
539  }
540 
541  if ( verbose_ ) {
542  std::cout << "sample01 = " << std::flush;
543  for ( unsigned int i = 0; i < sample01.size(); i++ ) {
544  std::cout << sample01[i] << " " << std::flush;
545  }
546  std::cout << std::endl;
547 
548  std::cout << "sample02 = " << std::flush;
549  for ( unsigned int i = 0; i < sample02.size(); i++ ) {
550  std::cout << sample02[i] << " " << std::flush;
551  }
552  std::cout << std::endl;
553 
554  std::cout << "sample03 = " << std::flush;
555  for ( unsigned int i = 0; i < sample03.size(); i++ ) {
556  std::cout << sample03[i] << " " << std::flush;
557  }
558  std::cout << std::endl;
559  }
560 
561  if ( verbose_ ) std::cout << std::endl;
562 
563  shape.setSamples(sample01, 1);
564  shape.setSamples(sample02, 6);
565  shape.setSamples(sample03, 12);
566 
567  }
568 
569  int ic = Numbers::indexEE(ism, jx, jy);
570 
571  if ( ic == -1 ) continue;
572 
573  if ( econn ) {
574  ecid = LogicID::getEcalLogicID("EE_crystal_number", Numbers::iSM(ism, EcalEndcap), ic);
575  dataset1[ecid] = adc;
576  if ( Numbers::icEE(ism, jx, jy) == 1 ) dataset2[ecid] = shape;
577  }
578 
579  }
580 
581  }
582  }
583 
584  }
585 
586  if ( econn ) {
587  try {
588  if ( verbose_ ) std::cout << "Inserting MonTestPulseDat ..." << std::endl;
589  if ( dataset1.size() != 0 ) econn->insertDataArraySet(&dataset1, moniov);
590  if ( dataset2.size() != 0 ) econn->insertDataSet(&dataset2, moniov);
591  if ( verbose_ ) std::cout << "done." << std::endl;
592  } catch (std::runtime_error &e) {
593  std::cerr << e.what() << std::endl;
594  }
595  }
596 
597  if ( verbose_ ) std::cout << std::endl;
598 
599  MonPNMGPADat pn;
600  std::map<EcalLogicID, MonPNMGPADat> dataset3;
601 
602  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
603 
604  int ism = superModules_[i];
605 
606  if ( verbose_ ) {
607  std::cout << " " << Numbers::sEE(ism) << " (ism=" << ism << ")" << std::endl;
608  std::cout << std::endl;
609  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
610  UtilsClient::printBadChannels(meg04_[ism-1], i01_[ism-1]);
611  UtilsClient::printBadChannels(meg04_[ism-1], i03_[ism-1]);
612  }
613  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
614  UtilsClient::printBadChannels(meg05_[ism-1], i02_[ism-1]);
615  UtilsClient::printBadChannels(meg05_[ism-1], i04_[ism-1]);
616  }
617  }
618 
619  for ( int i = 1; i <= 10; i++ ) {
620 
621  bool update01;
622  bool update02;
623  bool update03;
624  bool update04;
625 
626  float num01, num02, num03, num04;
627  float mean01, mean02, mean03, mean04;
628  float rms01, rms02, rms03, rms04;
629 
630  update01 = UtilsClient::getBinStatistics(i01_[ism-1], i, 0, num01, mean01, rms01);
631  update02 = UtilsClient::getBinStatistics(i02_[ism-1], i, 0, num02, mean02, rms02);
632  update03 = UtilsClient::getBinStatistics(i03_[ism-1], i, 0, num03, mean03, rms03);
633  update04 = UtilsClient::getBinStatistics(i04_[ism-1], i, 0, num04, mean04, rms04);
634 
635  if ( update01 || update02 || update03 || update04 ) {
636 
637  if ( i == 1 ) {
638 
639  if ( verbose_ ) {
640  std::cout << "Preparing dataset for " << Numbers::sEE(ism) << " (ism=" << ism << ")" << std::endl;
641  std::cout << "PNs (" << i << ") G01 " << num01 << " " << mean01 << " " << rms01 << " " << num03 << " " << mean03 << " " << rms03 << std::endl;
642  std::cout << "PNs (" << i << ") G16 " << num02 << " " << mean02 << " " << rms02 << " " << num04 << " " << mean04 << " " << rms04 << std::endl;
643  std::cout << std::endl;
644  }
645 
646  }
647 
648  pn.setADCMeanG1(mean01);
649  pn.setADCRMSG1(rms01);
650 
651  pn.setPedMeanG1(mean03);
652  pn.setPedRMSG1(rms03);
653 
654  pn.setADCMeanG16(mean02);
655  pn.setADCRMSG16(rms02);
656 
657  pn.setPedMeanG16(mean04);
658  pn.setPedRMSG16(rms04);
659 
660  if ( UtilsClient::getBinStatus(meg04_[ism-1], i, 1) &&
661  UtilsClient::getBinStatus(meg05_[ism-1], i, 1) ) {
662  pn.setTaskStatus(true);
663  } else {
664  pn.setTaskStatus(false);
665  }
666 
667  status = status && UtilsClient::getBinQuality(meg04_[ism-1], i, 1) &&
668  UtilsClient::getBinQuality(meg05_[ism-1], i, 1);
669 
670  if ( econn ) {
671  ecid = LogicID::getEcalLogicID("EE_LM_PN", Numbers::iSM(ism, EcalEndcap), i-1);
672  dataset3[ecid] = pn;
673  }
674 
675  }
676 
677  }
678 
679  }
680 
681  if ( econn ) {
682  try {
683  if ( verbose_ ) std::cout << "Inserting MonPNMGPADat ..." << std::endl;
684  if ( dataset3.size() != 0 ) econn->insertDataArraySet(&dataset3, moniov);
685  if ( verbose_ ) std::cout << "done." << std::endl;
686  } catch (std::runtime_error &e) {
687  std::cerr << e.what() << std::endl;
688  }
689  }
690 
691  return true;
692 
693 }
694 #endif
695 
697 
698  ievt_++;
699  jevt_++;
700  if ( ievt_ % 10 == 0 ) {
701  if ( debug_ ) std::cout << "EETestPulseClient: ievt/jevt = " << ievt_ << "/" << jevt_ << std::endl;
702  }
703 
704  uint32_t bits01 = 0;
707 
708  uint32_t bits02 = 0;
711 
712  uint32_t bits03 = 0;
715 
716  uint32_t bits04 = 0;
719 
720  uint32_t bits05 = 0;
723 
724  char histo[200];
725 
726  MonitorElement* me;
727 
728  for ( unsigned int i=0; i<superModules_.size(); i++ ) {
729 
730  int ism = superModules_[i];
731 
732  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
733  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain01/EETPT amplitude %s G01").c_str(), Numbers::sEE(ism).c_str());
734  me = dqmStore_->get(histo);
735  ha01_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha01_[ism-1] );
736  }
737 
738  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
739  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain06/EETPT amplitude %s G06").c_str(), Numbers::sEE(ism).c_str());
740  me = dqmStore_->get(histo);
741  ha02_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha02_[ism-1] );
742  }
743 
744  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
745  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain12/EETPT amplitude %s G12").c_str(), Numbers::sEE(ism).c_str());
746  me = dqmStore_->get(histo);
747  ha03_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, ha03_[ism-1] );
748  }
749 
750  if (find(MGPAGains_.begin(), MGPAGains_.end(), 1) != MGPAGains_.end() ) {
751  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain01/EETPT shape %s G01").c_str(), Numbers::sEE(ism).c_str());
752  me = dqmStore_->get(histo);
753  hs01_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs01_[ism-1] );
754  }
755 
756  if (find(MGPAGains_.begin(), MGPAGains_.end(), 6) != MGPAGains_.end() ) {
757  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain06/EETPT shape %s G06").c_str(), Numbers::sEE(ism).c_str());
758  me = dqmStore_->get(histo);
759  hs02_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs02_[ism-1] );
760  }
761 
762  if (find(MGPAGains_.begin(), MGPAGains_.end(), 12) != MGPAGains_.end() ) {
763  sprintf(histo, (prefixME_ + "/EETestPulseTask/Gain12/EETPT shape %s G12").c_str(), Numbers::sEE(ism).c_str());
764  me = dqmStore_->get(histo);
765  hs03_[ism-1] = UtilsClient::getHisto<TProfile2D*>( me, cloneME_, hs03_[ism-1] );
766  }
767 
768  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
769  sprintf(histo, (prefixME_ + "/EETestPulseTask/PN/Gain01/EETPT PNs amplitude %s G01").c_str(), Numbers::sEE(ism).c_str());
770  me = dqmStore_->get(histo);
771  i01_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i01_[ism-1] );
772  }
773 
774  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
775  sprintf(histo, (prefixME_ + "/EETestPulseTask/PN/Gain16/EETPT PNs amplitude %s G16").c_str(), Numbers::sEE(ism).c_str());
776  me = dqmStore_->get(histo);
777  i02_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i02_[ism-1] );
778  }
779 
780  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 1) != MGPAGainsPN_.end() ) {
781  sprintf(histo, (prefixME_ + "/EETestPulseTask/PN/Gain01/EETPT PNs pedestal %s G01").c_str(), Numbers::sEE(ism).c_str());
782  me = dqmStore_->get(histo);
783  i03_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i03_[ism-1] );
784  }
785 
786  if (find(MGPAGainsPN_.begin(), MGPAGainsPN_.end(), 16) != MGPAGainsPN_.end() ) {
787  sprintf(histo, (prefixME_ + "/EETestPulseTask/PN/Gain16/EETPT PNs pedestal %s G16").c_str(), Numbers::sEE(ism).c_str());
788  me = dqmStore_->get(histo);
789  i04_[ism-1] = UtilsClient::getHisto<TProfile*>( me, cloneME_, i04_[ism-1] );
790  }
791 
792  if ( meg01_[ism-1] ) meg01_[ism-1]->Reset();
793  if ( meg02_[ism-1] ) meg02_[ism-1]->Reset();
794  if ( meg03_[ism-1] ) meg03_[ism-1]->Reset();
795 
796  if ( meg04_[ism-1] ) meg04_[ism-1]->Reset();
797  if ( meg05_[ism-1] ) meg05_[ism-1]->Reset();
798 
799  if ( mea01_[ism-1] ) mea01_[ism-1]->Reset();
800  if ( mea02_[ism-1] ) mea02_[ism-1]->Reset();
801  if ( mea03_[ism-1] ) mea03_[ism-1]->Reset();
802 
803  if ( mer04_[ism-1] ) mer04_[ism-1]->Reset();
804  if ( mer05_[ism-1] ) mer05_[ism-1]->Reset();
805 
806  if ( me_hs01_[ism-1] ) me_hs01_[ism-1]->Reset();
807  if ( me_hs02_[ism-1] ) me_hs02_[ism-1]->Reset();
808  if ( me_hs03_[ism-1] ) me_hs03_[ism-1]->Reset();
809 
810  float meanAmpl01, meanAmpl02, meanAmpl03;
811 
812  int nCry01, nCry02, nCry03;
813 
814  meanAmpl01 = meanAmpl02 = meanAmpl03 = 0.;
815 
816  nCry01 = nCry02 = nCry03 = 0;
817 
818  for ( int ix = 1; ix <= 50; ix++ ) {
819  for ( int iy = 1; iy <= 50; iy++ ) {
820 
821  bool update01;
822  bool update02;
823  bool update03;
824 
825  float num01, num02, num03;
826  float mean01, mean02, mean03;
827  float rms01, rms02, rms03;
828 
829  update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ix, iy, num01, mean01, rms01);
830  update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ix, iy, num02, mean02, rms02);
831  update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ix, iy, num03, mean03, rms03);
832 
833  if ( update01 ) {
834  meanAmpl01 += mean01;
835  nCry01++;
836  }
837 
838  if ( update02 ) {
839  meanAmpl02 += mean02;
840  nCry02++;
841  }
842 
843  if ( update03 ) {
844  meanAmpl03 += mean03;
845  nCry03++;
846  }
847 
848  }
849  }
850 
851  if ( nCry01 > 0 ) meanAmpl01 /= float (nCry01);
852  if ( nCry02 > 0 ) meanAmpl02 /= float (nCry02);
853  if ( nCry03 > 0 ) meanAmpl03 /= float (nCry03);
854 
855  for ( int ix = 1; ix <= 50; ix++ ) {
856  for ( int iy = 1; iy <= 50; iy++ ) {
857 
858  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 6. );
859  if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ix, iy, 6. );
860  if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ix, iy, 6. );
861 
862  int jx = ix + Numbers::ix0EE(ism);
863  int jy = iy + Numbers::iy0EE(ism);
864 
865  if ( ism >= 1 && ism <= 9 ) jx = 101 - jx;
866 
867  if ( Numbers::validEE(ism, jx, jy) ) {
868  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, 2. );
869  if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ix, iy, 2. );
870  if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ix, iy, 2. );
871  }
872 
873  float numEventsinCry[3] = {0., 0., 0.};
874 
875  if ( ha01_[ism-1] ) numEventsinCry[0] = ha01_[ism-1]->GetBinEntries(ha01_[ism-1]->GetBin(ix, iy));
876  if ( ha02_[ism-1] ) numEventsinCry[1] = ha02_[ism-1]->GetBinEntries(ha02_[ism-1]->GetBin(ix, iy));
877  if ( ha03_[ism-1] ) numEventsinCry[2] = ha03_[ism-1]->GetBinEntries(ha03_[ism-1]->GetBin(ix, iy));
878 
879  bool update01;
880  bool update02;
881  bool update03;
882 
883  float num01, num02, num03;
884  float mean01, mean02, mean03;
885  float rms01, rms02, rms03;
886 
887  update01 = UtilsClient::getBinStatistics(ha01_[ism-1], ix, iy, num01, mean01, rms01);
888  update02 = UtilsClient::getBinStatistics(ha02_[ism-1], ix, iy, num02, mean02, rms02);
889  update03 = UtilsClient::getBinStatistics(ha03_[ism-1], ix, iy, num03, mean03, rms03);
890 
891  if ( update01 ) {
892 
893  float val;
894 
895  val = 1.;
896  if ( std::abs(mean01 - meanAmpl01) > std::abs(percentVariation_ * meanAmpl01) || mean01 < amplitudeThreshold_ )
897  val = 0.;
898  if ( rms01 > RMSThreshold_ )
899  val = 0.;
900  if ( meg01_[ism-1] ) meg01_[ism-1]->setBinContent( ix, iy, val );
901 
902  int ic = Numbers::icEE(ism, jx, jy);
903 
904  if ( ic != -1 ) {
905  if ( mea01_[ism-1] ) {
906  if ( mean01 > 0. ) {
907  mea01_[ism-1]->setBinContent( ic, mean01 );
908  mea01_[ism-1]->setBinError( ic, rms01 );
909  } else {
910  mea01_[ism-1]->setEntries( 1.+mea01_[ism-1]->getEntries() );
911  }
912  }
913  }
914 
915  }
916 
917  if ( update02 ) {
918 
919  float val;
920 
921  val = 1.;
922  if ( std::abs(mean02 - meanAmpl02) > std::abs(percentVariation_ * meanAmpl02) || mean02 < amplitudeThreshold_ )
923  val = 0.;
924  if ( rms02 > RMSThreshold_ )
925  val = 0.;
926  if ( meg02_[ism-1] ) meg02_[ism-1]->setBinContent( ix, iy, val );
927 
928  int ic = Numbers::icEE(ism, jx, jy);
929 
930  if ( ic != -1 ) {
931  if ( mea02_[ism-1] ) {
932  if ( mean02 > 0. ) {
933  mea02_[ism-1]->setBinContent( ic, mean02 );
934  mea02_[ism-1]->setBinError( ic, rms02 );
935  } else {
936  mea02_[ism-1]->setEntries( 1.+mea02_[ism-1]->getEntries() );
937  }
938  }
939  }
940 
941  }
942 
943  if ( update03 ) {
944 
945  float val;
946 
947  val = 1.;
948  if ( std::abs(mean03 - meanAmpl03) > std::abs(percentVariation_ * meanAmpl03) || mean03 < amplitudeThreshold_ )
949  val = 0.;
950  if ( rms03 > RMSThreshold_ )
951  val = 0.;
952  if ( meg03_[ism-1] ) meg03_[ism-1]->setBinContent( ix, iy, val );
953 
954  int ic = Numbers::icEE(ism, jx, jy);
955 
956  if ( ic != -1 ) {
957  if ( mea03_[ism-1] ) {
958  if ( mean03 > 0. ) {
959  mea03_[ism-1]->setBinContent( ic, mean03 );
960  mea03_[ism-1]->setBinError( ic, rms03 );
961  } else {
962  mea03_[ism-1]->setEntries( 1.+mea03_[ism-1]->getEntries() );
963  }
964  }
965  }
966 
967  }
968 
969  if ( Masks::maskChannel(ism, ix, iy, bits01, EcalEndcap) ) UtilsClient::maskBinContent( meg01_[ism-1], ix, iy );
970  if ( Masks::maskChannel(ism, ix, iy, bits02, EcalEndcap) ) UtilsClient::maskBinContent( meg02_[ism-1], ix, iy );
971  if ( Masks::maskChannel(ism, ix, iy, bits03, EcalEndcap) ) UtilsClient::maskBinContent( meg03_[ism-1], ix, iy );
972 
973  }
974  }
975 
976  for ( int i = 1; i <= 10; i++ ) {
977 
978  if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 6. );
979  if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 6. );
980 
981  // non-existing mem
982  if ( (ism >= 3 && ism <= 4) || (ism >= 7 && ism <= 9) ) continue;
983  if ( (ism >= 12 && ism <= 13) || (ism >= 16 && ism <= 18) ) continue;
984 
985  if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent( i, 1, 2. );
986  if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent( i, 1, 2. );
987 
988  bool update01;
989  bool update02;
990  bool update03;
991  bool update04;
992 
993  float num01, num02, num03, num04;
994  float mean01, mean02, mean03, mean04;
995  float rms01, rms02, rms03, rms04;
996 
997  update01 = UtilsClient::getBinStatistics(i01_[ism-1], i, 0, num01, mean01, rms01);
998  update02 = UtilsClient::getBinStatistics(i02_[ism-1], i, 0, num02, mean02, rms02);
999  update03 = UtilsClient::getBinStatistics(i03_[ism-1], i, 0, num03, mean03, rms03);
1000  update04 = UtilsClient::getBinStatistics(i04_[ism-1], i, 0, num04, mean04, rms04);
1001 
1002  if ( mer04_[ism-1] ) mer04_[ism-1]->Fill(rms03);
1003  if ( mer05_[ism-1] ) mer05_[ism-1]->Fill(rms04);
1004 
1005  if ( update01 && update03 ) {
1006 
1007  float val;
1008 
1009  val = 1.;
1010  if ( mean01 < amplitudeThresholdPnG01_ )
1011  val = 0.;
1012  if ( mean03 < pedPnExpectedMean_[0] - pedPnDiscrepancyMean_[0] ||
1013  pedPnExpectedMean_[0] + pedPnDiscrepancyMean_[0] < mean03)
1014  val = 0.;
1015  if ( rms03 > pedPnRMSThreshold_[0] )
1016  val = 0.;
1017  if ( meg04_[ism-1] ) meg04_[ism-1]->setBinContent(i, 1, val);
1018 
1019  }
1020 
1021  if ( update02 && update04 ) {
1022 
1023  float val;
1024 
1025  val = 1.;
1026  if ( mean02 < amplitudeThresholdPnG16_ )
1027  val = 0.;
1028  if ( mean04 < pedPnExpectedMean_[1] - pedPnDiscrepancyMean_[1] ||
1029  pedPnExpectedMean_[1] + pedPnDiscrepancyMean_[1] < mean04)
1030  val = 0.;
1031  if ( rms04 > pedPnRMSThreshold_[1] )
1032  val = 0.;
1033  if ( meg05_[ism-1] ) meg05_[ism-1]->setBinContent(i, 1, val);
1034 
1035  }
1036 
1037  if ( Masks::maskPn(ism, i, bits01|bits04, EcalEndcap) ) UtilsClient::maskBinContent( meg04_[ism-1], i, 1 );
1038  if ( Masks::maskPn(ism, i, bits03|bits05, EcalEndcap) ) UtilsClient::maskBinContent( meg05_[ism-1], i, 1 );
1039 
1040  }
1041 
1042  for ( int i = 1; i <= 10; i++ ) {
1043 
1044  if ( hs01_[ism-1] ) {
1045  int ic = UtilsClient::getFirstNonEmptyChannel( hs01_[ism-1] );
1046  if ( me_hs01_[ism-1] ) {
1047  me_hs01_[ism-1]->setBinContent( i, hs01_[ism-1]->GetBinContent(ic, i) );
1048  me_hs01_[ism-1]->setBinError( i, hs01_[ism-1]->GetBinError(ic, i) );
1049  }
1050  }
1051 
1052  if ( hs02_[ism-1] ) {
1053  int ic = UtilsClient::getFirstNonEmptyChannel( hs02_[ism-1] );
1054  if ( me_hs02_[ism-1] ) {
1055  me_hs02_[ism-1]->setBinContent( i, hs02_[ism-1]->GetBinContent(ic, i) );
1056  me_hs02_[ism-1]->setBinError( i, hs02_[ism-1]->GetBinError(ic, i) );
1057  }
1058  }
1059 
1060  if ( hs03_[ism-1] ) {
1061  int ic = UtilsClient::getFirstNonEmptyChannel( hs03_[ism-1] );
1062  if ( me_hs03_[ism-1] ) {
1063  me_hs03_[ism-1]->setBinContent( i, hs03_[ism-1]->GetBinContent(ic, i) );
1064  me_hs03_[ism-1]->setBinError( i, hs03_[ism-1]->GetBinError(ic, i) );
1065  }
1066  }
1067 
1068  }
1069 
1070  }
1071 
1072 }
1073 
int adc(sample_type sample)
get the ADC sample (12 bits)
static void printBadChannels(const MonitorElement *me, const T *hi, bool positive_only=false)
Print the bad channels.
Definition: UtilsClient.h:67
TProfile2D * hs03_[18]
Cache logicID vector from database.
MonitorElement * me_hs03_[18]
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * mea03_[18]
void setPedRMSG1(float mean)
Definition: MonPNMGPADat.h:36
void setBinContent(int binx, double content)
set content of bin (1-D)
static bool maskChannel(int ism, int i1, int i2, uint32_t bits, const EcalSubdetector subdet)
Definition: Masks.cc:60
static const int TESTPULSE_LOW_GAIN_RMS_ERROR
TProfile2D * hs01_[18]
TProfile2D * ha01_[18]
static int getFirstNonEmptyChannel(const TProfile2D *histo)
Find the first non empty bin.
Definition: UtilsClient.h:206
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
void setADCRMSG1(float rms)
static int iy0EE(const int ism)
Definition: Numbers.cc:964
Some &quot;id&quot; conversions.
MonitorElement * me_hs02_[18]
static void maskBinContent(const MonitorElement *me, const int ix, const int iy)
Mask the bin content.
Definition: UtilsClient.h:189
static const int PEDESTAL_HIGH_GAIN_MEAN_ERROR
static std::string sEE(const int ism)
Definition: Numbers.cc:199
void beginJob(void)
BeginJob.
#define abs(x)
Definition: mlp_lapack.h:159
void setADCMeanG1(float mean)
TProfile2D * ha02_[18]
MonitorElement * mea01_[18]
void setADCMeanG6(float mean)
tuple histo
Definition: trackerHits.py:12
static const int TESTPULSE_MIDDLE_GAIN_MEAN_ERROR
void setTaskStatus(bool status)
Definition: MonPNMGPADat.h:45
static const int PEDESTAL_LOW_GAIN_RMS_ERROR
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
static int indexEE(const int ism, const int ix, const int iy)
Definition: Numbers.cc:871
std::vector< int > MGPAGainsPN_
static const int PEDESTAL_HIGH_GAIN_RMS_ERROR
static bool maskPn(int ism, int i1, uint32_t bits, const EcalSubdetector subdet)
Definition: Masks.cc:112
MonitorElement * meg01_[18]
MonitorElement * meg05_[18]
void setSamples(std::vector< float > &samples, int gain)
void Fill(long long x)
void beginRun(void)
BeginRun.
static const int TESTPULSE_MIDDLE_GAIN_RMS_ERROR
void setADCMeanG12(float mean)
void setup(void)
Setup.
static int iSM(const int ism, const EcalSubdetector subdet)
Definition: Numbers.cc:216
TProfile * i03_[18]
void setADCMeanG16(float mean)
Definition: MonPNMGPADat.h:27
static int icEE(const int ism, const int ix, const int iy)
Definition: Numbers.cc:900
TProfile * i02_[18]
MonitorElement * meg04_[18]
void setTaskStatus(bool status)
void removeElement(const std::string &name)
Definition: DQMStore.cc:2338
channel masking
static const int TESTPULSE_HIGH_GAIN_RMS_ERROR
MonitorElement * meg03_[18]
MonitorElement * mea02_[18]
void setADCRMSG12(float rms)
TProfile * i04_[18]
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
MonitorElement * mer04_[18]
void setEntries(double nentries)
set # of entries
MonitorElement * mer05_[18]
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1270
Ecal Monitor Utils for Client.
static const int PEDESTAL_LOW_GAIN_MEAN_ERROR
static const int TESTPULSE_LOW_GAIN_MEAN_ERROR
MonitorElement * me_hs01_[18]
MonitorElement * meg02_[18]
void setADCRMSG6(float rms)
void setPedMeanG16(float mean)
Definition: MonPNMGPADat.h:39
static bool getBinStatus(const MonitorElement *me, const int ix, const int iy)
Returns true if the bin status is red/dark red.
Definition: UtilsClient.h:171
void setADCRMSG1(float mean)
Definition: MonPNMGPADat.h:24
static int ix0EE(const int ism)
Definition: Numbers.cc:946
TProfile2D * ha03_[18]
TProfile2D * hs02_[18]
void setADCMeanG1(float mean)
Definition: MonPNMGPADat.h:21
TProfile * i01_[18]
void insertDataArraySet(const std::map< EcalLogicID, DATT > *data, IOVT *iov)
void analyze(void)
Analyze.
tuple cout
Definition: gather_cfg.py:41
void cleanup(void)
Cleanup.
void insertDataSet(const std::map< EcalLogicID, DATT > *data, IOVT *iov)
EETestPulseClient(const edm::ParameterSet &ps)
Constructor.
static const int TESTPULSE_HIGH_GAIN_MEAN_ERROR
tuple status
Definition: ntuplemaker.py:245
static bool validEE(const int ism, const int ix, const int iy)
Definition: Numbers.cc:982
void setADCRMSG16(float mean)
Definition: MonPNMGPADat.h:30
static bool getBinQuality(const MonitorElement *me, const int ix, const int iy)
Returns true if the bin quality is good or masked.
Definition: UtilsClient.h:153
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:647
static EcalLogicID getEcalLogicID(const char *name, const int id1=EcalLogicID::NULLID, const int id2=EcalLogicID::NULLID, const int id3=EcalLogicID::NULLID)
Definition: LogicID.h:31
std::vector< int > MGPAGains_
Definition: RunIOV.h:13
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:47
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
virtual ~EETestPulseClient()
Destructor.
static bool getBinStatistics(const T *histo, const int ix, const int iy, float &num, float &mean, float &rms)
Returns true if the bin contains good statistical data.
Definition: UtilsClient.h:133
void setPedMeanG1(float mean)
Definition: MonPNMGPADat.h:33
float pedPnDiscrepancyMean_[2]
void setPedRMSG16(float mean)
Definition: MonPNMGPADat.h:42
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
void endRun(void)
EndRun.
std::vector< int > superModules_
void endJob(void)
EndJob.