CMS 3D CMS Logo

SiPixelCalibConfiguration.cc
Go to the documentation of this file.
3 #include <cstdlib>
4 
5 short SiPixelCalibConfiguration::vcalIndexForEvent(const uint32_t &eventnumber) const {
6  uint32_t relative_event = std::abs((int32_t)eventnumber - 1) % patternSize();
7  short relative_pattern = relative_event / getNTriggers();
8  return relative_pattern;
9 }
10 short SiPixelCalibConfiguration::vcalForEvent(const uint32_t &eventnumber) const {
11  short result = fVCalValues[vcalIndexForEvent(eventnumber)];
12  return result;
13 }
14 std::vector<short> SiPixelCalibConfiguration::columnPatternForEvent(const uint32_t &eventnumber) const {
15  std::vector<short> result;
16  uint32_t patternnumber = eventnumber / patternSize();
17  uint32_t colpatternnumber = patternnumber % nColumnPatterns();
18 
19  uint32_t nminuscol = 0;
20  for (size_t icol = 0; icol < fColumnPattern.size(); icol++) {
21  if (fColumnPattern[icol] == -1)
22  nminuscol++;
23  else if (nminuscol > colpatternnumber)
24  break;
25  else if (nminuscol == colpatternnumber) {
26  short val = fColumnPattern[icol];
27  result.push_back(val);
28  }
29  }
30  return result;
31 }
32 
33 std::vector<short> SiPixelCalibConfiguration::rowPatternForEvent(const uint32_t &eventnumber) const {
34  std::vector<short> result;
35  uint32_t patternnumber = eventnumber / patternSize();
36  uint32_t rowpatternnumber = patternnumber / nColumnPatterns();
37 
38  uint32_t nminusrow = 0;
39  for (size_t irow = 0; irow < fRowPattern.size(); irow++) {
40  if (fRowPattern[irow] == -1)
41  nminusrow++;
42  else if (nminusrow > rowpatternnumber)
43  break;
44  else if (nminusrow == rowpatternnumber) {
45  short val = fRowPattern[irow];
46  result.push_back(val);
47  }
48  }
49  return result;
50 }
51 uint32_t SiPixelCalibConfiguration::nextPatternChangeForEvent(const uint32_t &eventnumber) const {
52  uint32_t relative_event = eventnumber / patternSize();
53  relative_event += 1;
54  return relative_event * patternSize();
55 }
57 
59  : fNTriggers(0),
60  fRowPattern(std::vector<short>(0)),
61  fColumnPattern(std::vector<short>(0)),
62  fVCalValues(std::vector<short>(0)),
63  fMode("unknown")
64 
65 { // copy constructor that uses the complex object
66  fNTriggers = fancyConfig.nTriggersPerPattern();
67  std::vector<int> vcalpoints(0);
68  std::cout << "scan name = " << fancyConfig.scanName(0) << std::endl;
69  std::vector<uint32_t> vcalpointsuint32 = fancyConfig.scanValues(fancyConfig.scanName(0));
70  for (size_t ical = 0; ical < vcalpointsuint32.size(); ++ical) {
71  short vcalinput = vcalpointsuint32[ical];
72 
73  std::cout << "Vcal value " << ical << " = " << vcalinput << std::endl;
74  fVCalValues.push_back(vcalinput);
75  }
76  // copy row and column patterns
77 
78  std::vector<std::vector<uint32_t> > cols = fancyConfig.columnList();
79  std::vector<std::vector<uint32_t> > rows = fancyConfig.rowList();
80  for (uint32_t i = 0; i < cols.size(); ++i) {
81  for (uint32_t j = 0; j < cols[i].size(); ++j) {
82  short colval = cols[i][j];
83  fColumnPattern.push_back(colval);
84  }
85  fColumnPattern.push_back(-1);
86  }
87  for (uint32_t i = 0; i < rows.size(); ++i) {
88  for (uint32_t j = 0; j < rows[i].size(); ++j) {
89  short rowval = rows[i][j];
90  fRowPattern.push_back(rowval);
91  }
92  fRowPattern.push_back(-1);
93  }
94  fMode = fancyConfig.mode();
95 }
96 
98  uint32_t nrows = 0;
99  for (std::vector<short>::const_iterator i = fRowPattern.begin(); i != fRowPattern.end(); ++i) {
100  if (*i == -1)
101  nrows++;
102  }
103  return nrows;
104 }
106  uint32_t ncols = 0;
107 
108  for (std::vector<short>::const_iterator i = fColumnPattern.begin(); i != fColumnPattern.end(); ++i) {
109  if (*i == -1)
110  ncols++;
111  }
112  return ncols;
113 }
short vcalIndexForEvent(const uint32_t &eventnumber) const
std::vector< unsigned int > scanValues(std::string dac) const
std::string scanName(unsigned int iscan) const
short vcalForEvent(const uint32_t &eventnumber) const
std::vector< short > rowPatternForEvent(const uint32_t &eventnumber) const
std::string mode() const override
unsigned int nTriggersPerPattern() const
This class implements the steps that are used in a scan over Threshold and CalDelay.
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const std::vector< std::vector< unsigned int > > & columnList() const
uint32_t nextPatternChangeForEvent(const uint32_t &eventnumber) const
std::vector< short > columnPatternForEvent(const uint32_t &eventnumber) const
This class implements the steps that are used in a scan over Threshold and CalDelay.
const std::vector< std::vector< unsigned int > > & rowList() const