Skip to content

Commit 351da6f

Browse files
committed
Feat: use proper momentum
1 parent 54c4a4b commit 351da6f

File tree

8 files changed

+36
-35
lines changed

8 files changed

+36
-35
lines changed

PWGCF/Femto/Core/closePairRejection.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,10 @@ template <const char* prefix>
196196
class ClosePairRejectionTrackTrack
197197
{
198198
public:
199-
void init(o2::framework::HistogramRegistry* registry, std::map<CprHist, std::vector<o2::framework::AxisSpec>>& specs, float detaMax, float dphistarMax, int signTrack1, int absChargeTrack1, int signTrack2, int AbsChargeTrack2, bool isActivated)
199+
void init(o2::framework::HistogramRegistry* registry, std::map<CprHist, std::vector<o2::framework::AxisSpec>>& specs, float detaMax, float dphistarMax, int chargeTrack1, int chargeTrack2, bool isActivated)
200200
{
201201
mIsActivated = isActivated;
202-
mCtr.init(registry, specs, detaMax, dphistarMax, signTrack1 * absChargeTrack1, signTrack2 * AbsChargeTrack2);
202+
mCtr.init(registry, specs, detaMax, dphistarMax, chargeTrack1, chargeTrack2);
203203
}
204204

205205
void setMagField(float magField) { mCtr.setMagField(magField); }
@@ -221,14 +221,14 @@ template <const char* prefix>
221221
class ClosePairRejectionTrackV0 // can also be used for any particle type that has pos/neg daughters, like resonances
222222
{
223223
public:
224-
void init(o2::framework::HistogramRegistry* registry, std::map<CprHist, std::vector<o2::framework::AxisSpec>>& specs, float detaMax, float dphistarMax, int signTrack, int absChargeTrack, bool isActivated)
224+
void init(o2::framework::HistogramRegistry* registry, std::map<CprHist, std::vector<o2::framework::AxisSpec>>& specs, float detaMax, float dphistarMax, int chargeTrack, bool isActivated)
225225
{
226226
mIsActivated = isActivated;
227-
mSignTrack = signTrack;
227+
mChargeTrack = chargeTrack;
228228

229229
// initialize CPR with charge of the track and the same charge for the daughter particle
230-
// absolute charge of the daughter track will be 1, so we can pass the sign directly
231-
mCtr.init(registry, specs, detaMax, dphistarMax, signTrack * absChargeTrack, signTrack);
230+
// absolute charge of the daughter track will be 1, so we just pass the sign
231+
mCtr.init(registry, specs, detaMax, dphistarMax, mChargeTrack, utils::sign(mChargeTrack));
232232
}
233233

234234
void setMagField(float magField)
@@ -238,10 +238,10 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
238238
template <typename T1, typename T2, typename T3>
239239
void setPair(const T1& track, const T2& v0, const T3 /*trackTable*/)
240240
{
241-
if (mSignTrack == 1) {
241+
if (mChargeTrack > 0) {
242242
auto daughter = v0.template posDau_as<T3>();
243243
mCtr.compute(track, daughter);
244-
} else if (mSignTrack == -1) {
244+
} else if (mChargeTrack < 0) {
245245
auto daughter = v0.template negDau_as<T3>();
246246
mCtr.compute(track, daughter);
247247
} else {
@@ -258,7 +258,7 @@ class ClosePairRejectionTrackV0 // can also be used for any particle type that h
258258

259259
private:
260260
CloseTrackRejection<prefix> mCtr;
261-
int mSignTrack = 0;
261+
int mChargeTrack = 0;
262262
bool mIsActivated = true;
263263
};
264264

PWGCF/Femto/Core/dataTypes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ namespace femtodatatypes
2525
// Note: Length of the bitmask is the limit of how many selections can be configured
2626

2727
// datatypes for collsions
28+
using CollisionTagType = __uint128_t;
2829
using CollisionMaskType = uint16_t;
2930

3031
// datatypes for tracks

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,23 @@ class PairTrackTrackBuilder
8383
mTrackHistManager1.init(registry, trackHistSpec1);
8484

8585
mPairHistManagerSe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection1.pdgCode.value);
86-
mPairHistManagerSe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection1.absCharge.value);
87-
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confCpr.on.value);
86+
mPairHistManagerSe.setCharge(confTrackSelection1.charge.value, confTrackSelection1.charge.value);
87+
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.charge.value, confTrackSelection1.charge.value, confCpr.on.value);
8888

