Skip to content

Commit bb18c43

Browse files
authored
[PWGHF] Add generated MC outputs to UPC Lambda_c task (#18010)
1 parent 018e1f1 commit bb18c43

1 file changed

Lines changed: 28 additions & 5 deletions

File tree

PWGHF/D2H/Tasks/taskUpcLc.cxx

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
/// \author Ran Tu <ran.tu@cern.ch>, Fudan University
1818

1919
#include "PWGHF/Core/CentralityEstimation.h"
20+
#include "PWGHF/Core/DecayChannels.h"
2021
#include "PWGHF/Core/HfHelper.h"
2122
#include "PWGHF/Core/SelectorCuts.h"
2223
#include "PWGHF/DataModel/AliasTables.h"
@@ -28,10 +29,12 @@
2829
#include "PWGUD/Core/SGSelector.h"
2930
#include "PWGUD/Core/UPCHelpers.h"
3031

32+
#include "Common/Core/RecoDecay.h"
3133
#include "Common/DataModel/EventSelection.h"
3234
#include "Common/DataModel/Multiplicity.h"
3335

3436
#include <CCDB/BasicCCDBManager.h>
37+
#include <CommonConstants/PhysicsConstants.h>
3538
#include <CommonDataFormat/TimeStamp.h>
3639
#include <Framework/ASoA.h>
3740
#include <Framework/AnalysisDataModel.h>
@@ -126,6 +129,10 @@ DECLARE_SOA_TABLE(HfUpcLcMcInfos, "AOD", "HFUPCLCMCINFO",
126129
full::FlagMcMatchRec,
127130
full::OriginMcRec,
128131
full::PtBhadMotherPart);
132+
DECLARE_SOA_TABLE(HfUpcLcMcGen, "AOD", "HFUPCLCMCGEN",
133+
full::Pt,
134+
hf_cand_mc_flag::FlagMcMatchGen,
135+
hf_cand_mc_flag::OriginMcGen);
129136
} // namespace o2::aod
130137

131138
/// Λc± → p± K∓ π± analysis task
@@ -134,12 +141,14 @@ struct HfTaskUpcLc {
134141
Produces<o2::aod::HfUpcLcInfos> rowCandUpc;
135142
Produces<o2::aod::HfUpcLcMcBdtInfos> rowCandUpcMcBdt;
136143
Produces<o2::aod::HfUpcLcMcInfos> rowCandUpcMc;
144+
Produces<o2::aod::HfUpcLcMcGen> rowLcMcGen;
137145
Produces<o2::aod::HfUpcQa> rowUpcQa;
138146

139147
Configurable<int> selectionFlagLc{"selectionFlagLc", 1, "Selection Flag for Lc"};
140148
Configurable<double> yCandRecoMax{"yCandRecoMax", 0.8, "max. cand. rapidity"};
141149
Configurable<std::vector<double>> binsPt{"binsPt", std::vector<double>{hf_cuts_lc_to_p_k_pi::vecBinsPt}, "pT bin limits"};
142150
Configurable<bool> fillTreeOnlySingleGap{"fillTreeOnlySingleGap", false, "Only fill the tree for candidates that pass the single-gap UPC events"};
151+
Configurable<bool> fillMcGenLcTree{"fillMcGenLcTree", false, "Fill the generated Lc to p K pi tree"};
143152
Configurable<bool> fillTreeUpcQa{"fillTreeUpcQa", false, "Fill Tree for UPC QA"};
144153
Configurable<bool> fillHistQa{"fillHistQa", false, "Fill histograms for UPC detector QA"};
145154
Configurable<bool> verticesWithUpc{"verticesWithUpc", false, "Consider vertices with UPC settings"};
@@ -211,10 +220,22 @@ struct HfTaskUpcLc {
211220
BCsType const& bcs,
212221
aod::FT0s const& ft0s,
213222
aod::FV0As const& fv0as,
214-
aod::FDDs const& fdds
215-
216-
)
223+
aod::FDDs const& fdds,
224+
soa::Join<aod::McParticles, aod::HfCand3ProngMcGen> const* mcParticles = nullptr)
217225
{
226+
if constexpr (IsMc) {
227+
if (fillMcGenLcTree) {
228+
for (const auto& particle : *mcParticles) {
229+
if (std::abs(particle.flagMcMatchGen()) != hf_decay::hf_cand_3prong::DecayChannelMain::LcToPKPi) {
230+
continue;
231+
}
232+
if (yCandRecoMax >= 0. && std::abs(RecoDecay::y(particle.pVector(), o2::constants::physics::MassLambdaCPlus)) > yCandRecoMax) {
233+
continue;
234+
}
235+
rowLcMcGen(particle.pt(), particle.flagMcMatchGen(), particle.originMcGen());
236+
}
237+
}
238+
}
218239
for (const auto& collision : collisions) {
219240
float centrality{-1.f};
220241
const auto rejectionMask = hfEvSel.getHfCollisionRejectionMaskWithUpc<true, CentralityEstimator::None, BCsType>(collision, centrality, ccdb, registry, bcs);
@@ -397,27 +418,29 @@ struct HfTaskUpcLc {
397418
aod::BcFullInfos const& bcs,
398419
LcCandidatesMlMc const& selectedLcCandidatesMlMc,
399420
aod::McCollisions const&,
421+
soa::Join<aod::McParticles, aod::HfCand3ProngMcGen> const& mcParticles,
400422
aod::TracksWMc const&,
401423
aod::FT0s const& ft0s,
402424
aod::FV0As const& fv0as,
403425
aod::FDDs const& fdds,
404426
aod::Zdcs const& /*zdcs*/)
405427
{
406-
runAnalysisPerCollisionWithUpc<true, true>(collisions, selectedLcCandidatesMlMc, bcs, ft0s, fv0as, fdds);
428+
runAnalysisPerCollisionWithUpc<true, true>(collisions, selectedLcCandidatesMlMc, bcs, ft0s, fv0as, fdds, &mcParticles);
407429
}
408430
PROCESS_SWITCH(HfTaskUpcLc, processMcWithMlWithUpc, "Process MC with the ML method with UPC", false);
409431

410432
void processMcStdWithUpc(soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::Mults> const& collisions,
411433
aod::BcFullInfos const& bcs,
412434
LcCandidatesMc const& selectedLcCandidatesMc,
413435
aod::McCollisions const&,
436+
soa::Join<aod::McParticles, aod::HfCand3ProngMcGen> const& mcParticles,
414437
aod::TracksWMc const&,
415438
aod::FT0s const& ft0s,
416439
aod::FV0As const& fv0as,
417440
aod::FDDs const& fdds,
418441
aod::Zdcs const& /*zdcs*/)
419442
{
420-
runAnalysisPerCollisionWithUpc<false, true>(collisions, selectedLcCandidatesMc, bcs, ft0s, fv0as, fdds);
443+
runAnalysisPerCollisionWithUpc<false, true>(collisions, selectedLcCandidatesMc, bcs, ft0s, fv0as, fdds, &mcParticles);
421444
}
422445
PROCESS_SWITCH(HfTaskUpcLc, processMcStdWithUpc, "Process MC with the standard method with UPC", false);
423446
};

0 commit comments

Comments
 (0)