Skip to content

Commit 57a7298

Browse files
authored
[PWGDQ] Add and change code for the energy correlator study (#17830)
1 parent eca977a commit 57a7298

3 files changed

Lines changed: 20 additions & 12 deletions

File tree

PWGDQ/Core/VarManager.h

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1523,8 +1523,8 @@ class VarManager : public TObject
15231523
static void FillDileptonTrackVertexing(C const& collision, T1 const& lepton1, T1 const& lepton2, T1 const& track, float* values);
15241524
template <typename T1, typename T2>
15251525
static void FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float* values = nullptr, float hadronMass = 0.0f);
1526-
template <typename T1, typename T2, typename T3>
1527-
static void FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values = nullptr, float Translow = 1. / 3, float Transhigh = 2. / 3, bool applyFitMass = false, float sidebandMass = 0.0f, float weight = 1.0f);
1526+
template <int pairType, uint32_t collFillMap, uint32_t fillMap, typename C, typename T1, typename T2, typename T3>
1527+
static void FillEnergyCorrelatorTriple(C const& collision, T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values = nullptr, float Translow = 1. / 3, float Transhigh = 2. / 3, bool applyFitMass = false, float sidebandMass = 0.0f, float weight = 1.0f);
15281528
template <int pairType, typename T1, typename T2, typename T3, typename T4, typename T5>
15291529
static void FillEnergyCorrelatorsUnfoldingTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, T4 const& track, T5 const& t1, float* values = nullptr, bool applyFitMass = false, float Effweight_rec = 1.f, float Accweight_gen = 1.f, float Translow = 1. / 3, float Transhigh = 2. / 3);
15301530
template <typename T1, typename T2>
@@ -6459,9 +6459,15 @@ void VarManager::FillDileptonHadron(T1 const& dilepton, T2 const& hadron, float*
64596459
}
64606460
}
64616461

