@@ -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