Skip to content

Commit 6c2c131

Browse files
authored
Merge branch 'AliceO2Group:master' into tof-selection-dau-bach
2 parents 75f27d2 + 7c75e84 commit 6c2c131

26 files changed

Lines changed: 4054 additions & 805 deletions

CODEOWNERS

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,18 @@
5656
/PWGHF @alibuild @vkucera @fcolamar @fgrosa @fcatalan92 @mfaggin @mmazzilli @deepathoms @NicoleBastid @hahassan7 @jpxrk @apalasciano @zhangbiao-phy @gluparel @stefanopolitano @xinyepeng @singhra1994
5757
# PWG-LF
5858
/PWGLF @alibuild @omvazque @skundu692 @mpuccio
59-
/PWGLF/DataModel @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @fmazzasc @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
59+
/PWGLF/DataModel @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @mario-krueger @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
6060
/PWGLF/Tasks/GlobalEventProperties @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @omvazque
6161
/PWGLF/TableProducer/GlobalEventProperties @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @omvazque
62-
/PWGLF/Tasks/Nuspex @alibuild @omvazque @skundu692 @mpuccio @fmazzasc @maciacco @HorstMa
63-
/PWGLF/TableProducer/Nuspex @alibuild @omvazque @skundu692 @mpuccio @fmazzasc @maciacco @HorstMa
62+
/PWGLF/Tasks/Nuspex @alibuild @omvazque @skundu692 @mpuccio @mario-krueger @maciacco @HorstMa
63+
/PWGLF/TableProducer/Nuspex @alibuild @omvazque @skundu692 @mpuccio @mario-krueger @maciacco @HorstMa
6464
/PWGLF/Tasks/Resonances @alibuild @omvazque @skundu692 @mpuccio @dmallick2 @smaff92 @prottayCMT
6565
/PWGLF/TableProducer/Resonances @alibuild @omvazque @skundu692 @mpuccio @dmallick2 @smaff92 @prottayCMT
6666
/PWGLF/Tasks/Strangeness @alibuild @omvazque @skundu692 @mpuccio @ercolessi @romainschotter @lhusova
6767
/PWGLF/TableProducer/Strangeness @alibuild @omvazque @mpuccio @skundu692 @ercolessi @romainschotter @lhusova
68-
/PWGLF/TableProducer/QC @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @fmazzasc @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
69-
/PWGLF/Tasks/QC @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @fmazzasc @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
70-
/PWGLF/Utils @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @fmazzasc @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
68+
/PWGLF/TableProducer/QC @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @mario-krueger @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
69+
/PWGLF/Tasks/QC @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @mario-krueger @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
70+
/PWGLF/Utils @alibuild @omvazque @skundu692 @mpuccio @gbencedi @abmodak @mario-krueger @maciacco @HorstMa @dmallick2 @smaff92 @ercolessi @romainschotter @prottayCMT @lhusova
7171

7272
# PWG-MM (fused with LF, LF conveners included. Directories to be merged in the future)
7373
/PWGMM @alibuild @omvazque @mpuccio @skundu692 @aalkin @jgcn

PWGCF/Femto/Core/charmHadronBuilder.h

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ struct ConfD0Filters : o2::framework::ConfigurableGroup {
6060
// invariant-mass window
6161
o2::framework::Configurable<float> massMin{"massMin", 1.7f, "Minimum invariant mass for D0"};
6262
o2::framework::Configurable<float> massMax{"massMax", 2.0f, "Maximum invariant mass for D0"};
63+
o2::framework::Configurable<bool> rejectAmbiguousHypothesis{"rejectAmbiguousHypothesis", false, "Reject candidates selected under both D0 and D0bar hypotheses"};
6364
};
6465

6566
// derived selection bits for D0s
@@ -73,8 +74,9 @@ struct ConfD0Bits : o2::framework::ConfigurableGroup {
7374
};
7475

