Skip to content

Commit 356f6c1

Browse files
authored
Remove MO name (QC-123) (#103)
* Remove MO name member * Change version of class MO * Change repo benchmark
1 parent cd5a526 commit 356f6c1

10 files changed

Lines changed: 81 additions & 68 deletions

File tree

Framework/include/QualityControl/MonitorObject.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class MonitorObject : public TObject
3939
public:
4040
/// Default constructor
4141
MonitorObject();
42-
MonitorObject(const std::string& name, TObject* object, const std::string& taskName);
42+
MonitorObject(TObject* object, const std::string& taskName);
4343

4444
/// Destructor
4545
~MonitorObject() override;
@@ -53,14 +53,14 @@ class MonitorObject : public TObject
5353
/// Move assignment operator
5454
MonitorObject& operator=(MonitorObject&& other) /*noexcept*/ = default;
5555

56-
const std::string& getName() const { return mName; }
56+
/// \brief Return the name of the encapsulated object (if any).
57+
/// @return The name of the encapsulated object or "" if there is no object.
58+
const std::string getName() const;
5759

5860
/// \brief Overwrite the TObject's method just to avoid confusion.
5961
/// One should rather use getName().
6062
const char* GetName() const override { return getName().c_str(); }
6163

62-
void setName(const std::string& name) { mName = name; }
63-
6464
const std::string& getTaskName() const { return mTaskName; }
6565

6666
void setTaskName(const std::string& taskName) { mTaskName = taskName; }
@@ -124,7 +124,6 @@ class MonitorObject : public TObject
124124
static constexpr char SYSTEM_OBJECT_PUBLICATION_LIST[] = "objectsList"; // list of objects published by the task
125125

126126
private:
127-
std::string mName;
128127
TObject* mObject;
129128
std::map<std::string /*checkName*/, CheckDefinition> mChecks;
130129
std::string mTaskName;
@@ -134,7 +133,7 @@ class MonitorObject : public TObject
134133
// TODO : maybe we should always be the owner ?
135134
bool mIsOwner;
136135

137-
ClassDefOverride(MonitorObject, 2);
136+
ClassDefOverride(MonitorObject, 3);
138137
};
139138

140139
} // namespace core

Framework/src/MonitorObject.cxx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,24 @@
1313
/// \author Barthelemy von Haller
1414
///
1515

16+
#include <iostream>
1617
#include "QualityControl/MonitorObject.h"
1718
#include "Common/Exceptions.h"
1819

1920
ClassImp(o2::quality_control::core::MonitorObject)
2021

