Skip to content

Commit 155226e

Browse files
authored
Merge branch 'AliceO2Group:master' into Update
2 parents 60bad0d + b454fe9 commit 155226e

File tree

9 files changed

+126
-35
lines changed

9 files changed

+126
-35
lines changed

ALICE3/Tasks/alice3-lutmaker.cxx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ using namespace framework::expressions;
2525
void customize(std::vector<o2::framework::ConfigParamSpec>& workflowOptions)
2626
{
2727
std::vector<ConfigParamSpec> options{
28-
{"lut-el", VariantType::Int, 1, {"LUT input for the Electron PDG code"}},
29-
{"lut-mu", VariantType::Int, 1, {"LUT input for the Muon PDG code"}},
28+
{"lut-el", VariantType::Int, 0, {"LUT input for the Electron PDG code"}},
29+
{"lut-mu", VariantType::Int, 0, {"LUT input for the Muon PDG code"}},
3030
{"lut-pi", VariantType::Int, 1, {"LUT input for the Pion PDG code"}},
31-
{"lut-ka", VariantType::Int, 1, {"LUT input for the Kaon PDG code"}},
32-
{"lut-pr", VariantType::Int, 1, {"LUT input for the Proton PDG code"}},
31+
{"lut-ka", VariantType::Int, 0, {"LUT input for the Kaon PDG code"}},
32+
{"lut-pr", VariantType::Int, 0, {"LUT input for the Proton PDG code"}},
3333
{"lut-tr", VariantType::Int, 0, {"LUT input for the Triton PDG code"}},
3434
{"lut-de", VariantType::Int, 0, {"LUT input for the Deuteron PDG code"}},
3535
{"lut-he", VariantType::Int, 0, {"LUT input for the Helium3 PDG code"}}};
@@ -153,6 +153,7 @@ struct Alice3LutMaker {
153153
histos.add("QA/CovMat_sigmaSnp", "sigmaSnp" + commonTitle, kTH3F, {axisPt, axisEta, axissigmaSnp});
154154
histos.add("QA/CovMat_sigmaTgl", "sigmaTgl" + commonTitle, kTH3F, {axisPt, axisEta, axissigmaTgl});
155155
histos.add("QA/CovMat_sigma1Pt", "sigma1Pt" + commonTitle, kTH3F, {axisPt, axisEta, axissigma1Pt});
156+
histos.add("QA/sigma1Pt", "sigma1Pt" + commonTitle, kTH3F, {axisPt, axisEta, axissigma1Pt});
156157
histos.add("QA/CovMat_rhoZY", "rhoZY" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoZY});
157158
histos.add("QA/CovMat_rhoSnpY", "rhoSnpY" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoSnpY});
158159
histos.add("QA/CovMat_rhoSnpZ", "rhoSnpZ" + commonTitle, kTH3F, {axisPt, axisEta, axisrhoSnpZ});
@@ -262,6 +263,7 @@ struct Alice3LutMaker {
262263
histos.fill(HIST("QA/CovMat_sigmaSnp"), mcParticle.pt(), mcParticle.eta(), track.sigmaSnp());
263264
histos.fill(HIST("QA/CovMat_sigmaTgl"), mcParticle.pt(), mcParticle.eta(), track.sigmaTgl());
264265
histos.fill(HIST("QA/CovMat_sigma1Pt"), mcParticle.pt(), mcParticle.eta(), track.sigma1Pt());
266+
histos.fill(HIST("QA/sigma1Pt"), mcParticle.pt(), mcParticle.eta(), std::abs(track.signed1Pt()) - 1. / mcParticle.pt());
265267
histos.fill(HIST("QA/CovMat_rhoZY"), mcParticle.pt(), mcParticle.eta(), track.rhoZY());
266268
histos.fill(HIST("QA/CovMat_rhoSnpY"), mcParticle.pt(), mcParticle.eta(), track.rhoSnpY());
267269
histos.fill(HIST("QA/CovMat_rhoSnpZ"), mcParticle.pt(), mcParticle.eta(), track.rhoSnpZ());

Common/Core/fwdtrackUtilities.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ enum class propagationPoint : int {
4242
kToRabs = 2,
4343
};
4444
using SMatrix55 = ROOT::Math::SMatrix<double, 5, 5, ROOT::Math::MatRepSym<double, 5>>;
45+
using SMatrix55Std = ROOT::Math::SMatrix<double, 5>;
4546
using SMatrix5 = ROOT::Math::SVector<double, 5>;
4647

4748
/// propagate fwdtrack to a certain point.
@@ -98,6 +99,48 @@ o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TCollision
9899

99100
return propmuon;
100101
}
102+
103+
template <typename TFwdTrack, typename TMFTTrack>
104+
o2::dataformats::GlobalFwdTrack refitGlobalMuonCov(TFwdTrack const& muon, TMFTTrack const& mft)
105+
{
106+
auto muonCov = muon.getCovariances();
107+
auto mftCov = mft.getCovariances();
108+
109+
SMatrix55Std jacob = ROOT::Math::SMatrixIdentity();
110+
auto tl = muon.getTgl();
111+
auto invQPt = muon.getInvQPt();
112+
jacob(4, 3) = tl / (invQPt * std::sqrt(1 + tl * tl));
113+
jacob(4, 4) = -std::sqrt(1 + tl * tl) / (invQPt * invQPt);
114+
115+
auto covQP = ROOT::Math::Similarity(jacob, muonCov);
116+
mftCov(4, 0) = 0;
117+
mftCov(4, 1) = 0;
118+
mftCov(4, 2) = 0;
119+
mftCov(4, 3) = 0;
120+
121+
mftCov(0, 4) = 0;
122+
mftCov(1, 4) = 0;
123+
mftCov(2, 4) = 0;
124+
mftCov(3, 4) = 0;
125+
mftCov(4, 4) = covQP(4, 4);
126+
127+
SMatrix55Std jacobInv = ROOT::Math::SMatrixIdentity();
128+
auto qp = std::sqrt(1 + tl * tl) / invQPt;
129+
auto tlMFT = mft.getTgl();
130+
jacobInv(4, 3) = tlMFT / (qp * std::sqrt(1 + tlMFT * tlMFT));
131+
jacobInv(4, 4) = -std::sqrt(1 + tlMFT * tlMFT) / (qp * qp);
132+
auto globalCov = ROOT::Math::Similarity(jacobInv, mftCov);
133+
134+
auto invQPtGlob = std::sqrt(1 + tlMFT * tlMFT) / qp;
135+
136+
o2::dataformats::GlobalFwdTrack globalTrack;
137+
globalTrack.setParameters(mft.getParameters());
138+
globalTrack.setInvQPt(invQPtGlob);
139+
globalTrack.setCovariances(globalCov);
140+
141+
return globalTrack;
142+
}
143+
101144
} // namespace fwdtrackutils
102145
} // namespace o2::aod
103146

