Skip to content

Commit f531a63

Browse files
ilikmetaalibuild
andauthored
[PWGCF] Use global track selection (#8192)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent d1642fb commit f531a63

1 file changed

Lines changed: 116 additions & 115 deletions

File tree

PWGCF/Flow/Tasks/FlowGFWPbPb.cxx

Lines changed: 116 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,6 @@ using namespace o2::aod::evsel;
4444

4545
#define O2_DEFINE_CONFIGURABLE(NAME, TYPE, DEFAULT, HELP) Configurable<TYPE> NAME{#NAME, DEFAULT, HELP};
4646

47-
static constexpr TrackSelectionFlags::flagtype trackSelectionITS =
48-
TrackSelectionFlags::kITSNCls | TrackSelectionFlags::kITSChi2NDF |
49-
TrackSelectionFlags::kITSHits;
50-
static constexpr TrackSelectionFlags::flagtype trackSelectionTPC =
51-
TrackSelectionFlags::kTPCNCls |
52-
TrackSelectionFlags::kTPCCrossedRowsOverNCls |
53-
TrackSelectionFlags::kTPCChi2NDF;
54-
static constexpr TrackSelectionFlags::flagtype trackSelectionDCA =
55-
TrackSelectionFlags::kDCAz | TrackSelectionFlags::kDCAxy;
56-
static constexpr TrackSelectionFlags::flagtype trackSelectionDCAXYonly =
57-
TrackSelectionFlags::kDCAxy;
58-
5947
struct FlowGFWPbPb {
6048

6149
O2_DEFINE_CONFIGURABLE(cfgCutVertex, float, 10.0f, "Accepted z-vertex range")
@@ -64,8 +52,8 @@ struct FlowGFWPbPb {
6452
O2_DEFINE_CONFIGURABLE(cfgCutEta, float, 0.8f, "Eta range for tracks")
6553
O2_DEFINE_CONFIGURABLE(cfgCutChi2prTPCcls, float, 2.5, "Chi2 per TPC clusters")
6654
O2_DEFINE_CONFIGURABLE(cfgCutTPCclu, float, 70.0f, "minimum TPC clusters")
67-
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, false, "Use additional event cut on mult correlations")
68-
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalTrackCut, bool, false, "Use additional track cut on phi")
55+
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalEventCut, bool, true, "Use additional event cut on mult correlations")
56+
O2_DEFINE_CONFIGURABLE(cfgUseAdditionalTrackCut, bool, true, "Use additional track cut on phi")
6957
O2_DEFINE_CONFIGURABLE(cfgUseNch, bool, false, "Use Nch for flow observables")
7058
O2_DEFINE_CONFIGURABLE(cfgNbootstrap, int, 10, "Number of subsamples")
7159
O2_DEFINE_CONFIGURABLE(cfgOutputNUAWeights, bool, false, "Fill and output NUA weights")
@@ -74,10 +62,16 @@ struct FlowGFWPbPb {
7462
O2_DEFINE_CONFIGURABLE(cfgMagnetField, std::string, "GLO/Config/GRPMagField", "CCDB path to Magnet field object")
7563
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyHigh, int, 500, "High cut on TPC occupancy")
7664
O2_DEFINE_CONFIGURABLE(cfgCutOccupancyLow, int, 0, "Low cut on TPC occupancy")
77-
O2_DEFINE_CONFIGURABLE(dcaZ, float, 0.2f, "Custom DCA Z cut (ignored if negative)")
78-
O2_DEFINE_CONFIGURABLE(GlobalplusITS, bool, false, "Global and ITS tracks")
79-
O2_DEFINE_CONFIGURABLE(Globalonly, bool, false, "Global only tracks")
80-
O2_DEFINE_CONFIGURABLE(ITSonly, bool, false, "ITS only tracks")
65+
O2_DEFINE_CONFIGURABLE(cfgCutDCAz, float, 2, "Custom DCA Z cut")
66+
O2_DEFINE_CONFIGURABLE(cfgCutDCAxy, float, 0.2f, "Custom DCA XY cut")
67+
O2_DEFINE_CONFIGURABLE(cfgTVXinTRD, bool, false, "Use kTVXinTRD (reject TRD triggered events)");
68+
O2_DEFINE_CONFIGURABLE(cfgNoTimeFrameBorder, bool, false, "kNoTimeFrameBorder");
69+
O2_DEFINE_CONFIGURABLE(cfgNoITSROFrameBorder, bool, false, "kNoITSROFrameBorder");
70+
O2_DEFINE_CONFIGURABLE(cfgNoSameBunchPileup, bool, false, "kNoSameBunchPileup");
71+
O2_DEFINE_CONFIGURABLE(cfgIsGoodZvtxFT0vsPV, bool, false, "kIsGoodZvtxFT0vsPV");
72+
O2_DEFINE_CONFIGURABLE(cfgNoCollInTimeRangeStandard, bool, false, "kNoCollInTimeRangeStandard");
73+
O2_DEFINE_CONFIGURABLE(cfgOccupancy, bool, false, "Bool for event selection on detector occupancy");
74+
O2_DEFINE_CONFIGURABLE(cfgMultCut, bool, false, "Use additional event cut on mult correlations");
8175