21-
namespace o2
22+
using namespace std;
23+
24+
namespace o2
25+
{
26+
namespace quality_control
27+
{
28+
namespace core
2229
{
23-
namespace quality_control
24-
{
25-
namespace core
26-
{
2730

2831
constexpr char MonitorObject::SYSTEM_OBJECT_PUBLICATION_LIST[];
2932

30-
MonitorObject::MonitorObject() : TObject(), mName(""), mObject(nullptr), mTaskName(""), mIsOwner(true) {}
33+
MonitorObject::MonitorObject() : TObject(), mObject(nullptr), mTaskName(""), mIsOwner(true) {}
3134

3235
MonitorObject::~MonitorObject()
3336
{
@@ -36,8 +39,8 @@ ClassImp(o2::quality_control::core::MonitorObject)
3639
}
3740
}
3841

39-
MonitorObject::MonitorObject(const std::string& name, TObject* object, const std::string& taskName)
40-
: TObject(), mName(name), mObject(object), mTaskName(taskName), mIsOwner(true)
42+
MonitorObject::MonitorObject(TObject* object, const std::string& taskName)
43+
: TObject(), mObject(object), mTaskName(taskName), mIsOwner(true)
4144
{
4245
}
4346

@@ -46,12 +49,20 @@ ClassImp(o2::quality_control::core::MonitorObject)
4649
TObject* MonitorObject::DrawClone(Option_t* option) const
4750
{
4851
auto* clone = new MonitorObject();
49-
clone->setName(this->getName());
5052
clone->setTaskName(this->getTaskName());
5153
clone->setObject(mObject->DrawClone(option));
5254
return clone;
5355
}
5456

57+
const std::string MonitorObject::getName() const
58+
{
59+
if(mObject == nullptr) {
60+
cerr << "MonitorObject::getName() : No object in this MonitorObject, returning empty string";
61+
return "";
62+
}
63+
return mObject->GetName();
64+
}
65+
5566
void MonitorObject::setQualityForCheck(std::string checkName, Quality quality)
5667
{
5768
auto check = mChecks.find(checkName);

Framework/src/ObjectsManager.cxx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,13 @@ ObjectsManager::~ObjectsManager()
4040

4141
void ObjectsManager::startPublishing(TObject* object, std::string objectName)
4242
{
43-
std::string nonEmptyName = objectName.empty() ? object->GetName() : objectName;
44-
auto* newObject = new MonitorObject(nonEmptyName, object, mTaskName);
43+
auto* newObject = new MonitorObject(object, mTaskName);
4544
newObject->setIsOwner(false);
4645
mMonitorObjects.Add(newObject);
4746

4847
// update index
4948
if (objectName != MonitorObject::SYSTEM_OBJECT_PUBLICATION_LIST) {
50-
UpdateIndex(nonEmptyName);
49+
UpdateIndex(object->GetName());
5150
}
5251
}
5352

Framework/src/RepositoryBenchmark.cxx

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,41 @@ RepositoryBenchmark::RepositoryBenchmark()
5151
{
5252
}
5353

54+
TH1* RepositoryBenchmark::createHisto(uint64_t sizeObjects, string name)
55+
{
56+
TH1* myHisto;
57+
58+
// Prepare objects (and clean up existing ones)
59+
switch (sizeObjects) {
60+
case 1:
61+
myHisto = new TH1F(name.c_str(), "h", 100, 0, 99); // 1kB
62+
break;
63+
case 10:
64+
myHisto = new TH1F(name.c_str(), "h", 2400, 0, 99); // 10kB
65+
break;
66+
case 100:
67+
myHisto = new TH2F(name.c_str(), "h", 260, 0, 99, 100, 0, 99); // 100kB
68+
break;
69+
case 500:
70+
myHisto = new TH2F(name.c_str(), "h", 1250, 0, 99, 100, 0, 99); // 500kB
71+
break;
72+
case 1000:
73+
myHisto = new TH2F(name.c_str(), "h", 2500, 0, 99, 100, 0, 99); // 1MB
74+
break;
75+
case 2500:
76+
myHisto = new TH2F(name.c_str(), "h", 6250, 0, 99, 100, 0, 99); // 2.5MB
77+
break;
78+
case 5000:
79+
myHisto = new TH2F(name.c_str(), "h", 12500, 0, 99, 100, 0, 99); // 5MB
80+
break;
81+
default:
82+
BOOST_THROW_EXCEPTION(
83+
FatalException() << errinfo_details(
84+
"size of histo must be 1, 10, 100, 500, 1000, 2500 or 5000 (was: " + to_string(mSizeObjects) + ")"));
85+
}
86+
return myHisto;
87+
}
88+
5489
void RepositoryBenchmark::InitTask()
5590
{
5691
// parse arguments database
@@ -98,39 +133,11 @@ void RepositoryBenchmark::InitTask()
98133
emptyDatabase();
99134
}
100135

101-
// Prepare objects (and clean up existing ones)
102-
switch (mSizeObjects) {
103-
case 1:
104-
mMyHisto = new TH1F("h", "h", 100, 0, 99); // 1kB
105-
break;
106-
case 10:
107-
mMyHisto = new TH1F("h", "h", 2400, 0, 99); // 10kB
108-
break;
109-
case 100:
110-
mMyHisto = new TH2F("h", "h", 260, 0, 99, 100, 0, 99); // 100kB
111-
break;
112-
case 500:
113-
mMyHisto = new TH2F("h", "h", 1250, 0, 99, 100, 0, 99); // 500kB
114-
break;
115-
case 1000:
116-
mMyHisto = new TH2F("h", "h", 2500, 0, 99, 100, 0, 99); // 1MB
117-
break;
118-
case 2500:
119-
mMyHisto = new TH2F("h", "h", 6250, 0, 99, 100, 0, 99); // 2.5MB
120-
break;
121-
case 5000:
122-
mMyHisto = new TH2F("h", "h", 12500, 0, 99, 100, 0, 99); // 5MB
123-
break;
124-
default:
125-
BOOST_THROW_EXCEPTION(
126-
FatalException() << errinfo_details(
127-
"size of histo must be 1, 10, 100, 500, 1000, 2500 or 5000 (was: " + to_string(mSizeObjects) + ")"));
128-
}
129-
130136
// prepare objects
131137
for (uint64_t i = 0; i < mNumberObjects; i++) {
132-
shared_ptr<MonitorObject> mo = make_shared<MonitorObject>(mObjectName + to_string(i), mMyHisto, mTaskName);
133-
mo->setIsOwner(false);
138+
TH1* histo = createHisto(mSizeObjects, mObjectName + to_string(i));
139+
shared_ptr<MonitorObject> mo = make_shared<MonitorObject>(histo, mTaskName);
140+
mo->setIsOwner(true);
134141
mMyObjects.push_back(mo);
135142
}
136143

Framework/src/RepositoryBenchmark.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class RepositoryBenchmark : public FairMQDevice
4040
virtual bool ConditionalRun();
4141
void emptyDatabase();
4242
void checkTimedOut();
43+
TH1* createHisto(uint64_t sizeObjects, std::string name);
4344

4445
private:
4546
// user params
@@ -60,7 +61,7 @@ class RepositoryBenchmark : public FairMQDevice
6061
// internal state
6162
std::unique_ptr<o2::quality_control::repository::DatabaseInterface> mDatabase;
6263
std::vector<std::shared_ptr<MonitorObject>> mMyObjects;
63-
TH1* mMyHisto;
64+
// TH1* mMyHisto;
6465

6566
// variables for the timer
6667
boost::asio::deadline_timer* mTimer; /// the asynchronous timer to send monitoring data

Framework/src/runMergerTest.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const&)
6060
TH1F* histo = new TH1F("gauss", "gauss", producersAmount, 0, 1);
6161
histo->Fill(p/(double)producersAmount);
6262

63-
MonitorObject* mo = new MonitorObject("histo", histo, "histo-task");
63+
MonitorObject* mo = new MonitorObject(histo, "histo-task");
6464
mo->setIsOwner(true);
6565

6666
TObjArray* array = new TObjArray;
@@ -98,7 +98,7 @@ WorkflowSpec defineDataProcessing(ConfigContext const&)
9898
auto moArray = processingContext.inputs().get<TObjArray*>("moarray");
9999
auto mo = dynamic_cast<MonitorObject*>(moArray->First());
100100

101-
if (mo->getName() == "histo") {
101+
if (mo->getName() == "gauss") {
102102
auto* g = dynamic_cast<TH1F*>(mo->getObject());
103103
std::string bins = "BINS:";
104104
for (int i = 0; i <= g->GetNbinsX(); i++) {

Framework/test/testDbFactory.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ BOOST_AUTO_TEST_CASE(db_ccdb_listing)
7171
ccdb->truncate("functional_test", "path/to/object3");
7272
auto* h1 = new TH1F("object1", "object1", 100, 0, 99);
7373
auto* h2 = new TH1F("object2", "object2", 100, 0, 99);
74-
auto* h3 = new TH1F("object3", "object3", 100, 0, 99);
75-
shared_ptr<MonitorObject> mo1 = make_shared<MonitorObject>("object1", h1, "functional_test");
76-
shared_ptr<MonitorObject> mo2 = make_shared<MonitorObject>("object2", h2, "functional_test");
77-
shared_ptr<MonitorObject> mo3 = make_shared<MonitorObject>("path/to/object3", h3, "functional_test");
74+
auto* h3 = new TH1F("path/to/object3", "object3", 100, 0, 99);
75+
shared_ptr<MonitorObject> mo1 = make_shared<MonitorObject>(h1, "functional_test");
76+
shared_ptr<MonitorObject> mo2 = make_shared<MonitorObject>(h2, "functional_test");
77+
shared_ptr<MonitorObject> mo3 = make_shared<MonitorObject>(h3, "functional_test");
7878
ccdb->store(mo1);
7979
ccdb->store(mo2);
8080
ccdb->store(mo3);
@@ -159,7 +159,7 @@ curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
159159
if(res != CURLE_OK)
160160
fprintf(stderr, "curl_easy_perform() failed: %s\n",
161161
curl_easy_strerror(res));
162-
162+
163163
*/
164164
/* always cleanup */ /*
165165
curl_easy_cleanup(curl);
@@ -194,7 +194,7 @@ res = curl_easy_perform(curl);
194194
fprintf(stderr, "curl_easy_perform() failed: %s\n",
195195
curl_easy_strerror(res));
196196
}
197-
197+
198198
*/
199199
/* always cleanup */ /*
200200
curl_easy_cleanup(curl);

Framework/test/testMonitorObject.cxx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ BOOST_AUTO_TEST_CASE(mo)
2222
{
2323
o2::quality_control::core::MonitorObject obj;
2424
BOOST_CHECK_EQUAL(obj.getName(), "");
25-
obj.setName("test");
26-
BOOST_CHECK_EQUAL(obj.getName(), "test");
2725

2826
obj.addCheck("first", "class1", "lib1");
2927
obj.addCheck("second", "class1", "lib1");

Modules/Common/test/testMeanIsAbove.cxx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ namespace common
2424
BOOST_AUTO_TEST_CASE(test_checks)
2525
{
2626
o2::quality_control::core::MonitorObject mo;
27-
mo.setName("test");
2827
mo.addCheck("test", "test", "test");
2928
mo.setQualityForCheck("test", Quality::Null);
3029
TH1F th1f("h1", "h1", 10, 0, 9);
@@ -55,7 +54,6 @@ BOOST_AUTO_TEST_CASE(test_checks)
5554
BOOST_AUTO_TEST_CASE(test_types)
5655
{
5756
o2::quality_control::core::MonitorObject mo;
58-
mo.setName("test");
5957
mo.addCheck("test", "test", "test");
6058
mo.setQualityForCheck("test", Quality::Null);
6159
TObject obj;

Modules/Common/test/testNonEmpty.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ namespace common
2222

2323
BOOST_AUTO_TEST_CASE(checkable)
2424
{
25-
TH1F histo("test", "test", 100, 0, 99);
26-
MonitorObject monitorObject("testObject", &histo, "task");
25+
TH1F histo("testObject", "test", 100, 0, 99);
26+
MonitorObject monitorObject(&histo, "task");
2727
monitorObject.setIsOwner(false);
2828
NonEmpty myCheck;
2929
myCheck.configure("test");
@@ -38,8 +38,8 @@ BOOST_AUTO_TEST_CASE(checkable)
3838

3939
BOOST_AUTO_TEST_CASE(beautify)
4040
{
41-
auto* histo = new TH1F("test", "test", 100, 0, 99);
42-
MonitorObject monitorObject("testObject", histo, "task"); // here we are the owner of the histo
41+
auto* histo = new TH1F("testObject", "test", 100, 0, 99);
42+
MonitorObject monitorObject(histo, "task"); // here we are the owner of the histo
4343
NonEmpty myCheck;
4444
myCheck.configure("test");
4545

@@ -58,8 +58,8 @@ BOOST_AUTO_TEST_CASE(beautify)
5858

5959
BOOST_AUTO_TEST_CASE(nonempty)
6060
{
61-
TH1F histo("test", "test", 100, 0, 99);
62-
MonitorObject monitorObject("testObject", &histo, "task");
61+
TH1F histo("testObject", "test", 100, 0, 99);
62+
MonitorObject monitorObject(&histo, "task");
6363
monitorObject.setIsOwner(false);
6464
NonEmpty myCheck;
6565

0 commit comments

Comments
 (0)