6462-
template <typename T1, typename T2, typename T3>
6463-
void VarManager::FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values, float Translow, float Transhigh, bool applyFitMass, float sidebandMass, float weight)
6462+
template <int pairType, uint32_t collFillMap, uint32_t fillMap, typename C, typename T1, typename T2, typename T3>
6463+
void VarManager::FillEnergyCorrelatorTriple(C const& collision, T1 const& lepton1, T2 const& lepton2, T3 const& hadron, float* values, float Translow, float Transhigh, bool applyFitMass, float sidebandMass, float weight)
64646464
{
6465+
if (!values) {
6466+
values = fgValues;
6467+
}
6468+
if (fgUsedVars[kVertexingTauxyProjectedPoleJPsiMass] || fgUsedVars[kVertexingLxyProjected]) {
6469+
FillPairVertexing<pairType, collFillMap, fillMap>(collision, lepton1, lepton2, false, values);
6470+
}
64656471
float m1 = o2::constants::physics::MassElectron;
64666472
float m2 = o2::constants::physics::MassElectron;
64676473

@@ -6477,7 +6483,8 @@ void VarManager::FillEnergyCorrelatorTriple(T1 const& lepton1, T2 const& lepton2
64776483
dileptonmass = sidebandMass;
64786484
}
64796485

6480-
if (fgUsedVars[kCosChi] || fgUsedVars[kECWeight] || fgUsedVars[kCosTheta] || fgUsedVars[kEWeight_before] || fgUsedVars[kPtDau] || fgUsedVars[kEtaDau] || fgUsedVars[kPhiDau] || fgUsedVars[kCosChi_randomPhi_trans] || fgUsedVars[kCosChi_randomPhi_toward] || fgUsedVars[kCosChi_randomPhi_away]) {
6486+
if (fgUsedVars[kPairMassDau] || fgUsedVars[kCosChi] || fgUsedVars[kECWeight] || fgUsedVars[kCosTheta] || fgUsedVars[kEWeight_before] || fgUsedVars[kPtDau] || fgUsedVars[kEtaDau] || fgUsedVars[kPhiDau] || fgUsedVars[kCosChi_randomPhi_trans] || fgUsedVars[kCosChi_randomPhi_toward] || fgUsedVars[kCosChi_randomPhi_away]) {
6487+
values[kPairMassDau] = dilepton.mass();
64816488
values[kdileptonmass] = dileptonmass;
64826489
ROOT::Math::PtEtaPhiMVector v1(dilepton.pt(), dilepton.eta(), dilepton.phi(), dileptonmass);
64836490
ROOT::Math::PtEtaPhiMVector v2(hadron.pt(), hadron.eta(), hadron.phi(), o2::constants::physics::MassPionCharged);

PWGDQ/Tasks/dqEnergyCorrelator_direct.cxx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ struct AnalysisEnergyCorrelator {
530530

531531
template <bool MixedEvent, uint32_t TTrackFillMap, typename TTrack1, typename TTrack2, typename THadron, typename TEvent>
532532
void runDileptonHadron(TTrack1 const& track1, TTrack2 const& track2, int iEleCut,
533-
THadron const& hadron, TEvent const& event, aod::McParticles const& /*mcParticles*/)
533+
THadron const& hadron, TEvent const& dileptonEvent, TEvent const& event, aod::McParticles const& /*mcParticles*/)
534534
{
535535

536536
// Check that hadron is not one of the dilepton legs
@@ -556,6 +556,7 @@ struct AnalysisEnergyCorrelator {
556556
float Effweight_rec = 1.0f;
557557
float Accweight_gen = 1.0f;
558558
if (fConfigDileptonHadronOptions.fConfigApplyEfficiency) {
559+
VarManager::FillPair<VarManager::kDecayToEE, TTrackFillMap>(track1, track2, VarManager::fgValues);
559560
float dilepton_pt = VarManager::fgValues[VarManager::kPt];
560561
float dilepton_eta = VarManager::fgValues[VarManager::kEta];
561562
float dilepton_phi = VarManager::fgValues[VarManager::kPhi];
@@ -594,7 +595,7 @@ struct AnalysisEnergyCorrelator {
594595

595596
// Fill dilepton-hadron variables
596597
std::vector<float> fTransRange = fConfigDileptonHadronOptions.fConfigTransRange;
597-
VarManager::FillEnergyCorrelatorTriple(track1, track2, hadron, VarManager::fgValues, fTransRange[0], fTransRange[1], fConfigDileptonHadronOptions.fConfigApplyMassEC.value, -1, 1. / Effweight_rec);
598+
VarManager::FillEnergyCorrelatorTriple<VarManager::kDecayToEE, gkEventFillMapWithMults, TTrackFillMap>(dileptonEvent, track1, track2, hadron, VarManager::fgValues, fTransRange[0], fTransRange[1], fConfigDileptonHadronOptions.fConfigApplyMassEC.value, -1, 1. / Effweight_rec);
598599
if (fConfigDileptonHadronOptions.fConfigUsePionMass.value) {
599600
VarManager::FillEnergyCorrelatorsUnfoldingTriple<VarManager::kJpsiPionMass>(track1, track2, hadron, motherParticle, hadronMC, VarManager::fgValues, fConfigDileptonHadronOptions.fConfigApplyMassEC.value, 1. / Effweight_rec, 1. / Accweight_gen, fTransRange[0], fTransRange[1]);
600601
} else {
@@ -826,7 +827,7 @@ struct AnalysisEnergyCorrelator {
826827
// Process dilepton-hadron correlation for each common cut
827828
for (size_t iCut = 0; iCut < fTrackCuts.size(); iCut++) {
828829
if (twoTrackFilter & (static_cast<uint32_t>(1) << iCut)) {
829-
runDileptonHadron<false, gkTrackFillMapWithCov>(t1, t2, iCut, hadron, event, mcParticles);
830+
runDileptonHadron<false, gkTrackFillMapWithCov>(t1, t2, iCut, hadron, event, event, mcParticles);
830831
}
831832
}
832833
} // end hadron loop
@@ -945,7 +946,7 @@ struct AnalysisEnergyCorrelator {
945946
// Process dilepton-hadron correlation for each common cut
946947
for (size_t iCut = 0; iCut < fTrackCuts.size(); iCut++) {
947948
if (twoTrackFilter & (static_cast<uint32_t>(1) << iCut)) {
948-
runDileptonHadron<true, gkTrackFillMapWithCov>(t1, t2, iCut, hadron, event2, mcParticles);
949+
runDileptonHadron<true, gkTrackFillMapWithCov>(t1, t2, iCut, hadron, event1, event2, mcParticles);
949950
}
950951
}
951952
} // end hadron loop

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ using MyEventsMultExtraZdcFit = soa::Join<aod::ReducedEvents, aod::ReducedEvents
234234
using MyEventsSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::EventCuts>;
235235
using MyEventsMultExtraSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsMultPV, aod::ReducedEventsMultAll, aod::EventCuts>;
236236
using MyEventsVtxCovSelectedMultExtra = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsVtxCov, aod::EventCuts, aod::ReducedEventsMultPV, aod::ReducedEventsMultAll>;
237-
using MyEventsHashSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::EventCuts, aod::MixingHashes>;
237+
using MyEventsHashSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsVtxCov, aod::EventCuts, aod::MixingHashes>;
238238
using MyEventsVtxCov = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsVtxCov>;
239239
using MyEventsVtxCovSelected = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsVtxCov, aod::EventCuts>;
240240
using MyEventsVtxCovSelectedInfo = soa::Join<aod::ReducedEvents, aod::ReducedEventsExtended, aod::ReducedEventsVtxCov, aod::EventCuts, aod::ReducedEventsInfo>;
@@ -4377,7 +4377,7 @@ struct AnalysisDileptonTrack {
43774377
Effweight_rec = Effweight_rec * Effdilepton * Effhadron * Masswindow;
43784378
}
43794379
std::vector<float> fTransRange = fConfigTransRange;
4380-
VarManager::FillEnergyCorrelatorTriple(lepton1, lepton2, track, fValuesHadron, fTransRange[0], fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), 1. / Effweight_rec);
4380+
VarManager::FillEnergyCorrelatorTriple<VarManager::kDecayToEE, TEventFillMap, TTrackFillMap>(event, lepton1, lepton2, track, fValuesHadron, fTransRange[0], fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), 1. / Effweight_rec);
43814381

43824382
// table to be written out for ML analysis
43834383
BmesonsTable(event.runNumber(), event.globalIndex(), event.timestamp(), fValuesHadron[VarManager::kPairMass], dilepton.mass(), fValuesHadron[VarManager::kDeltaMass], fValuesHadron[VarManager::kPairPt], fValuesHadron[VarManager::kPairEta], fValuesHadron[VarManager::kPairPhi], fValuesHadron[VarManager::kPairRap],
@@ -4616,7 +4616,7 @@ struct AnalysisDileptonTrack {
46164616
}
46174617
}
46184618
std::vector<float> fTransRange = fConfigTransRange;
4619-
VarManager::FillEnergyCorrelatorTriple(lepton1, lepton2, track, dqtablereader_helpers::varValues(), fTransRange[0], fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), 1. / Effweight_rec);
4619+
VarManager::FillEnergyCorrelatorTriple<VarManager::kDecayToEE, gkEventFillMapWithCov, gkTrackFillMapWithCov>(event1, lepton1, lepton2, track, dqtablereader_helpers::varValues(), fTransRange[0], fTransRange[1], fConfigApplyMassEC, fMassBkg->GetRandom(), 1. / Effweight_rec);
46204620

46214621
// loop over dilepton leg cuts and track cuts and fill histograms separately for each combination
46224622
for (int icut = 0; icut < fNCuts; icut++) {

0 commit comments

Comments
 (0)