Skip to content

Commit 0003ea3

Browse files
scattarualibuild
andauthored
[PWGHF] Ds-h correlation analysis, load efficiencies from ccdb (AliceO2Group#9295)
Co-authored-by: ALICE Action Bot <[email protected]>
1 parent f499a19 commit 0003ea3

File tree

2 files changed

+59
-2
lines changed

2 files changed

+59
-2
lines changed

PWGHF/HFC/TableProducer/correlatorDsHadrons.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ struct HfCorrelatorDsHadrons {
149149
Configurable<bool> fillHistoMcRec{"fillHistoMcRec", true, "Flag for filling histograms in MC Rec processes"};
150150
Configurable<bool> fillHistoMcGen{"fillHistoMcGen", true, "Flag for filling histograms in MC Gen processes"};
151151
Configurable<bool> removeCollWSplitVtx{"removeCollWSplitVtx", false, "Flag for rejecting the splitted collisions"};
152-
Configurable<bool> useSel8{"useSel8", true, "Flag for applying sel8 for collision selection"};
153-
Configurable<bool> selNoSameBunchPileUpColl{"selNoSameBunchPileUpColl", true, "Flag for rejecting the collisions associated with the same bunch crossing"};
152+
Configurable<bool> useSel8{"useSel8", true, "Flag for applying sel8 for collision selection (used only in MC processes)"};
153+
Configurable<bool> selNoSameBunchPileUpColl{"selNoSameBunchPileUpColl", true, "Flag for rejecting the collisions associated with the same bunch crossing (used only in MC processes)"};
154154
Configurable<int> selectionFlagDs{"selectionFlagDs", 7, "Selection Flag for Ds (avoid the case of flag = 0, no outputMlScore)"};
155155
Configurable<int> numberEventsMixed{"numberEventsMixed", 5, "Number of events mixed in ME process"};
156156
Configurable<int> decayChannel{"decayChannel", 1, "Decay channels: 1 for Ds->PhiPi->KKpi, 2 for Ds->K0*K->KKPi"};

PWGHF/HFC/Tasks/taskCorrelationDsHadrons.cxx

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@
1414
/// \author Grazia Luparello <[email protected]>
1515
/// \author Samuele Cattaruzzi <[email protected]>
1616

17+
#include <memory>
18+
#include <string>
1719
#include <vector>
1820

21+
#include "CCDB/BasicCCDBManager.h"
1922
#include "Framework/AnalysisTask.h"
2023
#include "Framework/HistogramRegistry.h"
2124
#include "Framework/runDataProcessing.h"
@@ -42,6 +45,7 @@ struct HfTaskCorrelationDsHadrons {
4245
Configurable<bool> useSel8ForEff{"useSel8ForEff", true, "Flag for applying sel8 for collision selection"};
4346
Configurable<bool> selNoSameBunchPileUpColl{"selNoSameBunchPileUpColl", true, "Flag for rejecting the collisions associated with the same bunch crossing"};
4447
Configurable<bool> removeCollWSplitVtx{"removeCollWSplitVtx", false, "Flag for rejecting the splitted collisions"};
48+
Configurable<bool> loadAccXEffFromCCDB{"loadAccXEffFromCCDB", false, "Flag for loading efficiency distributions from CCDB"};
4549
// Configurable<bool> doMcCollisionCheck{"doMcCollisionCheck", false, "Flag for applying the collision check and selection based on MC collision info"};
4650
Configurable<int> selectionFlagDs{"selectionFlagDs", 7, "Selection Flag for Ds (avoid the case of flag = 0, no outputMlScore)"};
4751
Configurable<int> nTpcCrossedRaws{"nTpcCrossedRaws", 70, "Number of crossed TPC Rows"};
@@ -73,6 +77,16 @@ struct HfTaskCorrelationDsHadrons {
7377
Configurable<std::vector<double>> sidebandLeftOuter{"sidebandLeftOuter", {1.9040, 1.9040, 1.9040, 1.9040, 1.9040, 1.9040, 1.9040, 1.9040}, "Outer values of left sideband vs pT"};
7478
Configurable<std::vector<double>> sidebandRightInner{"sidebandRightInner", {2.0000, 2.0000, 2.0000, 2.0000, 2.0000, 2.0000, 2.0000, 2.0000}, "Inner values of right sideband vs pT"};
7579
Configurable<std::vector<double>> sidebandRightOuter{"sidebandRightOuter", {2.0320, 2.0320, 2.0320, 2.0320, 2.0320, 2.0320, 2.0320, 2.0320}, "Outer values of right sideband vs pT"};
80+
// CCDB configuration
81+
Configurable<std::string> ccdbUrl{"ccdbUrl", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
82+
Configurable<std::string> associatedEffCcdbPath{"associatedEffCcdbPath", "", "CCDB path for associated efficiency"};
83+
Configurable<std::string> promptEffCcdbPath{"promptEffCcdbPath", "", "CCDB path for trigger efficiency"};
84+
Configurable<std::string> fdEffCcdbPath{"fdEffCcdbPath", "", "CCDB path for trigger efficiency"};
85+
Configurable<int64_t> timestampCcdb{"timestampCcdb", -1, "timestamp of the efficiency files used to query in CCDB"};
86+
Configurable<int64_t> ccdbNoLaterThan{"ccdbNoLaterThan", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"};
87+
88+
std::shared_ptr<TH1> mEfficiencyD = nullptr;
89+
std::shared_ptr<TH1> mEfficiencyAssociated = nullptr;
7690

7791
enum CandidateStep {
7892
kCandidateStepMcGenDsToKKPi = 0,
@@ -94,6 +108,8 @@ struct HfTaskCorrelationDsHadrons {
94108
HfHelper hfHelper;
95109
SliceCache cache;
96110

111+
Service<ccdb::BasicCCDBManager> ccdb;
112+
97113
using DsHadronPair = soa::Join<aod::DsHadronPair, aod::DsHadronRecoInfo>;
98114
using DsHadronPairFull = soa::Join<aod::DsHadronPair, aod::DsHadronRecoInfo, aod::DsHadronGenInfo>;
99115
using DsHadronPairWithMl = soa::Join<aod::DsHadronPair, aod::DsHadronRecoInfo, aod::DsHadronMlInfo, aod::TrackRecoInfo>;
@@ -228,6 +244,26 @@ struct HfTaskCorrelationDsHadrons {
228244
hAssocTracks->GetAxis(2)->SetTitle("multiplicity");
229245
hAssocTracks->GetAxis(3)->SetTitle("pos z");
230246
}
247+
248+
// Loading efficiency histograms from CCDB
249+
if (applyEfficiency && loadAccXEffFromCCDB) {
250+
ccdb->setURL(ccdbUrl);
251+
ccdb->setCaching(true);
252+
ccdb->setLocalObjectValidityChecking();
253+
ccdb->setCreatedNotAfter(ccdbNoLaterThan.value);
254+
255+
mEfficiencyD = std::shared_ptr<TH1>(ccdb->getForTimeStamp<TH1F>(promptEffCcdbPath, timestampCcdb));
256+
if (mEfficiencyD == nullptr) {
257+
LOGF(fatal, "Could not load efficiency histogram for trigger particles from %s", promptEffCcdbPath.value.c_str());
258+
}
259+
LOGF(info, "Loaded trigger efficiency (prompt D) histogram from %s", promptEffCcdbPath.value.c_str());
260+
261+
mEfficiencyAssociated = std::shared_ptr<TH1>(ccdb->getForTimeStamp<TH1F>(associatedEffCcdbPath, timestampCcdb));
262+
if (mEfficiencyAssociated == nullptr) {
263+
LOGF(fatal, "Could not load efficiency histogram for associated particles from %s", associatedEffCcdbPath.value.c_str());
264+
}
265+
LOGF(info, "Loaded associated efficiency histogram from %s", associatedEffCcdbPath.value.c_str());
266+
}
231267
}
232268

233269
void processData(DsHadronPairWithMl const& pairEntries,
@@ -246,6 +282,9 @@ struct HfTaskCorrelationDsHadrons {
246282
double efficiencyWeightD = 1.;
247283
if (applyEfficiency) {
248284
efficiencyWeightD = 1. / efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD));
285+
if (loadAccXEffFromCCDB) {
286+
efficiencyWeightD = 1. / mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD));
287+
}
249288
}
250289
registry.fill(HIST("hMassDsVsPt"), massD, ptD, efficiencyWeightD);
251290
registry.fill(HIST("hBdtScorePrompt"), bdtScorePrompt);
@@ -276,6 +315,9 @@ struct HfTaskCorrelationDsHadrons {
276315
double efficiencyWeight = 1.;
277316
if (applyEfficiency) {
278317
efficiencyWeight = 1. / (efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD)) * efficiencyHad->at(o2::analysis::findBin(binsPtEfficiencyHad, ptHadron)));
318+
if (loadAccXEffFromCCDB) {
319+
efficiencyWeight = 1. / (mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD)) * mEfficiencyAssociated->GetBinContent(mEfficiencyAssociated->FindBin(ptHadron)));
320+
}
279321
}
280322

281323
// in signal region
@@ -318,6 +360,9 @@ struct HfTaskCorrelationDsHadrons {
318360
double efficiencyWeightD = 1.;
319361
if (applyEfficiency) {
320362
efficiencyWeightD = 1. / efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD));
363+
if (loadAccXEffFromCCDB) {
364+
efficiencyWeightD = 1. / mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD));
365+
}
321366
}
322367
if (isDsPrompt) {
323368
registry.fill(HIST("hMassPromptDsVsPt"), massD, ptD, efficiencyWeightD);
@@ -357,6 +402,9 @@ struct HfTaskCorrelationDsHadrons {
357402
double efficiencyWeight = 1.;
358403
if (applyEfficiency) {
359404
efficiencyWeight = 1. / (efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD)) * efficiencyHad->at(o2::analysis::findBin(binsPtEfficiencyHad, ptHadron)));
405+
if (loadAccXEffFromCCDB) {
406+
efficiencyWeight = 1. / (mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD)) * mEfficiencyAssociated->GetBinContent(mEfficiencyAssociated->FindBin(ptHadron)));
407+
}
360408
}
361409
// in signal region
362410
if (massD > signalRegionInner->at(ptBinD) && massD < signalRegionOuter->at(ptBinD)) {
@@ -448,6 +496,9 @@ struct HfTaskCorrelationDsHadrons {
448496
double efficiencyWeight = 1.;
449497
if (applyEfficiency) {
450498
efficiencyWeight = 1. / (efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD)) * efficiencyHad->at(o2::analysis::findBin(binsPtEfficiencyHad, ptHadron)));
499+
if (loadAccXEffFromCCDB) {
500+
efficiencyWeight = 1. / (mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD)) * mEfficiencyAssociated->GetBinContent(mEfficiencyAssociated->FindBin(ptHadron)));
501+
}
451502
}
452503

