Skip to content

Commit 754cc67

Browse files
authored
Adapt to the new service registry (#477)
* Adapt to the new service registry * fix effects of a wrong substitution * support both versions of serviceregistry * clang format * much easier approach * remove uncommented code * cleanup more leftovers
1 parent 7bae921 commit 754cc67

6 files changed

Lines changed: 70 additions & 72 deletions

File tree

Framework/include/QualityControl/TrendingTask.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,15 @@ class TrendingTask : public PostProcessingInterface
5656
Int_t runNumber = 0;
5757
};
5858

59-
void trendValues();
60-
void storePlots();
61-
void storeTrend();
59+
void trendValues(repository::DatabaseInterface&);
60+
void storePlots(repository::DatabaseInterface&);
61+
void storeTrend(repository::DatabaseInterface&);
6262

6363
TrendingTaskConfig mConfig;
6464
MetaData mMetaData;
6565
UInt_t mTime;
6666
std::unique_ptr<TTree> mTrend;
6767
std::unordered_map<std::string, std::unique_ptr<Reductor>> mReductors;
68-
repository::DatabaseInterface* mDatabase = nullptr;
6968
};
7069

7170
} // namespace o2::quality_control::postprocessing

Framework/src/TrendingTask.cxx

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void TrendingTask::configure(std::string name, const boost::property_tree::ptree
3535
mConfig = TrendingTaskConfig(name, config);
3636
}
3737

38-
void TrendingTask::initialize(Trigger, framework::ServiceRegistry& services)
38+
void TrendingTask::initialize(Trigger, framework::ServiceRegistry&)
3939
{
4040
// Preparing data structure of TTree
4141
mTrend = std::make_unique<TTree>(); // todo: retrieve last TTree, so we continue trending. maybe do it optionally?
@@ -48,36 +48,37 @@ void TrendingTask::initialize(Trigger, framework::ServiceRegistry& services)
4848
mTrend->Branch(source.name.c_str(), reductor->getBranchAddress(), reductor->getBranchLeafList());
4949
mReductors[source.name] = std::move(reductor);
5050
}
51-
52-
// Setting up services
53-
mDatabase = &services.get<repository::DatabaseInterface>();
5451
}
5552

5653
//todo: see if OptimizeBaskets() indeed helps after some time
57-
void TrendingTask::update(Trigger, framework::ServiceRegistry&)
54+
void TrendingTask::update(Trigger, framework::ServiceRegistry& services)
5855
{
59-
trendValues();
56+
auto& qcdb = services.get<repository::DatabaseInterface>();
57+
58+
trendValues(qcdb);
6059

61-
storePlots();
62-
storeTrend();
60+
storePlots(qcdb);
61+
storeTrend(qcdb);
6362
}
6463

65-
void TrendingTask::finalize(Trigger, framework::ServiceRegistry&)
64+
void TrendingTask::finalize(Trigger, framework::ServiceRegistry& services)
6665
{
67-
storePlots();
68-
storeTrend();
66+
auto& qcdb = services.get<repository::DatabaseInterface>();
67+
68+
storePlots(qcdb);
69+
storeTrend(qcdb);
6970
}
7071

71-
void TrendingTask::storeTrend()
72+
void TrendingTask::storeTrend(repository::DatabaseInterface& qcdb)
7273
{
7374
ILOG(Info) << "Storing the trend, entries: " << mTrend->GetEntries() << ENDM;
7475

7576
auto mo = std::make_shared<core::MonitorObject>(mTrend.get(), getName(), mConfig.detectorName);
7677
mo->setIsOwner(false);
77-
mDatabase->storeMO(mo);
78+
qcdb.storeMO(mo);
7879
}
7980

