Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f7aef3e
Add files via upload
YazhenLin Dec 17, 2025
8f59022
Add files via upload
YazhenLin Dec 17, 2025
2646b10
Add files via upload
YazhenLin Dec 17, 2025
fc5de50
Add files via upload
YazhenLin Dec 17, 2025
b05a247
Add files via upload
YazhenLin Dec 17, 2025
ab05454
Merge branch 'AliceO2Group:master' into master
YazhenLin Dec 22, 2025
b12e9b5
Add files via upload
YazhenLin Dec 22, 2025
f62d934
Add files via upload
YazhenLin Dec 22, 2025
73b8812
Add files via upload
YazhenLin Dec 22, 2025
cfad309
Add files via upload
YazhenLin Dec 28, 2025
e2faa2b
Add files via upload
YazhenLin Jan 5, 2026
21733a6
Add files via upload
YazhenLin Jan 6, 2026
9709f3e
Add files via upload
YazhenLin Jan 6, 2026
a4f714e
Merge branch 'AliceO2Group:master' into master
YazhenLin Jan 13, 2026
14b28ea
Add files via upload
YazhenLin Jan 13, 2026
22e2a82
Add files via upload
YazhenLin Jan 13, 2026
9610b1f
Add files via upload
YazhenLin Jan 13, 2026
143e63f
Add files via upload
YazhenLin Jan 14, 2026
292c69e
Add files via upload
YazhenLin Jan 14, 2026
e89f40a
Add files via upload
YazhenLin Jan 14, 2026
9118502
Add files via upload
YazhenLin Jan 14, 2026
1ba9263
Add files via upload
YazhenLin Jan 14, 2026
9b94b8d
Add files via upload
YazhenLin Jan 14, 2026
7658712
Delete PWGDQ/dqEfficiency_withAssoc_direct.cxx
YazhenLin Jan 14, 2026
671cf4c
Add files via upload
YazhenLin Jan 14, 2026
97ffaf6
Merge branch 'AliceO2Group:master' into master
YazhenLin Jan 19, 2026
9e1cb77
Add files via upload
YazhenLin Jan 19, 2026
2959ceb
Add files via upload
YazhenLin Jan 19, 2026
d3269c2
Add files via upload
YazhenLin Jan 19, 2026
283c52a
Add files via upload
YazhenLin Jan 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions PWGDQ/Core/VarManager.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "Tools/KFparticle/KFUtilities.h"

#include <cmath>
#include <iostream>

Check failure on line 16 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[include-iostream]

Do not include iostream. Use O2 logging instead.
#include <map>
#include <vector>

Expand Down Expand Up @@ -168,8 +168,8 @@
// TO Do: add more systems

// set the beam 4-momentum vectors
float beamAEnergy = energy / 2.0 * sqrt(NumberOfProtonsA * NumberOfProtonsC / NumberOfProtonsC / NumberOfProtonsA); // GeV

Check failure on line 171 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
float beamCEnergy = energy / 2.0 * sqrt(NumberOfProtonsC * NumberOfProtonsA / NumberOfProtonsA / NumberOfProtonsC); // GeV