8989
mPairHistManagerMe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection1.pdgCode.value);
90-
mPairHistManagerMe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection1.absCharge.value);
91-
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confCpr.on.value);
90+
mPairHistManagerMe.setCharge(confTrackSelection1.charge.value, confTrackSelection1.charge.value);
91+
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.charge.value, confTrackSelection1.charge.value, confCpr.on.value);
9292
} else {
9393
mTrackHistManager1.init(registry, trackHistSpec1);
9494
mTrackHistManager2.init(registry, trackHistSpec2);
9595

9696
mPairHistManagerSe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection2.pdgCode.value);
97-
mPairHistManagerSe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection2.absCharge.value);
98-
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confTrackSelection2.sign.value, confTrackSelection2.absCharge.value, confCpr.on.value);
97+
mPairHistManagerSe.setCharge(confTrackSelection1.charge.value, confTrackSelection2.charge.value);
98+
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.charge.value, confTrackSelection2.charge.value, confCpr.on.value);
9999

100100
mPairHistManagerMe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection2.pdgCode.value);
101-
mPairHistManagerMe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection2.absCharge.value);
102-
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.sign.value, confTrackSelection1.absCharge.value, confTrackSelection2.sign.value, confTrackSelection2.absCharge.value, confCpr.on.value);
101+
mPairHistManagerMe.setCharge(confTrackSelection1.charge.value, confTrackSelection2.charge.value);
102+
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection1.charge.value, confTrackSelection2.charge.value, confCpr.on.value);
103103
}
104104

105105
// setup mixing
@@ -240,13 +240,13 @@ class PairTrackV0Builder
240240

241241
mPairHistManagerSe.init(registry, pairHistSpec);
242242
mPairHistManagerSe.setMass(confTrackSelection.pdgCode.value, confV0Selection.pdgCode.value);
243-
mPairHistManagerSe.setCharge(confTrackSelection.absCharge.value, 1);
244-
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.sign.value, confTrackSelection.absCharge.value, confCpr.on.value);
243+
mPairHistManagerSe.setCharge(confTrackSelection.charge.value, 1);
244+
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.charge.value, confCpr.on.value);
245245

246246
mPairHistManagerMe.init(registry, pairHistSpec);
247247
mPairHistManagerMe.setMass(confTrackSelection.pdgCode.value, confV0Selection.pdgCode.value);
248-
mPairHistManagerMe.setCharge(confTrackSelection.absCharge.value, 1);
249-
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.sign.value, confTrackSelection.absCharge.value, confCpr.on.value);
248+
mPairHistManagerMe.setCharge(confTrackSelection.charge.value, 1);
249+
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.charge.value, confCpr.on.value);
250250

251251
// setup mixing
252252
mMixingPolicy = static_cast<pairhistmanager::MixingPoliciy>(confMixing.policy.value);

PWGCF/Femto/Core/partitions.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,16 @@
2626
ncheckbit(femtocollisions::collisionMask, selection.collisionMask)
2727

