Skip to content

Commit e9a6946

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents a08db2b + 572c4a9 commit e9a6946

74 files changed

Lines changed: 7589 additions & 2418 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Common/Tasks/centralityQa.cxx

Lines changed: 233 additions & 71 deletions
Large diffs are not rendered by default.

Common/Tasks/centralityStudy.cxx

Lines changed: 158 additions & 68 deletions
Large diffs are not rendered by default.

PWGCF/EbyEFluctuations/Tasks/partNumFluc.cxx

Lines changed: 194 additions & 457 deletions
Large diffs are not rendered by default.

PWGCF/Femto/Core/closePairRejection.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ constexpr const char PrefixCprTrackResonanceDaughter[] = "CprTrackResonanceDaugh
8888
constexpr const char PrefixCprTrackKinkDaughter[] = "CprTrackKinkDaughter";
8989
constexpr const char PrefixCprV0DaughterV0DaughterPos[] = "CprV0DaughterV0DaughterPos";
9090
constexpr const char PrefixCprV0DaughterV0DaughterNeg[] = "CprV0DaughterV0DaughterNeg";
91+
constexpr const char PrefixCprV0DaughterResoDaughterPos[] = "CprV0DaughterResoDaughterPos";
92+
constexpr const char PrefixCprV0DaughterResoDaughterNeg[] = "CprV0DaughterResoDaughterNeg";
9193
constexpr const char PrefixCprTrackCascadeBachelor[] = "CprTrackCascadeBachelor";
9294

9395
// pairs
@@ -97,6 +99,8 @@ using ConfCprTrackResonanceDaughter = ConfCpr<PrefixCprTrackResonanceDaughter>;
9799
using ConfCprTrackKinkDaughter = ConfCpr<PrefixCprTrackKinkDaughter>;
98100
using ConfCprV0DaugherV0DaughterPos = ConfCpr<PrefixCprV0DaughterV0DaughterPos>;
99101
using ConfCprV0DaugherV0DaughterNeg = ConfCpr<PrefixCprV0DaughterV0DaughterNeg>;
102+
using ConfCprV0DaughterResoDaughterPos = ConfCpr<PrefixCprV0DaughterResoDaughterPos>;
103+
using ConfCprV0DaughterResoDaughterNeg = ConfCpr<PrefixCprV0DaughterResoDaughterNeg>;
100104
using ConfCprTrackCascadeBachelor = ConfCpr<PrefixCprTrackCascadeBachelor>;
101105

102106
// tpc radii for computing phistar
@@ -112,6 +116,10 @@ constexpr char PrefixV0V0PosSe[] = "CPR_V0V0_PosDau/SE/";
112116
constexpr char PrefixV0V0NegSe[] = "CPR_V0V0_NegDau/SE/";
113117
constexpr char PrefixV0V0PosMe[] = "CPR_V0V0_PosDau/ME/";
114118
constexpr char PrefixV0V0NegMe[] = "CPR_V0V0_NegDau/ME/";
119+
constexpr char PrefixV0TwoTrackResonancePosSe[] = "CPR_V0Resonance_PosDau/SE/";
120+
constexpr char PrefixV0TwoTrackResonanceNegSe[] = "CPR_V0Resonance_NegDau/SE/";
121+
constexpr char PrefixV0TwoTrackResonancePosMe[] = "CPR_V0Resonance_PosDau/ME/";
122+
constexpr char PrefixV0TwoTrackResonanceNegMe[] = "CPR_V0Resonance_NegDau/ME/";
115123
constexpr char PrefixTrackTwoTrackResonanceSe[] = "CPR_TrackResonanceDau/SE/";
116124
constexpr char PrefixTrackTwoTrackResonanceMe[] = "CPR_TrackResonanceDau/ME/";
117125
constexpr char PrefixTrackCascadeBachelorSe[] = "CPR_TrackCascadeBachelor/SE/";

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,130 @@ class PairTrackTwoTrackResonanceBuilder
820820
int mMixingDepth = 5;
821821
};
822822

