Skip to content

Commit 21c8a2f

Browse files
authored
[ALICE3] set trackParCov pid before fasttracker smearing (#15056)
1 parent a312b8a commit 21c8a2f

File tree

1 file changed

+39
-6
lines changed

1 file changed

+39
-6
lines changed

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include <Framework/StaticFor.h>
5252
#include <Framework/runDataProcessing.h>
5353
#include <ReconstructionDataFormats/DCA.h>
54+
#include <ReconstructionDataFormats/PID.h>
5455
#include <SimulationDataFormat/InteractionSampler.h>
5556

5657
#include <TGenPhaseSpace.h>
@@ -597,6 +598,31 @@ struct OnTheFlyTracker {
597598
gRandom->SetSeed(seed);
598599
}
599600

601+
/// Function to get the internal PID for a given pdgCode
602+
/// \param pdgCode pdg code for a common particle (particle handled by the tracker)
603+
int pdgCodeToPID(int pdgCode) const
604+
{
605+
if (std::abs(pdgCode) == PDG_t::kElectron) {
606+
return o2::track::PID::Electron;
607+
} else if (std::abs(pdgCode) == PDG_t::kMuonMinus) {
608+
return o2::track::PID::Muon;
609+
} else if (std::abs(pdgCode) == PDG_t::kPiPlus) {
610+
return o2::track::PID::Pion;
611+
} else if (std::abs(pdgCode) == PDG_t::kKPlus) {
612+
return o2::track::PID::Kaon;
613+
} else if (std::abs(pdgCode) == PDG_t::kProton) {
614+
return o2::track::PID::Proton;
615+
} else if (std::abs(pdgCode) == PDG_t::kLambda0) {
616+
return o2::track::PID::Lambda;
617+
} else if (std::abs(pdgCode) == PDG_t::kXiMinus) {
618+
return o2::track::PID::XiMinus;
619+
} else if (std::abs(pdgCode) == PDG_t::kOmegaMinus) {
620+
return o2::track::PID::OmegaMinus;
621+
} else {
622+
return o2::track::PID::Pion; // Default trackParCov assumption
623+
}
624+
}
625+
600626
/// Function to decay the xi
601627
/// \param particle the particle to decay
602628
/// \param track track of particle to decay
@@ -878,9 +904,12 @@ struct OnTheFlyTracker {
878904
getHist(TH1, histPath + "hXiBuilding")->Fill(0.0f);
879905
}
880906

881-
o2::upgrade::convertTLorentzVectorToO2Track(kPiMinus, cascadeDecayProducts[0], xiDecayVertex, xiDaughterTrackParCovsPerfect[0], pdgDB);
882-
o2::upgrade::convertTLorentzVectorToO2Track(kPiMinus, cascadeDecayProducts[1], laDecayVertex, xiDaughterTrackParCovsPerfect[1], pdgDB);
883-
o2::upgrade::convertTLorentzVectorToO2Track(kProton, cascadeDecayProducts[2], laDecayVertex, xiDaughterTrackParCovsPerfect[2], pdgDB);
907+
o2::upgrade::convertTLorentzVectorToO2Track(PDG_t::kPiMinus, cascadeDecayProducts[0], xiDecayVertex, xiDaughterTrackParCovsPerfect[0], pdgDB);
908+
xiDaughterTrackParCovsPerfect[0].setPID(pdgCodeToPID(PDG_t::kPiMinus));
909+
o2::upgrade::convertTLorentzVectorToO2Track(PDG_t::kPiMinus, cascadeDecayProducts[1], laDecayVertex, xiDaughterTrackParCovsPerfect[1], pdgDB);
910+
xiDaughterTrackParCovsPerfect[1].setPID(pdgCodeToPID(PDG_t::kPiMinus));
911+
o2::upgrade::convertTLorentzVectorToO2Track(PDG_t::kProton, cascadeDecayProducts[2], laDecayVertex, xiDaughterTrackParCovsPerfect[2], pdgDB);
912+
xiDaughterTrackParCovsPerfect[2].setPID(pdgCodeToPID(PDG_t::kProton));
884913

885914
for (int i = 0; i < kCascProngs; i++) {
886915
isReco[i] = false;
@@ -1001,7 +1030,7 @@ struct OnTheFlyTracker {
10011030
{posP[0] + negP[0], posP[1] + negP[1], posP[2] + negP[2]},
10021031
covV, 0, true);
10031032
v0Track.setAbsCharge(0);
1004-
v0Track.setPID(o2::track::PID::Lambda);
1033+
v0Track.setPID(pdgCodeToPID(PDG_t::kLambda0));
10051034

10061035
// dca fitter step
10071036
nCand = 0;
@@ -1040,8 +1069,8 @@ struct OnTheFlyTracker {
10401069

10411070
// initialize cascade track
10421071
o2::track::TrackParCov cascadeTrack = fitter.createParentTrackParCov();
1043-
cascadeTrack.setAbsCharge(-1); // may require more adjustments
1044-
cascadeTrack.setPID(o2::track::PID::XiMinus); // FIXME: not OK for omegas
1072+
cascadeTrack.setAbsCharge(-1); // may require more adjustments
1073+
cascadeTrack.setPID(pdgCodeToPID(PDG_t::kXiMinus)); // FIXME: not OK for omegas
10451074

10461075
thisCascade.cascradiusMC = xiDecayRadius2D;
10471076
thisCascade.pt = cascadeTrack.getPt();
@@ -1131,6 +1160,7 @@ struct OnTheFlyTracker {
11311160
o2::upgrade::convertMCParticleToO2Track(mcParticle, prefectCascadeTrack, pdgDB);
11321161

11331162
// back track is already smeared
1163+
prefectCascadeTrack.setPID(pdgCodeToPID(PDG_t::kXiMinus)); // FIXME: not OK for omegas
11341164
int nCascHits = fastTracker[icfg]->FastTrack(prefectCascadeTrack, trackedCasc, dNdEta);
11351165
reconstructedCascade = (fastTrackerSettings.minSiliconHitsForKinkReco < nCascHits) ? false : true;
11361166

@@ -1201,6 +1231,7 @@ struct OnTheFlyTracker {
12011231
std::array{pV0[0], pV0[1], pV0[2]}},
12021232
std::array{o2::constants::physics::MassPionCharged, o2::constants::physics::MassLambda});
12031233

1234+
newCascadeTrack.setPID(pdgCodeToPID(PDG_t::kXiMinus)); // FIXME: not OK for omegas
12041235
tracksAlice3.push_back(TrackAlice3{newCascadeTrack, mcParticle.globalIndex(), time, timeResolutionUs, false, false, 1, thisCascade.foundClusters});
12051236

12061237
// add this cascade to vector (will fill cursor later with collision ID)
@@ -1436,6 +1467,7 @@ struct OnTheFlyTracker {
14361467
} else if (fastPrimaryTrackerSettings.fastTrackPrimaries) {
14371468
o2::track::TrackParCov o2Track;
14381469
o2::upgrade::convertMCParticleToO2Track(mcParticle, o2Track, pdgDB);
1470+
o2Track.setPID(pdgCodeToPID(mcParticle.pdgCode()));
14391471
const int nHits = fastTracker[icfg]->FastTrack(o2Track, trackParCov, dNdEta);
14401472
if (nHits < fastPrimaryTrackerSettings.minSiliconHits) {
14411473
reconstructed = false;
@@ -1838,6 +1870,7 @@ struct OnTheFlyTracker {
18381870
} else if (enableSecondarySmearing) {
18391871
o2::track::TrackParCov perfectTrackParCov;
18401872
o2::upgrade::convertMCParticleToO2Track(mcParticle, perfectTrackParCov, pdgDB);
1873+
perfectTrackParCov.setPID(pdgCodeToPID(mcParticle.pdgCode()));
18411874
const int nHits = fastTracker[icfg]->FastTrack(perfectTrackParCov, trackParCov, dNdEta);
18421875
if (nHits < fastTrackerSettings.minSiliconHits) {
18431876
reconstructed = false;

0 commit comments

Comments
 (0)