CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SiPixelGainCalibrationRejectNoisyAndDead.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: InsertNoisyPixelsInDB
4 // Class: InsertNoisyPixelsInDB
5 //
13 //
14 // Original Author: Romain Rougny
15 // Created: Tue Feb 3 15:18:02 CET 2009
16 // $Id: SiPixelGainCalibrationRejectNoisyAndDead.cc,v 1.5 2009/10/21 15:53:42 heyburn Exp $
17 //
18 //
19 
20 // system include files
21 #include <fstream>
22 #include <map>
23 #include <memory>
24 #include <sys/stat.h>
25 #include <utility>
26 #include <vector>
27 
28 // user include files
48 
49 // ROOT includes
50 #include "TH2F.h"
51 #include "TFile.h"
52 #include "TDirectory.h"
53 #include "TKey.h"
54 #include "TString.h"
55 #include "TList.h"
56 
58 public:
61 
62 private:
65  std::unique_ptr<SiPixelGainCalibrationOffline> theGainCalibrationDbInputOffline_;
66 
68  std::unique_ptr<SiPixelGainCalibrationForHLT> theGainCalibrationDbInputForHLT_;
69 
70  void analyze(const edm::Event&, const edm::EventSetup&) override;
71 
72  std::map<int, std::vector<std::pair<int, int> > > noisypixelkeeper;
73  std::map<int, std::vector<std::pair<int, int> > > insertednoisypixel;
75 
76  void fillDatabase(const edm::EventSetup&);
77  void getNoisyPixels();
78 
79  // ----------member data ---------------------------
83  const bool DEBUG;
84  float pedlow_;
85  float pedhi_;
86  float gainlow_;
87  float gainhi_;
88 };
89 
90 using namespace edm;
91 using namespace std;
92 
94  : pddToken_(esConsumes()),
95  SiPixelGainCalibrationOfflineService_(iConfig, consumesCollector()),
96  SiPixelGainCalibrationForHLTService_(iConfig, consumesCollector()),
97  noisypixellist_(iConfig.getUntrackedParameter<std::string>("noisyPixelList", "noisypixel.txt")),
98  insertnoisypixelsindb_(iConfig.getUntrackedParameter<int>("insertNoisyPixelsInDB", 1)),
99  record_(iConfig.getUntrackedParameter<std::string>("record", "SiPixelGainCalibrationOfflineRcd")),
100  DEBUG(iConfig.getUntrackedParameter<bool>("debug", false)) {
101  //now do what ever initialization is needed
102 }
103 
105 
106 // ------------ method called to for each event ------------
108  if (insertnoisypixelsindb_ != 0)
109  getNoisyPixels();
110  fillDatabase(iSetup);
111 }
112 
114  if (DEBUG)
115  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
116  << "=>=>=>=> Starting the function fillDatabase()" << endl;
117 
118  if (record_ != "SiPixelGainCalibrationOfflineRcd" && record_ != "SiPixelGainCalibrationForHLTRcd") {
119  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
120  << record_ << " : this record can't be used !" << std::endl;
121  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
122  << "Please select SiPixelGainCalibrationForHLTRcd or SiPixelGainCalibrationOfflineRcd" << std::endl;
123  return;
124  }
125 
126  //Get the Calibration Data
127  if (record_ == "SiPixelGainCalibrationOfflineRcd")
129  if (record_ == "SiPixelGainCalibrationForHLTRcd")
131 
132  //Get list of ideal detids
133  const TrackerGeometry* pDD = &iSetup.getData(pddToken_);
134  edm::LogInfo("SiPixelCondObjOfflineBuilder") << " There are " << pDD->dets().size() << " detectors" << std::endl;
135 
136  if (record_ == "SiPixelGainCalibrationOfflineRcd") {
141  } else if (record_ == "SiPixelGainCalibrationForHLTRcd") {
146  }
147  if (gainlow_ < 0)
148  gainlow_ = 0;
149  if (gainhi_ > 21)
150  gainhi_ = 21;
151  if (pedlow_ < -100)
152  pedlow_ = -100;
153  if (pedhi_ > 300)
154  pedhi_ = 300;
155 
156  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
157  << "New payload will have pedlow,hi " << pedlow_ << "," << pedhi_ << " and gainlow,hi " << gainlow_ << ","
158  << gainhi_ << endl;
159  if (record_ == "SiPixelGainCalibrationOfflineRcd")
161  std::make_unique<SiPixelGainCalibrationOffline>(pedlow_, pedhi_, gainlow_, gainhi_);
162  if (record_ == "SiPixelGainCalibrationForHLTRcd")
164  std::make_unique<SiPixelGainCalibrationForHLT>(pedlow_, pedhi_, gainlow_, gainhi_);
165 
166  int nnoisy = 0;
167  int ndead = 0;
168 
169  int detid = 0;
170  int NDetid = 0;
171 
172  //checking for noisy pixels that won't be inserted ...
173  bool willNoisyPixBeInserted;
174  for (std::map<int, std::vector<std::pair<int, int> > >::const_iterator it = noisypixelkeeper.begin();
175  it != noisypixelkeeper.end();
176  it++) {
177  willNoisyPixBeInserted = false;
178  for (TrackerGeometry::DetContainer::const_iterator mod = pDD->dets().begin(); mod != pDD->dets().end(); mod++) {
179  detid = 0;
180  if (dynamic_cast<PixelGeomDetUnit const*>((*mod)) != nullptr)
181  detid = ((*mod)->geographicalId()).rawId();
182  if (detid == it->first) {
183  willNoisyPixBeInserted = true;
184  break;
185  }
186  }
187  if (!willNoisyPixBeInserted)
188  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
189  << "All Noisy Pixels in detid " << it->first
190  << "won't be inserted, check the TrackerGeometry you are using !! You are missing some modules" << endl;
191  }
192 
193  if (DEBUG)
194  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Starting Loop over all modules" << endl;
195 
196  //Looping over all modules
197  for (TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++) {
198  detid = 0;
199  if (dynamic_cast<PixelGeomDetUnit const*>((*it)) != nullptr)
200  detid = ((*it)->geographicalId()).rawId();
201  if (detid == 0)
202  continue;
203  NDetid++;
204  //edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")<<NDetid<<" "<<detid<<endl;
205  //if(NDetid==164) continue;
206 
207  if (DEBUG)
208  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> We are in module " << detid << endl;
209 
210  // Get the module sizes
211  const PixelGeomDetUnit* pixDet = dynamic_cast<const PixelGeomDetUnit*>((*it));
212  const PixelTopology& topol = pixDet->specificTopology();
213  int nrows = topol.nrows(); // rows in x
214  int ncols = topol.ncolumns(); // cols in y
215 
216  float ped;
217  float gainforthiscol[2];
218  float pedforthiscol[2];
219  int nusedrows[2];
220  int nrowsrocsplit;
221  if (record_ == "SiPixelGainCalibrationOfflineRcd")
222  nrowsrocsplit = theGainCalibrationDbInputOffline_->getNumberOfRowsToAverageOver();
223  if (record_ == "SiPixelGainCalibrationForHLTRcd")
224  nrowsrocsplit = theGainCalibrationDbInputForHLT_->getNumberOfRowsToAverageOver();
225 
226  std::vector<char> theSiPixelGainCalibrationGainPerColPedPerPixel;
227  std::vector<char> theSiPixelGainCalibrationPerCol;
228 
229  if (DEBUG)
230  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Starting Loop for each rows/cols " << endl;
231 
232  for (int icol = 0; icol <= ncols - 1; icol++) {
233  if (DEBUG)
234  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Starting a new column" << endl;
235 
236  nusedrows[0] = nusedrows[1] = 0;
237  gainforthiscol[0] = gainforthiscol[1] = 0;
238  pedforthiscol[0] = pedforthiscol[1] = 0;
239 
240  for (int jrow = 0; jrow <= nrows - 1; jrow++) {
241  if (DEBUG)
242  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
243  << "=>=>=>=> We are in col,row " << icol << "," << jrow << endl;
244 
245  ped = 0;
246 
247  size_t iglobalrow = 0;
248  int noisyPixInRow = 0;
249  if (jrow > nrowsrocsplit) {
250  iglobalrow = 1;
251  noisyPixInRow = 0;
252  }
253 
254  bool isPixelDeadOld = false;
255  bool isColumnDeadOld = false;
256  // bool isPixelDeadNew = false;
257  // bool isColumnDeadNew = false;
258 
259  bool isPixelNoisyOld = false;
260  bool isColumnNoisyOld = false;
261  bool isPixelNoisyNew = false;
262  bool isColumnNoisyNew = false;
263 
264  bool isColumnDead = false;
265  bool isColumnNoisy = false;
266  bool isPixelDead = false;
267  bool isPixelNoisy = false;
268 
269  if (DEBUG)
270  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Trying to get gain/ped " << endl;
271 
272  try {
273  if (record_ == "SiPixelGainCalibrationOfflineRcd") {
274  isPixelDeadOld = SiPixelGainCalibrationOfflineService_.isDead(detid, icol, jrow);
275  isPixelNoisyOld = SiPixelGainCalibrationOfflineService_.isNoisy(detid, icol, jrow);
276  isColumnDeadOld = SiPixelGainCalibrationOfflineService_.isNoisyColumn(detid, icol, jrow);
277  isColumnNoisyOld = SiPixelGainCalibrationOfflineService_.isDeadColumn(detid, icol, jrow);
278  }
279  if (record_ == "SiPixelGainCalibrationForHLTRcd") {
280  isColumnDeadOld = SiPixelGainCalibrationForHLTService_.isNoisyColumn(detid, icol, jrow);
281  isColumnNoisyOld = SiPixelGainCalibrationForHLTService_.isDeadColumn(detid, icol, jrow);
282  }
283  if (!isColumnDeadOld && !isColumnNoisyOld) {
284  if (record_ == "SiPixelGainCalibrationOfflineRcd")
285  gainforthiscol[iglobalrow] = SiPixelGainCalibrationOfflineService_.getGain(detid, icol, jrow);
286  if (record_ == "SiPixelGainCalibrationForHLTRcd") {
287  gainforthiscol[iglobalrow] = SiPixelGainCalibrationForHLTService_.getGain(detid, icol, jrow);
288  pedforthiscol[iglobalrow] = SiPixelGainCalibrationForHLTService_.getPedestal(detid, icol, jrow);
289  }
290  }
291  if (!isPixelDeadOld && !isPixelNoisyOld)
292  if (record_ == "SiPixelGainCalibrationOfflineRcd")
293  ped = SiPixelGainCalibrationOfflineService_.getPedestal(detid, icol, jrow);
294  } catch (const std::exception& er) {
295  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
296  << "Problem trying to catch gain/ped from DETID " << detid << " @ col,row " << icol << "," << jrow
297  << endl;
298  }
299  //edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")<<"For DetId "<<detid<<" we found gain : "<<gain<<", pedestal : "<<ped<<std::endl;
300 
301  if (DEBUG)
302  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
303  << "=>=>=>=> Found gain " << gainforthiscol[iglobalrow] << " and ped " << pedforthiscol[iglobalrow]
304  << endl;
305 
306  //Check if pixel is in new noisy list
307  for (std::map<int, std::vector<std::pair<int, int> > >::const_iterator it = noisypixelkeeper.begin();
308  it != noisypixelkeeper.end();
309  it++)
310  for (unsigned int i = 0; i < (it->second).size(); i++)
311  if (it->first == detid && (it->second.at(i)).first == icol && (it->second.at(i)).second == jrow)
312  isPixelNoisyNew = true;
313 
314  isColumnDead = isColumnDeadOld;
315  isPixelDead = isPixelDeadOld;
316 
317  if (isPixelNoisyNew)
318  noisyPixInRow++;
319  if (noisyPixInRow == nrowsrocsplit)
320  isColumnNoisyNew = true;
321 
322  if (insertnoisypixelsindb_ == 0) {
323  isColumnNoisy = isColumnNoisyOld;
324  isPixelNoisy = isPixelNoisyOld;
325  } else if (insertnoisypixelsindb_ == 1) {
326  isPixelNoisy = isPixelNoisyNew;
327  isColumnNoisy = isColumnNoisyNew;
328  } else if (insertnoisypixelsindb_ == 2) {
329  isPixelNoisy = isPixelNoisyNew || isPixelNoisyOld;
330  isColumnNoisy = isColumnNoisyNew || isColumnNoisyOld;
331  }
332 
333  if (isPixelNoisy)
334  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
335  << "Inserting a noisy pixel in " << detid << " at col,row " << icol << "," << jrow << endl;
336  if (isColumnNoisy)
337  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
338  << "Inserting a noisy column in " << detid << " at col,row " << icol << "," << jrow << endl;
339  if (isPixelNoisy)
340  nnoisy++;
341  if (isPixelDead)
342  ndead++;
343 
344  if (DEBUG)
345  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Now Starting to fill the DB" << endl;
346 
347  //********** Fill the new DB !!
348 
349  if (DEBUG)
350  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
351  << "=>=>=>=> Filling Pixel Level Calibration" << endl;
352 
353  //Set Pedestal
354  if (record_ == "SiPixelGainCalibrationOfflineRcd") {
355  if (isPixelDead)
356  theGainCalibrationDbInputOffline_->setDeadPixel(theSiPixelGainCalibrationGainPerColPedPerPixel);
357  else if (isPixelNoisy)
358  theGainCalibrationDbInputOffline_->setNoisyPixel(theSiPixelGainCalibrationGainPerColPedPerPixel);
359  else
360  theGainCalibrationDbInputOffline_->setDataPedestal(ped, theSiPixelGainCalibrationGainPerColPedPerPixel);
361  }
362 
363  //Set Gain
364  if ((jrow + 1) % nrowsrocsplit == 0) {
365  if (DEBUG)
366  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
367  << "=>=>=>=> Filling Column Level Calibration" << endl;
368 
369  if (isColumnDead) {
370  if (record_ == "SiPixelGainCalibrationOfflineRcd")
371  theGainCalibrationDbInputOffline_->setDeadColumn(nrowsrocsplit,
372  theSiPixelGainCalibrationGainPerColPedPerPixel);
373  if (record_ == "SiPixelGainCalibrationForHLTRcd")
374  theGainCalibrationDbInputForHLT_->setDeadColumn(nrowsrocsplit, theSiPixelGainCalibrationPerCol);
375  } else if (isColumnNoisy) {
376  if (record_ == "SiPixelGainCalibrationOfflineRcd")
377  theGainCalibrationDbInputOffline_->setNoisyColumn(nrowsrocsplit,
378  theSiPixelGainCalibrationGainPerColPedPerPixel);
379  if (record_ == "SiPixelGainCalibrationForHLTRcd")
380  theGainCalibrationDbInputForHLT_->setNoisyColumn(nrowsrocsplit, theSiPixelGainCalibrationPerCol);
381  } else {
382  if (record_ == "SiPixelGainCalibrationOfflineRcd")
384  gainforthiscol[iglobalrow], nrowsrocsplit, theSiPixelGainCalibrationGainPerColPedPerPixel);
385  if (record_ == "SiPixelGainCalibrationForHLTRcd")
387  pedforthiscol[iglobalrow], gainforthiscol[iglobalrow], theSiPixelGainCalibrationPerCol);
388  }
389  }
390 
391  if (DEBUG)
392  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
393  << "=>=>=>=> This pixel is finished inserting" << endl;
394 
395  } //end of loop over rows
396 
397  if (DEBUG)
398  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
399  << "=>=>=>=> This column is finished inserting" << endl;
400 
401  } //end of loop over col
402 
403  if (DEBUG)
404  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> Loop over rows/cols is finished" << endl;
405 
406  if (record_ == "SiPixelGainCalibrationOfflineRcd") {
407  SiPixelGainCalibrationOffline::Range offlinerange(theSiPixelGainCalibrationGainPerColPedPerPixel.begin(),
408  theSiPixelGainCalibrationGainPerColPedPerPixel.end());
409  if (!theGainCalibrationDbInputOffline_->put(detid, offlinerange, ncols))
410  edm::LogError("SiPixelGainCalibrationAnalysis")
411  << "warning: detid already exists for Offline (gain per col, ped per pixel) calibration database"
412  << std::endl;
413  }
414  if (record_ == "SiPixelGainCalibrationForHLTRcd") {
415  SiPixelGainCalibrationOffline::Range hltrange(theSiPixelGainCalibrationPerCol.begin(),
416  theSiPixelGainCalibrationPerCol.end());
417  if (!theGainCalibrationDbInputForHLT_->put(detid, hltrange, ncols))
418  edm::LogError("SiPixelGainCalibrationAnalysis")
419  << "warning: detid already exists for HLT (gain per col, ped per col) calibration database" << std::endl;
420  }
421 
422  if (DEBUG)
423  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "=>=>=>=> This detid is finished inserting" << endl;
424 
425  } //end of loop over Detids
426 
427  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << " --- writing to DB!" << std::endl;
429  if (!mydbservice.isAvailable()) {
430  edm::LogError("db service unavailable");
431  return;
432  } else {
433  if (record_ == "SiPixelGainCalibrationOfflineRcd") {
434  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
435  << "now doing SiPixelGainCalibrationOfflineRcd payload..." << std::endl;
436  if (mydbservice->isNewTagRequest("SiPixelGainCalibrationOfflineRcd")) {
438  *theGainCalibrationDbInputOffline_, mydbservice->beginOfTime(), "SiPixelGainCalibrationOfflineRcd");
439  } else {
441  *theGainCalibrationDbInputOffline_, mydbservice->currentTime(), "SiPixelGainCalibrationOfflineRcd");
442  }
443  }
444  if (record_ == "SiPixelGainCalibrationForHLTRcd") {
445  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
446  << "now doing SiPixelGainCalibrationForHLTRcd payload..." << std::endl;
447  if (mydbservice->isNewTagRequest("SiPixelGainCalibrationForHLTRcd")) {
449  *theGainCalibrationDbInputForHLT_, mydbservice->beginOfTime(), "SiPixelGainCalibrationForHLTRcd");
450  } else {
452  *theGainCalibrationDbInputForHLT_, mydbservice->currentTime(), "SiPixelGainCalibrationForHLTRcd");
453  }
454  }
455  }
456 
457  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << " ---> SUMMARY :" << std::endl;
458  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
459  << " File had " << nnoisyininput << " noisy pixels" << std::endl;
460 
461  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << " DB has now " << nnoisy << " noisy pixels" << std::endl;
462  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << " DB has now " << ndead << " dead pixels" << std::endl;
463 }
464 
466  nnoisyininput = 0;
467 
468  ifstream in;
469  struct stat Stat;
470  if (stat(noisypixellist_.c_str(), &Stat)) {
471  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "No file named " << noisypixellist_ << std::endl;
472  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
473  << "If you don't want to insert noisy pixel flag, disable it using tag insertNoisyPixelsInDB " << std::endl;
474  return;
475  }
476 
477  in.open(noisypixellist_.c_str());
478  if (in.is_open()) {
479  TString line;
480  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead") << "opened" << endl;
481  char linetmp[201];
482  while (in.getline(linetmp, 200)) {
483  line = linetmp;
484  if (line.Contains("OFFLINE")) {
485  line.Remove(0, line.First(",") + 9);
486  TString detidstring = line;
487  detidstring.Remove(line.First(" "), line.Sizeof());
488 
489  line.Remove(0, line.First(",") + 20);
490  TString col = line;
491  col.Remove(line.First(","), line.Sizeof());
492  line.Remove(0, line.First(",") + 1);
493  TString row = line;
494  row.Remove(line.First(" "), line.Sizeof());
495 
496  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")
497  << "Found noisy pixel in DETID " << detidstring << " col,row " << col << "," << row << std::endl;
498  nnoisyininput++;
499 
500  std::vector<std::pair<int, int> > tempvec;
501  if (noisypixelkeeper.find(detidstring.Atoi()) != noisypixelkeeper.end())
502  tempvec = (noisypixelkeeper.find(detidstring.Atoi()))->second;
503 
504  std::pair<int, int> temppair(col.Atoi(), row.Atoi());
505  tempvec.push_back(temppair);
506  noisypixelkeeper[detidstring.Atoi()] = tempvec;
507  }
508  }
509  }
510  /*
511  for(std::map <int,std::vector<std::pair<int,int> > >::const_iterator it=noisypixelkeeper.begin();it!=noisypixelkeeper.end();it++)
512  for(int i=0;i<(it->second).size();i++)
513  edm::LogPrint("SiPixelGainCalibrationRejectNoisyAndDead")<<it->first<<" "<<(it->second.at(i)).first<<" "<<(it->second.at(i)).second<<std::endl;
514  */
515 }
516 
517 //define this as a plug-in
bool isNoisyColumn(const uint32_t &detID, const int &col, const int &row) override
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > pddToken_
virtual int ncolumns() const =0
float getPedestal(const uint32_t &detID, const int &col, const int &row) override
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
virtual int nrows() const =0
std::unique_ptr< SiPixelGainCalibrationOffline > theGainCalibrationDbInputOffline_
std::map< int, std::vector< std::pair< int, int > > > noisypixelkeeper
const DetContainer & dets() const override
Returm a vector of all GeomDet (including all GeomDetUnits)
Log< level::Error, false > LogError
std::pair< ContainerIterator, ContainerIterator > Range
void createOneIOV(const T &payload, cond::Time_t firstSinceTime, const std::string &recordName)
bool getData(T &iHolder) const
Definition: EventSetup.h:128
U second(std::pair< T, U > const &p)
void appendOneIOV(const T &payload, cond::Time_t sinceTime, const std::string &recordName)
std::map< int, std::vector< std::pair< int, int > > > insertednoisypixel
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< SiPixelGainCalibrationForHLT > theGainCalibrationDbInputForHLT_
float getGain(const uint32_t &detID, const int &col, const int &row) override
bool isNewTagRequest(const std::string &recordName)
SiPixelGainCalibrationForHLTService SiPixelGainCalibrationForHLTService_
void setESObjects(const edm::EventSetup &es) override
void analyze(const edm::Event &, const edm::EventSetup &) override
bool isAvailable() const
Definition: Service.h:40
bool isDeadColumn(const uint32_t &detID, const int &col, const int &row) override
bool isDead(const uint32_t &detID, const int &col, const int &row) override
Log< level::Warning, true > LogPrint
SiPixelGainCalibrationOfflineService SiPixelGainCalibrationOfflineService_
bool isNoisy(const uint32_t &detID, const int &col, const int &row) override
Log< level::Info, false > LogInfo
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
#define DEBUG
Definition: DMRChecker.cc:120
bool isDeadColumn(const uint32_t &detID, const int &col, const int &row) override
bool isNoisyColumn(const uint32_t &detID, const int &col, const int &row) override
float getPedestal(const uint32_t &detID, const int &col, const int &row) override
int col
Definition: cuy.py:1009
T mod(const T &a, const T &b)
Definition: ecalDccMap.h:4
ESGetTokenH3DDVariant esConsumes(std::string const &Reccord, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
tuple size
Write out results.
float getGain(const uint32_t &detID, const int &col, const int &row) override