Skip to content

Commit cf517f5

Browse files
mleschwiechula
authored andcommitted
TPC Update SAC QC Task to new SAC format
1 parent 975f936 commit cf517f5

File tree

3 files changed

+49
-32
lines changed

3 files changed

+49
-32
lines changed

Modules/TPC/include/TPC/SACs.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
///
1313
/// \file SACs.h
14-
/// \author Thomas Klemenz
14+
/// \author Thomas Klemenz, Marcel Lesch
1515
///
1616

1717
#ifndef QUALITYCONTROL_SACS_H
@@ -86,6 +86,7 @@ class SACs : public quality_control::postprocessing::PostProcessingInterface
8686

8787
bool mRejectOutliersSACZeroScale;
8888
float mSACZeroMaxDeviation;
89+
bool mDoSACFourierCoeffs;
8990
};
9091

9192
} // namespace o2::quality_control_modules::tpc

Modules/TPC/run/tpcQCSACs.json

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"url": ""
1818
},
1919
"conditionDB": {
20-
"url": "http://alice-ccdb.cern.ch"
20+
"url": "http://ccdb-test.cern.ch:8080"
2121
},
2222
"postprocessing": {
2323
"matchAnyRunNumber": "true"
@@ -29,20 +29,19 @@
2929
"className": "o2::quality_control_modules::tpc::SACs",
3030
"moduleName": "QcTPC",
3131
"detectorName": "TPC",
32-
"dataSourceURL": "http://alice-ccdb.cern.ch",
33-
"doLatest": "false",
32+
"dataSourceURL": "http://ccdb-test.cern.ch:8080",
33+
"doLatest": "true",
3434
"rejectOutliersSACZeroScale": "true",
3535
"maxDeviationOutlierSACZero": "2.",
36+
"doSACFourierCoeffs": "false",
3637
"timestamps_comment": [ "Put the timestamp of the corresponding file you want to look for in the timestamps array.",
3738
"You can either put a timestamp for every object or leave the array empty to take the latest file from the CCDB.",
3839
"An empty array to get the the latest version will be the main use case.",
3940
"The array is mapped to the output objects sequentially",
4041
"If you want to pick the latest file in the CCDB manually, you can use -1."
4142
],
4243
"timestamps": [
43-
{ "SACZero":"1686390443945" },
44-
{ "SACOne":"-1" },
45-
{ "SACDelta":"-1" },
44+
{ "SACContainer":"-1" },
4645
{ "SACFourierCoeffs":"-1" }
4746
],
4847
"lookupMetaData_comment": [ "Not used in the current version" ],
@@ -68,7 +67,7 @@
6867
],
6968
"updateTrigger_comment": "To trigger on a specific file being updated, use e.g. 'newobject:ccdb:TPC/Calib/Noise'",
7069
"updateTrigger": [
71-
"once"
70+
"foreachlatest:ccdb:TPC/Calib/SAC"
7271
],
7372
"stopTrigger": [
7473
"userorcontrol"

Modules/TPC/src/SACs.cxx

Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
///
1313
/// \file SACs.cxx
14-
/// \author Thomas Klemenz
14+
/// \author Thomas Klemenz, Marcel Lesch
1515
///
1616

1717
// O2 includes
@@ -129,6 +129,10 @@ void SACs::configure(const boost::property_tree::ptree& config)
129129
ILOG(Warning, Support) << "No rejection for outliers in SAC Zero Scale!" << ENDM;
130130
}
131131
mSACZeroMaxDeviation = config.get<float>("qc.postprocessing." + id + ".maxDeviationOutlierSACZero", 3.);
132+
mDoSACFourierCoeffs = config.get<bool>("qc.postprocessing." + id + ".doSACFourierCoeffs", false);
133+
if (mDoSACFourierCoeffs) {
134+
ILOG(Warning, Support) << "SAC Fourier Coeffs activated, these are currently not in use!" << ENDM;
135+
}
132136
}
133137

