Skip to content

Commit 0f723f0

Browse files
authored
Refactor track hit storage to use std::array
1 parent 02309c5 commit 0f723f0

File tree

1 file changed

+27
-23
lines changed

1 file changed

+27
-23
lines changed

ALICE3/TableProducer/OTF/onTheFlyTracker.cxx

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -928,12 +928,12 @@ struct OnTheFlyTracker {
928928
const float timeResolutionUs = timeResolutionNs * nsToMus; // us
929929
const float time = (eventCollisionTimeNS + gRandom->Gaus(0., timeResolutionNs)) * nsToMus;
930930
static constexpr int kCascProngs = 3;
931-
std::vector<o2::track::TrackParCov> xiDaughterTrackParCovsPerfect(3);
932-
std::vector<o2::track::TrackParCov> xiDaughterTrackParCovsTracked(3);
933-
std::vector<bool> isReco(kCascProngs);
934-
std::vector<int> nHits(kCascProngs); // total
935-
std::vector<int> nSiliconHits(kCascProngs); // silicon type
936-
std::vector<int> nTPCHits(kCascProngs); // TPC type
931+
std::array<o2::track::TrackParCov, kCascProngs> xiDaughterTrackParCovsPerfect;
932+
std::array<o2::track::TrackParCov, kCascProngs> xiDaughterTrackParCovsTracked;
933+
std::array<bool, kCascProngs> isReco;
934+
std::array<int, kCascProngs> nHitsCascadeProngs; // total
935+
std::array<int, kCascProngs> nSiliconHitsCascadeProngs; // silicon type
936+
std::array<int, kCascProngs> nTPCHitsCascadeProngs; // TPC type
937937

938938
bool tryKinkReco = false;
939939
if (cascadeDecaySettings.decayXi && isCascade) {
@@ -951,19 +951,19 @@ struct OnTheFlyTracker {
951951

952952
for (int i = 0; i < kCascProngs; i++) {
953953
isReco[i] = false;
954-
nHits[i] = 0;
955-
nSiliconHits[i] = 0;
956-
nTPCHits[i] = 0;
954+
nHitsCascadeProngs[i] = 0;
955+
nSiliconHitsCascadeProngs[i] = 0;
956+
nTPCHitsCascadeProngs[i] = 0;
957957
if (enableSecondarySmearing) {
958-
nHits[i] = fastTracker[icfg]->FastTrack(xiDaughterTrackParCovsPerfect[i], xiDaughterTrackParCovsTracked[i], dNdEta);
959-
nSiliconHits[i] = fastTracker[icfg]->GetNSiliconPoints();
960-
nTPCHits[i] = fastTracker[icfg]->GetNGasPoints();
958+
nHitsCascadeProngs[i] = fastTracker[icfg]->FastTrack(xiDaughterTrackParCovsPerfect[i], xiDaughterTrackParCovsTracked[i], dNdEta);
959+
nSiliconHitsCascadeProngs[i] = fastTracker[icfg]->GetNSiliconPoints();
960+
nTPCHitsCascadeProngs[i] = fastTracker[icfg]->GetNGasPoints();
961961

962-
if (nHits[i] < 0 && cascadeDecaySettings.doXiQA) { // QA
963-
getHist(TH1, histPath + "hFastTrackerQA")->Fill(o2::math_utils::abs(nHits[i]));
962+
if (nHitsCascadeProngs[i] < 0 && cascadeDecaySettings.doXiQA) { // QA
963+
getHist(TH1, histPath + "hFastTrackerQA")->Fill(o2::math_utils::abs(nHitsCascadeProngs[i]));
964964
}
965965

966-
if (nSiliconHits[i] >= fastTrackerSettings.minSiliconHits || (nSiliconHits[i] >= fastTrackerSettings.minSiliconHitsIfTPCUsed && nTPCHits[i] >= fastTrackerSettings.minTPCClusters)) {
966+
if (nSiliconHitsCascadeProngs[i] >= fastTrackerSettings.minSiliconHits || (nSiliconHitsCascadeProngs[i] >= fastTrackerSettings.minSiliconHitsIfTPCUsed && nTPCHitsCascadeProngs[i] >= fastTrackerSettings.minTPCClusters)) {
967967
isReco[i] = true;
968968
} else {
969969
continue; // extra sure
@@ -982,7 +982,7 @@ struct OnTheFlyTracker {
982982
histos.fill(HIST("hNaNBookkeeping"), i + 1, 1.0f);
983983
}
984984
if (isReco[i]) {
985-
tracksAlice3.push_back(TrackAlice3{xiDaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2, nSiliconHits[i], nTPCHits[i]});
985+
tracksAlice3.push_back(TrackAlice3{xiDaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2, nSiliconHitsCascadeProngs[i], nTPCHitsCascadeProngs[i]});
986986
} else {
987987
ghostTracksAlice3.push_back(TrackAlice3{xiDaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2});
988988
}
@@ -1379,7 +1379,7 @@ struct OnTheFlyTracker {
13791379
// histos.fill(HIST("hNaNBookkeeping"), i + 1, 1.0f);
13801380
// }
13811381
if (isReco[i]) {
1382-
tracksAlice3.push_back(TrackAlice3{v0DaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2, nSiliconHits[i], nTPCHits[i]});
1382+
tracksAlice3.push_back(TrackAlice3{v0DaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2, nSiliconHitsCascadeProngs[i], nTPCHitsCascadeProngs[i]});
13831383
} else {
13841384
ghostTracksAlice3.push_back(TrackAlice3{v0DaughterTrackParCovsTracked[i], mcParticle.globalIndex(), time, timeResolutionUs, true, true, i + 2});
13851385
}
@@ -1525,14 +1525,16 @@ struct OnTheFlyTracker {
15251525
}
15261526

15271527
bool reconstructed = true;
1528+
int nTrkHits = 0;
15281529
if (enablePrimarySmearing && !fastPrimaryTrackerSettings.fastTrackPrimaries) {
15291530
reconstructed = mSmearer[icfg]->smearTrack(trackParCov, mcParticle.pdgCode(), dNdEta);
1531+
nTrkHits = fastTrackerSettings.minSiliconHits;
15301532
} else if (fastPrimaryTrackerSettings.fastTrackPrimaries) {
15311533
o2::track::TrackParCov o2Track;
15321534
o2::upgrade::convertMCParticleToO2Track(mcParticle, o2Track, pdgDB);
15331535
o2Track.setPID(pdgCodeToPID(mcParticle.pdgCode()));
1534-
const int nHits = fastTracker[icfg]->FastTrack(o2Track, trackParCov, dNdEta);
1535-
if (nHits < fastPrimaryTrackerSettings.minSiliconHits) {
1536+
nTrkHits = fastTracker[icfg]->FastTrack(o2Track, trackParCov, dNdEta);
1537+
if (nTrkHits < fastPrimaryTrackerSettings.minSiliconHits) {
15361538
reconstructed = false;
15371539
}
15381540
}
@@ -1567,7 +1569,7 @@ struct OnTheFlyTracker {
15671569

15681570
// populate vector with track if we reco-ed it
15691571
if (reconstructed) {
1570-
tracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter});
1572+
tracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter, false, 0, nTrkHits});
15711573
} else {
15721574
ghostTracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter});
15731575
}
@@ -1927,15 +1929,17 @@ struct OnTheFlyTracker {
19271929
const float time = (eventCollisionTimeNS + gRandom->Gaus(0., timeResolutionNs)) * nsToMus;
19281930

19291931
bool reconstructed = false;
1932+
int nTrkHits = 0;
19301933
if (enablePrimarySmearing && mcParticle.isPrimary()) {
19311934
o2::upgrade::convertMCParticleToO2Track(mcParticle, trackParCov, pdgDB);
19321935
reconstructed = mSmearer[icfg]->smearTrack(trackParCov, mcParticle.pdgCode(), dNdEta);
1936+
nTrkHits = fastTrackerSettings.minSiliconHits;
19331937
} else if (enableSecondarySmearing) {
19341938
o2::track::TrackParCov perfectTrackParCov;
19351939
o2::upgrade::convertMCParticleToO2Track(mcParticle, perfectTrackParCov, pdgDB);
19361940
perfectTrackParCov.setPID(pdgCodeToPID(mcParticle.pdgCode()));
1937-
const int nHits = fastTracker[icfg]->FastTrack(perfectTrackParCov, trackParCov, dNdEta);
1938-
if (nHits < fastTrackerSettings.minSiliconHits) {
1941+
nTrkHits = fastTracker[icfg]->FastTrack(perfectTrackParCov, trackParCov, dNdEta);
1942+
if (nTrkHits < fastTrackerSettings.minSiliconHits) {
19391943
reconstructed = false;
19401944
} else {
19411945
reconstructed = true;
@@ -1965,7 +1969,7 @@ struct OnTheFlyTracker {
19651969
}
19661970

19671971
if (reconstructed) {
1968-
tracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter});
1972+
tracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter, false, 0, nTrkHits});
19691973
} else {
19701974
ghostTracksAlice3.push_back(TrackAlice3{trackParCov, mcParticle.globalIndex(), time, timeResolutionUs, isDecayDaughter});
19711975
}

0 commit comments

Comments
 (0)