7576
// base selection for analysis task for D0s
77+
template <auto& Prefix>
7678
struct ConfD0Selection : o2::framework::ConfigurableGroup {
77-
std::string prefix = std::string("D0Selection");
79+
std::string prefix = Prefix;
7880
o2::framework::Configurable<int> pdgCodeAbs{"pdgCodeAbs", o2::constants::physics::Pdg::kD0, "PDG code (D0)"};
7981
o2::framework::Configurable<int> sign{"sign", 0, "Particle sign (+1: D0; -1: D0bar; 0: both)"};
8082
o2::framework::Configurable<float> ptMin{"ptMin", 1.f, "Minimum pT"};
@@ -91,6 +93,11 @@ struct ConfD0Selection : o2::framework::ConfigurableGroup {
9193
o2::framework::Configurable<datatypes::CharmHadronMaskType> mask{"mask", 0, "Bitmask for D0 selection"};
9294
};
9395

96+
constexpr const char PrefixD0Selection1[] = "D0Selection1";
97+
constexpr const char PrefixD0Selection2[] = "D0Selection2";
98+
using ConfD0Selection1 = ConfD0Selection<PrefixD0Selection1>;
99+
using ConfD0Selection2 = ConfD0Selection<PrefixD0Selection2>;
100+
94101
/// The different selections for D0s
95102
enum D0Sels {
96103
// topological selections
@@ -125,6 +132,7 @@ enum D0Filters {
125132
kYMax,
126133
kMassMin,
127134
kMassMax,
135+
kRejectAmbiguous,
128136
kD0FiltersMax
129137
};
130138

@@ -142,7 +150,8 @@ const std::unordered_map<D0Filters, std::string> d0FilterNames = {
142150
{kYMin, "Minimum rapidity"},
143151
{kYMax, "Maximum rapidity"},
144152
{kMassMin, "Minimum invariant mass"},
145-
{kMassMax, "Maximum invariant mass"}};
153+
{kMassMax, "Maximum invariant mass"},
154+
{kRejectAmbiguous, "Reject ambiguous D0/D0bar hypothesis"}};
146155

147156
template <modes::CharmHadron hadronType, auto& SelectionHistName, auto& FilterHistName>
148157
class D0Selection : public baseselection::BaseSelection<float, o2::analysis::femto::datatypes::CharmHadronMaskType, kD0SelsMax>
@@ -167,6 +176,7 @@ class D0Selection : public baseselection::BaseSelection<float, o2::analysis::fem
167176
mUseYCut = filter.useYCut.value;
168177
mYMin = filter.yMin.value;
169178
mYMax = filter.yMax.value;
179+
mRejectAmbiguousHypothesis = filter.rejectAmbiguousHypothesis.value;
170180

171181
this->addSelection(kCpaMin, d0SelectionNames.at(kCpaMin), config.cpaMin.value, limits::kLowerLimit, true, true, false);
172182
this->addSelection(kDecayLengthMin, d0SelectionNames.at(kDecayLengthMin), config.decayLengthMin.value, limits::kLowerLimit, true, true, false);
@@ -189,6 +199,7 @@ class D0Selection : public baseselection::BaseSelection<float, o2::analysis::fem
189199
{d0FilterNames.at(kYMax), mYMax},
190200
{d0FilterNames.at(kMassMin), mMassMin},
191201
{d0FilterNames.at(kMassMax), mMassMax},
202+
{d0FilterNames.at(kRejectAmbiguous), static_cast<float>(mRejectAmbiguousHypothesis)},
192203
});
193204
}
194205

@@ -223,6 +234,16 @@ class D0Selection : public baseselection::BaseSelection<float, o2::analysis::fem
223234
this->template fillFilter<FilterHistName>(kHypothesis, p);
224235
pass &= p;
225236

237+
bool competing = false;
238+
if constexpr (modes::isEqual(hadronType, modes::CharmHadron::kD0)) {
239+
competing = d0candidate.isSelD0bar();
240+
} else {
241+
competing = d0candidate.isSelD0();
242+
}
243+
p = !mRejectAmbiguousHypothesis || !competing;
244+
this->template fillFilter<FilterHistName>(kRejectAmbiguous, p);
245+
pass &= p;
246+
226247
p = d0candidate.pt() > mPtMin;
227248
this->template fillFilter<FilterHistName>(kPtMin, p);
228249
pass &= p;
@@ -286,6 +307,7 @@ class D0Selection : public baseselection::BaseSelection<float, o2::analysis::fem
286307
bool mUseYCut = true;
287308
float mYMin = -0.8f;
288309
float mYMax = 0.8f;
310+
bool mRejectAmbiguousHypothesis = false;
289311
};
290312

