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
83 changes: 48 additions & 35 deletions PWGCF/Femto/Core/closePairRejection.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ struct ConfCpr : o2::framework::ConfigurableGroup {
o2::framework::Configurable<bool> plotAverage{"plotAverage", true, "Plot average deta dphi distribution"};
o2::framework::Configurable<float> detaMax{"detaMax", 0.01f, "Maximium deta"};
o2::framework::Configurable<float> dphistarMax{"dphistarMax", 0.01f, "Maximum dphistar"};
o2::framework::Configurable<float> kstarMin{"kstarMin", -1.f, "Minimum kstar of pair for plotting (Set to negative value to turn off the cut)"};
o2::framework::Configurable<float> kstarMax{"kstarMax", -1.f, "Maximum kstar of pair for plotting (Set to negative value to turn off the cut)"};
o2::framework::ConfigurableAxis binningDeta{"binningDeta", {{250, -0.5, 0.5}}, "deta"};
o2::framework::ConfigurableAxis binningDphistar{"binningDphistar", {{250, -0.5, 0.5}}, "dphi"};
};
Expand Down Expand Up @@ -140,19 +142,15 @@ class CloseTrackRejection
CloseTrackRejection() = default;
~CloseTrackRejection() = default;

template <typename T>
void init(o2::framework::HistogramRegistry* registry,
std::map<CprHist, std::vector<o2::framework::AxisSpec>> const& specs,
bool plotAverage,
bool plotAllRadii,
bool cutOnAverage,
bool cutOnAnyRadius,
float detaMax,
float dphistarMax,
T const& confCpr,
int chargeAbsTrack1,
int chargeAbsTrack2)
{
mDetaMax = detaMax;
mDphistarMax = dphistarMax;
mDetaMax = confCpr.detaMax.value;
mDphistarMax = confCpr.dphistarMax.value;

// check the limits
if (mDetaMax <= 0 || mDphistarMax <= 0) {
Expand All @@ -162,14 +160,17 @@ class CloseTrackRejection
mChargeAbsTrack1 = std::abs(chargeAbsTrack1);
mChargeAbsTrack2 = std::abs(chargeAbsTrack2);

mCutOnAverage = cutOnAverage;
mCutOnAnyRadius = cutOnAnyRadius;
mCutAverage = confCpr.cutAverage.value;
mCutAnyRadius = confCpr.cutAnyRadius.value;

mKstarMin = confCpr.kstarMin.value;
mKstarMax = confCpr.kstarMax.value;

mPlotAverage = plotAverage;
mPlotAllRadii = plotAllRadii;
mPlotAverage = confCpr.plotAverage.value;
mPlotAllRadii = confCpr.plotAllRadii.value;

// check if we need to apply any cut a plot is requested
mIsActivated = mCutOnAverage || mCutOnAnyRadius || mPlotAverage || mPlotAllRadii;
mIsActivated = mCutAverage || mCutAnyRadius || mPlotAverage || mPlotAllRadii;

mHistogramRegistry = registry;

Expand Down Expand Up @@ -210,7 +211,7 @@ class CloseTrackRejection
auto phistar1 = utils::dphistar(mMagField, TpcRadii[i], mChargeAbsTrack1 * track1.signedPt(), track1.phi());
auto phistar2 = utils::dphistar(mMagField, TpcRadii[i], mChargeAbsTrack2 * track2.signedPt(), track2.phi());
if (phistar1 && phistar2) {
mDphistar.at(i) = RecoDecay::constrainAngle(phistar1.value() - phistar2.value(), -o2::constants::math::PI); // const angle difference between -pi and pi
mDphistar.at(i) = RecoDecay::constrainAngle(phistar1.value() - phistar2.value(), -o2::constants::math::PI); // constrain angular difference between -pi and pi
mDphistarMask.at(i) = true;
count++;
}
Expand All @@ -219,11 +220,20 @@ class CloseTrackRejection
mAverageDphistar = std::accumulate(mDphistar.begin(), mDphistar.end(), 0.f) / count; // only average values if phistar could be computed
}

void fill()
void fill(float kstar)
{
if (!mIsActivated) {
return;
}

if (mKstarMin > 0.f && kstar < mKstarMin) {
return;
}

if (mKstarMax > 0.f && kstar > mKstarMax) {
return;
}

// fill average hist
if (mPlotAverage) {
mHistogramRegistry->fill(HIST(prefix) + HIST(getHistName(kAverage, HistTable)), mDeta, mAverageDphistar);
Expand Down Expand Up @@ -269,11 +279,11 @@ class CloseTrackRejection
bool isCloseAverage = false;
bool isCloseAnyRadius = false;

if (mCutOnAverage) {
if (mCutAverage) {
isCloseAverage = std::hypot(mAverageDphistar / mDphistarMax, mDeta / mDetaMax) < 1.f;
}

if (mCutOnAnyRadius) {
if (mCutAnyRadius) {
for (size_t i = 0; i < TpcRadii.size(); i++) {
if (isCloseAnyRadius) {
break;
Expand All @@ -293,8 +303,11 @@ class CloseTrackRejection
bool mPlotAllRadii = false;
bool mPlotAverage = false;

bool mCutOnAverage = false;
bool mCutOnAnyRadius = false;
float mKstarMin = -1.f;
float mKstarMax = -1.f;

bool mCutAverage = false;
bool mCutAnyRadius = false;

bool mIsActivated = false;

Expand All @@ -321,7 +334,7 @@ class ClosePairRejectionTrackTrack
int absChargeTrack1,
int absChargeTrack2)
{
mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack1, absChargeTrack2);
mCtr.init(registry, specs, confCpr, absChargeTrack1, absChargeTrack2);
}

void setMagField(float magField) { mCtr.setMagField(magField); }
Expand All @@ -331,7 +344,7 @@ class ClosePairRejectionTrackTrack
mCtr.compute(track1, track2);
}
bool isClosePair() const { return mCtr.isClosePair(); }
void fill() { mCtr.fill(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefix> mCtr;
Expand All @@ -348,8 +361,8 @@ class ClosePairRejectionV0V0
T1 const& confCprPos,
T2 const& confCprNeg)
{
mCtrPos.init(registry, specsPos, confCprPos.plotAverage.value, confCprPos.plotAllRadii.value, confCprPos.cutAverage.value, confCprPos.cutAnyRadius.value, confCprPos.detaMax.value, confCprPos.dphistarMax.value, 1, 1);
mCtrNeg.init(registry, specsNeg, confCprNeg.plotAverage.value, confCprNeg.plotAllRadii.value, confCprNeg.cutAverage.value, confCprNeg.cutAnyRadius.value, confCprNeg.detaMax.value, confCprNeg.dphistarMax.value, 1, 1);
mCtrPos.init(registry, specsPos, confCprPos, 1, 1);
mCtrNeg.init(registry, specsNeg, confCprNeg, 1, 1);
}

void setMagField(float magField)
Expand All @@ -372,10 +385,10 @@ class ClosePairRejectionV0V0

bool isClosePair() const { return mCtrPos.isClosePair() || mCtrNeg.isClosePair(); }

void fill()
void fill(float kstar)
{
mCtrPos.fill();
mCtrNeg.fill();
mCtrPos.fill(kstar);
mCtrNeg.fill(kstar);
}

private:
Expand All @@ -393,7 +406,7 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
T const& confCpr,
int absChargeTrack)
{
mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack, 1);
mCtr.init(registry, specs, confCpr, absChargeTrack, 1);
}

void setMagField(float magField) { mCtr.setMagField(magField); }
Expand All @@ -412,7 +425,7 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h

bool isClosePair() const { return mCtr.isClosePair(); }

void fill() { mCtr.fill(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefixTrackV0> mCtr;
Expand All @@ -430,8 +443,8 @@ class ClosePairRejectionTrackCascade
T2 const& confCprV0Daughter,
int absChargeTrack)
{
mCtrBachelor.init(registry, specsBachelor, confCprBachelor.plotAverage.value, confCprBachelor.plotAllRadii.value, confCprBachelor.cutAverage.value, confCprBachelor.cutAnyRadius.value, confCprBachelor.detaMax.value, confCprBachelor.dphistarMax.value, absChargeTrack, 1);
mCtrV0Daughter.init(registry, specsV0Daughter, confCprV0Daughter.plotAverage.value, confCprV0Daughter.plotAllRadii.value, confCprV0Daughter.cutAverage.value, confCprV0Daughter.cutAnyRadius.value, confCprV0Daughter.detaMax.value, confCprV0Daughter.dphistarMax.value, absChargeTrack, 1);
mCtrBachelor.init(registry, specsBachelor, confCprBachelor, absChargeTrack, 1);
mCtrV0Daughter.init(registry, specsV0Daughter, confCprV0Daughter, absChargeTrack, 1);
}

void setMagField(float magField)
Expand Down Expand Up @@ -461,10 +474,10 @@ class ClosePairRejectionTrackCascade
return mCtrBachelor.isClosePair() || mCtrBachelor.isClosePair();
}

void fill()
void fill(float kstar)
{
mCtrBachelor.fill();
mCtrV0Daughter.fill();
mCtrBachelor.fill(kstar);
mCtrV0Daughter.fill(kstar);
}

private:
Expand All @@ -482,7 +495,7 @@ class ClosePairRejectionTrackKink
T const& confCpr,
int absChargeTrack)
{
mCtr.init(registry, specs, confCpr.plotAverage.value, confCpr.plotAllRadii.value, confCpr.cutAverage.value, confCpr.cutAnyRadius.value, confCpr.detaMax.value, confCpr.dphistarMax.value, absChargeTrack, 1);
mCtr.init(registry, specs, confCpr, absChargeTrack, 1);
}

void setMagField(float magField)
Expand All @@ -498,7 +511,7 @@ class ClosePairRejectionTrackKink
}

bool isClosePair() const { return mCtr.isClosePair(); }
void fill() { mCtr.fill(); }
void fill(float kstar) { mCtr.fill(kstar); }

private:
CloseTrackRejection<prefix> mCtr;
Expand Down
5 changes: 4 additions & 1 deletion PWGCF/Femto/Core/dataTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ using CollisionTagType = uint64_t;
using CollisionMaskType = uint16_t;

// datatypes for tracks
using MomentumType = uint8_t;
using TrackMaskType = uint64_t;
using TrackType = uint16_t;

Expand All @@ -53,6 +52,10 @@ using CascadeType = uint16_t;
// datatype for particles
using ParticleType = uint16_t;

// datatypes for different observables
using MomentumType = uint16_t;
using TransverseMassType = uint16_t;

} // namespace femtodatatypes

} // namespace o2::aod
Expand Down
12 changes: 9 additions & 3 deletions PWGCF/Femto/Core/modes.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,15 @@ enum class System : uint32_t {
};