Check failure on line 172 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
float beamAMomentum = std::sqrt(beamAEnergy * beamAEnergy - NumberOfNucleonsA * NumberOfNucleonsA * MassProton * MassProton);
float beamCMomentum = std::sqrt(beamCEnergy * beamCEnergy - NumberOfNucleonsC * NumberOfNucleonsC * MassProton * MassProton);
fgBeamA.SetPxPyPzE(0, 0, beamAMomentum, beamAEnergy);
Expand Down Expand Up @@ -268,7 +268,7 @@
double mean = calibMeanHist->GetBinContent(binTPCncls, binPin, binEta);
double sigma = calibSigmaHist->GetBinContent(binTPCncls, binPin, binEta);
return (nSigmaValue - mean) / sigma; // Return the calibrated nSigma value
} else if (fgCalibrationType == 2) {

Check failure on line 271 in PWGDQ/Core/VarManager.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
// get the calibration histograms
CalibObjects calibMean, calibSigma, calibStatus;
switch (species) {
Expand Down Expand Up @@ -1838,6 +1838,10 @@
fgVarNamesMap["kMCdeltaphi_randomPhi_toward"] = kMCdeltaphi_randomPhi_toward;
fgVarNamesMap["kMCdeltaphi_randomPhi_away"] = kMCdeltaphi_randomPhi_away;
fgVarNamesMap["kMCdeltaphi_randomPhi_trans"] = kMCdeltaphi_randomPhi_trans;
fgVarNamesMap["kMCCosChi_randomPhi_trans_rec"] = kMCCosChi_randomPhi_trans_rec;
fgVarNamesMap["kMCWeight_randomPhi_trans_rec"] = kMCWeight_randomPhi_trans_rec;
fgVarNamesMap["kMCCosChi_randomPhi_trans_gen"] = kMCCosChi_randomPhi_trans_gen;
fgVarNamesMap["kMCWeight_randomPhi_trans_gen"] = kMCWeight_randomPhi_trans_gen;
fgVarNamesMap["kMCCosChi_gen"] = kMCCosChi_gen;
fgVarNamesMap["kMCWeight_gen"] = kMCWeight_gen;
fgVarNamesMap["kMCdeltaeta_gen"] = kMCdeltaeta_gen;
Expand All @@ -1846,6 +1850,7 @@
fgVarNamesMap["kMCdeltaeta_rec"] = kMCdeltaeta_rec;
fgVarNamesMap["kMCParticleWeight"] = kMCParticleWeight;
fgVarNamesMap["kMCCosTheta"] = kMCCosTheta;
fgVarNamesMap["kMCdeltaphi"] = kMCdeltaphi;
fgVarNamesMap["kMCJpsiPt"] = kMCJpsiPt;
fgVarNamesMap["kMCPx"] = kMCPx;
fgVarNamesMap["kMCPy"] = kMCPy;
Expand Down
37 changes: 33 additions & 4 deletions PWGDQ/Core/VarManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@
#include <cmath>
#include <complex>
#include <cstdint>
#include <iostream>

Check failure on line 71 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[include-iostream]

Do not include iostream. Use O2 logging instead.
#include <map>
#include <utility>
#include <vector>

using std::complex;

Check failure on line 76 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[import-std-name]

Do not import names from the std namespace in headers.
using std::cout;

Check failure on line 77 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[import-std-name]

Do not import names from the std namespace in headers.
using std::endl;

Check failure on line 78 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[import-std-name]

Do not import names from the std namespace in headers.

using SMatrix55 = ROOT::Math::SMatrix<double, 5, 5, ROOT::Math::MatRepSym<double, 5>>;
using SMatrix5 = ROOT::Math::SVector<double, 5>;
Expand Down Expand Up @@ -661,6 +661,10 @@
kMCCosChi_rec,
kMCWeight_rec,
kMCdeltaeta_rec,
kMCCosChi_randomPhi_trans_rec,
kMCWeight_randomPhi_trans_rec,
kMCCosChi_randomPhi_trans_gen,
kMCWeight_randomPhi_trans_gen,

// MC mother particle variables
kMCMotherPdgCode,
Expand Down Expand Up @@ -1624,8 +1628,8 @@
}
if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) {
o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision);
double px = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * cos(mfttrack.phi());

Check failure on line 1631 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double py = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * sin(mfttrack.phi());

