Skip to content

Commit 1449ec4

Browse files
[Common] Fill multNContribs variables for Run 2 converted data (AliceO2Group#10135)
1 parent 088eabf commit 1449ec4

File tree

1 file changed

+72
-53
lines changed

1 file changed

+72
-53
lines changed

Common/TableProducer/multiplicityTable.cxx

Lines changed: 72 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
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;
5056
static constexpr int kFDDMultZeqs = 11;
5157
static constexpr int kPVMultZeqs = 12;
5258
static 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
5662
static_assert(kFV0Mults < kFV0MultZeqs);
5763
static_assert(kFT0Mults < kFT0MultZeqs);
5864
static_assert(kFDDMults < kFDDMultZeqs);
5965
static_assert(kPVMults < kPVMultZeqs);
6066

61-
static constexpr int nParameters = 1;
67+
static constexpr int Nparameters = 1;
6268
static 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
7682
static 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

7985
struct 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

Comments
 (0)