823+
template <const char* prefixV0,
824+
const char* prefixV0PosDau,
825+
const char* prefixV0NegDau,
826+
const char* prefixResonance,
827+
const char* prefixResonancePosDau,
828+
const char* prefixResonanceNegDau,
829+
const char* prefixSe,
830+
const char* prefixMe,
831+
const char* prefixCprPosSe,
832+
const char* prefixCprNegSe,
833+
const char* prefixCprPosMe,
834+
const char* prefixCprNegMe,
835+
modes::V0 v0Type,
836+
modes::TwoTrackResonance resonanceType>
837+
class PairV0TwoTrackResonanceBuilder
838+
{
839+
public:
840+
PairV0TwoTrackResonanceBuilder() = default;
841+
~PairV0TwoTrackResonanceBuilder() = default;
842+
843+
template <modes::Mode modeSe,
844+
modes::Mode modeMe,
845+
typename T1,
846+
typename T2,
847+
typename T3,
848+
typename T4,
849+
typename T5,
850+
typename T6,
851+
typename T7,
852+
typename T8,
853+
typename T9,
854+
typename T10,
855+
typename T11,
856+
typename T12,
857+
typename T13,
858+
typename T14,
859+
typename T15,
860+
typename T16,
861+
typename T17,
862+
typename T18>
863+
void init(o2::framework::HistogramRegistry* registry,
864+
T1 const& confCollisionBinning,
865+
T2 const& confV0Selection,
866+
T3 const& confResonanceSelection,
867+
T4 const& confCprPos,
868+
T5 const& confCprNeg,
869+
T6 const& confMixing,
870+
T7 const& confPairBinning,
871+
T8 const& confPairCuts,
872+
std::map<T9, std::vector<o2::framework::AxisSpec>> const& colHistSpec,
873+
std::map<T10, std::vector<o2::framework::AxisSpec>> const& v0HistSpec,
874+
std::map<T11, std::vector<o2::framework::AxisSpec>> const& V0posDauHistSpec,
875+
std::map<T12, std::vector<o2::framework::AxisSpec>> const& V0negDauHistSpec,
876+
std::map<T13, std::vector<o2::framework::AxisSpec>> const& resonanceHistSpec,
877+
std::map<T14, std::vector<o2::framework::AxisSpec>> const& ResonancePosDauHistSpec,
878+
std::map<T15, std::vector<o2::framework::AxisSpec>> const& ResonanceNegDauHistSpec,
879+
std::map<T16, std::vector<o2::framework::AxisSpec>> const& pairHistSpec,
880+
std::map<T17, std::vector<o2::framework::AxisSpec>> const& cprHistSpecPos,
881+
std::map<T18, std::vector<o2::framework::AxisSpec>> const& cprHistSpecNeg)
882+
{
883+
mColHistManager.template init<modeSe>(registry, colHistSpec, confCollisionBinning);
884+
885+
mV0HistManager.template init<modeSe>(registry, v0HistSpec, confV0Selection, V0posDauHistSpec, V0negDauHistSpec);
886+
mResonanceHistManager.template init<modeSe>(registry, resonanceHistSpec, confResonanceSelection, ResonancePosDauHistSpec, ResonanceNegDauHistSpec);
887+
888+
mPairHistManagerSe.template init<modeSe>(registry, pairHistSpec, confPairBinning, confPairCuts, confMixing);
889+
mPairHistManagerSe.setMass(confV0Selection.pdgCodeAbs.value, confResonanceSelection.pdgCodeAbs.value);
890+
mPairHistManagerSe.setCharge(1, 1); // set charge to 1
891+
mCprSe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprNeg);
892+
893+
mPairHistManagerMe.template init<modeMe>(registry, pairHistSpec, confPairBinning, confPairCuts, confMixing);
894+
mPairHistManagerMe.setMass(confV0Selection.pdgCodeAbs.value, confResonanceSelection.pdgCodeAbs.value);
895+
mPairHistManagerMe.setCharge(1, 1); // set charge to 1
896+
mCprMe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprNeg);
897+
898+
// setup mixing
899+
mMixingPolicy = static_cast<pairhistmanager::MixingPolicy>(confMixing.policy.value);
900+
mMixingDepth = confMixing.depth.value;
901+
}
902+
903+
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5>
904+
void processSameEvent(T1 const& col, T2& trackTable, T3& v0Partition, T4& resonancePartition, T5& cache)
905+
{
906+
auto v0Slice = v0Partition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
907+
auto resonanaceSlice = resonancePartition->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
908+
if (v0Slice.size() < nLimitPartitionParticles || resonanaceSlice.size() < nLimitPartitionParticles) {
909+
return;
910+
}
911+
mColHistManager.template fill<mode>(col);
912+
mCprSe.setMagField(col.magField());
913+
pairprocesshelpers::processSameEvent<mode>(v0Slice, resonanaceSlice, trackTable, col, mV0HistManager, mResonanceHistManager, mPairHistManagerSe, mCprSe, mPc);
914+
}
915+
916+
template <modes::Mode mode, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
917+
void processMixedEvent(T1 const& cols, T2& trackTable, T3& v0Partition, T4& resonancePartition, T5& cache, T6& binsVtxMult, T7& binsVtxCent, T8& binsVtxMultCent)
918+
{
919+
switch (mMixingPolicy) {
920+
case static_cast<int>(pairhistmanager::kVtxMult):
921+
pairprocesshelpers::processMixedEvent<mode>(cols, v0Partition, resonancePartition, trackTable, cache, binsVtxMult, mMixingDepth, mPairHistManagerMe, mCprMe, mPc);
922+
break;
923+
case static_cast<int>(pairhistmanager::kVtxCent):
924+
pairprocesshelpers::processMixedEvent<mode>(cols, v0Partition, resonancePartition, trackTable, cache, binsVtxCent, mMixingDepth, mPairHistManagerMe, mCprMe, mPc);
925+
break;
926+
case static_cast<int>(pairhistmanager::kVtxMultCent):
927+
pairprocesshelpers::processMixedEvent<mode>(cols, v0Partition, resonancePartition, trackTable, cache, binsVtxMultCent, mMixingDepth, mPairHistManagerMe, mCprMe, mPc);
928+
break;
929+
default:
930+
LOG(fatal) << "Invalid binning policiy specifed. Breaking...";
931+
}
932+
}
933+
934+
private:
935+
colhistmanager::CollisionHistManager mColHistManager;
936+
v0histmanager::V0HistManager<prefixV0, prefixV0PosDau, prefixV0NegDau, v0Type> mV0HistManager;
937+
twotrackresonancehistmanager::TwoTrackResonanceHistManager<prefixResonance, prefixResonancePosDau, prefixResonanceNegDau, resonanceType> mResonanceHistManager;
938+
pairhistmanager::PairHistManager<prefixSe, modes::Particle::kV0, modes::Particle::kTwoTrackResonance> mPairHistManagerSe;
939+
pairhistmanager::PairHistManager<prefixMe, modes::Particle::kV0, modes::Particle::kTwoTrackResonance> mPairHistManagerMe;
940+
closepairrejection::ClosePairRejectionV0V0<prefixCprPosSe, prefixCprNegSe> mCprSe; // cpr for twotrackresonances and v0 work the same way
941+
closepairrejection::ClosePairRejectionV0V0<prefixCprPosMe, prefixCprNegMe> mCprMe; // cpr for twotrackresonances and v0 work the same way
942+
paircleaner::V0V0PairCleaner mPc; // pc for twotrackresonances and v0 work the same way
943+
pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult;
944+
int mMixingDepth = 5;
945+
};
946+
823947
template <const char* prefixTrack,
824948
const char* prefixKink,
825949
const char* prefixChaDau,

