Skip to content

Commit 2d3ac1e

Browse files
committed
Feat: add absolute charge as configurable
1 parent 90cc905 commit 2d3ac1e

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

PWGCF/Femto/Core/pairBuilder.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,22 @@ class PairTrackTrackBuilder
8282
mTrackHistManager1.init(registry, trackHistSpec1);
8383

8484
mPairHistManagerSe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection1.pdgCode.value);
85+
mPairHistManagerSe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection1.absCharge.value);
8586
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);
8687

87-
mPairHistManagerMe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection2.pdgCode.value);
88+
mPairHistManagerMe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection1.pdgCode.value);
89+
mPairHistManagerMe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection1.absCharge.value);
8890
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);
8991
} else {
9092
mTrackHistManager1.init(registry, trackHistSpec1);
9193
mTrackHistManager2.init(registry, trackHistSpec2);
9294

9395
mPairHistManagerSe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection2.pdgCode.value);
96+
mPairHistManagerSe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection2.absCharge.value);
9497
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);
9598

9699
mPairHistManagerMe.setMass(confTrackSelection1.pdgCode.value, confTrackSelection2.pdgCode.value);
100+
mPairHistManagerMe.setCharge(confTrackSelection1.absCharge.value, confTrackSelection2.absCharge.value);
97101
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);
98102
}
99103

@@ -235,10 +239,12 @@ class PairTrackV0Builder
235239

236240
mPairHistManagerSe.init(registry, pairHistSpec);
237241
mPairHistManagerSe.setMass(confTrackSelection.pdgCode.value, confV0Selection.pdgCode.value);
242+
mPairHistManagerSe.setCharge(confTrackSelection.absCharge.value, 1);
238243
mCprSe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.sign.value, confTrackSelection.absCharge.value, confCpr.on.value);
239244

240245
mPairHistManagerMe.init(registry, pairHistSpec);
241246
mPairHistManagerMe.setMass(confTrackSelection.pdgCode.value, confV0Selection.pdgCode.value);
247+
mPairHistManagerMe.setCharge(confTrackSelection.absCharge.value, 1);
242248
mCprMe.init(registry, cprHistSpec, confCpr.detaMax.value, confCpr.dphistarMax.value, confTrackSelection.sign.value, confTrackSelection.absCharge.value, confCpr.on.value);
243249

244250
// setup mixing

PWGCF/Femto/Core/pairHistManager.h

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,6 @@ class PairHistManager
133133
public:
134134
/// Destructor
135135
virtual ~PairHistManager() = default;
136-
/// Initializes histograms for the task
137-
/// \param registry Histogram registry to be passed
138-
///
139136
void init(o2::framework::HistogramRegistry* registry, std::map<PairHist, std::vector<o2::framework::AxisSpec>> Specs)
140137
{
141138
mHistogramRegistry = registry;
@@ -164,12 +161,19 @@ class PairHistManager
164161
mMass1 = o2::analysis::femto::utils::getMass(PdgParticle1);
165162
mMass2 = o2::analysis::femto::utils::getMass(PdgParticle2);
166163
}
164+
void setCharge(int chargeParticle1, int chargeParticle2)
165+
{
166+
mAbsCharge1 = std::fabs(chargeParticle1);
167+
mAbsCharge1 = std::fabs(chargeParticle2);
168+
}
167169

168170
template <typename T1, typename T2>
169171
void setPair(const T1& particle1, const T2& particle2)
170172
{
171-
mParticle1 = ROOT::Math::PtEtaPhiMVector{particle1.pt(), particle1.eta(), particle1.phi(), mMass1};
172-
mParticle2 = ROOT::Math::PtEtaPhiMVector{particle2.pt(), particle2.eta(), particle2.phi(), mMass2};
173+
// pt in track stable is stored from 1/signedPt from the original track table
174+
// in case of He with Z=2, we have to rescale the pt with the absolute charge
175+
mParticle1 = ROOT::Math::PtEtaPhiMVector{mAbsCharge1 * particle1.pt(), particle1.eta(), particle1.phi(), mMass1};
176+
mParticle2 = ROOT::Math::PtEtaPhiMVector{mAbsCharge2 * particle2.pt(), particle2.eta(), particle2.phi(), mMass2};
173177
auto partSum = mParticle1 + mParticle2;
174178

175179
// set kT
@@ -208,6 +212,8 @@ class PairHistManager
208212
o2::framework::HistogramRegistry* mHistogramRegistry;
209213
float mMass1 = 0.f;
210214
float mMass2 = 0.f;
215+
float mAbsCharge1 = 1.f;
216+
float mAbsCharge2 = 1.f;
211217
ROOT::Math::PtEtaPhiMVector mParticle1{};
212218
ROOT::Math::PtEtaPhiMVector mParticle2{};
213219
float mKstar = 0.f;

PWGCF/Femto/Core/trackHistManager.h

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -397,9 +397,10 @@ class TrackHistManager
397397
/// Destructor
398398
virtual ~TrackHistManager() = default;
399399

400-
void init(o2::framework::HistogramRegistry* registry, std::map<TrackHist, std::vector<o2::framework::AxisSpec>> Specs, int momentumTypeForPid = 0)
400+
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);
403404

