88// In applying this license CERN does not waive the privileges and immunities
99// granted to it by virtue of its status as an Intergovernmental Organization
1010// or submit itself to any jurisdiction.
11+ //
12+ // / \file multiplicityTable.cxx
13+ // / \brief Produces multiplicity tables
14+ // /
15+ // / \author ALICE
16+ // /
1117
1218#include < vector>
1319#include < algorithm>
@@ -50,15 +56,15 @@ static constexpr int kFT0MultZeqs = 10;
5056static constexpr int kFDDMultZeqs = 11 ;
5157static constexpr int kPVMultZeqs = 12 ;
5258static constexpr int kMultMCExtras = 13 ;
53- static constexpr int nTables = 14 ;
59+ static constexpr int Ntables = 14 ;
5460
5561// Checking that the Zeq tables are after the normal ones
5662static_assert (kFV0Mults < kFV0MultZeqs );
5763static_assert (kFT0Mults < kFT0MultZeqs );
5864static_assert (kFDDMults < kFDDMultZeqs );
5965static_assert (kPVMults < kPVMultZeqs );
6066
61- static constexpr int nParameters = 1 ;
67+ static constexpr int Nparameters = 1 ;
6268static const std::vector<std::string> tableNames{" FV0Mults" , // 0
6369 " FT0Mults" , // 1
6470 " FDDMults" , // 2
@@ -74,7 +80,7 @@ static const std::vector<std::string> tableNames{"FV0Mults", // 0
7480 " PVMultZeqs" , // 12
7581 " MultMCExtras" }; // 13
7682static const std::vector<std::string> parameterNames{" Enable" };
77- static const int defaultParameters[nTables][nParameters ]{{-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }};
83+ static const int defaultParameters[Ntables][Nparameters ]{{-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }, {-1 }};
7884
7985struct MultiplicityTable {
8086 SliceCache cache;
@@ -104,8 +110,8 @@ struct MultiplicityTable {
104110 using Run2Tracks = soa::Join<aod::Tracks, aod::TracksExtra>;
105111 Partition<Run2Tracks> run2tracklets = (aod::track::trackType == static_cast <uint8_t >(o2::aod::track::TrackTypeEnum::Run2Tracklet));
106112 Partition<Run2Tracks> tracksWithTPC = (aod::track::tpcNClsFindable > (uint8_t )0 );
107- Partition<Run2Tracks> pvContribTracks = (nabs(aod::track::eta) < 0 .8f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
108- Partition<Run2Tracks> pvContribTracksEta1 = (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
113+ Partition<Run2Tracks> pvContribTracks = (nabs(aod::track::eta) < 0 .8f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
114+ Partition<Run2Tracks> pvContribTracksEta1 = (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
109115 Preslice<aod::Tracks> perCol = aod::track::collisionId;
110116 Preslice<aod::TracksIU> perColIU = aod::track::collisionId;
111117 Preslice<aod::MFTTracks> perCollisionMFT = o2::aod::fwdtrack::collisionId;
@@ -116,12 +122,12 @@ struct MultiplicityTable {
116122 Configurable<int > doVertexZeq{" doVertexZeq" , 1 , " if 1: do vertex Z eq mult table" };
117123 Configurable<float > fractionOfEvents{" fractionOfEvents" , 2.0 , " Fractions of events to keep in case the QA is used" };
118124 Configurable<LabeledArray<int >> enabledTables{" enabledTables" ,
119- {defaultParameters[0 ], nTables, nParameters , tableNames, parameterNames},
125+ {defaultParameters[0 ], Ntables, Nparameters , tableNames, parameterNames},
120126 " Produce tables depending on needs. Values different than -1 override the automatic setup: the corresponding table can be set off (0) or on (1)" };
121127
122128 struct : ConfigurableGroup {
123129 Configurable<std::string> ccdburl{" ccdburl" , " http://alice-ccdb.cern.ch" , " The CCDB endpoint url address" };
124- Configurable<std::string> ccdbPath{" ccdbpath " , " Centrality/Calibration" , " The CCDB path for centrality/multiplicity information" };
130+ Configurable<std::string> ccdbPath{" ccdbPath " , " Centrality/Calibration" , " The CCDB path for centrality/multiplicity information" };
125131 Configurable<std::string> reconstructionPass{" reconstructionPass" , " " , {" Apass to use when fetching the calibration tables. Empty (default) does not check for any pass. Use `metadata` to fetch it from the AO2D metadata. Otherwise it will override the metadata." }};
126132 } ccdbConfig;
127133
@@ -162,8 +168,8 @@ struct MultiplicityTable {
162168 LOGF (fatal, " Cannot enable processRun2 and processRun3 at the same time. Please choose one." );
163169 }
164170
165- bool tEnabled[nTables ] = {false };
166- for (int i = 0 ; i < nTables ; i++) {
171+ bool tEnabled[Ntables ] = {false };
172+ for (int i = 0 ; i < Ntables ; i++) {
167173 int f = enabledTables->get (tableNames[i].c_str (), " Enable" );
168174 enableFlagIfTableRequired (context, tableNames[i], f);
169175 if (f == 1 ) {
@@ -256,21 +262,21 @@ struct MultiplicityTable {
256262 int multNContribsEtaHalf = 0 ;
257263
258264 if (collision.has_fv0a ()) {
259- for (auto amplitude : collision.fv0a ().amplitude ()) {
265+ for (const auto & amplitude : collision.fv0a ().amplitude ()) {
260266 multFV0A += amplitude;
261267 }
262268 }
263269 if (collision.has_fv0c ()) {
264- for (auto amplitude : collision.fv0c ().amplitude ()) {
270+ for (const auto & amplitude : collision.fv0c ().amplitude ()) {
265271 multFV0C += amplitude;
266272 }
267273 }
268274 if (collision.has_ft0 ()) {
269275 auto ft0 = collision.ft0 ();
270- for (auto amplitude : ft0.amplitudeA ()) {
276+ for (const auto & amplitude : ft0.amplitudeA ()) {
271277 multFT0A += amplitude;
272278 }
273- for (auto amplitude : ft0.amplitudeC ()) {
279+ for (const auto & amplitude : ft0.amplitudeC ()) {
274280 multFT0C += amplitude;
275281 }
276282 }
@@ -280,7 +286,20 @@ struct MultiplicityTable {
280286 multZNC = zdc.energyCommonZNC ();
281287 }
282288
283- LOGF (debug, " multFV0A=%5.0f multFV0C=%5.0f multFT0A=%5.0f multFT0C=%5.0f multFDDA=%5.0f multFDDC=%5.0f multZNA=%6.0f multZNC=%6.0f multTracklets=%i multTPC=%i" , multFV0A, multFV0C, multFT0A, multFT0C, multFDDA, multFDDC, multZNA, multZNC, multTracklets, multTPC);
289+ // Try to do something Similar to https://github.com/alisw/AliPhysics/blob/22862a945004f719f8e9664c0264db46e7186a48/OADB/AliPPVsMultUtils.cxx#L541C26-L541C37
290+ for (const auto & tracklet : trackletsGrouped) {
291+ if (std::abs (tracklet.eta ()) < 1.0 ) {
292+ multNContribsEta1++;
293+ }
294+ if (std::abs (tracklet.eta ()) < 0.8 ) {
295+ multNContribs++;
296+ }
297+ if (std::abs (tracklet.eta ()) < 0.5 ) {
298+ multNContribsEtaHalf++;
299+ }
300+ }
301+
302+ LOGF (debug, " multFV0A=%5.0f multFV0C=%5.0f multFT0A=%5.0f multFT0C=%5.0f multFDDA=%5.0f multFDDC=%5.0f multZNA=%6.0f multZNC=%6.0f multTracklets=%i multTPC=%i multNContribsEta1=%i multNContribs=%i multNContribsEtaHalf=%i" , multFV0A, multFV0C, multFT0A, multFT0C, multFDDA, multFDDC, multZNA, multZNC, multTracklets, multTPC, multNContribs, multNContribsEta1, multNContribsEtaHalf);
284303 tableFV0 (multFV0A, multFV0C);
285304 tableFT0 (multFT0A, multFT0C);
286305 tableFDD (multFDDA, multFDDC);
@@ -292,10 +311,10 @@ struct MultiplicityTable {
292311
293312 using Run3TracksIU = soa::Join<aod::TracksIU, aod::TracksExtra>;
294313 Partition<Run3TracksIU> tracksIUWithTPC = (aod::track::tpcNClsFindable > (uint8_t )0 );
295- Partition<Run3TracksIU> pvAllContribTracksIU = ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
296- Partition<Run3TracksIU> pvContribTracksIU = (nabs(aod::track::eta) < 0 .8f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
297- Partition<Run3TracksIU> pvContribTracksIUEta1 = (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
298- Partition<Run3TracksIU> pvContribTracksIUEtaHalf = (nabs(aod::track::eta) < 0 .5f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor);
314+ Partition<Run3TracksIU> pvAllContribTracksIU = ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
315+ Partition<Run3TracksIU> pvContribTracksIU = (nabs(aod::track::eta) < 0 .8f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
316+ Partition<Run3TracksIU> pvContribTracksIUEta1 = (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
317+ Partition<Run3TracksIU> pvContribTracksIUEtaHalf = (nabs(aod::track::eta) < 0 .5f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) );
299318
300319 void processRun3 (soa::Join<aod::Collisions, aod::EvSels> const & collisions,
301320 Run3TracksIU const &,
@@ -306,7 +325,7 @@ struct MultiplicityTable {
306325 aod::FDDs const &)
307326 {
308327 // reserve memory
309- for (auto i : mEnabledTables ) {
328+ for (const auto & i : mEnabledTables ) {
310329 switch (i) {
311330 case kFV0Mults : // FV0
312331 tableFV0.reserve (collisions.size ());
@@ -429,7 +448,7 @@ struct MultiplicityTable {
429448 }
430449 }
431450
432- for (auto i : mEnabledTables ) {
451+ for (const auto & i : mEnabledTables ) {
433452 switch (i) {
434453 case kFV0Mults : // FV0
435454 {
@@ -462,10 +481,10 @@ struct MultiplicityTable {
462481 // using FT0 row index from event selection task
463482 if (collision.has_foundFT0 ()) {
464483 const auto & ft0 = collision.foundFT0 ();
465- for (auto amplitude : ft0.amplitudeA ()) {
484+ for (const auto & amplitude : ft0.amplitudeA ()) {
466485 multFT0A += amplitude;
467486 }
468- for (auto amplitude : ft0.amplitudeC ()) {
487+ for (const auto & amplitude : ft0.amplitudeC ()) {
469488 multFT0C += amplitude;
470489 }
471490 } else {
@@ -482,10 +501,10 @@ struct MultiplicityTable {
482501 // using FDD row index from event selection task
483502 if (collision.has_foundFDD ()) {
484503 const auto & fdd = collision.foundFDD ();
485- for (auto amplitude : fdd.chargeA ()) {
504+ for (const auto & amplitude : fdd.chargeA ()) {
486505 multFDDA += amplitude;
487506 }
488- for (auto amplitude : fdd.chargeC ()) {
507+ for (const auto & amplitude : fdd.chargeC ()) {
489508 multFDDC += amplitude;
490509 }
491510 } else {
@@ -537,7 +556,7 @@ struct MultiplicityTable {
537556 // use only one single grouping operation, then do loop
538557 const auto & tracksThisCollision = pvContribTracksIUEta1.sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
539558 multNContribsEta1 = tracksThisCollision.size ();
540- for (auto track : tracksThisCollision) {
559+ for (const auto & track : tracksThisCollision) {
541560 if (std::abs (track.eta ()) < 0.8 ) {
542561 multNContribs++;
543562 }
@@ -556,7 +575,7 @@ struct MultiplicityTable {
556575 const auto & pvAllContribsGrouped = pvAllContribTracksIU->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
557576 const auto & tpcTracksGrouped = tracksIUWithTPC->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
558577
559- for (auto track : pvAllContribsGrouped) {
578+ for (const auto & track : pvAllContribsGrouped) {
560579 if (track.hasITS ()) {
561580 nHasITS++;
562581 if (track.hasTPC ())
@@ -577,7 +596,7 @@ struct MultiplicityTable {
577596
578597 int nAllTracksTPCOnly = 0 ;
579598 int nAllTracksITSTPC = 0 ;
580- for (auto track : tpcTracksGrouped) {
599+ for (const auto & track : tpcTracksGrouped) {
581600 if (track.hasITS ()) {
582601 nAllTracksITSTPC++;
583602 } else {
@@ -599,14 +618,14 @@ struct MultiplicityTable {
599618 } break ;
600619 case kFV0MultZeqs : // Z equalized FV0
601620 {
602- if (fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
621+ if (std:: fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
603622 multZeqFV0A = hVtxZFV0A->Interpolate (0.0 ) * multFV0A / hVtxZFV0A->Interpolate (collision.posZ ());
604623 }
605624 tableFV0Zeqs (multZeqFV0A);
606625 } break ;
607626 case kFT0MultZeqs : // Z equalized FT0
608627 {
609- if (fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
628+ if (std:: fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
610629 multZeqFT0A = hVtxZFT0A->Interpolate (0.0 ) * multFT0A / hVtxZFT0A->Interpolate (collision.posZ ());
611630 multZeqFT0C = hVtxZFT0C->Interpolate (0.0 ) * multFT0C / hVtxZFT0C->Interpolate (collision.posZ ());
612631 }
@@ -620,15 +639,15 @@ struct MultiplicityTable {
620639 } break ;
621640 case kFDDMultZeqs : // Z equalized FDD
622641 {
623- if (fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
642+ if (std:: fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
624643 multZeqFDDA = hVtxZFDDA->Interpolate (0.0 ) * multFDDA / hVtxZFDDA->Interpolate (collision.posZ ());
625644 multZeqFDDC = hVtxZFDDC->Interpolate (0.0 ) * multFDDC / hVtxZFDDC->Interpolate (collision.posZ ());
626645 }
627646 tableFDDZeqs (multZeqFDDA, multZeqFDDC);
628647 } break ;
629648 case kPVMultZeqs : // Z equalized PV
630649 {
631- if (fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
650+ if (std:: fabs (collision.posZ ()) < 15 .0f && lCalibLoaded) {
632651 multZeqNContribs = hVtxZNTracks->Interpolate (0.0 ) * multNContribs / hVtxZNTracks->Interpolate (collision.posZ ());
633652 }
634653 tablePVZeqs (multZeqNContribs);
@@ -649,9 +668,9 @@ struct MultiplicityTable {
649668 // FIT FT0C: -3.3 < η < -2.1
650669 // FOT FT0A: 3.5 < η < 4.9
651670 Filter mcParticleFilter = (aod::mcparticle::eta < 7 .0f ) && (aod::mcparticle::eta > -7 .0f );
652- using mcParticlesFiltered = soa::Filtered<aod::McParticles>;
671+ using McParticlesFiltered = soa::Filtered<aod::McParticles>;
653672
654- void processMC (aod::McCollision const & mcCollision, mcParticlesFiltered const & mcParticles)
673+ void processMC (aod::McCollision const & mcCollision, McParticlesFiltered const & mcParticles)
655674 {
656675 int multFT0A = 0 ;
657676 int multFV0A = 0 ;
@@ -703,49 +722,49 @@ struct MultiplicityTable {
703722 tableExtraMult2MCExtras (collision.mcCollisionId ()); // interlink
704723 }
705724
706- Configurable<float > min_pt_globaltrack{ " min_pt_globaltrack " , 0.15 , " min. pT for global tracks" };
707- Configurable<float > max_pt_globaltrack{ " max_pt_globaltrack " , 1e+10 , " max. pT for global tracks" };
708- Configurable<int > min_ncluster_its_globaltrack{ " min_ncluster_its_globaltrack " , 5 , " min. number of ITS clusters for global tracks" };
709- Configurable<int > min_ncluster_itsib_globaltrack{ " min_ncluster_itsib_globaltrack " , 1 , " min. number of ITSib clusters for global tracks" };
725+ Configurable<float > minPtGlobalTrack{ " minPtGlobalTrack " , 0.15 , " min. pT for global tracks" };
726+ Configurable<float > maxPtGlobalTrack{ " maxPtGlobalTrack " , 1e+10 , " max. pT for global tracks" };
727+ Configurable<int > minNclsITSGlobalTrack{ " minNclsITSGlobalTrack " , 5 , " min. number of ITS clusters for global tracks" };
728+ Configurable<int > minNclsITSibGlobalTrack{ " minNclsITSibGlobalTrack " , 1 , " min. number of ITSib clusters for global tracks" };
710729
711730 using Run3Tracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection>;
712- Partition<Run3Tracks> pvContribGlobalTracksEta1 = (min_pt_globaltrack < aod::track::pt && aod::track::pt < max_pt_globaltrack ) && (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & ( uint32_t ) o2::aod::track::PVContributor) == ( uint32_t ) o2::aod::track::PVContributor) && requireQualityTracksInFilter();
731+ Partition<Run3Tracks> pvContribGlobalTracksEta1 = (minPtGlobalTrack < aod::track::pt && aod::track::pt < maxPtGlobalTrack ) && (nabs(aod::track::eta) < 1 .0f ) && ((aod::track::flags & static_cast < uint32_t >( o2::aod::track::PVContributor)) == static_cast < uint32_t >( o2::aod::track::PVContributor) ) && requireQualityTracksInFilter();
713732
714733 void processGlobalTrackingCounters (aod::Collision const & collision, soa::Join<Run3TracksIU, aod::TrackSelection, aod::TrackSelectionExtension> const & tracksIU, Run3Tracks const &)
715734 {
716735 // counter from Igor
717736 int nGlobalTracks = 0 ;
718- int multNContribsEta05_kGlobalTrackWoDCA = 0 ;
719- int multNContribsEta08_kGlobalTrackWoDCA = 0 ;
720- int multNContribsEta10_kGlobalTrackWoDCA = 0 ;
737+ int multNbrContribsEta05GlobalTrackWoDCA = 0 ;
738+ int multNbrContribsEta08GlobalTrackWoDCA = 0 ;
739+ int multNbrContribsEta10GlobalTrackWoDCA = 0 ;
721740
722- auto pvContribGlobalTracksEta1_per_collision = pvContribGlobalTracksEta1->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
741+ auto pvContribGlobalTracksEta1PerCollision = pvContribGlobalTracksEta1->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
723742
724- for (auto & track : pvContribGlobalTracksEta1_per_collision ) {
725- if (track.itsNCls () < min_ncluster_its_globaltrack || track.itsNClsInnerBarrel () < min_ncluster_itsib_globaltrack ) {
743+ for (const auto & track : pvContribGlobalTracksEta1PerCollision ) {
744+ if (track.itsNCls () < minNclsITSGlobalTrack || track.itsNClsInnerBarrel () < minNclsITSibGlobalTrack ) {
726745 continue ;
727746 }
728- multNContribsEta10_kGlobalTrackWoDCA ++;
747+ multNbrContribsEta10GlobalTrackWoDCA ++;
729748
730749 if (std::abs (track.eta ()) < 0.8 ) {
731- multNContribsEta08_kGlobalTrackWoDCA ++;
750+ multNbrContribsEta08GlobalTrackWoDCA ++;
732751 }
733752 if (std::abs (track.eta ()) < 0.5 ) {
734- multNContribsEta05_kGlobalTrackWoDCA ++;
753+ multNbrContribsEta05GlobalTrackWoDCA ++;
735754 }
736755 }
737756
738- for (auto & track : tracksIU) {
739- if (fabs (track.eta ()) < 0.8 && track.tpcNClsFound () >= 80 && track.tpcNClsCrossedRows () >= 100 ) {
757+ for (const auto & track : tracksIU) {
758+ if (std:: fabs (track.eta ()) < 0.8 && track.tpcNClsFound () >= 80 && track.tpcNClsCrossedRows () >= 100 ) {
740759 if (track.isGlobalTrack ()) {
741760 nGlobalTracks++;
742761 }
743762 }
744763 }
745764
746- LOGF (debug, " nGlobalTracks = %d, multNContribsEta08_kGlobalTrackWoDCA = %d, multNContribsEta10_kGlobalTrackWoDCA = %d, multNContribsEta05_kGlobalTrackWoDCA = %d" , nGlobalTracks, multNContribsEta08_kGlobalTrackWoDCA, multNContribsEta10_kGlobalTrackWoDCA, multNContribsEta05_kGlobalTrackWoDCA );
765+ LOGF (debug, " nGlobalTracks = %d, multNbrContribsEta08GlobalTrackWoDCA = %d, multNbrContribsEta10GlobalTrackWoDCA = %d, multNbrContribsEta05GlobalTrackWoDCA = %d" , nGlobalTracks, multNbrContribsEta08GlobalTrackWoDCA, multNbrContribsEta10GlobalTrackWoDCA, multNbrContribsEta05GlobalTrackWoDCA );
747766
748- multsGlobal (nGlobalTracks, multNContribsEta08_kGlobalTrackWoDCA, multNContribsEta10_kGlobalTrackWoDCA, multNContribsEta05_kGlobalTrackWoDCA );
767+ multsGlobal (nGlobalTracks, multNbrContribsEta08GlobalTrackWoDCA, multNbrContribsEta10GlobalTrackWoDCA, multNbrContribsEta05GlobalTrackWoDCA );
749768 }
750769
751770 void processRun3MFT (soa::Join<aod::Collisions, aod::EvSels>::iterator const &,
@@ -755,14 +774,14 @@ struct MultiplicityTable {
755774 int nAllTracks = 0 ;
756775 int nTracks = 0 ;
757776
758- for (auto & track : mftTracks) {
777+ for (const auto & track : mftTracks) {
759778 if (track.nClusters () >= 5 ) { // hardcoded for now
760779 nAllTracks++;
761780 }
762781 }
763782
764783 if (retracks.size () > 0 ) {
765- for (auto & retrack : retracks) {
784+ for (const auto & retrack : retracks) {
766785 auto track = retrack.mfttrack ();
767786 if (track.nClusters () < 5 ) {
768787 continue ; // min cluster requirement
0 commit comments