23 {
24 IdentifierHash wafer_hash = IdentifierHash(moduleHash);
25 const InDetDD::SiDetectorElement *element =
m_elements->getDetectorElement(wafer_hash);
27
28 ChargeCalibrationBundle
b(numFE);
29
30 for (unsigned int j{}; j < numFE; j++) {
31 const auto &calibArray =
data.at(j);
32 if (!calibArray.empty()) {
33
34 if (calibArray.size() != FEStringSize-1) {
35 std::cout<<"Parameter size is not consistent(" << FEStringSize << ") " << calibArray.size() << " at (i,j)=(" << moduleHash << "," << j << ")\n";
38 }
41 b.threshold.emplace_back(getInt(0), getInt(1), getInt(2), getInt(3));
42 b.thresholdLong.emplace_back(getInt(4), getInt(5), getInt(6), getInt(7));
43 b.thresholdGanged.emplace_back(getInt(8), getInt(9), getInt(10), getInt(11));
46 b.totRes.emplace_back(getFloat(18), getFloat(19));
47
48
52
53 if (!(element->
isDBM())) {
54
55 const int totIdxStart =
m_configData->getToTThreshold(barrel_ec,layer);
56 const int totIdxEnd =
m_configData->getFEI3Latency(barrel_ec,layer);
57
60
63 } else {
64 b.lin.emplace_back(0.f, 0.f);
65 b.linGanged.emplace_back(0.f, 0.f);
66 }
67 } else {
68 b.lin.emplace_back(0.f, 0.f);
69 b.linGanged.emplace_back(0.f, 0.f);
70 }
71 } else {
72 std::cout<<"Array size is zero in " << calibArray << " at (i,j)=(" << moduleHash << "," << j << ")\n";
75 }
76 }
78 }
std::function< T(size_t)> getFunc(const std::vector< std::string > &data)
Return function converting a string to number type T at index i of data vector.
const PixelID * m_pixelID
static constexpr float m_chargeLimit
If the calculated charge exceeds this limit, a linear extrapolation is used at this point.
const PixelModuleData * m_configData
const InDetDD::SiDetectorElementCollection * m_elements
std::pair< size_t, InDetDD::PixelReadoutTechnology > numChipsAndTechnology(const InDetDD::SiDetectorElement *element)
std::pair< int, int > getBecAndLayer(const PixelID *pPixelId, IdentifierHash hash)
static constexpr float defaultOverflow