enum class MomentumType : o2::aod::femtodatatypes::MomentumType {
kPt, // transverse momentum
kPAtPv, // momentum at primary vertex
kPTpc, // momentum at inner wall of tpc
kPt = 0, // transverse momentum
kPAtPv = 1, // momentum at primary vertex
kPTpc = 2, // momentum at inner wall of tpc
};

enum class TransverseMassType : o2::aod::femtodatatypes::TransverseMassType {
kAveragePdgMass = 0,
kReducedPdgMass = 1,
kMt4Vector = 2
};

enum class Particle : o2::aod::femtodatatypes::ParticleType {
Expand Down
4 changes: 2 additions & 2 deletions PWGCF/Femto/Core/pairBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ class PairTrackTrackBuilder
}
mColHistManager.fill(col);
mCprSe.setMagField(col.magField());
pairprocesshelpers::processSameEvent(trackSlice1, trackTable, col, mTrackHistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles);
pairprocesshelpers::processSameEvent(trackSlice1, trackTable, col, mTrackHistManager1, mPairHistManagerSe, mCprSe, mPc, mRng, mMixIdenticalParticles);
} else {
auto trackSlice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
auto trackSlice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
Expand Down Expand Up @@ -317,7 +317,7 @@ class PairV0V0Builder
}
mColHistManager.fill(col);
mCprSe.setMagField(col.magField());
pairprocesshelpers::processSameEvent(v0Slice1, trackTable, col, mV0HistManager1, mPairHistManagerSe, mCprSe, mRng, mMixIdenticalParticles);
pairprocesshelpers::processSameEvent(v0Slice1, trackTable, col, mV0HistManager1, mPairHistManagerSe, mCprSe, mPc, mRng, mMixIdenticalParticles);
} else {
auto v0Slice1 = partition1->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
auto v0Slice2 = partition2->sliceByCached(o2::aod::femtobase::stored::fColId, col.globalIndex(), cache);
Expand Down
Loading
Loading