291313
// tables produced by the D0 builder: kinematics, bitmask and QA

PWGCF/Femto/Core/charmHadronHistManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@ struct ConfD0Binning : o2::framework::ConfigurableGroup {
9494
#undef CHARMHADRON_DEFAULT_BINNING
9595

9696
constexpr const char PrefixD0Binning1[] = "D0Binning1";
97+
constexpr const char PrefixD0Binning2[] = "D0Binning2";
9798
using ConfD0Binning1 = ConfD0Binning<PrefixD0Binning1>;
99+
using ConfD0Binning2 = ConfD0Binning<PrefixD0Binning2>;
98100

99101
template <auto& Prefix>
100102
struct ConfD0QaBinning : o2::framework::ConfigurableGroup {

PWGCF/Femto/Core/closePairRejection.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ struct ConfCpr : o2::framework::ConfigurableGroup {
8484
constexpr const char PrefixCprTrackTrack[] = "CprTrackTrack";
8585
constexpr const char PrefixCprTrackV0Daughter[] = "CprTrackV0Daughter";
8686
constexpr const char PrefixCprTrackD0Daughter[] = "CprTrackD0Daughter";
87+
constexpr const char PrefixCprD0DaughterD0DaughterPos[] = "CprD0DaughterD0DaughterPos";
88+
constexpr const char PrefixCprD0DaughterD0DaughterNeg[] = "CprD0DaughterD0DaughterNeg";
8789
constexpr const char PrefixCprTrackResonanceDaughter[] = "CprTrackResonanceDaughter";
8890
constexpr const char PrefixCprTrackKinkDaughter[] = "CprTrackKinkDaughter";
8991
constexpr const char PrefixCprV0DaughterV0DaughterPos[] = "CprV0DaughterV0DaughterPos";
@@ -96,6 +98,8 @@ constexpr const char PrefixCprTrackCascadeBachelor[] = "CprTrackCascadeBachelor"
9698
using ConfCprTrackTrack = ConfCpr<PrefixCprTrackTrack>;
9799
using ConfCprTrackV0Daughter = ConfCpr<PrefixCprTrackV0Daughter>;
98100
using ConfCprTrackD0Daughter = ConfCpr<PrefixCprTrackD0Daughter>;
101+
using ConfCprD0DaugherD0DaughterPos = ConfCpr<PrefixCprD0DaughterD0DaughterPos>;
102+
using ConfCprD0DaugherD0DaughterNeg = ConfCpr<PrefixCprD0DaughterD0DaughterNeg>;
99103
using ConfCprTrackResonanceDaughter = ConfCpr<PrefixCprTrackResonanceDaughter>;
100104
using ConfCprTrackKinkDaughter = ConfCpr<PrefixCprTrackKinkDaughter>;
101105
using ConfCprV0DaugherV0DaughterPos = ConfCpr<PrefixCprV0DaughterV0DaughterPos>;
@@ -115,6 +119,10 @@ constexpr char PrefixTrackV0DaughterSe[] = "CPR_TrackV0Dau/SE/";
115119
constexpr char PrefixTrackV0DaughterMe[] = "CPR_TrackV0Dau/ME/";
116120
constexpr char PrefixTrackD0DaughterSe[] = "CPR_TrackD0Dau/SE/";
117121
constexpr char PrefixTrackD0DaughterMe[] = "CPR_TrackD0Dau/ME/";
122+
constexpr char PrefixD0D0PosSe[] = "CPR_D0D0_PosDau/SE/";
123+
constexpr char PrefixD0D0NegSe[] = "CPR_D0D0_NegDau/SE/";
124+
constexpr char PrefixD0D0PosMe[] = "CPR_D0D0_PosDau/ME/";
125+
constexpr char PrefixD0D0NegMe[] = "CPR_D0D0_NegDau/ME/";
118126
constexpr char PrefixV0V0PosSe[] = "CPR_V0V0_PosDau/SE/";
119127
constexpr char PrefixV0V0NegSe[] = "CPR_V0V0_NegDau/SE/";
120128
constexpr char PrefixV0V0PosMe[] = "CPR_V0V0_PosDau/ME/";

0 commit comments

Comments
 (0)