453504
// in signal region
@@ -487,6 +538,9 @@ struct HfTaskCorrelationDsHadrons {
487538
double efficiencyWeight = 1.;
488539
if (applyEfficiency) {
489540
efficiencyWeight = 1. / (efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD)) * efficiencyHad->at(o2::analysis::findBin(binsPtEfficiencyHad, ptHadron)));
541+
if (loadAccXEffFromCCDB) {
542+
efficiencyWeight = 1. / (mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD)) * mEfficiencyAssociated->GetBinContent(mEfficiencyAssociated->FindBin(ptHadron)));
543+
}
490544
}
491545

492546
// in signal region
@@ -541,6 +595,9 @@ struct HfTaskCorrelationDsHadrons {
541595
double efficiencyWeight = 1.;
542596
if (applyEfficiency) {
543597
efficiencyWeight = 1. / (efficiencyD->at(o2::analysis::findBin(binsPtEfficiencyD, ptD)) * efficiencyHad->at(o2::analysis::findBin(binsPtEfficiencyHad, ptHadron)));
598+
if (loadAccXEffFromCCDB) {
599+
efficiencyWeight = 1. / (mEfficiencyD->GetBinContent(mEfficiencyD->FindBin(ptD)) * mEfficiencyAssociated->GetBinContent(mEfficiencyAssociated->FindBin(ptHadron)));
600+
}
544601
}
545602
// in signal region
546603
if (massD > signalRegionInner->at(ptBinD) && massD < signalRegionOuter->at(ptBinD)) {

0 commit comments

Comments
 (0)