Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
396 changes: 159 additions & 237 deletions PWGCF/Femto/Core/closePairRejection.h

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions PWGCF/Femto/Core/femtoUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@
#ifndef PWGCF_FEMTO_CORE_FEMTOUTILS_H_
#define PWGCF_FEMTO_CORE_FEMTOUTILS_H_

#include "RecoDecay.h"

#include "Common/Core/TableHelper.h"

#include "CommonConstants/MathConstants.h"
#include "CommonConstants/PhysicsConstants.h"
#include "Framework/InitContext.h"

Expand Down Expand Up @@ -172,8 +175,8 @@ float qn(T const& col)
inline std::optional<float> dphistar(float magfield, float radius, float signedPt, float phi)
{
float arg = 0.3f * (0.1f * magfield) * (0.01 * radius) / (2.f * signedPt);
if (std::fabs(arg) < 1.f) {
return phi - std::asin(arg);
if (std::fabs(arg) <= 1.f) {
return RecoDecay::constrainAngle(phi - std::asin(arg));
}
return std::nullopt;
}
Expand Down
102 changes: 52 additions & 50 deletions PWGCF/Femto/Core/pairBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,21 +239,25 @@ class PairV0V0Builder
typename T10,
typename T11,
typename T12,
typename T13>
typename T13,
typename T14,
typename T15>
void init(o2::framework::HistogramRegistry* registry,
T1 const& confV0Selection1,
T2 const& confV0Selection2,
T3 const& confCpr,
T4 const& confMixing,
T5 const& confPairBinning,
T6 const& confPairCuts,
std::map<T7, std::vector<framework::AxisSpec>>& colHistSpec,
std::map<T8, std::vector<framework::AxisSpec>>& V0HistSpec1,
std::map<T9, std::vector<framework::AxisSpec>>& V0HistSpec2,
std::map<T10, std::vector<framework::AxisSpec>>& PosDauHistSpec,
std::map<T11, std::vector<framework::AxisSpec>>& NegDauHistSpec,
std::map<T12, std::vector<framework::AxisSpec>>& pairHistSpec,
std::map<T13, std::vector<framework::AxisSpec>>& cprHistSpec)
T3 const& confCprPos,
T4 const& confCprNeg,
T5 const& confMixing,
T6 const& confPairBinning,
T7 const& confPairCuts,
std::map<T8, std::vector<framework::AxisSpec>> const& colHistSpec,
std::map<T9, std::vector<framework::AxisSpec>> const& V0HistSpec1,
std::map<T10, std::vector<framework::AxisSpec>> const& V0HistSpec2,
std::map<T11, std::vector<framework::AxisSpec>> const& PosDauHistSpec,
std::map<T12, std::vector<framework::AxisSpec>> const& NegDauHistSpec,
std::map<T13, std::vector<framework::AxisSpec>> const& pairHistSpec,
std::map<T14, std::vector<framework::AxisSpec>> const& cprHistSpecPos,
std::map<T15, std::vector<framework::AxisSpec>> const& cprHistSpecNeg)
{

// check if correlate the same tracks or not
Expand All @@ -268,22 +272,22 @@ class PairV0V0Builder

mPairHistManagerSe.setMass(confV0Selection1.pdgCode.value, confV0Selection1.pdgCode.value);
mPairHistManagerSe.setCharge(1, 1);
mCprSe.init(registry, cprHistSpec, confCpr);
mCprSe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprPos);

mPairHistManagerMe.setMass(confV0Selection1.pdgCode.value, confV0Selection1.pdgCode.value);
mPairHistManagerMe.setCharge(1, 1);
mCprMe.init(registry, cprHistSpec, confCpr);
mCprMe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprNeg);
} else {
mV0HistManager1.init(registry, V0HistSpec1, PosDauHistSpec, NegDauHistSpec);
mV0HistManager2.init(registry, V0HistSpec2, PosDauHistSpec, NegDauHistSpec);

mPairHistManagerSe.setMass(confV0Selection1.pdgCode.value, confV0Selection2.pdgCode.value);
mPairHistManagerSe.setCharge(1, 1);
mCprSe.init(registry, cprHistSpec, confCpr);
mCprSe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprNeg);

mPairHistManagerMe.setMass(confV0Selection1.pdgCode.value, confV0Selection2.pdgCode.value);
mPairHistManagerMe.setCharge(1, 1);
mCprMe.init(registry, cprHistSpec, confCpr);
mCprMe.init(registry, cprHistSpecPos, cprHistSpecNeg, confCprPos, confCprNeg);
}

