diff --git a/algo/qa/unpack/StsDigiQa.cxx b/algo/qa/unpack/StsDigiQa.cxx index cb072842446a1f01d9fb0c9094df6fefdaeacd28..3f9a181c84b296181cfe40ccfcd9b34809fb5a23 100644 --- a/algo/qa/unpack/StsDigiQa.cxx +++ b/algo/qa/unpack/StsDigiQa.cxx @@ -25,6 +25,7 @@ void DigiQa::Init() using cbm::algo::qa::H1D; using cbm::algo::qa::H2D; using cbm::algo::qa::PadConfig; + using cbm::algo::qa::Prof1D; if (!fpSender.get()) { return; @@ -53,6 +54,7 @@ void DigiQa::Init() fvphAddressChannelCharge.resize(nModules); if (fbAux) { fvphAddressChannelElink.resize(nModules); + fvppAddressChannelMissedEvt.resize(nModules); } for (int iM = 0; iM < nModules; ++iM) { int32_t address = fpReadoutSetup->modules.at(iM).address; @@ -61,7 +63,7 @@ void DigiQa::Init() auto aTitl = GetAddressTitle(address); auto cName = format("sts_digi/sts_digi_vs_channel_charge_{}", aName); auto cTitl = format("STS digis per channel and charge for module {}", aTitl); - auto canv = CanvasConfig(cName, cTitl, 3, 1); + auto canv = CanvasConfig(cName, cTitl, 3, fbAux ? 2 : 1); { auto pad = PadConfig(); auto name = format("sts_digi_{}_channel", aName); @@ -87,12 +89,23 @@ void DigiQa::Init() canv.AddPadConfig(pad); } if (fbAux) { - auto pad = PadConfig(); - auto name = format("sts_digi_{}_channel_elink", aName); - auto titl = format("STS digi charge for module {};E-link;channel", aTitl); - fvphAddressChannelElink[iM] = fQaData.MakeObj<H2D>(name, titl, 40, -0.5, 39.5, 2048, -0.5, 2047.5); - pad.RegisterHistogram(fvphAddressChannelElink[iM], "colz"); - canv.AddPadConfig(pad); + { + auto pad = PadConfig(); + auto name = format("sts_digi_{}_channel_elink", aName); + auto titl = format("STS digi charge for module {};E-link;channel", aTitl); + fvphAddressChannelElink[iM] = fQaData.MakeObj<H2D>(name, titl, 40, -0.5, 39.5, 2048, -0.5, 2047.5); + pad.RegisterHistogram(fvphAddressChannelElink[iM], "colz"); + canv.AddPadConfig(pad); + } + { + auto pad = PadConfig(); + auto name = format("sts_digi_{}_channel_missed_evt", aName); + auto titl = + format("STS digi missed event ratio for module {};channel; N_{{w/ missed events}} / N_{{tot.}}", aTitl); + fvppAddressChannelMissedEvt[iM] = fQaData.MakeObj<Prof1D>(name, titl, 2048, -0.5, 2047.5, 0., 1.); + pad.RegisterHistogram(fvppAddressChannelMissedEvt[iM], ""); + canv.AddPadConfig(pad); + } } fQaData.AddCanvasConfig(canv); @@ -142,6 +155,8 @@ void DigiQa::Exec() } int iM = itHistID->second; fvphAddressChannelElink[iM]->Fill(static_cast<double>(auxDigi.elink), static_cast<double>(auxDigi.channel)); + fvppAddressChannelMissedEvt[iM]->Fill(static_cast<double>(auxDigi.channel), + static_cast<double>(auxDigi.missedEvent)); } } } diff --git a/algo/qa/unpack/StsDigiQa.h b/algo/qa/unpack/StsDigiQa.h index 0a89c649aff19c99157ac068a21358d99355c5c1..9b3787b6de4a7b401d24a09ccdf8909753169e90 100644 --- a/algo/qa/unpack/StsDigiQa.h +++ b/algo/qa/unpack/StsDigiQa.h @@ -56,7 +56,9 @@ namespace cbm::algo::sts std::vector<qa::H1D*> fvphAddressChannel; ///< hist: digi channel in different sensors std::vector<qa::H1D*> fvphAddressCharge; ///< hist: digi charge in different sensors std::vector<qa::H2D*> fvphAddressChannelCharge; ///< hist: digi channel vs. charge in different sensors - std::vector<qa::H2D*> fvphAddressChannelElink; ///< hist: digi channel vs. eling (AUX) + std::vector<qa::H2D*> fvphAddressChannelElink; ///< hist: digi channel (vs. eling (AUX) + + std::vector<qa::Prof1D*> fvppAddressChannelMissedEvt; ///< prof: missed event ratio vs. channel (AUX) qa::H2D* fvphFebAsic = nullptr; ///< hist: digi FEB vs ASIC };