Common/Tasks/centralityStudy.cxx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ struct centralityStudy {
132132
ConfigurableAxis axisMultPVContributors{"axisMultPVContributors", {200, 0, 6000}, "Number of PV Contributors"};
133133
ConfigurableAxis axisMultGlobalTracks{"axisMultGlobalTracks", {500, 0, 5000}, "Number of global tracks"};
134134
ConfigurableAxis axisMultMFTTracks{"axisMultMFTTracks", {500, 0, 5000}, "Number of MFT tracks"};
135+
ConfigurableAxis axisMultMCCounts{"axisMultMCCounts", {1000, 0, 5000}, "N_{ch}"};
135136

136137
ConfigurableAxis axisTrackOccupancy{"axisTrackOccupancy", {50, 0, 5000}, "Track occupancy"};
137138
ConfigurableAxis axisFT0COccupancy{"axisFT0COccupancy", {50, 0, 80000}, "FT0C occupancy"};
@@ -242,12 +243,19 @@ struct centralityStudy {
242243
}
243244

244245
if (doprocessCollisionsWithResolutionStudy) {
246+
// histograms with detector signals
245247
histos.add("hImpactParameterVsFT0A", "hImpactParameterVsFT0A", kTH2F, {axisMultFT0A, axisImpactParameter});
246248
histos.add("hImpactParameterVsFT0C", "hImpactParameterVsFT0C", kTH2F, {axisMultFT0C, axisImpactParameter});
247249
histos.add("hImpactParameterVsFT0M", "hImpactParameterVsFT0M", kTH2F, {axisMultFT0M, axisImpactParameter});
248250
histos.add("hImpactParameterVsFV0A", "hImpactParameterVsFV0A", kTH2F, {axisMultFV0A, axisImpactParameter});
249251
histos.add("hImpactParameterVsNMFTTracks", "hImpactParameterVsNMFTTracks", kTH2F, {axisMultMFTTracks, axisImpactParameter});
250252
histos.add("hImpactParameterVsNTPV", "hImpactParameterVsNTPV", kTH2F, {axisMultPVContributors, axisImpactParameter});
253+
254+
// histograms with actual MC counts in each region
255+
histos.add("hImpactParameterVsMCFT0A", "hImpactParameterVsMCFT0A", kTH2F, {axisMultMCCounts, axisImpactParameter});
256+
histos.add("hImpactParameterVsMCFT0C", "hImpactParameterVsMCFT0C", kTH2F, {axisMultMCCounts, axisImpactParameter});
257+
histos.add("hImpactParameterVsMCFT0M", "hImpactParameterVsMCFT0M", kTH2F, {axisMultMCCounts, axisImpactParameter});
258+
histos.add("hImpactParameterVsMCFV0A", "hImpactParameterVsMCFV0A", kTH2F, {axisMultMCCounts, axisImpactParameter});
251259
}
252260

253261
if (doOccupancyStudyVsRawValues2d) {
@@ -696,6 +704,11 @@ struct centralityStudy {
696704
histos.fill(HIST("hImpactParameterVsFV0A"), multFV0A, mcCollision.impactParameter());
697705
histos.fill(HIST("hImpactParameterVsNMFTTracks"), mftNtracks, mcCollision.impactParameter());
698706
histos.fill(HIST("hImpactParameterVsNTPV"), multNTracksPV, mcCollision.impactParameter());
707+
708+
histos.fill(HIST("hImpactParameterVsMCFT0A"), mcCollision.multMCFT0A(), mcCollision.impactParameter());
709+
histos.fill(HIST("hImpactParameterVsMCFT0C"), mcCollision.multMCFT0C(), mcCollision.impactParameter());
710+
histos.fill(HIST("hImpactParameterVsMCFT0M"), (mcCollision.multMCFT0A() + mcCollision.multMCFT0C()), mcCollision.impactParameter());
711+
histos.fill(HIST("hImpactParameterVsMCFV0A"), mcCollision.multMCFV0A(), mcCollision.impactParameter());
699712
}
700713
}
701714

PWGHF/D2H/TableProducer/dataCreatorCharmHadPiReduced.cxx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,7 +1241,7 @@ struct HfDataCreatorCharmHadPiReduced {
12411241
trackParCov1.propagateTo(secondaryVertexCharm[0], bz);
12421242
df2.getTrack(0).getPxPyPzGlo(pVec0);
12431243
df2.getTrack(1).getPxPyPzGlo(pVec1);
1244-
pVecCharm = RecoDecay::pVec(pVec0, pVec1);
1244+
pVecCharm = RecoDecay::pVec(pVec0, pVec1, pVec2);
12451245
trackParCovCharmHad = df2.createParentTrackParCov();
12461246
trackParCovCharmHad.setAbsCharge(0); // to be sure
12471247
}
@@ -1279,14 +1279,18 @@ struct HfDataCreatorCharmHadPiReduced {
12791279
}
12801280

12811281
// reject pi D with same sign as D
1282-
if constexpr (decChannel == DecayChannel::B0ToDminusPi || decChannel == DecayChannel::BsToDsminusPi || decChannel == DecayChannel::LbToLcplusPi || decChannel == DecayChannel::B0ToDstarPi) { // D∓ → π∓ K± π∓ and Ds∓ → K∓ K± π∓ and Lc∓ → p∓ K± π∓ and D*+ → D0 π+
1282+
if constexpr (decChannel == DecayChannel::B0ToDminusPi || decChannel == DecayChannel::BsToDsminusPi || decChannel == DecayChannel::LbToLcplusPi) { // D∓ → π∓ K± π∓ and Ds∓ → K∓ K± π∓ and Lc∓ → p∓ K± π∓
12831283
if (trackPion.sign() * charmHadDauTracks[0].sign() > 0) {
12841284
continue;
12851285
}
12861286
} else if constexpr (decChannel == DecayChannel::BplusToD0barPi) { // D0(bar) → K± π∓
12871287
if (!((candC.isSelD0() >= hfflagConfigurations.selectionFlagD0 && trackPion.sign() < 0) || (candC.isSelD0bar() >= hfflagConfigurations.selectionFlagD0bar && trackPion.sign() > 0))) {
12881288
continue;
12891289
}
1290+
} else if constexpr (decChannel == DecayChannel::B0ToDstarPi) { // D*+ → D0 π+
1291+
if (trackPion.sign() * charmHadDauTracks.back().sign() > 0) {
1292+
continue;
1293+
}
12901294
}
12911295

12921296
// apply selections on pion tracks

PWGHF/D2H/Tasks/taskB0Reduced.cxx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -616,7 +616,7 @@ struct HfTaskB0Reduced {
616616
candidate.decayLengthXY(),
617617
candidate.decayLengthNormalised(),
618618
candidate.decayLengthXYNormalised(),
619-
candidate.impactParameterProngSqSum(),
619+
candidate.impactParameterProduct(),
620620
candidate.maxNormalisedDeltaIP(),
621621
candidateMlScoreSig,
622622
candidate.isSelB0ToDPi(),
@@ -644,12 +644,12 @@ struct HfTaskB0Reduced {
644644
prong0MlScorePrompt,
645645
prong0MlScoreNonprompt,
646646
// pion features
647-
candidate.ptProng1(),
647+
candidate.ptProng2(),
648648
std::abs(RecoDecay::eta(prongBachPi.pVector())),
649649
prongBachPi.itsNCls(),
650650
prongBachPi.tpcNClsCrossedRows(),
651651
prongBachPi.tpcChi2NCl(),
652-
candidate.impactParameter1(),
652+
candidate.impactParameter2(),
653653
prongBachPi.tpcNSigmaPi(),
654654
prongBachPi.tofNSigmaPi(),
655655
prongBachPi.tpcTofNSigmaPi(),

PWGHF/DataModel/CandidateReconstructionTables.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2257,7 +2257,8 @@ DECLARE_SOA_TABLE(HfCandB0Base, "AOD", "HFCANDB0BASE",
22572257
DECLARE_SOA_TABLE(HfCandB0DStar, "AOD", "HFCANDB0DSTAR",
22582258
// general columns
22592259
HFCAND_COLUMNS,
2260-
/* prong 2 */ hf_cand::ImpactParameterNormalised2<hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter2>,
2260+
/* prong 2 */
2261+
hf_cand::ImpactParameterNormalised2<hf_cand::ImpactParameter2, hf_cand::ErrorImpactParameter2>,
22612262
hf_cand::PtProng2<hf_cand::PxProng2, hf_cand::PyProng2>,
22622263
hf_cand::Pt2Prong2<hf_cand::PxProng2, hf_cand::PyProng2>,
22632264
hf_cand::PVectorProng2<hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2>,
@@ -2270,6 +2271,7 @@ DECLARE_SOA_TABLE(HfCandB0DStar, "AOD", "HFCANDB0DSTAR",
22702271
/* dynamic columns */
22712272
hf_cand_3prong::M<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1, hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2>,
22722273
hf_cand_3prong::M2<hf_cand::PxProng0, hf_cand::PyProng0, hf_cand::PzProng0, hf_cand::PxProng1, hf_cand::PyProng1, hf_cand::PzProng1, hf_cand::PxProng2, hf_cand::PyProng2, hf_cand::PzProng2>,
2274+
hf_cand_2prong::ImpactParameterProduct<hf_cand::ImpactParameter0, hf_cand::ImpactParameter2>,
22732275
hf_cand_3prong::ImpactParameterProngSqSum<hf_cand::ImpactParameter0, hf_cand::ImpactParameter1, hf_cand::ImpactParameter2>,
22742276
/* dynamic columns that use candidate momentum components */
22752277
hf_cand::Pt<hf_cand_3prong::Px, hf_cand_3prong::Py>,

PWGLF/Tasks/GlobalEventProperties/heavyionMultiplicity.cxx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,11 @@ struct HeavyionMultiplicity {
233233
if (doprocessCorrelation) {
234234
histos.add("GlobalMult_vs_FT0A", "GlobalMult_vs_FT0A", kTH2F, {axisMult, axisFt0aMult}, true);
235235
histos.add("GlobalMult_vs_FT0C", "GlobalMult_vs_FT0C", kTH2F, {axisMult, axisFt0cMult}, true);
236+
histos.add("Centrality_vs_FT0C", "Centrality_vs_FT0C", kTH2F, {centAxis, axisFt0cMult}, true);
236237
histos.add("NPVtracks_vs_FT0C", "NPVtracks_vs_FT0C", kTH2F, {axisPV, axisFt0cMult}, true);
237238
histos.add("GlobalMult_vs_FV0A", "GlobalMult_vs_FV0A", kTH2F, {axisMult, axisFv0aMult}, true);
239+
histos.add("Centrality_vs_FV0A", "Centrality_vs_FV0A", kTH2F, {centAxis, axisFv0aMult}, true);
240+
histos.add("CentFT0Ccentrality_vs_GlobalMult", "CentFT0Ccentrality_vs_GlobalMult", kTH2F, {centAxis, axisMult}, true);
238241
histos.add("NPVtracks_vs_GlobalMult", "NPVtracks_vs_GlobalMult", kTH2F, {axisPV, axisMult}, true);
239242
}
240243

@@ -451,10 +454,14 @@ struct HeavyionMultiplicity {
451454
}
452455
nchTracks++;
453456
}
457+
454458
histos.fill(HIST("GlobalMult_vs_FT0A"), nchTracks, cols.multFT0A());
455459
histos.fill(HIST("GlobalMult_vs_FT0C"), nchTracks, cols.multFT0C());
460+
histos.fill(HIST("Centrality_vs_FT0C"), cols.centFT0C(), cols.multFT0C());
456461
histos.fill(HIST("NPVtracks_vs_FT0C"), cols.multNTracksPV(), cols.multFT0C());
457462
histos.fill(HIST("GlobalMult_vs_FV0A"), nchTracks, cols.multFV0A());
463+
histos.fill(HIST("Centrality_vs_FV0A"), cols.centFV0A(), cols.multFV0A());
464+
histos.fill(HIST("CentFT0Ccentrality_vs_GlobalMult"), cols.centFT0C(), nchTracks);
458465
histos.fill(HIST("NPVtracks_vs_GlobalMult"), cols.multNTracksPV(), nchTracks);
459466
}
460467

PWGLF/Tasks/Nuspex/antinucleiInJets.cxx

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,8 @@ struct AntinucleiInJets {
258258
registryMC.add("antiproton_gen_ue", "antiproton_gen_ue", HistType::kTH1F, {{nbins, min, max, "#it{p}_{T} (GeV/#it{c})"}});
259259

260260
// Normalization histogram
261-
registryMC.add("antiproton_y_phi_jet", "antiproton_y_phi_jet", HistType::kTH2F, {{2000, -1.0, 1.0, "#it{y}"}, {2000, 0.0, TwoPI, "#Delta#phi"}});
262-
registryMC.add("antiproton_y_phi_ue", "antiproton_y_phi_ue", HistType::kTH2F, {{2000, -1.0, 1.0, "#it{y}"}, {2000, 0.0, TwoPI, "#Delta#phi"}});
261+
registryMC.add("antiproton_deltay_deltaphi_jet", "antiproton_deltay_deltaphi_jet", HistType::kTH2F, {{2000, -1.0, 1.0, "#Delta#it{y}"}, {2000, 0.0, 2.0, "#Delta#phi"}});
262+
registryMC.add("antiproton_deltay_deltaphi_ue", "antiproton_deltay_deltaphi_ue", HistType::kTH2F, {{2000, -1.0, 1.0, "#Delta#it{y}"}, {2000, 0.0, 2.0, "#Delta#phi"}});
263263
}
264264

265265
// Reconstructed antiproton spectra in jets and UE (MC-matched) with TPC/TOF PID
@@ -1464,12 +1464,7 @@ struct AntinucleiInJets {
14641464
continue;
14651465

14661466
// Fill normalization histogram
1467-
double px = particle.px();
1468-
double py = particle.py();
1469-
double pz = particle.pz();
1470-
double energy = std::sqrt(MassProton * MassProton + px * px + py * py + pz * pz);
1471-
double y = 0.5 * std::log((energy + pz) / (energy - pz));
1472-
registryMC.fill(HIST("antiproton_y_phi_jet"), y, getDeltaPhi(particle.phi(), jet.phi()));
1467+
registryMC.fill(HIST("antiproton_deltay_deltaphi_jet"), particle.eta() - jet.eta(), getDeltaPhi(particle.phi(), jet.phi()));
14731468

14741469
// Fill histogram for generated antiprotons
14751470
registryMC.fill(HIST("antiproton_gen_jet"), particle.pt());
@@ -1504,17 +1499,11 @@ struct AntinucleiInJets {
15041499
continue;
15051500

15061501
// Fill normalization histogram
1507-
double px = protonVec.Px();
1508-
double py = protonVec.Py();
1509-
double pz = protonVec.Pz();
1510-
double energy = std::sqrt(MassProton * MassProton + px * px + py * py + pz * pz);
1511-
double y = 0.5 * std::log((energy + pz) / (energy - pz));
1512-
15131502
if (deltaRUe1 < maxConeRadius) {
1514-
registryMC.fill(HIST("antiproton_y_phi_ue"), y, getDeltaPhi(protonVec.Phi(), ueAxis1.Phi()));
1503+
registryMC.fill(HIST("antiproton_deltay_deltaphi_ue"), protonVec.Eta() - ueAxis1.Eta(), getDeltaPhi(protonVec.Phi(), ueAxis1.Phi()));
15151504
}
15161505
if (deltaRUe2 < maxConeRadius) {
1517-
registryMC.fill(HIST("antiproton_y_phi_ue"), y, getDeltaPhi(protonVec.Phi(), ueAxis2.Phi()));
1506+
registryMC.fill(HIST("antiproton_deltay_deltaphi_ue"), protonVec.Eta() - ueAxis2.Eta(), getDeltaPhi(protonVec.Phi(), ueAxis2.Phi()));
15181507
}
15191508

15201509
// Fill histogram for antiprotons in the UE

0 commit comments

Comments
 (0)