Check failure on line 1632 in PWGDQ/Core/VarManager.h

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
double pz = propmuon.getP() * cos(M_PI / 2 - atan(mfttrack.tgl()));
double pt = std::sqrt(std::pow(px, 2) + std::pow(py, 2));
auto mftprop = o2::aod::fwdtrackutils::getTrackParCovFwdShift(mfttrack, fgzShiftFwd);
Expand Down Expand Up @@ -2998,15 +3002,15 @@
randomPhi_toward = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);
randomPhi_away = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);

ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans(v2.pt(), v2.eta(), randomPhi_trans, o2::constants::physics::MassPionCharged);
ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans(v2.pt(), v2.eta(), randomPhi_trans, MassHadron);
values[kMCCosChi_randomPhi_trans] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_trans);
values[kMCWeight_randomPhi_trans] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_trans) / v1.M();

ROOT::Math::PtEtaPhiMVector v2_randomPhi_toward(v2.pt(), v2.eta(), randomPhi_toward, o2::constants::physics::MassPionCharged);
ROOT::Math::PtEtaPhiMVector v2_randomPhi_toward(v2.pt(), v2.eta(), randomPhi_toward, MassHadron);
values[kMCCosChi_randomPhi_toward] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_toward);
values[kMCWeight_randomPhi_toward] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_toward) / v1.M();

ROOT::Math::PtEtaPhiMVector v2_randomPhi_away(v2.pt(), v2.eta(), randomPhi_away, o2::constants::physics::MassPionCharged);
ROOT::Math::PtEtaPhiMVector v2_randomPhi_away(v2.pt(), v2.eta(), randomPhi_away, MassHadron);
values[kMCCosChi_randomPhi_away] = LorentzTransformJpsihadroncosChi("coschi", v1, v2_randomPhi_away);
values[kMCWeight_randomPhi_away] = LorentzTransformJpsihadroncosChi("weight_boost", v1, v2_randomPhi_away) / v1.M();

Expand All @@ -3019,7 +3023,7 @@
template <int pairType, typename T1, typename T2, typename T, typename T3>
void VarManager::FillEnergyCorrelatorsMCUnfolding(T1 const& dilepton, T2 const& hadron, T const& track, T3 const& t1, float* values)
{
if (fgUsedVars[kMCCosChi_gen] || fgUsedVars[kMCWeight_gen] || fgUsedVars[kMCdeltaeta_gen] || fgUsedVars[kMCCosChi_rec] || fgUsedVars[kMCWeight_rec] || fgUsedVars[kMCdeltaeta_rec]) {
if (fgUsedVars[kMCCosChi_gen] || fgUsedVars[kMCWeight_gen] || fgUsedVars[kMCdeltaeta_gen] || fgUsedVars[kMCCosChi_rec] || fgUsedVars[kMCWeight_rec] || fgUsedVars[kMCdeltaeta_rec] || fgUsedVars[kMCCosChi_randomPhi_trans_rec] || fgUsedVars[kMCWeight_randomPhi_trans_rec] || fgUsedVars[kMCCosChi_randomPhi_trans_gen] || fgUsedVars[kMCWeight_randomPhi_trans_gen]) {
// energy correlators
float MassHadron;
if constexpr (pairType == kJpsiHadronMass) {
Expand All @@ -3042,6 +3046,31 @@
float E_boost_rec = LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_rec);
values[kMCWeight_rec] = E_boost_rec / v1_rec.M();
values[kMCdeltaeta_rec] = dilepton.eta() - hadron.eta();

values[kMCCosChi_randomPhi_trans_rec] = -999.9f;
values[kMCCosChi_randomPhi_trans_gen] = -999.9f;

float randomPhi_trans_rec = -o2::constants::math::PIHalf;
float randomPhi_trans_gen = -o2::constants::math::PIHalf;

float deltaphi_rec = RecoDecay::constrainAngle(dilepton.phi() - hadron.phi(), -o2::constants::math::PIHalf);
float deltaphi_gen = RecoDecay::constrainAngle(track.phi() - t1.phi(), -o2::constants::math::PIHalf);

if ((deltaphi_rec > -0.5 * TMath::Pi() && deltaphi_rec < -1. / 3 * TMath::Pi()) || (deltaphi_rec > 4. / 3 * TMath::Pi() && deltaphi_rec < 1.5 * TMath::Pi()) || (deltaphi_rec > 1. / 3 * TMath::Pi() && deltaphi_rec < 2. / 3 * TMath::Pi())) {
randomPhi_trans_rec = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);

ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans_rec(v2_rec.pt(), v2_rec.eta(), randomPhi_trans_rec, o2::constants::physics::MassPionCharged);
values[kMCCosChi_randomPhi_trans_rec] = LorentzTransformJpsihadroncosChi("coschi", v1_rec, v2_randomPhi_trans_rec);
values[kMCWeight_randomPhi_trans_rec] = LorentzTransformJpsihadroncosChi("weight_boost", v1_rec, v2_randomPhi_trans_rec) / v1_rec.M();
}

if ((deltaphi_gen > -0.5 * TMath::Pi() && deltaphi_gen < -1. / 3 * TMath::Pi()) || (deltaphi_gen > 4. / 3 * TMath::Pi() && deltaphi_gen < 1.5 * TMath::Pi()) || (deltaphi_gen > 1. / 3 * TMath::Pi() && deltaphi_gen < 2. / 3 * TMath::Pi())) {
randomPhi_trans_gen = gRandom->Uniform(-o2::constants::math::PIHalf, 3. * o2::constants::math::PIHalf);

ROOT::Math::PtEtaPhiMVector v2_randomPhi_trans_gen(v2_gen.pt(), v2_gen.eta(), randomPhi_trans_gen, MassHadron);
values[kMCCosChi_randomPhi_trans_gen] = LorentzTransformJpsihadroncosChi("coschi", v1_gen, v2_randomPhi_trans_gen);
values[kMCWeight_randomPhi_trans_gen] = LorentzTransformJpsihadroncosChi("weight_boost", v1_gen, v2_randomPhi_trans_gen) / v1_gen.M();
}
}
}

