28 std::vector<float> zVec, qVec;
31 for (
int iz = 0; iz <
mNBinDpt; ++iz) {
33 const auto& mat =
mData[bin];
34 float val = mat.getValue(npix / 2, npix / 2);
40 std::vector<std::pair<float, float>> zqPairs;
41 for (
size_t i = 0;
i < zVec.size(); ++
i) {
42 zqPairs.emplace_back(zVec[
i], qVec[
i]);
44 std::sort(zqPairs.begin(), zqPairs.end());
47 for (
auto& p : zqPairs) {
48 zVec.push_back(p.first);
49 qVec.push_back(p.second);
52 float intQ = 0.f, intZQ = 0.f;
53 for (
size_t i = 0;
i + 1 < zVec.size(); ++
i) {
54 float z0 = zVec[
i], z1 = zVec[
i + 1];
55 float q0 = qVec[
i], q1 = qVec[
i + 1];
57 intQ += 0.5f * (q0 + q1) * dz;
58 intZQ += 0.5f * (z0 * q0 + z1 * q1) * dz;
61 mRespCentreDep = (intQ > 0.f) ? intZQ / intQ : 0.f;