Skip to content

Commit d1ce678

Browse files
Merge branch 'AliceO2Group:master' into master
2 parents aee06da + 7ee93e3 commit d1ce678

File tree

3 files changed

+70
-2
lines changed

3 files changed

+70
-2
lines changed

Common/Core/fwdtrackUtilities.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,45 @@ o2::track::TrackParCovFwd getTrackParCovFwd(TFwdTrack const& track, TFwdTrackCov
7575
return trackparCov;
7676
}
7777

78+
/// Produce TrackParCovFwds for MFT and FwdTracks, w/ or w/o cov, with z shift
79+
template <typename TFwdTrack, typename... TCovariance>
80+
o2::track::TrackParCovFwd getTrackParCovFwdShift(TFwdTrack const& track, float zshift, TCovariance const&... covOpt)
81+
{
82+
double chi2 = track.chi2();
83+
if constexpr (sizeof...(covOpt) == 0) {
84+
// No covariance passed
85+
if constexpr (std::is_same_v<std::decay_t<TFwdTrack>, aod::FwdTracks::iterator>) {
86+
if (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
87+
chi2 = track.chi2() * (2.f * track.nClusters() - 5.f);
88+
}
89+
}
90+
} else {
91+
// Covariance passed
92+
using TCov = std::decay_t<decltype((covOpt, ...))>;
93+
if constexpr (std::is_same_v<TCov, aod::FwdTracksCov::iterator>) {
94+
if (track.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
95+
chi2 = track.chi2() * (2.f * track.nClusters() - 5.f);
96+
}
97+
}
98+
}
99+
100+
SMatrix5 tpars(track.x(), track.y(), track.phi(), track.tgl(), track.signed1Pt());
101+
102+
SMatrix55 tcovs;
103+
if constexpr (sizeof...(covOpt) == 1) {
104+
auto const& cov = (covOpt, ...);
105+
std::vector<double> v1{
106+
cov.cXX(), cov.cXY(), cov.cYY(), cov.cPhiX(), cov.cPhiY(),
107+
cov.cPhiPhi(), cov.cTglX(), cov.cTglY(), cov.cTglPhi(), cov.cTglTgl(),
108+
cov.c1PtX(), cov.c1PtY(), cov.c1PtPhi(), cov.c1PtTgl(), cov.c1Pt21Pt2()};
109+
tcovs = SMatrix55(v1.begin(), v1.end());
110+
} else {
111+
tcovs = SMatrix55{};
112+
}
113+
114+
return o2::track::TrackParCovFwd(track.z() + zshift, tpars, tcovs, chi2);
115+
}
116+
78117
/// propagate fwdtrack to a certain point.
79118
template <typename TFwdTrack, typename TFwdTrackCov, typename TCollision>
80119
o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TFwdTrackCov const& cov, TCollision const& collision, const propagationPoint endPoint, const float matchingZ, const float bzkG)