2828
// standard track partition
29-
#define MAKE_TRACK_PARTITION(selection) \
30-
ifnode(selection.sign.node() > 0, femtobase::stored::signedPt > 0.f, femtobase::stored::signedPt < 0.f) && \
31-
(nabs(femtobase::stored::signedPt) > selection.ptMin) && \
32-
(nabs(femtobase::stored::signedPt) < selection.ptMax) && \
33-
(femtobase::stored::eta > selection.etaMin) && \
34-
(femtobase::stored::eta < selection.etaMax) && \
35-
(femtobase::stored::phi > selection.phiMin) && \
36-
(femtobase::stored::phi < selection.phiMax) && \
37-
ifnode(nabs(femtobase::stored::signedPt) * (nexp(femtobase::stored::eta) + nexp(-1.f * femtobase::stored::eta)) / 2.f <= selection.pidThres, /* o2-linter: disable=magic-number (formula for cosh) */ \
38-
ncheckbit(femtotracks::trackMask, selection.maskLowMomentum), \
29+
#define MAKE_TRACK_PARTITION(selection) \
30+
ifnode(selection.charge.node() > 0, femtobase::stored::signedPt > 0.f, femtobase::stored::signedPt < 0.f) && \
31+
(nabs(selection.charge.node() * femtobase::stored::signedPt) > selection.ptMin) && \
32+
(nabs(selection.charge.node() * femtobase::stored::signedPt) < selection.ptMax) && \
33+
(femtobase::stored::eta > selection.etaMin) && \
34+
(femtobase::stored::eta < selection.etaMax) && \
35+
(femtobase::stored::phi > selection.phiMin) && \
36+
(femtobase::stored::phi < selection.phiMax) && \
37+
ifnode(nabs(selection.charge.node() * femtobase::stored::signedPt) * (nexp(femtobase::stored::eta) + nexp(-1.f * femtobase::stored::eta)) / (2.f) <= selection.pidThres, \
38+
ncheckbit(femtotracks::trackMask, selection.maskLowMomentum), \
3939
ncheckbit(femtotracks::trackMask, selection.maskHighMomentum))
4040

4141
// partition for phis and rhos, i.e. resonance that are their own antiparticle

PWGCF/Femto/Core/trackBuilder.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,7 @@ struct ConfTrackSelection : public o2::framework::ConfigurableGroup {
117117
std::string prefix = Prefix; // Unique prefix based on the template argument
118118
// configuration parameters
119119
o2::framework::Configurable<int> pdgCode{"pdgCode", 2212, "Track PDG code"};
120-
o2::framework::Configurable<int> sign{"sign", 1, "Sign of the track (1 for positive tracks and -1 for negative tracks)"};
121-
o2::framework::Configurable<int> absCharge{"absCharge", 1, "Absolute charge of the track (keep 1 for all tracks, except for He, it should be 2)"};
120+
o2::framework::Configurable<int> charge{"charge", 1, "Charge of the track (use +/-1 for positive/negative tracks, except He3 needs +/-2)"};
122121
// filters for kinematics
123122
o2::framework::Configurable<float> ptMin{"ptMin", 0.2f, "Minimum pT (GeV/c)"};
124123
o2::framework::Configurable<float> ptMax{"ptMax", 6.f, "Maximum pT (GeV/c)"};

PWGCF/Femto/Core/trackHistManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ class TrackHistManager
400400
void init(o2::framework::HistogramRegistry* registry, std::map<TrackHist, std::vector<o2::framework::AxisSpec>> Specs, float charge = 1, int momentumTypeForPid = 0)
401401
{
402402
mHistogramRegistry = registry;
403-
mAbsCharge = std::fabs(charge);
403+
mAbsCharge = std::fabs(charge); // stored absolute charge of the track to scale the momentum in case of Z!=1 (case only for He3)
404404

405405
if constexpr (isFlagSet(mode, modes::Mode::kAnalysis)) {
406406
std::string analysisDir = std::string(prefix) + std::string(AnalysisDir);

PWGCF/Femto/DataModel/FemtoTables.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ namespace o2::aod
3535
namespace femtocollisions
3636
{
3737
DECLARE_SOA_COLUMN(CollisionMask, collisionMask, femtodatatypes::CollisionMaskType); //! Bitmask for collision selections
38+
DECLARE_SOA_COLUMN(CollisionTag, collisionTag, femtodatatypes::CollisionTagType); //! Bitmask for collision selections
3839

3940
DECLARE_SOA_COLUMN(PosX, posX, float); //! x coordinate of vertex
4041
DECLARE_SOA_COLUMN(PosY, posY, float); //! y coordinate of vertex

PWGCF/Femto/Tasks/femtoTrackQa.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ struct FemtoTrackQa {
7676
auto colHistSpec = colhistmanager::makeColHistSpecMap(confCollisionBinning);
7777
colHistManager.init(&hRegistry, colHistSpec);
7878
auto trackHistSpec = trackhistmanager::makeTrackQaHistSpecMap(confTrackBinning, confTrackQaBinning);
79-
trackHistManager.init(&hRegistry, trackHistSpec, trackSelections.absCharge.value, confTrackQaBinning.momentumType.value);
79+
trackHistManager.init(&hRegistry, trackHistSpec, trackSelections.charge.value, confTrackQaBinning.momentumType.value);
8080
};
8181

8282
void process(FilteredCollision const& col, Tracks const& /*tracks*/)

0 commit comments

Comments
 (0)