404405
if constexpr (isFlagSet(mode, modes::Mode::kAnalysis)) {
405406
std::string analysisDir = std::string(prefix) + std::string(AnalysisDir);
@@ -489,7 +490,7 @@ class TrackHistManager
489490
void fill(T const& track)
490491
{
491492
if constexpr (isFlagSet(mode, modes::Mode::kAnalysis)) {
492-
mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(GetHistName(kPt, HistTable)), track.pt());
493+
mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(GetHistName(kPt, HistTable)), mAbsCharge * track.pt());
493494
mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(GetHistName(kEta, HistTable)), track.eta());
494495
mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(GetHistName(kPhi, HistTable)), track.phi());
495496
mHistogramRegistry->fill(HIST(prefix) + HIST(AnalysisDir) + HIST(GetHistName(kSign, HistTable)), track.sign());
@@ -503,23 +504,23 @@ class TrackHistManager
503504
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kTpcClusterShared, HistTable)), static_cast<float>(track.tpcNClsShared()));
504505
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kTpcClusterFractionShared, HistTable)), track.tpcSharedOverFound());
505506

506-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsEta, HistTable)), track.pt(), track.eta());
507-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsPhi, HistTable)), track.pt(), track.phi());
507+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsEta, HistTable)), mAbsCharge * track.pt(), track.eta());
508+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsPhi, HistTable)), mAbsCharge * track.pt(), track.phi());
508509
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPhiVsEta, HistTable)), track.phi(), track.eta());
509-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsItsCluster, HistTable)), track.pt(), static_cast<float>(track.itsNCls()));
510-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsTpcCluster, HistTable)), track.pt(), static_cast<float>(track.tpcNClsFound()));
511-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsTpcClusterShared, HistTable)), track.pt(), static_cast<float>(track.tpcNClsShared()));
510+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsItsCluster, HistTable)), mAbsCharge * track.pt(), static_cast<float>(track.itsNCls()));
511+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsTpcCluster, HistTable)), mAbsCharge * track.pt(), static_cast<float>(track.tpcNClsFound()));
512+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsTpcClusterShared, HistTable)), mAbsCharge * track.pt(), static_cast<float>(track.tpcNClsShared()));
512513
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kTpcClusterVsTpcClusterShared, HistTable)), static_cast<float>(track.tpcNClsFound()), static_cast<float>(track.tpcNClsShared()));
513514

514-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDcaxy, HistTable)), track.pt(), track.dcaXY());
515-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDcaz, HistTable)), track.pt(), track.dcaZ());
516-
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDca, HistTable)), track.pt(), track.dca());
515+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDcaxy, HistTable)), mAbsCharge * track.pt(), track.dcaXY());
516+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDcaz, HistTable)), mAbsCharge * track.pt(), track.dcaZ());
517+
mHistogramRegistry->fill(HIST(prefix) + HIST(QaDir) + HIST(GetHistName(kPtVsDca, HistTable)), mAbsCharge * track.pt(), track.dca());
517518

518519
float momentum = 0.f;
519520
if (mMomentumType == modes::MomentumType::kPAtPv) {
520-
momentum = track.p();
521+
momentum = mAbsCharge * track.p();
521522
} else if (mMomentumType == modes::MomentumType::kPt) {
522-
momentum = track.pt();
523+
momentum = mAbsCharge * track.pt();
523524
}
524525

525526
mHistogramRegistry->fill(HIST(prefix) + HIST(PidDir) + HIST(GetHistName(kItsSignal, HistTable)), momentum, o2::analysis::femto::utils::itsSignal(track));
@@ -570,6 +571,7 @@ class TrackHistManager
570571

571572
private:
572573
o2::framework::HistogramRegistry* mHistogramRegistry = nullptr;
574+
float mAbsCharge = 1;
573575
modes::MomentumType mMomentumType = modes::MomentumType::kPAtPv;
574576
};
575577
}; // namespace trackhistmanager

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, confTrackQaBinning.momentumType.value);
79+
trackHistManager.init(&hRegistry, trackHistSpec, trackSelections.absCharge.value, confTrackQaBinning.momentumType.value);
8080
};
8181

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

0 commit comments

Comments
 (0)