134138
void SACs::initialize(Trigger, framework::ServiceRegistryRef)
@@ -147,11 +151,13 @@ void SACs::initialize(Trigger, framework::ServiceRegistryRef)
147151
getObjectsManager()->startPublishing(mSACZeroSides.get());
148152
getObjectsManager()->startPublishing(mSACDeltaSides.get());
149153
getObjectsManager()->startPublishing(mSACOneSides.get());
150-
getObjectsManager()->startPublishing(mFourierCoeffsA.get());
151-
getObjectsManager()->startPublishing(mFourierCoeffsC.get());
152154
getObjectsManager()->startPublishing(mSACZeroSidesScaled.get());
153155
getObjectsManager()->startPublishing(mSACZeroScale.get());
154156
getObjectsManager()->startPublishing(mSACZeroOutliers.get());
157+
if (mDoSACFourierCoeffs) {
158+
getObjectsManager()->startPublishing(mFourierCoeffsA.get());
159+
getObjectsManager()->startPublishing(mFourierCoeffsC.get());
160+
}
155161
}
156162

157163
void SACs::update(Trigger, framework::ServiceRegistryRef)
@@ -165,26 +171,34 @@ void SACs::update(Trigger, framework::ServiceRegistryRef)
165171
mSACZeroScale.get()->Clear();
166172
mSACZeroOutliers.get()->Clear();
167173

168-
o2::tpc::SACZero* sacZero = nullptr;
169-
o2::tpc::SACDelta<unsigned char>* sacDelta = nullptr;
170-
o2::tpc::SACOne* sacOne = nullptr;
174+
o2::tpc::SAC<unsigned char>* sacContainer = nullptr;
171175
o2::tpc::FourierCoeffSAC* sacFFT = nullptr;
172176

173177
if (mDoLatest) {
174-
std::vector<long> availableTimestampsSACZero = getDataTimestamps(mCdbApi, CDBTypeMap.at(CDBType::CalSAC0), 1, mTimestamps["SACZero"]);
175-
std::vector<long> availableTimestampsSACDelta = getDataTimestamps(mCdbApi, CDBTypeMap.at(CDBType::CalSACDelta), 1, mTimestamps["SACDelta"]);
176-
std::vector<long> availableTimestampsSACOne = getDataTimestamps(mCdbApi, CDBTypeMap.at(CDBType::CalSAC1), 1, mTimestamps["SACOne"]);
178+
std::vector<long> availableTimestampsSACContainer = getDataTimestamps(mCdbApi, CDBTypeMap.at(CDBType::CalSAC), 1, mTimestamps["SACContainer"]);
177179
std::vector<long> availableTimestampsSACFourierCoeffs = getDataTimestamps(mCdbApi, CDBTypeMap.at(CDBType::CalSACFourier), 1, mTimestamps["SACFourierCoeffs"]);
178180

179-
sacZero = mCdbApi.retrieveFromTFileAny<SACZero>(CDBTypeMap.at(CDBType::CalSAC0), std::map<std::string, std::string>{}, availableTimestampsSACZero[0]);
180-
sacDelta = mCdbApi.retrieveFromTFileAny<SACDelta<unsigned char>>(CDBTypeMap.at(CDBType::CalSACDelta), std::map<std::string, std::string>{}, availableTimestampsSACDelta[0]);
181-
sacOne = mCdbApi.retrieveFromTFileAny<SACOne>(CDBTypeMap.at(CDBType::CalSAC1), std::map<std::string, std::string>{}, availableTimestampsSACOne[0]);
182-
sacFFT = mCdbApi.retrieveFromTFileAny<FourierCoeffSAC>(CDBTypeMap.at(CDBType::CalSACFourier), std::map<std::string, std::string>{}, availableTimestampsSACFourierCoeffs[0]);
181+
sacContainer = mCdbApi.retrieveFromTFileAny<SAC<unsigned char>>(CDBTypeMap.at(CDBType::CalSAC), std::map<std::string, std::string>{}, availableTimestampsSACContainer[0]);
182+
if (mDoSACFourierCoeffs) {
183+
sacFFT = mCdbApi.retrieveFromTFileAny<FourierCoeffSAC>(CDBTypeMap.at(CDBType::CalSACFourier), std::map<std::string, std::string>{}, availableTimestampsSACFourierCoeffs[0]);
184+
}
183185
} else {
184-
sacZero = mCdbApi.retrieveFromTFileAny<SACZero>(CDBTypeMap.at(CDBType::CalSAC0), std::map<std::string, std::string>{}, mTimestamps["SACZero"]);
185-
sacDelta = mCdbApi.retrieveFromTFileAny<SACDelta<unsigned char>>(CDBTypeMap.at(CDBType::CalSACDelta), std::map<std::string, std::string>{}, mTimestamps["SACDelta"]);
186-
sacOne = mCdbApi.retrieveFromTFileAny<SACOne>(CDBTypeMap.at(CDBType::CalSAC1), std::map<std::string, std::string>{}, mTimestamps["SACOne"]);
187-
sacFFT = mCdbApi.retrieveFromTFileAny<FourierCoeffSAC>(CDBTypeMap.at(CDBType::CalSACFourier), std::map<std::string, std::string>{}, mTimestamps["SACFourierCoeffs"]);
186+
sacContainer = mCdbApi.retrieveFromTFileAny<SAC<unsigned char>>(CDBTypeMap.at(CDBType::CalSAC), std::map<std::string, std::string>{}, mTimestamps["SACContainer"]);
187+
if (mDoSACFourierCoeffs) {
188+
sacFFT = mCdbApi.retrieveFromTFileAny<FourierCoeffSAC>(CDBTypeMap.at(CDBType::CalSACFourier), std::map<std::string, std::string>{}, mTimestamps["SACFourierCoeffs"]);
189+
}
190+
}
191+
192+
o2::tpc::SACZero* sacZero = nullptr;
193+
o2::tpc::SACDelta<unsigned char>* sacDelta = nullptr;
194+
o2::tpc::SACOne* sacOne = nullptr;
195+
196+
if (!sacContainer) {
197+
ILOG(Error, Support) << "No SAC Container fetched" << ENDM;
198+
} else {
199+
sacZero = &(sacContainer->mSACZero);
200+
sacDelta = &(sacContainer->mSACDelta);
201+
sacOne = &(sacContainer->mSACOne);
188202
}
189203