// setup mixing
Expand Down Expand Up @@ -384,10 +388,8 @@ template <
const char* prefixNegDau,
const char* prefixSe,
const char* prefixMe,
const char* prefixCprSameChargeSe,
const char* prefixCprSameChargeMe,
const char* prefixCprOppositeChargeSe,
const char* prefixCprOppositeChargeMe,
const char* prefixCprSe,
const char* prefixCprMe,
modes::Mode mode,
modes::V0 v0Type>
class PairTrackV0Builder
Expand Down Expand Up @@ -481,8 +483,8 @@ class PairTrackV0Builder
v0histmanager::V0HistManager<prefixV0, prefixPosDau, prefixNegDau, mode, v0Type> mV0HistManager;
pairhistmanager::PairHistManager<prefixSe, modes::Particle::kTrack, modes::Particle::kV0, mode> mPairHistManagerSe;
pairhistmanager::PairHistManager<prefixMe, modes::Particle::kTrack, modes::Particle::kV0, mode> mPairHistManagerMe;
closepairrejection::ClosePairRejectionTrackV0<prefixCprSameChargeSe, prefixCprOppositeChargeSe> mCprSe;
closepairrejection::ClosePairRejectionTrackV0<prefixCprSameChargeMe, prefixCprOppositeChargeMe> mCprMe;
closepairrejection::ClosePairRejectionTrackV0<prefixCprSe> mCprSe;
closepairrejection::ClosePairRejectionTrackV0<prefixCprMe> mCprMe;
paircleaner::TrackV0PairCleaner mPc;
pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult;
int mMixingDepth = 5;
Expand All @@ -495,10 +497,8 @@ template <
const char* prefixNegDau,
const char* prefixSe,
const char* prefixMe,
const char* prefixCprSameChargeSe,
const char* prefixCprSameChargeMe,
const char* prefixCprOppositeChargeSe,
const char* prefixCprOppositeChargeMe,
const char* prefixCprSe,
const char* prefixCprMe,
modes::Mode mode,
modes::TwoTrackResonance resonanceType>
class PairTrackTwoTrackResonanceBuilder
Expand Down Expand Up @@ -592,9 +592,9 @@ class PairTrackTwoTrackResonanceBuilder
twotrackresonancehistmanager::TwoTrackResonanceHistManager<prefixResonance, prefixPosDau, prefixNegDau, mode, resonanceType> mResonanceHistManager;
pairhistmanager::PairHistManager<prefixSe, modes::Particle::kTrack, modes::Particle::kTwoTrackResonance, mode> mPairHistManagerSe;
pairhistmanager::PairHistManager<prefixMe, modes::Particle::kTrack, modes::Particle::kTwoTrackResonance, mode> mPairHistManagerMe;
closepairrejection::ClosePairRejectionTrackV0<prefixCprSameChargeSe, prefixCprOppositeChargeSe> mCprSe; // cpr for twotrackresonances and v0 work the same way
closepairrejection::ClosePairRejectionTrackV0<prefixCprSameChargeMe, prefixCprOppositeChargeMe> mCprMe; // cpr for twotrackresonances and v0 work the same way
paircleaner::TrackV0PairCleaner mPc; // pc for twotrackresonances and v0 work the same way
closepairrejection::ClosePairRejectionTrackV0<prefixCprSe> mCprSe; // cpr for twotrackresonances and v0 work the same way
closepairrejection::ClosePairRejectionTrackV0<prefixCprMe> mCprMe; // cpr for twotrackresonances and v0 work the same way
paircleaner::TrackV0PairCleaner mPc; // pc for twotrackresonances and v0 work the same way
pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult;
int mMixingDepth = 5;
};
Expand Down Expand Up @@ -714,11 +714,9 @@ template <
const char* prefixSe,
const char* prefixMe,
const char* prefixCprBachelorSe,
const char* prefixCprSameChargeSe,
const char* prefixCprOppositeChargeSe,
const char* prefixCprV0DaughterSe,
const char* prefixCprBachelorMe,
const char* prefixCprSameChargeMe,
const char* prefixCprOppositeChargeMe,
const char* prefixCprV0DaughterMe,
modes::Mode mode,
modes::Cascade cascadeType>
class PairTrackCascadeBuilder
Expand All @@ -740,22 +738,26 @@ class PairTrackCascadeBuilder
typename T11,
typename T12,
typename T13,
typename T14>
typename T14,
typename T15,
typename T16>
void init(o2::framework::HistogramRegistry* registry,
T1 const& confTrackSelection,
T2 const& confCascadeSelection,
T3 const& confCpr,
T4 const& confMixing,
T5 const& confPairBinning,
T6 const& confPairCuts,
std::map<T7, std::vector<framework::AxisSpec>> const& colHistSpec,
std::map<T8, std::vector<framework::AxisSpec>> const& trackHistSpec,
std::map<T9, std::vector<framework::AxisSpec>> const& cascadeHistSpec,
std::map<T10, std::vector<framework::AxisSpec>> const& bachelorHistSpec,
std::map<T11, std::vector<framework::AxisSpec>> const& posDauHistSpec,
std::map<T12, std::vector<framework::AxisSpec>> const& negDauHistSpec,
std::map<T13, std::vector<framework::AxisSpec>> const& pairHistSpec,
std::map<T14, std::vector<framework::AxisSpec>> const& cprHistSpec)
T3 const& confCprBachelor,
T4 const& confCprV0Daughter,
T5 const& confMixing,
T6 const& confPairBinning,
T7 const& confPairCuts,
std::map<T8, std::vector<framework::AxisSpec>> const& colHistSpec,
std::map<T9, std::vector<framework::AxisSpec>> const& trackHistSpec,
std::map<T10, std::vector<framework::AxisSpec>> const& cascadeHistSpec,
std::map<T11, std::vector<framework::AxisSpec>> const& bachelorHistSpec,
std::map<T12, std::vector<framework::AxisSpec>> const& posDauHistSpec,
std::map<T13, std::vector<framework::AxisSpec>> const& negDauHistSpec,
std::map<T14, std::vector<framework::AxisSpec>> const& pairHistSpec,
std::map<T15, std::vector<framework::AxisSpec>> const& cprHistSpecBachelor,
std::map<T16, std::vector<framework::AxisSpec>> const& cprHistSpecV0Daughter)
{
mColHistManager.init(registry, colHistSpec);

Expand All @@ -765,12 +767,12 @@ class PairTrackCascadeBuilder
mPairHistManagerSe.init(registry, pairHistSpec, confPairBinning, confPairCuts);
mPairHistManagerSe.setMass(confTrackSelection.pdgCode.value, confCascadeSelection.pdgCode.value);
mPairHistManagerSe.setCharge(confTrackSelection.chargeAbs.value, 1);
mCprSe.init(registry, cprHistSpec, confCpr, confTrackSelection.chargeAbs.value);
mCprSe.init(registry, cprHistSpecBachelor, cprHistSpecV0Daughter, confCprBachelor, confCprV0Daughter, confTrackSelection.chargeAbs.value);

mPairHistManagerMe.init(registry, pairHistSpec, confPairBinning, confPairCuts);
mPairHistManagerMe.setMass(confTrackSelection.pdgCode.value, confCascadeSelection.pdgCode.value);
mPairHistManagerMe.setCharge(confTrackSelection.chargeAbs.value, 1);
mCprMe.init(registry, cprHistSpec, confCpr, confTrackSelection.chargeAbs.value);
mCprMe.init(registry, cprHistSpecBachelor, cprHistSpecV0Daughter, confCprBachelor, confCprV0Daughter, confTrackSelection.chargeAbs.value);

// setup mixing
mMixingPolicy = static_cast<pairhistmanager::MixingPolicy>(confMixing.policy.value);
Expand Down Expand Up @@ -814,8 +816,8 @@ class PairTrackCascadeBuilder
cascadehistmanager::CascadeHistManager<prefixCascade, prefixBachelor, prefixPosDau, prefixNegDau, mode, cascadeType> mCascadeHistManager;
pairhistmanager::PairHistManager<prefixSe, modes::Particle::kTrack, modes::Particle::kCascade, mode> mPairHistManagerSe;
pairhistmanager::PairHistManager<prefixMe, modes::Particle::kTrack, modes::Particle::kCascade, mode> mPairHistManagerMe;
closepairrejection::ClosePairRejectionTrackCascade<prefixCprBachelorSe, prefixCprSameChargeSe, prefixCprOppositeChargeSe> mCprSe;
closepairrejection::ClosePairRejectionTrackCascade<prefixCprBachelorMe, prefixCprSameChargeMe, prefixCprOppositeChargeMe> mCprMe;
closepairrejection::ClosePairRejectionTrackCascade<prefixCprBachelorSe, prefixCprV0DaughterSe> mCprSe;
closepairrejection::ClosePairRejectionTrackCascade<prefixCprBachelorMe, prefixCprV0DaughterMe> mCprMe;
paircleaner::TrackCascadePairCleaner mPc;
pairhistmanager::MixingPolicy mMixingPolicy = pairhistmanager::MixingPolicy::kVtxMult;
int mMixingDepth = 5;
Expand Down
28 changes: 14 additions & 14 deletions PWGCF/Femto/Core/pairCleaner.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,12 @@ class V0V0PairCleaner : public BasePairCleaner
public:
V0V0PairCleaner() = default;
template <typename T1, typename T2, typename T3>
bool isCleanPair(const T1& v01, const T2& v02, const T3& /*tracks*/) const
bool isCleanPair(const T1& v01, const T2& v02, const T3& trackTable) const
{
auto posDaughter1 = v01.template posDau_as<T3>();
auto negDaughter1 = v01.template negDau_as<T3>();
auto posDaughter2 = v02.template posDau_as<T3>();
auto negDaughter2 = v02.template negDau_as<T3>();
auto posDaughter1 = trackTable.rawIteratorAt(v01.posDauId() - trackTable.offset());
auto negDaughter1 = trackTable.rawIteratorAt(v01.negDauId() - trackTable.offset());
auto posDaughter2 = trackTable.rawIteratorAt(v02.posDauId() - trackTable.offset());
auto negDaughter2 = trackTable.rawIteratorAt(v02.negDauId() - trackTable.offset());
return this->isCleanTrackPair(posDaughter1, posDaughter2) && this->isCleanTrackPair(negDaughter1, negDaughter2);
}
};
Expand All @@ -66,10 +66,10 @@ class TrackV0PairCleaner : public BasePairCleaner // also works for particles de
public:
TrackV0PairCleaner() = default;
template <typename T1, typename T2, typename T3>
bool isCleanPair(const T1& track, const T2& v0, const T3& /*trackTable*/) const
bool isCleanPair(const T1& track, const T2& v0, const T3& trackTable) const
{
auto posDaughter = v0.template posDau_as<T3>();
auto negDaughter = v0.template negDau_as<T3>();
auto posDaughter = trackTable.rawIteratorAt(v0.posDauId() - trackTable.offset());
auto negDaughter = trackTable.rawIteratorAt(v0.negDauId() - trackTable.offset());
return (this->isCleanTrackPair(posDaughter, track) && this->isCleanTrackPair(negDaughter, track));
}
};
Expand All @@ -79,9 +79,9 @@ class TrackKinkPairCleaner : public BasePairCleaner
public:
TrackKinkPairCleaner() = default;
template <typename T1, typename T2, typename T3>
bool isCleanPair(const T1& track, const T2& kink, const T3& /*trackTable*/) const
bool isCleanPair(const T1& track, const T2& kink, const T3& trackTable) const
{
auto chaDaughter = kink.template chaDau_as<T3>();
auto chaDaughter = trackTable.rawIteratorAt(kink.chaDauId() - trackTable.offset());
return this->isCleanTrackPair(chaDaughter, track);
}
};
Expand All @@ -91,11 +91,11 @@ class TrackCascadePairCleaner : public BasePairCleaner
public:
TrackCascadePairCleaner() = default;
template <typename T1, typename T2, typename T3>
bool isCleanPair(const T1& track, const T2& cascade, const T3& /*trackTable*/) const
bool isCleanPair(const T1& track, const T2& cascade, const T3& trackTable) const
{
auto bachelor = cascade.template bachelor_as<T3>();
auto posDaughter = cascade.template posDau_as<T3>();
auto negDaughter = cascade.template negDau_as<T3>();
auto bachelor = trackTable.rawIteratorAt(cascade.bachelorId() - trackTable.offset());
auto posDaughter = trackTable.rawIteratorAt(cascade.posDauId() - trackTable.offset());
auto negDaughter = trackTable.rawIteratorAt(cascade.posDauId() - trackTable.offset());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ariedel-cern Still there

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #14177

return (this->isCleanTrackPair(bachelor, track) && this->isCleanTrackPair(posDaughter, track) && this->isCleanTrackPair(negDaughter, track));
}
};
Expand Down
32 changes: 12 additions & 20 deletions PWGCF/Femto/Core/pairProcessHelpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,9 @@ void processSameEvent(T1 const& SliceParticle,
}
std::uniform_real_distribution<float> dist(0.f, 1.f);
for (auto const& [p1, p2] : o2::soa::combinations(o2::soa::CombinationsStrictlyUpperIndexPolicy(SliceParticle, SliceParticle))) {
if (CprManager.isActivated()) {
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
// Randomize pair order if enabled
float threshold = 0.5f;
Expand Down Expand Up @@ -104,11 +102,9 @@ void processSameEvent(T1 const& SliceParticle1,
continue;
}
// Close pair rejection
if (CprManager.isActivated()) {
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
PairHistManager.setPair(p1, p2, Collision);
if (PairHistManager.checkPairCuts()) {
Expand Down Expand Up @@ -154,11 +150,9 @@ void processMixedEvent(T1& Collisions,
continue;
}
// Close pair rejection
if (CprManager.isActivated()) {
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
PairHistManager.setPair(p1, p2, collision1, collision2);
if (PairHistManager.checkPairCuts()) {
Expand Down Expand Up @@ -207,11 +201,9 @@ void processMixedEvent(T1& Collisions,
continue;
}
// Close pair rejection
if (CprManager.isActivated()) {
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
CprManager.setPair(p1, p2, TrackTable);
if (CprManager.isClosePair()) {
continue;
}
PairHistManager.setPair(p1, p2, collision1, collision2);
if (PairHistManager.checkPairCuts()) {
Expand Down
Loading
Loading