Skip to content

Commit 8b56b49

Browse files
authored
[PWGCF] Fix 2prong filter MC particle indexing (#11585)
1 parent 401d3ba commit 8b56b49

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

PWGCF/TableProducer/filter2Prong.cxx

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,24 @@
1111

1212
/// \author Jasper Parkkila <jasper.parkkila@cern.ch>
1313

14-
#include <experimental/type_traits>
15-
#include <vector>
16-
#include <string>
17-
#include <memory>
18-
19-
#include "Framework/runDataProcessing.h"
20-
#include "Framework/AnalysisTask.h"
21-
#include "Framework/AnalysisDataModel.h"
22-
#include "Framework/ASoAHelpers.h"
23-
24-
#include "MathUtils/detail/TypeTruncation.h"
25-
2614
#include "PWGCF/DataModel/CorrelationsDerived.h"
27-
2815
#include "PWGHF/Core/HfHelper.h"
2916
#include "PWGHF/DataModel/CandidateReconstructionTables.h"
3017
#include "PWGHF/DataModel/CandidateSelectionTables.h"
3118

19+
#include "Framework/ASoAHelpers.h"
20+
#include "Framework/AnalysisDataModel.h"
21+
#include "Framework/AnalysisTask.h"
22+
#include "Framework/runDataProcessing.h"
23+
#include "MathUtils/detail/TypeTruncation.h"
24+
3225
#include <TFormula.h>
3326

27+
#include <experimental/type_traits>
28+
#include <memory>
29+
#include <string>
30+
#include <vector>
31+
3432
using namespace o2;
3533
using namespace o2::framework;
3634
using namespace o2::framework::expressions;
@@ -143,11 +141,11 @@ struct Filter2Prong {
143141
}
144142
PROCESS_SWITCH(Filter2Prong, processData, "Process data D0 candidates", true);
145143

146-
void processMC(aod::McCollisions::iterator const&, aod::CFMcParticleRefs const& cfmcparticles, aod::McParticles const& mcparticles)
144+
void processMC(aod::McCollisions::iterator const&, aod::CFMcParticleRefs const& cfmcparticles, [[maybe_unused]] aod::McParticles const& mcparticles)
147145
{
148146
// The main filter outputs the primary MC particles. Here we just resolve the daughter indices that are needed for the efficiency matching.
149147
for (const auto& r : cfmcparticles) {
150-
const auto& mcParticle = mcparticles.iteratorAt(r.mcParticleId());
148+
const auto& mcParticle = r.mcParticle();
151149
if (mcParticle.daughtersIds().size() != 2) {
152150
output2ProngMcParts(-1, -1);
153151
continue;

PWGCF/Tasks/correlations.cxx

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,36 +13,37 @@
1313
/// \brief task for the correlation calculations with CF-filtered tracks for O2 analysis
1414
/// \author Jan Fiete Grosse-Oetringhaus <jan.fiete.grosse-oetringhaus@cern.ch>, Jasper Parkkila <jasper.parkkila@cern.ch>
1515

16-
#include <experimental/type_traits>
17-
#include <vector>
18-
#include <string>
16+
#include "PWGCF/Core/CorrelationContainer.h"
17+
#include "PWGCF/Core/PairCuts.h"
18+
#include "PWGCF/DataModel/CorrelationsDerived.h"
1919

20-
#include <TH1F.h>
21-
#include <cmath>
22-
#include <TDirectory.h>
23-
#include <THn.h>
24-
#include <TFile.h>
25-
#include <TVector2.h>
20+
#include "Common/Core/RecoDecay.h"
21+
#include "Common/DataModel/Centrality.h"
22+
#include "Common/DataModel/EventSelection.h"
23+
#include "Common/DataModel/TrackSelectionTables.h"
2624

27-
#include "Framework/runDataProcessing.h"
28-
#include "Framework/AnalysisTask.h"
29-
#include "Framework/AnalysisDataModel.h"
30-
#include "Framework/ASoAHelpers.h"
3125
#include "CCDB/BasicCCDBManager.h"
32-
#include "Framework/StepTHn.h"
26+
#include "CommonConstants/MathConstants.h"
27+
#include "DataFormatsParameters/GRPMagField.h"
28+
#include "DataFormatsParameters/GRPObject.h"
29+
#include "Framework/ASoAHelpers.h"
30+
#include "Framework/AnalysisDataModel.h"
31+
#include "Framework/AnalysisTask.h"
3332
#include "Framework/HistogramRegistry.h"
3433
#include "Framework/RunningWorkflowInfo.h"
35-
#include "CommonConstants/MathConstants.h"
36-
#include "Common/Core/RecoDecay.h"
34+
#include "Framework/StepTHn.h"
35+
#include "Framework/runDataProcessing.h"
3736

38-
#include "Common/DataModel/EventSelection.h"
39-
#include "Common/DataModel/TrackSelectionTables.h"
40-
#include "Common/DataModel/Centrality.h"
41-
#include "PWGCF/DataModel/CorrelationsDerived.h"
42-
#include "PWGCF/Core/CorrelationContainer.h"
43-
#include "PWGCF/Core/PairCuts.h"
44-
#include "DataFormatsParameters/GRPObject.h"
45-
#include "DataFormatsParameters/GRPMagField.h"
37+
#include <TDirectory.h>
38+
#include <TFile.h>
39+
#include <TH1F.h>
40+
#include <THn.h>
41+
#include <TVector2.h>
42+
43+
#include <cmath>
44+
#include <experimental/type_traits>
45+
#include <string>
46+
#include <vector>
4647

4748
using namespace o2;
4849
using namespace o2::framework;
@@ -1065,17 +1066,21 @@ struct CorrelationTask {
10651066

10661067
for (const auto& p2track : grouped2ProngTracks) {
10671068
// Check if the mc particles of the prongs are found.
1069+
if (p2track.cfTrackProng0Id() < 0 || p2track.cfTrackProng1Id() < 0) {
1070+
// fake track
1071+
same->getTrackHistEfficiency()->Fill(CorrelationContainer::Fake, p2track.eta(), p2track.pt(), 0, multiplicity, mcCollision.posZ());
1072+
}
10681073
const auto& p0 = p2track.cfTrackProng0_as<aod::CFTracksWithLabel>();
10691074
const auto& p1 = p2track.cfTrackProng1_as<aod::CFTracksWithLabel>();
10701075
if (p0.has_cfMCParticle() && p1.has_cfMCParticle()) {
10711076
// find the 2-prong MC particle by the daughter MC particle IDs
10721077
auto m = std::find_if(p2indexCache.begin(), p2indexCache.end(), [&](const auto& t) -> bool {
1073-
const auto& mcParticle = mcParticles.iteratorAt(t);
1078+
const auto& mcParticle = mcParticles.iteratorAt(t - mcParticles.begin().globalIndex());
10741079
return p0.cfMCParticleId() == mcParticle.cfParticleDaugh0Id() && p1.cfMCParticleId() == mcParticle.cfParticleDaugh1Id();
10751080
});
10761081
if (m == p2indexCache.end())
10771082
continue;
1078-
const auto& mcParticle = mcParticles.iteratorAt(*m);
1083+
const auto& mcParticle = mcParticles.iteratorAt(*m - mcParticles.begin().globalIndex());
10791084
if (mcParticle.isPhysicalPrimary()) {
10801085
same->getTrackHistEfficiency()->Fill(CorrelationContainer::RecoPrimaries, mcParticle.eta(), mcParticle.pt(), getSpecies(mcParticle.pdgCode()), multiplicity, mcCollision.posZ());
10811086
}

0 commit comments

Comments
 (0)