190204
if (sacZero) {
@@ -211,9 +225,7 @@ void SACs::update(Trigger, framework::ServiceRegistryRef)
211225
mSACs.drawFourierCoeffSAC(Side::C, mRanges["SACFourierCoeffs"].at(0), mRanges["SACFourierCoeffs"].at(1), mRanges["SACFourierCoeffs"].at(2), mFourierCoeffsC.get());
212226
}
213227

214-
delete sacZero;
215-
delete sacDelta;
216-
delete sacOne;
228+
delete sacContainer;
217229
delete sacFFT;
218230

219231
mSACs.setSACZero(nullptr);
@@ -228,20 +240,25 @@ void SACs::finalize(Trigger, framework::ServiceRegistryRef)
228240
getObjectsManager()->stopPublishing(mSACZeroSides.get());
229241
getObjectsManager()->stopPublishing(mSACOneSides.get());
230242
getObjectsManager()->stopPublishing(mSACDeltaSides.get());
231-
getObjectsManager()->stopPublishing(mFourierCoeffsA.get());
232-
getObjectsManager()->stopPublishing(mFourierCoeffsC.get());
233243
getObjectsManager()->stopPublishing(mSACZeroSidesScaled.get());
234244
getObjectsManager()->stopPublishing(mSACZeroScale.get());
235245
getObjectsManager()->stopPublishing(mSACZeroOutliers.get());
236246

247+
if (mDoSACFourierCoeffs) {
248+
getObjectsManager()->stopPublishing(mFourierCoeffsA.get());
249+
getObjectsManager()->stopPublishing(mFourierCoeffsC.get());
250+
}
251+
237252
mSACZeroSides.reset();
238253
mSACOneSides.reset();
239254
mSACDeltaSides.reset();
240-
mFourierCoeffsA.reset();
241-
mFourierCoeffsC.reset();
242255
mSACZeroSidesScaled.reset();
243256
mSACZeroScale.reset();
244257
mSACZeroOutliers.reset();
258+
if (mDoSACFourierCoeffs) {
259+
mFourierCoeffsA.reset();
260+
mFourierCoeffsC.reset();
261+
}
245262
}
246263

247264
} // namespace o2::quality_control_modules::tpc

0 commit comments

Comments
 (0)