Expand Down
5 changes: 5 additions & 0 deletions PWGDQ/Tasks/dqEfficiency_withAssoc_direct.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -2066,6 +2066,7 @@ struct AnalysisDileptonTrack {
Configurable<int> fConfigMixingDepth{"cfgMixingDepth", 5, "Event mixing pool depth"};
Configurable<bool> fConfigPublishTripletTable{"cfgPublishTripletTable", false, "Publish the triplet tables, BmesonCandidates"};
Configurable<bool> fConfigApplyMassEC{"cfgApplyMassEC", false, "Apply fit mass for sideband for the energy correlator study"};
Configurable<float> fConfigSavelessevents{"cfgSavelessevents", -1.0, "Save less events for the energy correlator study"};
} fConfigOptions;

struct : ConfigurableGroup {
Expand Down Expand Up @@ -2790,6 +2791,8 @@ struct AnalysisDileptonTrack {
if (!event.isEventSelected_bit(0)) {
continue;
}
if (fConfigOptions.fConfigSavelessevents.value > 0 && event.globalIndex() % fConfigOptions.fConfigSavelessevents == 0)
continue;
auto groupedBarrelAssocs = assocs.sliceBy(trackAssocsPerCollision, event.globalIndex());
// groupedBarrelAssocs.bindInternalIndicesTo(&assocs);
auto groupedDielectrons = dileptons.sliceBy(dielectronsPerCollision, event.globalIndex());
Expand Down Expand Up @@ -2983,6 +2986,8 @@ struct AnalysisDileptonTrack {
if (!event.has_mcCollision()) {
continue;
}
if (fConfigOptions.fConfigSavelessevents.value > 0 && event.globalIndex() % fConfigOptions.fConfigSavelessevents == 0)
continue;
runEnergyCorrelators<VarManager::kJpsiHadronMass>(event, mcTracks);
}
}
Expand Down
Loading