@@ -132,7 +132,7 @@ struct skimmerPrimaryMuon {
132132 const double centerMFT[3 ] = {0 , 0 , -61.4 };
133133 o2::field::MagneticField* field = static_cast <o2::field::MagneticField*>(TGeoGlobalMagField::Instance ()->GetField ());
134134 mBz = field->getBz (centerMFT); // Get field at centre of MFT
135- LOGF (info, " Bz at center of MFT = %f kZG" , mBz ); // this is dummy comment. // dummy2
135+ LOGF (info, " Bz at center of MFT = %f kZG" , mBz );
136136 }
137137
138138 void addHistograms ()
@@ -213,7 +213,7 @@ struct skimmerPrimaryMuon {
213213 return true ;
214214 }
215215
216- template <bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
216+ template <bool isMC, bool withMFTCov, typename TFwdTracks, typename TMFTTracks, typename TCollision, typename TFwdTrack, typename TMFTTracksCov>
217217 void fillFwdTrackTable (TCollision const & collision, TFwdTrack fwdtrack, TMFTTracksCov const & mftCovs, const bool isAmbiguous)
218218 {
219219 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.chi2MatchMCHMFT () > maxMatchingChi2MCHMFT) {
@@ -284,8 +284,15 @@ struct skimmerPrimaryMuon {
284284 return ;
285285 }
286286
287- const auto & mchtrack = fwdtrack.template matchMCHTrack_as <TFwdTracks>(); // MCH-MID
288- const auto & mfttrack = fwdtrack.template matchMFTTrack_as <TMFTTracks>(); // MFTsa
287+ auto mchtrack = fwdtrack.template matchMCHTrack_as <TFwdTracks>(); // MCH-MID
288+ auto mfttrack = fwdtrack.template matchMFTTrack_as <TMFTTracks>(); // MFTsa
289+
290+ if constexpr (isMC) {
291+ if (!mfttrack.has_mcParticle ()) {
292+ return ;
293+ }
294+ }
295+
289296 nClustersMFT = mfttrack.nClusters ();
290297 mftClusterSizesAndTrackFlags = mfttrack.mftClusterSizesAndTrackFlags ();
291298 ndf_mchmft = 2 .f * (mchtrack.nClusters () + nClustersMFT) - 5 .f ;
@@ -510,7 +517,7 @@ struct skimmerPrimaryMuon {
510517 continue ;
511518 }
512519
513- fillFwdTrackTable<false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , false );
520+ fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , false );
514521 } // end of fwdtrack loop
515522 } // end of collision loop
516523
@@ -549,7 +556,7 @@ struct skimmerPrimaryMuon {
549556 continue ;
550557 }
551558
552- fillFwdTrackTable<false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
559+ fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
553560 } // end of fwdtrack loop
554561 } // end of collision loop
555562
@@ -592,7 +599,7 @@ struct skimmerPrimaryMuon {
592599 continue ;
593600 }
594601
595- fillFwdTrackTable<true , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
602+ fillFwdTrackTable<false , true , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
596603 } // end of fwdtrack loop
597604 } // end of collision loop
598605 mapAmb.clear ();
@@ -627,7 +634,7 @@ struct skimmerPrimaryMuon {
627634 continue ;
628635 }
629636
630- fillFwdTrackTable<false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , false );
637+ fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , false );
631638 } // end of fwdtrack loop
632639 } // end of collision loop
633640 map_mfttrackcovs.clear ();
@@ -667,7 +674,7 @@ struct skimmerPrimaryMuon {
667674 continue ;
668675 }
669676
670- fillFwdTrackTable<false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
677+ fillFwdTrackTable<false , false , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
671678 } // end of fwdtrack loop
672679 } // end of collision loop
673680 mapAmb.clear ();
@@ -686,13 +693,13 @@ struct skimmerPrimaryMuon {
686693
687694 std::unordered_map<int64_t , bool > mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
688695 for (const auto & fwdtrack : fwdtracks) {
689- const auto & fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
696+ auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
690697 mapAmb[fwdtrack.globalIndex ()] = fwdtrackIdsPerFwdTrack.size () > 1 ;
691698 // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
692699 } // end of fwdtrack loop
693700
694701 for (const auto & collision : collisions) {
695- const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
702+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
696703 initCCDB (bc);
697704 if (!collision.isSelected ()) {
698705 continue ;
@@ -701,17 +708,17 @@ struct skimmerPrimaryMuon {
701708 continue ;
702709 }
703710
704- const auto & fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
711+ auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
705712 for (const auto & fwdtrackId : fwdtrackIdsThisCollision) {
706- const auto & fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracks>();
713+ auto fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracks>();
707714 if (fwdtrack.trackType () != o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && fwdtrack.trackType () != o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
708715 continue ;
709716 }
710717 if (fwdtrack.trackType () == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack && std::find (vec_min_chi2MatchMCHMFT.begin (), vec_min_chi2MatchMCHMFT.end (), std::make_tuple (fwdtrack.globalIndex (), fwdtrack.matchMCHTrackId (), fwdtrack.matchMFTTrackId ())) == vec_min_chi2MatchMCHMFT.end ()) {
711718 continue ;
712719 }
713720
714- fillFwdTrackTable<true , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
721+ fillFwdTrackTable<false , true , MyFwdTracks, aod::MFTTracks>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
715722 } // end of fwdtrack loop
716723 } // end of collision loop
717724 mapAmb.clear ();
@@ -726,7 +733,7 @@ struct skimmerPrimaryMuon {
726733 findBestMatchPerMCHMID (fwdtracks);
727734
728735 for (const auto & collision : collisions) {
729- const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
736+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
730737 initCCDB (bc);
731738 if (!collision.isSelected ()) {
732739 continue ;
@@ -735,7 +742,7 @@ struct skimmerPrimaryMuon {
735742 continue ;
736743 }
737744
738- const auto & fwdtracks_per_coll = fwdtracks.sliceBy (perCollision, collision.globalIndex ());
745+ auto fwdtracks_per_coll = fwdtracks.sliceBy (perCollision, collision.globalIndex ());
739746 for (const auto & fwdtrack : fwdtracks_per_coll) {
740747 if (!fwdtrack.has_mcParticle ()) {
741748 continue ;
@@ -747,7 +754,7 @@ struct skimmerPrimaryMuon {
747754 continue ;
748755 }
749756
750- fillFwdTrackTable<false , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr , false );
757+ fillFwdTrackTable<true , false , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr , false );
751758 } // end of fwdtrack loop
752759 } // end of collision loop
753760 map_mfttrackcovs.clear ();
@@ -762,13 +769,13 @@ struct skimmerPrimaryMuon {
762769
763770 std::unordered_map<int64_t , bool > mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
764771 for (const auto & fwdtrack : fwdtracks) {
765- const auto & fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
772+ auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
766773 mapAmb[fwdtrack.globalIndex ()] = fwdtrackIdsPerFwdTrack.size () > 1 ;
767774 // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
768775 } // end of fwdtrack loop
769776
770777 for (const auto & collision : collisions) {
771- const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
778+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
772779 initCCDB (bc);
773780 if (!collision.isSelected ()) {
774781 continue ;
@@ -777,9 +784,9 @@ struct skimmerPrimaryMuon {
777784 continue ;
778785 }
779786
780- const auto & fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
787+ auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
781788 for (const auto & fwdtrackId : fwdtrackIdsThisCollision) {
782- const auto & fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracksMC>();
789+ auto fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracksMC>();
783790 if (!fwdtrack.has_mcParticle ()) {
784791 continue ;
785792 }
@@ -790,7 +797,7 @@ struct skimmerPrimaryMuon {
790797 continue ;
791798 }
792799
793- fillFwdTrackTable<false , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
800+ fillFwdTrackTable<true , false , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, nullptr , mapAmb[fwdtrack.globalIndex ()]);
794801 } // end of fwdtrack loop
795802 } // end of collision loop
796803 mapAmb.clear ();
@@ -809,13 +816,13 @@ struct skimmerPrimaryMuon {
809816
810817 std::unordered_map<int64_t , bool > mapAmb; // fwdtrack.globalIndex() -> bool isAmb;
811818 for (const auto & fwdtrack : fwdtracks) {
812- const auto & fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
819+ auto fwdtrackIdsPerFwdTrack = fwdtrackIndices.sliceBy (fwdtrackIndicesPerFwdTrack, fwdtrack.globalIndex ());
813820 mapAmb[fwdtrack.globalIndex ()] = fwdtrackIdsPerFwdTrack.size () > 1 ;
814821 // LOGF(info, "fwdtrack.globalIndex() = %d, ntimes = %d, isAmbiguous = %d", fwdtrack.globalIndex(), fwdtrackIdsPerFwdTrack.size(), mapAmb[fwdtrack.globalIndex()]);
815822 } // end of fwdtrack loop
816823
817824 for (const auto & collision : collisions) {
818- const auto & bc = collision.template bc_as <aod::BCsWithTimestamps>();
825+ auto bc = collision.template bc_as <aod::BCsWithTimestamps>();
819826 initCCDB (bc);
820827 if (!collision.isSelected ()) {
821828 continue ;
@@ -824,9 +831,9 @@ struct skimmerPrimaryMuon {
824831 continue ;
825832 }
826833
827- const auto & fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
834+ auto fwdtrackIdsThisCollision = fwdtrackIndices.sliceBy (fwdtrackIndicesPerCollision, collision.globalIndex ());
828835 for (const auto & fwdtrackId : fwdtrackIdsThisCollision) {
829- const auto & fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracksMC>();
836+ auto fwdtrack = fwdtrackId.template fwdtrack_as <MyFwdTracksMC>();
830837 if (!fwdtrack.has_mcParticle ()) {
831838 continue ;
832839 }
@@ -837,7 +844,7 @@ struct skimmerPrimaryMuon {
837844 continue ;
838845 }
839846
840- fillFwdTrackTable<true , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
847+ fillFwdTrackTable<true , true , MyFwdTracksMC, MFTTracksMC>(collision, fwdtrack, mftCovs, mapAmb[fwdtrack.globalIndex ()]);
841848 } // end of fwdtrack loop
842849 } // end of collision loop
843850 mapAmb.clear ();
0 commit comments