|
17 | 17 | /// \author Nicolo' Jacazio <nicolo.jacazio@cern.ch>, CERN |
18 | 18 | /// \author Luigi Dello Stritto <luigi.dello.stritto@cern.ch>, CERN |
19 | 19 |
|
20 | | -#include <algorithm> |
21 | | -#include <utility> |
22 | | -#include <vector> |
| 20 | +#include "PWGHF/Core/HfHelper.h" |
| 21 | +#include "PWGHF/DataModel/CandidateReconstructionTables.h" |
| 22 | +#include "PWGHF/DataModel/CandidateSelectionTables.h" |
| 23 | + |
| 24 | +#include "Common/DataModel/Centrality.h" |
| 25 | +#include "Common/DataModel/Multiplicity.h" |
23 | 26 |
|
24 | 27 | #include "CommonConstants/PhysicsConstants.h" |
25 | 28 | #include "Framework/AnalysisTask.h" |
26 | 29 | #include "Framework/runDataProcessing.h" |
27 | 30 |
|
28 | | -#include "Common/DataModel/Centrality.h" |
29 | | -#include "Common/DataModel/Multiplicity.h" |
30 | | - |
31 | | -#include "PWGHF/Core/HfHelper.h" |
32 | | -#include "PWGHF/DataModel/CandidateReconstructionTables.h" |
33 | | -#include "PWGHF/DataModel/CandidateSelectionTables.h" |
| 31 | +#include <algorithm> |
| 32 | +#include <utility> |
| 33 | +#include <vector> |
34 | 34 |
|
35 | 35 | using namespace o2; |
36 | 36 | using namespace o2::framework; |
@@ -388,6 +388,7 @@ struct HfTreeCreatorLcToPKPi { |
388 | 388 | Configurable<bool> applyMl{"applyMl", false, "Whether ML was used in candidateSelectorLc"}; |
389 | 389 | Configurable<bool> keepOnlySignalMc{"keepOnlySignalMc", false, "Fill MC tree only with signal candidates"}; |
390 | 390 | Configurable<bool> keepOnlyBkg{"keepOnlyBkg", false, "Fill MC tree only with background candidates"}; |
| 391 | + Configurable<bool> keepCorrBkgMC{"keepCorrBkgMC", false, "Flag to keep correlated background sources (Λc+ -> p K− π+ π0, p π− π+, p K− K+ and other charm hadrons)"}; |
391 | 392 | Configurable<double> downSampleBkgFactor{"downSampleBkgFactor", 1., "Fraction of candidates to store in the tree"}; |
392 | 393 | Configurable<float> downSampleBkgPtMax{"downSampleBkgPtMax", 100.f, "Max. pt for background downsampling"}; |
393 | 394 |
|
@@ -927,9 +928,11 @@ struct HfTreeCreatorLcToPKPi { |
927 | 928 | const int sigbgstatus = determineSignalBgStatus(candidate, candFlag); |
928 | 929 | const bool isMcCandidateSignal = (sigbgstatus == Prompt) || (sigbgstatus == NonPrompt); |
929 | 930 | const bool passSelection = functionSelection >= selectionFlagLc; |
930 | | - const bool keepAll = !keepOnlySignalMc && !keepOnlyBkg; |
| 931 | + const bool keepAll = !keepOnlySignalMc && !keepOnlyBkg && !keepCorrBkgMC; |
| 932 | + const int flag = candidate.flagMcMatchRec(); |
| 933 | + const bool isCorrBkg = (std::abs(flag) != 0 && std::abs(flag) != o2::hf_decay::hf_cand_3prong::DecayChannelMain::LcToPKPi); |
931 | 934 | const bool notSkippedBkg = isMcCandidateSignal || candidate.pt() > downSampleBkgPtMax || pseudoRndm < downSampleBkgFactor; |
932 | | - if (passSelection && notSkippedBkg && (keepAll || (keepOnlySignalMc && isMcCandidateSignal) || (keepOnlyBkg && !isMcCandidateSignal))) { |
| 935 | + if (passSelection && notSkippedBkg && (keepAll || (keepOnlySignalMc && isMcCandidateSignal) || (keepOnlyBkg && !isMcCandidateSignal) || (keepCorrBkgMC && isCorrBkg))) { |
933 | 936 | if (fillCandidateLiteTable) { |
934 | 937 | fillLiteTable<IsMc, reconstructionType>(candidate, candidateMlScore, candFlag); |
935 | 938 | } else { |
|
0 commit comments