8276
ConfigurableAxis axisVertex{"axisVertex", {20, -10, 10}, "vertex axis for histograms"};
8377
ConfigurableAxis axisPhi{"axisPhi", {60, 0.0, constants::math::TwoPI}, "phi axis for histograms"};
@@ -147,11 +141,18 @@ struct FlowGFWPbPb {
147141
ccdb->setCreatedNotAfter(nolaterthan.value);
148142

149143
// Add some output objects to the histogram registry
150-
registry.add("hEventCount", "Number of Events;; No. of Events", {HistType::kTH1D, {{4, 0, 4}}});
151-
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(1, "Filtered Events");
152-
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(2, "After sel8");
153-
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(3, "After additional event cut");
154-
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(4, "After correction loads");
144+
registry.add("hEventCount", "Number of Events;; No. of Events", {HistType::kTH1D, {{11, 0, 11}}});
145+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(1, "Filtered events");
146+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(2, "Sel8");
147+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(3, "Occupancy");
148+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(4, "kTVXinTRD");
149+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(5, "kNoTimeFrameBorder");
150+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(6, "kNoITSROFrameBorder");
151+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(7, "kNoSameBunchPileup");
152+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(8, "kIsGoodZvtxFT0vsPV");
153+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(9, "kNoCollInTimeRangeStandard");
154+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(10, "After Mult cuts");
155+
registry.get<TH1>(HIST("hEventCount"))->GetXaxis()->SetBinLabel(11, "Centrality");
155156
registry.add("hPhi", "#phi distribution", {HistType::kTH1D, {axisPhi}});
156157
registry.add("hPhiWeighted", "corrected #phi distribution", {HistType::kTH1D, {axisPhi}});
157158
registry.add("hEta", "", {HistType::kTH1D, {axisEta}});
@@ -179,13 +180,9 @@ struct FlowGFWPbPb {
179180
registry.add("multT0C_centT0C_Aft", "after cut;Centrality T0C;mulplicity T0C", {HistType::kTH2D, {axisCentForQA, axisT0C}});
180181

181182
// Track types
182-
registry.add("GlobalplusITS", "Global plus ITS;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
183-
registry.add("Globalonly", "Global only;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
184-
registry.add("ITSonly", "ITS only;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
183+
registry.add("Global_Tracks", "Global Tracks;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
185184
registry.add("Events_per_Centrality_Bin", "Events_per_Centrality_Bin;Centrality FT0C;No. of Events", kTH1F, {axisCentrality});
186-
registry.add("GlobalplusITS_Nch_vs_Cent", "Global plus ITS;Centrality (%); M (|#eta| < 0.8);", {HistType::kTH2D, {axisCentrality, axisNch}});
187-
registry.add("Globalonly_Nch_vs_Cent", "Global only;Centrality (%); M (|#eta| < 0.8);", {HistType::kTH2D, {axisCentrality, axisNch}});
188-
registry.add("ITSonly_Nch_vs_Cent", "ITS only;Centrality (%); M (|#eta| < 0.8);", {HistType::kTH2D, {axisCentrality, axisNch}});
185+
registry.add("Global_Tracks_Nch_vs_Cent", "Global Tracks;Centrality (%); M (|#eta| < 0.8);", {HistType::kTH2D, {axisCentrality, axisNch}});
189186

190187
// Track QA
191188
registry.add("hPt", "p_{T} distribution before cut", {HistType::kTH1D, {axisPtHist}});
@@ -367,30 +364,53 @@ struct FlowGFWPbPb {
367364
template <typename TCollision>
368365
bool eventSelected(o2::aod::mult::MultNTracksPV, TCollision collision, const int multTrk, const float centrality)
369366
{
370-
if (collision.alias_bit(kTVXinTRD)) {
371-
// TRD triggered
372-
return false;
367+
if (cfgTVXinTRD) {
368+
if (collision.alias_bit(kTVXinTRD)) {
369+
// TRD triggered
370+
return false;
371+
}
372+
registry.fill(HIST("hEventCount"), 3.5);
373373
}
374-
if (!collision.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
375-
// reject collisions close to Time Frame borders
376-
// https://its.cern.ch/jira/browse/O2-4623
377-
return false;
374+
if (cfgNoTimeFrameBorder) {
375+
if (!collision.selection_bit(o2::aod::evsel::kNoTimeFrameBorder)) {
376+
// reject collisions close to Time Frame borders
377+
// https://its.cern.ch/jira/browse/O2-4623
378+
return false;
379+
}
380+
registry.fill(HIST("hEventCount"), 4.5);
378381
}
379-
if (!collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) {
380-
// reject events affected by the ITS ROF border
381-
// https://its.cern.ch/jira/browse/O2-4309
382-
return false;
382+
if (cfgNoITSROFrameBorder) {
383+
if (!collision.selection_bit(o2::aod::evsel::kNoITSROFrameBorder)) {
384+
// reject events affected by the ITS ROF border
385+
// https://its.cern.ch/jira/browse/O2-4309
386+
return false;
387+
}
388+
registry.fill(HIST("hEventCount"), 5.5);
383389
}
384-
if (!collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
385-
// rejects collisions which are associated with the same "found-by-T0" bunch crossing
386-
// https://indico.cern.ch/event/1396220/#1-event-selection-with-its-rof
387-
return false;
390+
if (cfgNoSameBunchPileup) {
391+
if (!collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup)) {
392+
// rejects collisions which are associated with the same "found-by-T0" bunch crossing
393+
// https://indico.cern.ch/event/1396220/#1-event-selection-with-its-rof
394+
return false;
395+
}
396+
registry.fill(HIST("hEventCount"), 6.5);
388397
}
389-
if (!collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV)) {
390-
// removes collisions with large differences between z of PV by tracks and z of PV from FT0 A-C time difference
391-
// use this cut at low multiplicities with caution
392-
return false;
398+
if (cfgIsGoodZvtxFT0vsPV) {
399+
if (!collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV)) {
400+
// removes collisions with large differences between z of PV by tracks and z of PV from FT0 A-C time difference
401+
// use this cut at low multiplicities with caution
402+
return false;
403+
}
404+
registry.fill(HIST("hEventCount"), 7.5);
393405
}
406+
if (cfgNoCollInTimeRangeStandard) {
407+
if (!collision.selection_bit(o2::aod::evsel::kNoCollInTimeRangeStandard)) {
408+
// no collisions in specified time range
409+
return false;
410+
}
411+
registry.fill(HIST("hEventCount"), 8.5);
412+
}
413+
394414
float vtxz = -999;
395415
if (collision.numContrib() > 1) {
396416
vtxz = collision.posZ();
@@ -400,22 +420,21 @@ struct FlowGFWPbPb {
400420
}
401421

402422
auto multNTracksPV = collision.multNTracksPV();
403-
auto occupancy = collision.trackOccupancyInTimeRange();
404423

405-
if (centrality >= 70. || centrality < 0)
406-
return false;
407424
if (abs(vtxz) > cfgCutVertex)
408425
return false;
409-
if (multNTracksPV < fMultPVCutLow->Eval(centrality))
410-
return false;
411-
if (multNTracksPV > fMultPVCutHigh->Eval(centrality))
412-
return false;
413-
if (multTrk < fMultCutLow->Eval(centrality))
414-
return false;
415-
if (multTrk > fMultCutHigh->Eval(centrality))
416-
return false;
417-
if (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh)
418-
return false;
426+
427+
if (cfgMultCut) {
428+
if (multNTracksPV < fMultPVCutLow->Eval(centrality))
429+
return false;
430+
if (multNTracksPV > fMultPVCutHigh->Eval(centrality))
431+
return false;
432+
if (multTrk < fMultCutLow->Eval(centrality))
433+
return false;
434+
if (multTrk > fMultCutHigh->Eval(centrality))
435+
return false;
436+
registry.fill(HIST("hEventCount"), 9.5);
437+
}
419438

420439
// V0A T0A 5 sigma cut
421440
if (abs(collision.multFV0A() - fT0AV0AMean->Eval(collision.multFT0A())) > 5 * fT0AV0ASigma->Eval(collision.multFT0A()))
@@ -460,13 +479,7 @@ struct FlowGFWPbPb {
460479

461480
// Apply process filters
462481
Filter collisionFilter = nabs(aod::collision::posZ) < cfgCutVertex;
463-
Filter trackFilter = ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::ITS) &&
464-
ncheckbit(aod::track::trackCutFlag, trackSelectionITS) &&
465-
ifnode(ncheckbit(aod::track::v001::detectorMap, (uint8_t)o2::aod::track::TPC),
466-
ncheckbit(aod::track::trackCutFlag, trackSelectionTPC), true) &&
467-
ifnode(dcaZ.node() > 0.f, nabs(aod::track::dcaZ) <= dcaZ && ncheckbit(aod::track::trackCutFlag, trackSelectionDCAXYonly),
468-
ncheckbit(aod::track::trackCutFlag, trackSelectionDCA)) &&
469-
(nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax);
482+
Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPtMin) && (aod::track::pt < cfgCutPtMax) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t) true)) && (aod::track::tpcChi2NCl < cfgCutChi2prTPCcls) && (nabs(aod::track::dcaZ) < cfgCutDCAz) && (nabs(aod::track::dcaXY) < cfgCutDCAxy);
470483

471484
using Colls = soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::MultsExtra, aod::CentFT0Cs>>; // collisions filter
472485
using aodTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TrackSelection, aod::TracksDCA, aod::TracksExtra>>; // tracks filter
@@ -491,25 +504,33 @@ struct FlowGFWPbPb {
491504
registry.fill(HIST("BeforeCut_multT0C_centT0C"), collision.centFT0C(), collision.multFT0C());
492505
registry.fill(HIST("hEventCount"), 1.5);
493506

494-
const auto cent = collision.centFT0C();
507+
const auto centrality = collision.centFT0C();
495508

496-
if (cfgUseAdditionalEventCut && !eventSelected(o2::aod::mult::MultNTracksPV(), collision, tracks.size(), cent)) {
509+
if (cfgOccupancy) {
510+
int occupancy = collision.trackOccupancyInTimeRange();
511+
if (occupancy < cfgCutOccupancyLow || occupancy > cfgCutOccupancyHigh)
512+
return;
513+
registry.fill(HIST("hEventCount"), 2.5);
514+
}
515+
516+
if (cfgUseAdditionalEventCut && !eventSelected(o2::aod::mult::MultNTracksPV(), collision, tracks.size(), centrality)) {
497517
return;
498518
}
499519

500-
registry.fill(HIST("hEventCount"), 2.5);
520+
if (centrality < 0 || centrality >= 70.)
521+
return;
501522

502523
float vtxz = collision.posZ();
503524
float l_Random = fRndm->Rndm();
504525
registry.fill(HIST("hVtxZ"), vtxz);
505526
registry.fill(HIST("hMult"), Ntot);
506-
registry.fill(HIST("hCent"), cent);
507-
registry.fill(HIST("cent_vs_Nch"), cent, Ntot);
527+
registry.fill(HIST("hCent"), centrality);
528+
registry.fill(HIST("cent_vs_Nch"), centrality, Ntot);
508529
fGFW->Clear();
509530

510531
auto bc = collision.bc_as<aod::BCsWithTimestamps>();
511532
loadCorrections(bc.timestamp());
512-
registry.fill(HIST("hEventCount"), 3.5);
533+
registry.fill(HIST("hEventCount"), 10.5);
513534

514535
// fill event QA after cuts
515536
registry.fill(HIST("globalTracks_centT0C_Aft"), collision.centFT0C(), tracks.size());
@@ -530,16 +551,16 @@ struct FlowGFWPbPb {
530551
}
531552

532553
// track loop
533-
int globalplusits_nch{0};
534-
int gloabalonly_nch{0};
535-
int itsonly_nch{0};
554+
int globaltracks_nch{0};
536555

537556
for (auto& track : tracks) {
538557

558+
if (track.tpcNClsFound() < cfgCutTPCclu)
559+
continue;
539560
if (cfgUseAdditionalTrackCut && !trackSelected(track, Magnetfield))
540561
continue;
541562
if (cfgOutputNUAWeights)
542-
fWeights->Fill(track.phi(), track.eta(), vtxz, track.pt(), cent, 0);
563+
fWeights->Fill(track.phi(), track.eta(), vtxz, track.pt(), centrality, 0);
543564
if (!setCurrentParticleWeights(weff, wacc, track.phi(), track.eta(), track.pt(), vtxz))
544565
continue;
545566

@@ -558,54 +579,34 @@ struct FlowGFWPbPb {
558579
registry.fill(HIST("hDCAxy"), track.dcaXY(), track.pt());
559580
}
560581

561-
globalplusits_nch++;
562-
registry.fill(HIST("GlobalplusITS"), collision.centFT0C());
563-
if (GlobalplusITS) {
564-
if (WithinPtRef)
565-
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), wacc * weff, 1);
566-
}
567-
568-
if (track.hasTPC()) {
569-
gloabalonly_nch++;
570-
registry.fill(HIST("Globalonly"), collision.centFT0C());
571-
if (Globalonly) {
572-
if (WithinPtRef)
573-
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), wacc * weff, 1);
574-
}
575-
} else {
576-
itsonly_nch++;
577-
registry.fill(HIST("ITSonly"), collision.centFT0C());
578-
if (ITSonly) {
579-
if (WithinPtRef)
580-
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), wacc * weff, 1);
581-
}
582-
}
582+
globaltracks_nch++;
583+
registry.fill(HIST("Global_Tracks"), collision.centFT0C());
584+
if (WithinPtRef)
585+
fGFW->Fill(track.eta(), fPtAxis->FindBin(track.pt()) - 1, track.phi(), wacc * weff, 1);
583586

584587
} // End of track loop
585588

586-
registry.fill(HIST("Events_per_Centrality_Bin"), cent);
587-
registry.fill(HIST("GlobalplusITS_Nch_vs_Cent"), cent, globalplusits_nch);
588-
registry.fill(HIST("Globalonly_Nch_vs_Cent"), cent, gloabalonly_nch);
589-
registry.fill(HIST("ITSonly_Nch_vs_Cent"), cent, itsonly_nch);
589+
registry.fill(HIST("Events_per_Centrality_Bin"), centrality);
590+
registry.fill(HIST("Global_Tracks_Nch_vs_Cent"), centrality, globaltracks_nch);
590591

591592
// Filling c22 with ROOT TProfile
592-
FillProfile(corrconfigs.at(0), HIST("c22"), cent);
593-
FillProfile(corrconfigs.at(1), HIST("c24"), cent);
594-
FillProfile(corrconfigs.at(2), HIST("c26"), cent);
595-
FillProfile(corrconfigs.at(3), HIST("c28"), cent);
596-
FillProfile(corrconfigs.at(4), HIST("c22etagap"), cent);
593+
FillProfile(corrconfigs.at(0), HIST("c22"), centrality);
594+
FillProfile(corrconfigs.at(1), HIST("c24"), centrality);
595+
FillProfile(corrconfigs.at(2), HIST("c26"), centrality);
596+
FillProfile(corrconfigs.at(3), HIST("c28"), centrality);
597+
FillProfile(corrconfigs.at(4), HIST("c22etagap"), centrality);
597598

598599
// Filling Bootstrap Samples
599600
int SampleIndex = static_cast<int>(cfgNbootstrap * l_Random);
600-
FillProfile(corrconfigs.at(0), BootstrapArray[SampleIndex][kc22], cent);
601-
FillProfile(corrconfigs.at(1), BootstrapArray[SampleIndex][kc24], cent);
602-
FillProfile(corrconfigs.at(2), BootstrapArray[SampleIndex][kc26], cent);
603-
FillProfile(corrconfigs.at(3), BootstrapArray[SampleIndex][kc28], cent);
604-
FillProfile(corrconfigs.at(4), BootstrapArray[SampleIndex][kc22etagap], cent);
601+
FillProfile(corrconfigs.at(0), BootstrapArray[SampleIndex][kc22], centrality);
602+
FillProfile(corrconfigs.at(1), BootstrapArray[SampleIndex][kc24], centrality);
603+
FillProfile(corrconfigs.at(2), BootstrapArray[SampleIndex][kc26], centrality);
604+
FillProfile(corrconfigs.at(3), BootstrapArray[SampleIndex][kc28], centrality);
605+
FillProfile(corrconfigs.at(4), BootstrapArray[SampleIndex][kc22etagap], centrality);
605606

606607
// Filling Flow Container
607608
for (uint l_ind = 0; l_ind < corrconfigs.size(); l_ind++) {
608-
FillFC(corrconfigs.at(l_ind), cent, l_Random);
609+
FillFC(corrconfigs.at(l_ind), centrality, l_Random);
609610
}
610611

611612
} // End of process

0 commit comments

Comments
 (0)