Skip to content

Commit eb60e76

Browse files
authored
TPC QC: Add option to display meta data in QualityObserver (#1612)
* TPC QC WIP: Update QualityObserver for metadata * Test MetaData * Clang format
1 parent 1a6216a commit eb60e76

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

Modules/TPC/include/TPC/QualityObserver.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,10 @@ class QualityObserver : public PostProcessingInterface
7070
std::unordered_map<std::string, std::vector<std::string>> mQualities;
7171
std::unordered_map<std::string, int> mColors;
7272
TCanvas* mCanvas = nullptr;
73+
74+
bool mViewDetails;
75+
std::unordered_map<std::string, std::vector<std::string>> mReasons;
76+
std::unordered_map<std::string, std::vector<std::string>> mComments;
7377
};
7478

7579
} // namespace o2::quality_control_modules::tpc

Modules/TPC/run/tpcQCQualityObserver.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"moduleName": "QcTPC",
3030
"detectorName": "TPC",
3131
"qualityObserverName": "TestObserver",
32+
"observeDetails": "true",
3233
"qualityObserverConfig": [
3334
{
3435
"groupTitle": "Tracks Trending",

Modules/TPC/src/QualityObserver.cxx

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "QualityControl/DatabaseInterface.h"
1818
#include "QualityControl/MonitorObject.h"
1919
#include "QualityControl/QcInfoLogger.h"
20+
#include "QualityControl/QualityObject.h"
2021
#include <TPC/QualityObserver.h>
2122
#include <boost/property_tree/ptree.hpp>
2223
#include <TPaveText.h>
@@ -33,6 +34,7 @@ void QualityObserver::configure(std::string name,
3334
const boost::property_tree::ptree& config)
3435
{
3536
mObserverName = config.get<std::string>("qc.postprocessing." + name + ".qualityObserverName");
37+
mViewDetails = config.get<bool>("qc.postprocessing." + name + ".observeDetails", true);
3638

3739
for (const auto& dataSourceConfig : config.get_child("qc.postprocessing." + name + ".qualityObserverConfig")) {
3840
Config dataConfig;
@@ -69,11 +71,13 @@ void QualityObserver::initialize(Trigger, framework::ServiceRegistryRef)
6971
{
7072
for (const auto& config : mConfig) {
7173
mQualities[config.groupTitle] = std::vector<std::string>();
74+
mReasons[config.groupTitle] = std::vector<std::string>();
75+
mComments[config.groupTitle] = std::vector<std::string>();
7276
}
7377
mColors[Quality::Bad.getName()] = kRed;
7478
mColors[Quality::Medium.getName()] = kOrange - 3;
7579
mColors[Quality::Good.getName()] = kGreen + 2;
76-
mColors[Quality::Null.getName()] = kGray + 2;
80+
mColors[Quality::Null.getName()] = kViolet - 6;
7781
}
7882

7983
void QualityObserver::update(Trigger t, framework::ServiceRegistryRef services)
@@ -97,14 +101,20 @@ void QualityObserver::getQualities(const Trigger& t,
97101

98102
if (mQualities[config.groupTitle].size() > 0) {
99103
mQualities[config.groupTitle].clear();
104+
mReasons[config.groupTitle].clear();
105+
mComments[config.groupTitle].clear();
100106
}
101107
for (const auto& qualityobject : config.qo) {
102108
const auto qo = qcdb.retrieveQO(config.path + "/" + qualityobject, t.timestamp, t.activity);
103109
if (qo) {
104110
const auto quality = qo->getQuality();
105111
mQualities[config.groupTitle].push_back(quality.getName());
112+
mReasons[config.groupTitle].push_back(quality.getMetadata(quality.getName(), ""));
113+
mComments[config.groupTitle].push_back(quality.getMetadata("Comment", ""));
106114
} else {
107115
mQualities[config.groupTitle].push_back(Quality::Null.getName());
116+
mReasons[config.groupTitle].push_back("");
117+
mComments[config.groupTitle].push_back("");
108118
}
109119
}
110120
}
@@ -139,6 +149,17 @@ void QualityObserver::generatePanel()
139149
pt->AddText(Form("%s = #color[%d]{%s}", config.qoTitle.at(i).data(), mColors[mQualities[config.groupTitle].at(i).data()], mQualities[config.groupTitle].at(i).data()));
140150
// To-Check: SetTextAlign does currently not work in QCG
141151
((TText*)pt->GetListOfLines()->Last())->SetTextAlign(12);
152+
153+
if (mViewDetails) {
154+
if (mReasons[config.groupTitle].at(i) != "") {
155+
pt->AddText(Form("#color[%d]{#rightarrow Reason: %s}", kGray + 2, mReasons[config.groupTitle].at(i).data()));
156+
((TText*)pt->GetListOfLines()->Last())->SetTextAlign(12);
157+
}
158+
if (mComments[config.groupTitle].at(i) != "") {
159+
pt->AddText(Form("#color[%d]{#rightarrow Comment: %s}", kGray + 2, mComments[config.groupTitle].at(i).data()));
160+
((TText*)pt->GetListOfLines()->Last())->SetTextAlign(12);
161+
}
162+
}
142163
}
143164

144165
// To-Check: AddLine broken for qcg. Does not simply append line

0 commit comments

Comments
 (0)