CMS 3D CMS Logo

SiPixelGainCalibrationForHLTService.cc
Go to the documentation of this file.
1 /*
2  * =====================================================================================
3  *
4  * Filename: SiPixelGainCalibrationForHLT.cc
5  *
6  * Description:
7  *
8  * Version: 1.0 (some functionality moved from ../interface/SiPixelGainCalibrationForHLT.h)
9  * Created: 04/16/2008 10:35:35 AM
10  *
11  * Author: Evan Friis (evan.klose.friis@cern.ch)
12  * University of California, Davis
13  *
14  * =====================================================================================
15  */
16 
18 #include <tuple>
19 
21  uint32_t detID, DigiIterator b, DigiIterator e, float conversionFactor, float offset, int* electron) {
23  int cols;
24  std::tie(range, cols) = ped->getRangeAndNCols(detID);
25  float pedestal = 0, gain = 0;
26  int i = 0;
27  bool isDeadColumn = false, isNoisyColumn = false;
28  int oldCol = -1, oldAveragedBlock = -1;
29  for (DigiIterator di = b; di != e; ++di) {
30  int row = di->row();
31  int col = di->column();
32  int averagedBlock = row / numberOfRowsAveragedOver_;
33  if ((col != oldCol) | (averagedBlock != oldAveragedBlock)) {
34  oldCol = col;
35  oldAveragedBlock = averagedBlock;
36  std::tie(pedestal, gain) = ped->getPedAndGain(col, row, range, cols, isDeadColumn, isNoisyColumn);
37  }
39  electron[i++] = 0;
40  else {
41  float vcal = di->adc() * gain - pedestal * gain;
42  // float vcal = (di->adc() - DBpedestal) * DBgain;
43  electron[i++] = int(vcal * conversionFactor + offset);
44  }
45  }
46  assert(i == (e - b));
47 }
48 
49 float SiPixelGainCalibrationForHLTService::getPedestal(const uint32_t& detID, const int& col, const int& row) {
50  bool isDead = false;
51  bool isNoisy = false;
52  float pedestalValue = this->getPedestalByColumn(detID, col, row, isDead, isNoisy);
53  if (isDead || isNoisy) {
54  this->throwExepctionForBadRead("HLT getPedestal()", detID, col, row, pedestalValue);
55  return 0.0;
56  }
57  return pedestalValue;
58 }
59 
60 float SiPixelGainCalibrationForHLTService::getGain(const uint32_t& detID, const int& col, const int& row) {
61  bool isDead = false;
62  bool isNoisy = false;
63  float gainValue = this->getGainByColumn(detID, col, row, isDead, isNoisy);
64  if (isDead || isNoisy) {
65  this->throwExepctionForBadRead("HLT getGain()", detID, col, row, gainValue);
66  return 0.0;
67  }
68  return gainValue;
69 }
70 
71 bool SiPixelGainCalibrationForHLTService::isDead(const uint32_t& detID, const int& col, const int& row) {
72  bool isDead = false;
73  bool isNoisy = false;
74  try {
75  this->getPedestalByColumn(detID, col, row, isDead, isNoisy); //pedestal stores dead column value as well
76  } catch (cms::Exception& e) {
77  // Do not stop processing if you check if a nonexistant pixel is dead
78  edm::LogInfo("SiPixelGainCalibrationForHLTService")
79  << "Attempting to check if nonexistant pixel is dead. Exception message: " << e.what();
80  isDead = false;
81  }
82  return isDead;
83 }
84 
85 bool SiPixelGainCalibrationForHLTService::isNoisy(const uint32_t& detID, const int& col, const int& row) {
86  bool isDead = false;
87  bool isNoisy = false;
88  try {
89  this->getPedestalByColumn(detID, col, row, isDead, isNoisy); //pedestal stores noisy column value as well
90  } catch (cms::Exception& e) {
91  // Do not stop processing if you check if a nonexistant pixel is noisy
92  edm::LogInfo("SiPixelGainCalibrationForHLTService")
93  << "Attempting to check if nonexistant pixel is noisy. Exception message: " << e.what();
94  isNoisy = false;
95  }
96  return isNoisy;
97 }
98 
99 bool SiPixelGainCalibrationForHLTService::isDeadColumn(const uint32_t& detID, const int& col, const int& row) {
100  bool isDead = false;
101  bool isNoisy = false;
102  try {
103  this->getGainByColumn(detID, col, row, isDead, isNoisy);
104  } catch (cms::Exception& e) {
105  // Do not stop processing if you check if a nonexistant pixel is dead
106  edm::LogInfo("SiPixelGainCalibrationForHLTService")
107  << "Attempting to check if nonexistant pixel is dead. Exception message: " << e.what();
108  isDead = false;
109  }
110  return isDead;
111 }
112 
113 bool SiPixelGainCalibrationForHLTService::isNoisyColumn(const uint32_t& detID, const int& col, const int& row) {
114  bool isDead = false;
115  bool isNoisy = false;
116  try {
117  this->getGainByColumn(detID, col, row, isDead, isNoisy);
118  } catch (cms::Exception& e) {
119  // Do not stop processing if you check if a nonexistant pixel is noisy
120  edm::LogInfo("SiPixelGainCalibrationForHLTService")
121  << "Attempting to check if nonexistant pixel is noisy. Exception message: " << e.what();
122  isNoisy = false;
123  }
124  return isNoisy;
125 }
FastTimerService_cff.range
range
Definition: FastTimerService_cff.py:34
mps_fire.i
i
Definition: mps_fire.py:428
SiPixelGainCalibrationForHLT::getPedAndGain
std::pair< float, float > getPedAndGain(const int &col, const int &row, const Range &range, const int &nCols, bool &isDeadColumn, bool &isNoisyColumn) const
Definition: SiPixelGainCalibrationForHLT.cc:134
SiPixelGainCalibrationForHLTService::calibrate
void calibrate(uint32_t detID, DigiIterator b, DigiIterator e, float conversionFactor, float offset, int *electron) override
Definition: SiPixelGainCalibrationForHLTService.cc:20
SiPixelGainCalibrationForHLTService::getPedestal
float getPedestal(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:49
SiPixelGainCalibrationServiceBase::DigiIterator
edm::DetSet< PixelDigi >::const_iterator DigiIterator
Definition: SiPixelGainCalibrationServiceBase.h:31
cuy.col
col
Definition: cuy.py:1010
cms::cuda::assert
assert(be >=bs)
SiPixelGainCalibrationForHLT::Range
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiPixelGainCalibrationForHLT.h:51
SiPixelGainCalibrationServicePayloadGetter< SiPixelGainCalibrationForHLT, SiPixelGainCalibrationForHLTRcd >::getPedestalByColumn
float getPedestalByColumn(const uint32_t &detID, const int &col, const int &row, bool &isDeadColumn, bool &isNoisyColumn)
Definition: SiPixelGainCalibrationServiceBase.h:227
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
SiPixelGainCalibrationServicePayloadGetter< SiPixelGainCalibrationForHLT, SiPixelGainCalibrationForHLTRcd >::numberOfRowsAveragedOver_
int numberOfRowsAveragedOver_
Definition: SiPixelGainCalibrationServiceBase.h:98
SiPixelGainCalibrationServicePayloadGetter< SiPixelGainCalibrationForHLT, SiPixelGainCalibrationForHLTRcd >::getGainByColumn
float getGainByColumn(const uint32_t &detID, const int &col, const int &row, bool &isDeadColumn, bool &isNoisyColumn)
Definition: SiPixelGainCalibrationServiceBase.h:265
SiPixelGainCalibrationForHLTService::isNoisy
bool isNoisy(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:85
SiPixelGainCalibrationServicePayloadGetter< SiPixelGainCalibrationForHLT, SiPixelGainCalibrationForHLTRcd >::ped
edm::ESHandle< SiPixelGainCalibrationForHLT > ped
Definition: SiPixelGainCalibrationServiceBase.h:97
metsig::electron
Definition: SignAlgoResolutions.h:48
b
double b
Definition: hdecay.h:118
SiPixelGainCalibrationForHLTService::getGain
float getGain(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:60
SiPixelGainCalibrationForHLTService::isDead
bool isDead(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:71
SiPixelGainCalibrationForHLTService.h
createfilelist.int
int
Definition: createfilelist.py:10
EcalCondDBWriter_cfi.pedestal
pedestal
Definition: EcalCondDBWriter_cfi.py:49
SiPixelGainCalibrationForHLT::getRangeAndNCols
const std::pair< const Range, const int > getRangeAndNCols(const uint32_t &detID) const
Definition: SiPixelGainCalibrationForHLT.cc:88
PedestalClient_cfi.gain
gain
Definition: PedestalClient_cfi.py:37
cms::Exception
Definition: Exception.h:70
SiPixelGainCalibrationForHLTService::isDeadColumn
bool isDeadColumn(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:99
SiPixelGainCalibrationForHLTService::isNoisyColumn
bool isNoisyColumn(const uint32_t &detID, const int &col, const int &row) override
Definition: SiPixelGainCalibrationForHLTService.cc:113
hltrates_dqm_sourceclient-live_cfg.offset
offset
Definition: hltrates_dqm_sourceclient-live_cfg.py:82
SiPixelGainCalibrationServicePayloadGetter< SiPixelGainCalibrationForHLT, SiPixelGainCalibrationForHLTRcd >::throwExepctionForBadRead
void throwExepctionForBadRead(std::string payload, const uint32_t &detID, const int &col, const int &row, double value=-1) const
Definition: SiPixelGainCalibrationServiceBase.h:302
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37