PWGCF/Femto/Core/pairCleaner.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class TrackTrackPairCleaner : public BasePairCleaner
111111
}
112112
};
113113

114-
class V0V0PairCleaner : public BasePairCleaner
114+
class V0V0PairCleaner : public BasePairCleaner // also works for particles decaying into a positive and negative daughter, like resonances
115115
{
116116
public:
117117
V0V0PairCleaner() = default;
@@ -122,7 +122,9 @@ class V0V0PairCleaner : public BasePairCleaner
122122
auto negDaughter1 = trackTable.rawIteratorAt(v01.negDauId() - trackTable.offset());
123123
auto posDaughter2 = trackTable.rawIteratorAt(v02.posDauId() - trackTable.offset());
124124
auto negDaughter2 = trackTable.rawIteratorAt(v02.negDauId() - trackTable.offset());
125-
return this->isCleanTrackPair(posDaughter1, posDaughter2) && this->isCleanTrackPair(negDaughter1, negDaughter2);
125+
// check all charge combinations
126+
return this->isCleanTrackPair(posDaughter1, posDaughter2) && this->isCleanTrackPair(negDaughter1, negDaughter2) &&
127+
this->isCleanTrackPair(posDaughter1, negDaughter2) && this->isCleanTrackPair(negDaughter1, posDaughter2);
126128
}
127129