80-
void TrendingTask::trendValues()
81+
void TrendingTask::trendValues(repository::DatabaseInterface& qcdb)
8182
{
8283
// We use current date and time. This for planned processing (not history). We still might need to use the objects
8384
// timestamps in the end, but this would become ambiguous if there is more than one data source.
@@ -90,13 +91,13 @@ void TrendingTask::trendValues()
9091

9192
// todo: make it agnostic to MOs, QOs or other objects. Let the reductor cast to whatever it needs.
9293
if (dataSource.type == "repository") {
93-
auto mo = mDatabase->retrieveMO(dataSource.path, dataSource.name);
94+
auto mo = qcdb.retrieveMO(dataSource.path, dataSource.name);
9495
TObject* obj = mo ? mo->getObject() : nullptr;
9596
if (obj) {
9697
mReductors[dataSource.name]->update(obj);
9798
}
9899
} else if (dataSource.type == "repository-quality") {
99-
auto qo = mDatabase->retrieveQO(dataSource.path + "/" + dataSource.name);
100+
auto qo = qcdb.retrieveQO(dataSource.path + "/" + dataSource.name);
100101
if (qo) {
101102
mReductors[dataSource.name]->update(qo.get());
102103
}
@@ -108,7 +109,7 @@ void TrendingTask::trendValues()
108109
mTrend->Fill();
109110
}
110111

111-
void TrendingTask::storePlots()
112+
void TrendingTask::storePlots(repository::DatabaseInterface& qcdb)
112113
{
113114
ILOG(Info) << "Generating and storing " << mConfig.plots.size() << " plots." << ENDM;
114115

@@ -177,7 +178,7 @@ void TrendingTask::storePlots()
177178

178179
auto mo = std::make_shared<MonitorObject>(c, mConfig.taskName, mConfig.detectorName);
179180
mo->setIsOwner(false);
180-
mDatabase->storeMO(mo);
181+
qcdb.storeMO(mo);
181182

182183
// It should delete everything inside. Confirmed by trying to delete histo after and getting a segfault.
183184
delete c;

Modules/ITS/include/ITS/TrendingTaskITSFhr.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ class TrendingTaskITSFhr : public PostProcessingInterface
7676
Int_t runNumber = 0;
7777
};
7878

79-
void trendValues();
80-
void storePlots();
81-
void storeTrend();
79+
void trendValues(repository::DatabaseInterface& qcdb);
80+
void storePlots(repository::DatabaseInterface& qcdb);
81+
void storeTrend(repository::DatabaseInterface& qcdb);
8282

8383
TrendingTaskConfigITS mConfig;
8484
MetaData mMetaData;
@@ -87,7 +87,6 @@ class TrendingTaskITSFhr : public PostProcessingInterface
8787
std::vector<std::string> runlist;
8888
std::unique_ptr<TTree> mTrend;
8989
std::unordered_map<std::string, std::unique_ptr<Reductor>> mReductors;
90-
repository::DatabaseInterface* mDatabase = nullptr;
9190

9291
const int col[7] = { 1, 2, 3, 4, 5, 6, 7 };
9392
const int mkr[3] = { 8, 29, 34 };

Modules/ITS/include/ITS/TrendingTaskITSThr.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ class TrendingTaskITSThr : public PostProcessingInterface
7575
Int_t runNumber = 0;
7676
};
7777

78-
void trendValues();
79-
void storePlots();
80-
void storeTrend();
78+
void trendValues(repository::DatabaseInterface& qcdb);
79+
void storePlots(repository::DatabaseInterface& qcdb);
80+
void storeTrend(repository::DatabaseInterface& qcdb);
8181

8282
TrendingTaskConfigITS mConfig;
8383
MetaData mMetaData;
@@ -86,7 +86,6 @@ class TrendingTaskITSThr : public PostProcessingInterface
8686
std::vector<std::string> runlist;
8787
Int_t ntreeentries = 0;
8888
std::unordered_map<std::string, std::unique_ptr<Reductor>> mReductors;
89-
repository::DatabaseInterface* mDatabase = nullptr;
9089

9190
const int col[7] = { 1, 2, 3, 4, 5, 6, 7 };
9291
const int mkr[3] = { 8, 29, 34 };

Modules/ITS/src/TrendingTaskITSFhr.cxx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ void TrendingTaskITSFhr::configure(std::string name,
3737
mConfig = TrendingTaskConfigITS(name, config);
3838
}
3939

40-
void TrendingTaskITSFhr::initialize(Trigger,
41-
framework::ServiceRegistry& services)
40+
void TrendingTaskITSFhr::initialize(Trigger, framework::ServiceRegistry&)
4241
{
4342
// Preparing data structure of TTree
4443
mTrend = std::make_unique<TTree>(); // todo: retrieve last TTree, so we
@@ -57,37 +56,38 @@ void TrendingTaskITSFhr::initialize(Trigger,
5756
reductor->getBranchLeafList());
5857
mReductors[source.name] = std::move(reductor);
5958
}
60-
61-
// Setting up services
62-
mDatabase = &services.get<repository::DatabaseInterface>();
6359
}
6460

6561
// todo: see if OptimizeBaskets() indeed helps after some time
66-
void TrendingTaskITSFhr::update(Trigger, framework::ServiceRegistry&)
62+
void TrendingTaskITSFhr::update(Trigger, framework::ServiceRegistry& services)
6763
{
68-
trendValues();
64+
auto& qcdb = services.get<repository::DatabaseInterface>();
65+
66+
trendValues(qcdb);
6967

70-
storePlots();
71-
storeTrend();
68+
storePlots(qcdb);
69+
storeTrend(qcdb);
7270
}
7371

