Skip to content

Commit a161052

Browse files
[PWGHF] Added safety checks before using ccdb efficiency objects (#15653)
1 parent 0a8ae16 commit a161052

File tree

1 file changed

+25
-13
lines changed

1 file changed

+25
-13
lines changed

PWGHF/HFC/Tasks/taskCorrelationDstarHadrons.cxx

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ struct HfTaskCorrelationDstarHadrons {
118118
HistogramRegistry registry{"registry", {}, OutputObjHandlingPolicy::AnalysisObject, true, true};
119119

120120
o2::ccdb::CcdbApi ccdbApi;
121-
std::vector<TH1F*> vecHistEfficiencyDstar;
122-
std::vector<TH1D*> vecHistEfficiencyTracks;
121+
std::vector<TH1*> vecHistEfficiencyDstar;
122+
std::vector<TH1*> vecHistEfficiencyTracks;
123123

124124
void init(InitContext&)
125125
{
@@ -166,12 +166,12 @@ struct HfTaskCorrelationDstarHadrons {
166166
vecHistEfficiencyTracks.resize(nEfficiencyHist);
167167

168168
for (int iHist = 0; iHist < nEfficiencyHist; iHist++) {
169-
vecHistEfficiencyDstar[iHist] = dynamic_cast<TH1F*>(efficiencyDstarRootFile->Get(Form("hEfficiencyDstar_%d", iHist)));
169+
vecHistEfficiencyDstar[iHist] = dynamic_cast<TH1*>(efficiencyDstarRootFile->Get(Form("hEfficiencyDstar_%d", iHist)));
170170
if (!vecHistEfficiencyDstar[iHist]) {
171171
LOGF(fatal, "Failed to retrieve Dstar efficiency histogram hEfficiencyDstar_%d from file", iHist);
172172
}
173173

174-
vecHistEfficiencyTracks[iHist] = dynamic_cast<TH1D*>(efficiencyTracksRootFile->Get(Form("hEfficiencyTracks_%d", iHist)));
174+
vecHistEfficiencyTracks[iHist] = dynamic_cast<TH1*>(efficiencyTracksRootFile->Get(Form("hEfficiencyTracks_%d", iHist)));
175175
if (!vecHistEfficiencyTracks[iHist]) {
176176
LOGF(fatal, "Failed to retrieve track efficiency histogram hEfficiencyTracks_%d from file", iHist);
177177
}
@@ -212,19 +212,31 @@ struct HfTaskCorrelationDstarHadrons {
212212
// if (ptTrack > 10.0) {
213213
// ptTrack = 10.5;
214214
// }
215-
float netEfficiencyWeight = 1.0;
215+
float netEfficiencyWeight = 1.0, efficiencyWeightDstar = 1.0, efficiencyWeightTracks = 1.0;
216216

217217
if (applyEfficiency && !useCcdbEfficiency) {
218-
float const efficiencyWeightDstar = efficiencyDstar->at(effBinPtDstar);
219-
// LOG(info)<<"efficiencyWeightDstar "<<efficiencyWeightDstar;
220-
float const efficiencyWeightTracks = efficiencyTracks->at(effBinPtTrack);
221-
// LOG(info)<<"efficiencyWeightTracks "<<efficiencyWeightTracks;
218+
efficiencyWeightDstar = efficiencyDstar->at(effBinPtDstar);
219+
efficiencyWeightTracks = efficiencyTracks->at(effBinPtTrack);
222220
netEfficiencyWeight = 1.0 / (efficiencyWeightDstar * efficiencyWeightTracks);
223221
} else if (applyEfficiency && useCcdbEfficiency && nEfficiencyHist == 1) {
224-
float const efficiencyWeightDstar = vecHistEfficiencyDstar[0]->GetBinContent(vecHistEfficiencyDstar[0]->GetXaxis()->FindBin(ptDstar));
225-
// LOG(info)<<"efficiencyWeightDstar "<<efficiencyWeightDstar;
226-
float const efficiencyWeightTracks = vecHistEfficiencyTracks[0]->GetBinContent(vecHistEfficiencyTracks[0]->GetXaxis()->FindBin(ptTrack));
227-
// LOG(info)<<"efficiencyWeightTracks "<<efficiencyWeightTracks;
222+
float const ptEffLowEdgeDstar = vecHistEfficiencyDstar[0]->GetXaxis()->GetBinLowEdge(1);
223+
if (ptDstar <= ptEffLowEdgeDstar) { // pT of current dstar candidate is lower than the lower edge of the pT axis
224+
efficiencyWeightDstar = vecHistEfficiencyDstar[0]->GetBinContent(1);
225+
} else {
226+
efficiencyWeightDstar = vecHistEfficiencyDstar[0]->GetBinContent(vecHistEfficiencyDstar[0]->GetXaxis()->FindBin(ptDstar));
227+
if (!efficiencyWeightDstar) {
228+
LOGF(fatal, "Dstar efficiency weight can't be zero.");
229+
}
230+
}
231+
float const ptEffLowEdgeTrack = vecHistEfficiencyTracks[0]->GetBinLowEdge(1);
232+
if (ptTrack <= ptEffLowEdgeTrack) { // pT of current track is lower than the lower edge of the pT axis
233+
efficiencyWeightTracks = vecHistEfficiencyTracks[0]->GetBinContent(1);
234+
} else {
235+
efficiencyWeightTracks = vecHistEfficiencyTracks[0]->GetBinContent(vecHistEfficiencyTracks[0]->GetXaxis()->FindBin(ptTrack));
236+
if (!efficiencyWeightTracks) {
237+
LOGF(fatal, "track efficiency weight can't be zero");
238+
}
239+
}
228240
netEfficiencyWeight = 1.0 / (efficiencyWeightDstar * efficiencyWeightTracks);
229241
} else if (applyEfficiency && useCcdbEfficiency && nEfficiencyHist > 1) {
230242
// to do

0 commit comments

Comments
 (0)