From f1d209ec4468007f8450e42db0fe4be2447c9377 Mon Sep 17 00:00:00 2001 From: "s.zharko@gsi.de" <s.zharko@gsi.de> Date: Wed, 12 Jun 2024 04:15:52 +0200 Subject: [PATCH] Online STS Digi QA: profile digi with missed event flag vs. number of channels and address --- algo/qa/unpack/StsDigiQa.cxx | 29 ++++++++++++++++++++++------- algo/qa/unpack/StsDigiQa.h | 4 +++- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/algo/qa/unpack/StsDigiQa.cxx b/algo/qa/unpack/StsDigiQa.cxx index cb07284244..3f9a181c84 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 0a89c649af..9b3787b6de 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 }; -- GitLab