74-
void TrendingTaskITSFhr::finalize(Trigger, framework::ServiceRegistry&)
72+
void TrendingTaskITSFhr::finalize(Trigger, framework::ServiceRegistry& services)
7573
{
76-
storePlots();
77-
storeTrend();
74+
auto& qcdb = services.get<repository::DatabaseInterface>();
75+
76+
storePlots(qcdb);
77+
storeTrend(qcdb);
7878
}
7979

80-
void TrendingTaskITSFhr::storeTrend()
80+
void TrendingTaskITSFhr::storeTrend(repository::DatabaseInterface& qcdb)
8181
{
8282
ILOG(Info) << "Storing the trend, entries: " << mTrend->GetEntries() << ENDM;
8383

8484
auto mo = std::make_shared<core::MonitorObject>(mTrend.get(), getName(),
8585
mConfig.detectorName);
8686
mo->setIsOwner(false);
87-
mDatabase->storeMO(mo);
87+
qcdb.storeMO(mo);
8888
}
8989

90-
void TrendingTaskITSFhr::trendValues()
90+
void TrendingTaskITSFhr::trendValues(repository::DatabaseInterface& qcdb)
9191
{
9292
// We use current date and time. This for planned processing (not history). We
9393
// still might need to use the objects
@@ -104,8 +104,8 @@ void TrendingTaskITSFhr::trendValues()
104104
// todo: make it agnostic to MOs, QOs or other objects. Let the reductor
105105
// cast to whatever it needs.
106106
if (dataSource.type == "repository") {
107-
// auto mo = mDatabase->retrieveMO(dataSource.path, dataSource.name);
108-
auto mo = mDatabase->retrieveMO(dataSource.path, "");
107+
// auto mo = qcdb.retrieveMO(dataSource.path, dataSource.name);
108+
auto mo = qcdb.retrieveMO(dataSource.path, "");
109109
if (!count) {
110110
std::map<std::string, std::string> entryMetadata = mo->getMetadataMap(); //full list of metadata as a map
111111
mMetaData.runNumber = std::stoi(entryMetadata["Run"]); //get and set run number
@@ -117,7 +117,7 @@ void TrendingTaskITSFhr::trendValues()
117117
mReductors[dataSource.name]->update(obj);
118118
}
119119
} else if (dataSource.type == "repository-quality") {
120-
auto qo = mDatabase->retrieveQO(dataSource.path + "/" + dataSource.name);
120+
auto qo = qcdb.retrieveQO(dataSource.path + "/" + dataSource.name);
121121
if (qo) {
122122
mReductors[dataSource.name]->update(qo.get());
123123
}
@@ -129,7 +129,7 @@ void TrendingTaskITSFhr::trendValues()
129129
mTrend->Fill();
130130
}
131131

132-
void TrendingTaskITSFhr::storePlots()
132+
void TrendingTaskITSFhr::storePlots(repository::DatabaseInterface& qcdb)
133133
{
134134
ILOG(Info) << "Generating and storing " << mConfig.plots.size() << " plots."
135135
<< ENDM;
@@ -169,7 +169,7 @@ void TrendingTaskITSFhr::storePlots()
169169
ILOG(Info) << " Saving " << plot.name << " to CCDB " << ENDM;
170170
auto mo = std::make_shared<MonitorObject>(g, mConfig.taskName, mConfig.detectorName);
171171
mo->setIsOwner(false);
172-
mDatabase->storeMO(mo);
172+
qcdb.storeMO(mo);
173173
// It should delete everything inside. Confirmed by trying to delete histo
174174
// after and getting a segfault.
175175
delete g;
@@ -257,7 +257,7 @@ void TrendingTaskITSFhr::storePlots()
257257
auto mo = std::make_shared<MonitorObject>(c[idx], mConfig.taskName,
258258
mConfig.detectorName);
259259
mo->setIsOwner(false);
260-
mDatabase->storeMO(mo);
260+
qcdb.storeMO(mo);
261261
if (idx % NTRENDSFHR == NTRENDSFHR - 1)
262262
delete legstaves[idx / NTRENDSFHR];
263263
delete c[idx];

Modules/ITS/src/TrendingTaskITSThr.cxx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ void TrendingTaskITSThr::configure(std::string name,
3333
mConfig = TrendingTaskConfigITS(name, config);
3434
}
3535

36-
void TrendingTaskITSThr::initialize(Trigger,
37-
framework::ServiceRegistry& services)
36+
void TrendingTaskITSThr::initialize(Trigger, framework::ServiceRegistry&)
3837
{
3938
// Preparing data structure of TTree
4039
mTrend = std::make_unique<TTree>(); // todo: retrieve last TTree, so we
@@ -52,37 +51,38 @@ void TrendingTaskITSThr::initialize(Trigger,
5251
reductor->getBranchLeafList());
5352
mReductors[source.name] = std::move(reductor);
5453
}
55-
56-
// Setting up services
57-
mDatabase = &services.get<repository::DatabaseInterface>();
5854
}
5955

6056
// todo: see if OptimizeBaskets() indeed helps after some time
61-
void TrendingTaskITSThr::update(Trigger, framework::ServiceRegistry&)
57+
void TrendingTaskITSThr::update(Trigger, framework::ServiceRegistry& services)
6258
{
63-
trendValues();
59+
auto& qcdb = services.get<repository::DatabaseInterface>();
60+
61+
trendValues(qcdb);
6462

65-
storePlots();
66-
storeTrend();
63+
storePlots(qcdb);
64+
storeTrend(qcdb);
6765
}
6866

69-
void TrendingTaskITSThr::finalize(Trigger, framework::ServiceRegistry&)
67+
void TrendingTaskITSThr::finalize(Trigger, framework::ServiceRegistry& services)
7068
{
71-
storePlots();
72-
storeTrend();
69+
auto& qcdb = services.get<repository::DatabaseInterface>();
70+
71+
storePlots(qcdb);
72+
storeTrend(qcdb);
7373
}
7474

75-
void TrendingTaskITSThr::storeTrend()
75+
void TrendingTaskITSThr::storeTrend(repository::DatabaseInterface& qcdb)
7676
{
7777
ILOG(Info) << "Storing the trend, entries: " << mTrend->GetEntries() << ENDM;
7878

7979
auto mo = std::make_shared<core::MonitorObject>(mTrend.get(), getName(),
8080
mConfig.detectorName);
8181
mo->setIsOwner(false);
82-
mDatabase->storeMO(mo);
82+
qcdb.storeMO(mo);
8383
}
8484

85-
void TrendingTaskITSThr::trendValues()
85+
void TrendingTaskITSThr::trendValues(repository::DatabaseInterface& qcdb)
8686
{
8787
// We use current date and time. This for planned processing (not history). We
8888
// still might need to use the objects
@@ -100,8 +100,8 @@ void TrendingTaskITSThr::trendValues()
100100
// todo: make it agnostic to MOs, QOs or other objects. Let the reductor
101101
// cast to whatever it needs.
102102
if (dataSource.type == "repository") {
103-
// auto mo = mDatabase->retrieveMO(dataSource.path, dataSource.name);
104-
auto mo = mDatabase->retrieveMO(dataSource.path, "");
103+
// auto mo = qcdb.retrieveMO(dataSource.path, dataSource.name);
104+
auto mo = qcdb.retrieveMO(dataSource.path, "");
105105
if (!count) {
106106
std::map<std::string, std::string> entryMetadata = mo->getMetadataMap(); //full list of metadata as a map
107107
mMetaData.runNumber = std::stoi(entryMetadata["Run"]); //get and set run number
@@ -113,7 +113,7 @@ void TrendingTaskITSThr::trendValues()
113113
mReductors[dataSource.name]->update(obj);
114114
}
115115
} else if (dataSource.type == "repository-quality") {
116-
auto qo = mDatabase->retrieveQO(dataSource.path + "/" + dataSource.name);
116+
auto qo = qcdb.retrieveQO(dataSource.path + "/" + dataSource.name);
117117
if (qo) {
118118
mReductors[dataSource.name]->update(qo.get());
119119
}
@@ -125,7 +125,7 @@ void TrendingTaskITSThr::trendValues()
125125
mTrend->Fill();
126126
}
127127

128-
void TrendingTaskITSThr::storePlots()
128+
void TrendingTaskITSThr::storePlots(repository::DatabaseInterface& qcdb)
129129
{
130130
ILOG(Info) << "Generating and storing " << mConfig.plots.size() << " plots."
131131
<< ENDM;
@@ -164,7 +164,7 @@ void TrendingTaskITSThr::storePlots()
164164
auto mo = std::make_shared<MonitorObject>(g, mConfig.taskName,
165165
mConfig.detectorName);
166166
mo->setIsOwner(false);
167-
mDatabase->storeMO(mo);
167+
qcdb.storeMO(mo);
168168

169169
// It should delete everything inside. Confirmed by trying to delete histo
170170
// after and getting a segfault.
@@ -252,7 +252,7 @@ void TrendingTaskITSThr::storePlots()
252252
auto mo = std::make_shared<MonitorObject>(c[idx], mConfig.taskName,
253253
mConfig.detectorName);
254254
mo->setIsOwner(false);
255-
mDatabase->storeMO(mo);
255+
qcdb.storeMO(mo);
256256
if (idx % NTRENDSTHR == NTRENDSTHR - 1)
257257
delete legstaves[idx / NTRENDSTHR];
258258
delete c[idx];

0 commit comments

Comments
 (0)