PWGCF/Femto/FemtoNuclei/TableProducer/HadNucleiFemto.cxx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,10 @@ struct HadNucleiFemto {
199199
Configurable<float> settingCutHadDCAxyMin{"settingCutHadDCAxyMin", 0.3f, "DCAxy Min for Had"};
200200
Configurable<float> settingCutHadDCAzMin{"settingCutHadDCAzMin", 0.3f, "DCAz Min for Had"};
201201
Configurable<float> settingCutDeDCAzMin{"settingCutDeDCAzMin", 0.2f, "DCAxy Min for De"};
202-
Configurable<float> settingCutNsigTPCPrMin{"settingCutNsigTPCPrMin", 3.0f, "Minimum TPC Pr Nsigma cut on Pi"};
203-
Configurable<float> settingCutNsigTOFPrMin{"settingCutNsigTOFPrMin", 3.0f, "Minimum TOF Pr Nsigma cut on Pi"};
202+
Configurable<float> settingCutNsigTPCPrMin{"settingCutNsigTPCPrMin", 3.0f, "Minimum TPC Pr Nsigma cut for rejection"};
203+
Configurable<float> settingCutNsigTPCPiMin{"settingCutNsigTPCPiMin", 3.0f, "Minimum TPC Pi Nsigma cut for rejection"};
204+
Configurable<float> settingCutNsigTOFPrMin{"settingCutNsigTOFPrMin", 3.0f, "Minimum TOF Pr Nsigma cut for rejection"};
205+
Configurable<float> settingCutNsigTOFPiMin{"settingCutNsigTOFPiMin", 3.0f, "Minimum TOF Pi Nsigma cut for rejection"};
204206

205207
Configurable<bool> settingSaveUSandLS{"settingSaveUSandLS", true, "Save All Pairs"};
206208
Configurable<bool> settingFillMultiplicity{"settingFillMultiplicity", false, "Fill multiplicity table"};
@@ -278,6 +280,7 @@ struct HadNucleiFemto {
278280
{"hNuPhi", "phi distribution; phi(Nu)", {HistType::kTH1F, {{600, -4.0f, 4.0f}}}},
279281
{"hHadPhi", "phi distribution; phi(had)", {HistType::kTH1F, {{600, -4.0f, 4.0f}}}},
280282
{"h2dEdxNucandidates", "dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)", {HistType::kTH2F, {{200, -5.0f, 5.0f}, {100, 0.0f, 2000.0f}}}},
283+
{"h2dEdxHadcandidates", "dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)", {HistType::kTH2F, {{200, -5.0f, 5.0f}, {100, 0.0f, 2000.0f}}}},
281284
{"h2dEdx", "dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)", {HistType::kTH2F, {{200, -5.0f, 5.0f}, {100, 0.0f, 2000.0f}}}},
282285
{"h2NsigmaNuTPC", "NsigmaNu TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(Nu)", {HistType::kTH2F, {{100, -2.0f, 2.0f}, {200, -5.0f, 5.0f}}}},
283286
{"h2NsigmaNuComb", "NsigmaNu TPCTOF comb distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{comb}(Nu)", {HistType::kTH2F, {{100, -2.0f, 2.0f}, {100, 0.0f, 5.0f}}}},
@@ -306,7 +309,9 @@ struct HadNucleiFemto {
306309
{"hkStar_US_M", ";kStar (GeV/c)", {HistType::kTH1F, {{300, 0.0f, 3.0f}}}},
307310
{"hkStar_US_A", ";kStar (GeV/c)", {HistType::kTH1F, {{300, 0.0f, 3.0f}}}},
308311
{"h2NsigmaHadPrTPC", "NsigmaHad TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(p)", {HistType::kTH1F, {{200, -5.0f, 5.0f}}}},
312+
{"h2NsigmaHadPiTPC", "NsigmaHad TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(pi)", {HistType::kTH1F, {{200, -5.0f, 5.0f}}}},
309313
{"h2NsigmaHadPrTOF", "NsigmaHad TOF distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(p)", {HistType::kTH1F, {{200, -5.0f, 5.0f}}}},
314+
{"h2NsigmaHadPiTOF", "NsigmaHad TOF distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(pi)", {HistType::kTH1F, {{200, -5.0f, 5.0f}}}},
310315
{"hisBkgEM", "; isBkgEM;", {HistType::kTH1F, {{3, -1, 2}}}}},
311316
OutputObjHandlingPolicy::AnalysisObject,
312317
false,
@@ -502,6 +507,19 @@ struct HadNucleiFemto {
502507
if (std::abs(candidate.pt()) < settingCutHadptMin || std::abs(candidate.pt()) > settingCutHadptMax)
503508
return false;
504509

510+
// reject protons and pions
511+
if (std::abs(candidate.tpcNSigmaPr()) < settingCutNsigTPCPrMin || std::abs(candidate.tpcNSigmaPi()) < settingCutNsigTPCPiMin)
512+
return false;
513+
mQaRegistry.fill(HIST("h2NsigmaHadPrTPC"), candidate.tpcNSigmaPr());
514+
mQaRegistry.fill(HIST("h2NsigmaHadPiTPC"), candidate.tpcNSigmaPi());
515+
if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPr()) < settingCutNsigTOFPrMin)
516+
return false;
517+
if (candidate.hasTOF() && std::abs(candidate.tofNSigmaPi()) < settingCutNsigTOFPiMin)
518+
return false;
519+
mQaRegistry.fill(HIST("h2NsigmaHadPrTOF"), candidate.tofNSigmaPr());
520+
mQaRegistry.fill(HIST("h2NsigmaHadPiTOF"), candidate.tofNSigmaPi());
521+
// rejection end
522+
505523
if (candidate.hasTOF() && candidate.tpcInnerParam() >= settingCutPinMinTOFHad) {
506524
auto tofNSigmaKa = candidate.tofNSigmaKa();
507525

@@ -514,12 +532,14 @@ struct HadNucleiFemto {
514532
}
515533
mQaRegistry.fill(HIST("h2NsigmaHadTPC"), candidate.sign() * candidate.pt(), tpcNSigmaKa);
516534
mQaRegistry.fill(HIST("h2NsigmaHadTOF"), candidate.sign() * candidate.pt(), tofNSigmaKa);
535+
mQaRegistry.fill(HIST("h2dEdxHadcandidates"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal());
517536
return true;
518537
} else if (candidate.tpcInnerParam() < settingCutPinMinTOFHad) {
519538
if (std::abs(tpcNSigmaKa) > settingCutNsigmaTPCHad) {
520539
return false;
521540
}
522541
mQaRegistry.fill(HIST("h2NsigmaHadTPC"), candidate.sign() * candidate.pt(), tpcNSigmaKa);
542+
mQaRegistry.fill(HIST("h2dEdxHadcandidates"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal());
523543
return true;
524544
}
525545
return false;
@@ -562,12 +582,14 @@ struct HadNucleiFemto {
562582
mQaRegistry.fill(HIST("h2NsigmaHadTPC"), candidate.sign() * candidate.pt(), tpcNSigmaPi);
563583
mQaRegistry.fill(HIST("h2NsigmaHadTOF"), candidate.sign() * candidate.pt(), tofNSigmaPi);
564584
mQaRegistry.fill(HIST("h2NsigmaHadComb"), candidate.sign() * candidate.pt(), combNsigma);
585+
mQaRegistry.fill(HIST("h2dEdxHadcandidates"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal());
565586
return true;
566587
} else if (candidate.tpcInnerParam() < settingCutPinMinTOFHad) {
567588
if (std::abs(tpcNSigmaPi) > settingCutNsigmaTPCHad) {
568589
return false;
569590
}
570591
mQaRegistry.fill(HIST("h2NsigmaHadTPC"), candidate.sign() * candidate.pt(), tpcNSigmaPi);
592+
mQaRegistry.fill(HIST("h2dEdxHadcandidates"), candidate.sign() * candidate.tpcInnerParam(), candidate.tpcSignal());
571593
return true;
572594
}
573595
return false;

PWGCF/Flow/Tasks/flowTask.cxx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1253,6 +1253,13 @@ struct FlowTask {
12531253
fGFW->Clear();
12541254
fFCptgen->clearVector();
12551255

1256+
if (cfgUseAdditionalEventCut) {
1257+
for (auto const& collision : collisions) {
1258+
if (!eventSelected(collision, mcParticles.size(), cent))
1259+
return;
1260+
}
1261+
}
1262+
12561263
double ptSum_Gap08 = 0.;
12571264
double count_Gap08 = 0.;
12581265
for (const auto& mcParticle : mcParticles) {

0 commit comments

Comments
 (0)