128130
template <typename T1, typename T2, typename T3, typename T4>

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,9 @@ constexpr char PrefixV0V0Me[] = "V0V0/ME/";
351351
constexpr char PrefixTrackResonanceSe[] = "TrackResonance/SE/";
352352
constexpr char PrefixTrackResonanceMe[] = "TrackResonance/ME/";
353353

354+
constexpr char PrefixV0ResonanceSe[] = "V0Resonance/SE/";
355+
constexpr char PrefixV0ResonanceMe[] = "V0Resonance/ME/";
356+
354357
constexpr char PrefixTrackCascadeSe[] = "TrackCascade/SE/";
355358
constexpr char PrefixTrackCascadeMe[] = "TrackCascade/ME/";
356359

PWGCF/Femto/Core/particleCleaner.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,17 +209,16 @@ class ParticleCleaner
209209

210210
return hasRequiredPdgCode && !hasRejectedPdgCode &&
211211
hasMotherWithRequiredPdgCode && !hasMotherWithRejectedPdgCode &&
212-
hasPartonicMotherWithRequiredPdgCode &&
213-
!hasPartonicMotherWithRejectedPdgCode;
212+
hasPartonicMotherWithRequiredPdgCode && !hasPartonicMotherWithRejectedPdgCode;
214213
}
215214

216215
private:
217216
bool mActivate = false;
218217
bool mRejectParticleWithoutMcParticle = true;
219218
bool mRejectParticleWithoutMcMother = true;
220219
bool mRejectParticleWithoutMcPartonicMother = true;
221-
std::vector<int> mRequiredPdgCodes = {};
222-
std::vector<int> mRejectedPdgCodes = {};
220+
std::vector<int> mRequiredPdgCodes{};
221+
std::vector<int> mRejectedPdgCodes{};
223222
std::vector<int> mRequiredMotherPdgCodes{};
224223
std::vector<int> mRejectedMotherPdgCodes{};
225224
std::vector<int> mRequiredPartonicMotherPdgCodes{};

PWGCF/Femto/Core/twoTrackResonanceBuilder.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ class TwoTrackResonanceBuilder
210210
return ((mMass > mMassMin && mMass < mMassMax) &&
211211
(mPt > mPtMin && mPt < mPtMax) &&
212212
(mEta > mEtaMin && mEta < mEtaMax) &&
213-
(mPhi > mPhiMin && mPhi < mPhiMax));
213+
(mPhi >= mPhiMin && mPhi < mPhiMax));
214214
}
215215

216216
template <typename T1, typename T2, typename T3, typename T4>
@@ -278,7 +278,7 @@ class TwoTrackResonanceBuilder
278278
if constexpr (modes::isEqual(resoType, modes::TwoTrackResonance::kKstar0Bar)) {
279279
if (mProduceKstar0s) {
280280
resonanceProducts.producedKstars(col.globalIndex(),
281-
mPt,
281+
-1.f * mPt,
282282
mEta,
283283
mPhi,
284284
mMass,

PWGCF/Femto/Core/twoTrackResonanceHistManager.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,11 @@ class TwoTrackResonanceHistManager
161161
negDauPdgCodeAbs = std::abs(PDG_t::kPiMinus);
162162
} else {
163163
mPdgCode = -1 * mPdgCode;
164-
posDauPdgCodeAbs = std::abs(PDG_t::kKMinus);
165-
negDauPdgCodeAbs = std::abs(PDG_t::kPiPlus);
164+
posDauPdgCodeAbs = std::abs(PDG_t::kPiPlus);
165+
negDauPdgCodeAbs = std::abs(PDG_t::kKMinus);
166166
}
167167
} else {
168-
LOG(fatal) << "PDG code for V0 has to be either Lambda or K0short";
168+
LOG(fatal) << "PDG code for Resonance has to be either Phi, Rho or K*0";
169169
}
170170

171171
mPosDauManager.template init<mode>(registry, PosDauSpecs, absCharge, signPlus, posDauPdgCodeAbs);

0 commit comments

Comments
 (0)