Skip to content

Commit 27ea0a7

Browse files
Maxim VirtaMaxim Virta
authored andcommitted
Additional linter suggestions applied
1 parent de3711f commit 27ea0a7

1 file changed

Lines changed: 64 additions & 66 deletions

File tree

Common/TableProducer/qVectorsTable.cxx

Lines changed: 64 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ using MyCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::FT
6464

6565
using MyTracks = soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TrackSelectionExtension>;
6666

67-
struct qVectorsTable {
67+
struct QVectorsTable {
6868
enum Detectors {
6969
kFT0C = 0,
7070
kFT0A = 1,
@@ -91,15 +91,11 @@ struct qVectorsTable {
9191

9292
// Configurables.
9393
struct : ConfigurableGroup {
94-
Configurable<std::string> cfgURL{"cfgURL",
95-
"http://alice-ccdb.cern.ch", "Address of the CCDB to browse"};
96-
Configurable<int64_t> nolaterthan{"ccdb-no-later-than",
97-
std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(),
98-
"Latest acceptable timestamp of creation for the object"};
94+
Configurable<std::string> cfgURL{"cfgURL", "http://alice-ccdb.cern.ch", "Address of the CCDB to browse"};
95+
Configurable<int64_t> ccdbNoLaterThan{"ccdb-no-later-than", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "Latest acceptable timestamp of creation for the object"};
9996
} cfgCcdbParam;
10097

101-
Configurable<int> cfgCentEsti{"cfgCentEsti",
102-
2, "Centrality estimator (Run3): 0 = FT0M, 1 = FT0A, 2 = FT0C, 3 = FV0A"};
98+
Configurable<int> cfgCentEsti{"cfgCentEsti", 2, "Centrality estimator (Run3): 0 = FT0M, 1 = FT0A, 2 = FT0C, 3 = FV0A"};
10399

104100
Configurable<float> cfgMinPtOnTPC{"cfgMinPtOnTPC", 0.15, "minimum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
105101
Configurable<float> cfgMaxPtOnTPC{"cfgMaxPtOnTPC", 5., "maximum transverse momentum selection for TPC tracks participating in Q-vector reconstruction"};
@@ -164,15 +160,15 @@ struct qVectorsTable {
164160
Produces<aod::EseQvecTPCallVecs> eseQVectorTPCAllVec;
165161
Produces<aod::EseQvecPercs> eseQVectorPerc;
166162

167-
std::vector<float> FT0RelGainConst{};
168-
std::vector<float> FV0RelGainConst{};
163+
std::vector<float> ft0RelGainConst{};
164+
std::vector<float> fv0RelGainConst{};
169165

170166
// Enable access to the CCDB for the offset and correction constants and save them
171167
// in dedicated variables.
172168
Service<o2::ccdb::BasicCCDBManager> ccdb;
173169

174170
// geometry instances for V0 and T0
175-
o2::fv0::Geometry* fv0geom;
171+
o2::fv0::Geometry* fv0geom{nullptr};
176172
o2::ft0::Geometry ft0geom;
177173

178174
// Variables for other classes.
@@ -182,7 +178,9 @@ struct qVectorsTable {
182178

183179
const float minAmplitude = 1.0e-8f;
184180
int runNumber{-1};
185-
float cent;
181+
float cent{-999.f};
182+
const int nShiftIndex = 10;
183+
const float trackEtaMin = 0.1;
186184

187185
std::vector<TH3F*> corrsQvecSp{};
188186
std::vector<TH3F*> corrsQvecEse{};
@@ -244,7 +242,7 @@ struct qVectorsTable {
244242
ccdb->setURL(cfgCcdbParam.cfgURL);
245243
ccdb->setCaching(true);
246244
ccdb->setLocalObjectValidityChecking();
247-
ccdb->setCreatedNotAfter(cfgCcdbParam.nolaterthan.value);
245+
ccdb->setCreatedNotAfter(cfgCcdbParam.ccdbNoLaterThan.value);
248246
ccdb->setFatalWhenNull(false);
249247

250248
AxisSpec axisPt = {40, 0.0, 4.0};
@@ -267,10 +265,10 @@ struct qVectorsTable {
267265

268266
void initCCDB(aod::BCsWithTimestamps::iterator const& bc)
269267
{
270-
FT0RelGainConst.clear();
271-
FV0RelGainConst.clear();
272-
FT0RelGainConst = {};
273-
FV0RelGainConst = {};
268+
ft0RelGainConst.clear();
269+
fv0RelGainConst.clear();
270+
ft0RelGainConst = {};
271+
fv0RelGainConst = {};
274272

275273
std::string fullPath;
276274

@@ -369,25 +367,25 @@ struct qVectorsTable {
369367
fullPath = cfgGainEqPath;
370368
fullPath += "/FT0";
371369
const int nPixelsFT0 = 208;
372-
const auto objft0Gain = getForTsOrRun<std::vector<float>>(fullPath, timestamp, runnumber);
370+
auto const* objft0Gain = getForTsOrRun<std::vector<float>>(fullPath, timestamp, runnumber);
373371
if (!objft0Gain || cfgCorrLevel == 0) {
374372
for (auto i{0u}; i < nPixelsFT0; i++) {
375-
FT0RelGainConst.push_back(1.);
373+
ft0RelGainConst.push_back(1.);
376374
}
377375
} else {
378-
FT0RelGainConst = *(objft0Gain);
376+
ft0RelGainConst = *(objft0Gain);
379377
}
380378

381379
fullPath = cfgGainEqPath;
382380
fullPath += "/FV0";
383381
const int nChannelsFV0 = 48;
384-
const auto objfv0Gain = getForTsOrRun<std::vector<float>>(fullPath, timestamp, runnumber);
382+
auto const* objfv0Gain = getForTsOrRun<std::vector<float>>(fullPath, timestamp, runnumber);
385383
if (!objfv0Gain || cfgCorrLevel == 0) {
386384
for (auto i{0u}; i < nChannelsFV0; i++) {
387-
FV0RelGainConst.push_back(1.);
385+
fv0RelGainConst.push_back(1.);
388386
}
389387
} else {
390-
FV0RelGainConst = *(objfv0Gain);
388+
fv0RelGainConst = *(objfv0Gain);
391389
}
392390
}
393391

@@ -419,13 +417,13 @@ struct qVectorsTable {
419417
/// Function to get corrections from CCDB eithr using the timestamp or the runnumber
420418
/// \param fullPath is the path to correction in CCDB
421419
/// \param timestamp is the collision timestamp
422-
/// \param runNumber is the collision run number
420+
/// \param runNb is the collision run number
423421
/// \return CCDB correction
424422
template <typename CorrectionType>
425-
CorrectionType* getForTsOrRun(std::string const& fullPath, int64_t timestamp, int runNumber)
423+
CorrectionType* getForTsOrRun(std::string const& fullPath, int64_t timestamp, int runNb)
426424
{
427425
if (useCorrectionForRun) {
428-
return ccdb->getForRun<CorrectionType>(fullPath, runNumber);
426+
return ccdb->getForRun<CorrectionType>(fullPath, runNb);
429427
} else {
430428
return ccdb->getForTimeStamp<CorrectionType>(fullPath, timestamp);
431429
}
@@ -470,31 +468,31 @@ struct qVectorsTable {
470468
}
471469

472470
/// Function to calculate the un-normalized q-vectors
473-
/// \param cent is the collision centrality
471+
/// \param centrality is the collision centrality
474472
/// \param qVecRe is the vector with the real part of the q-vector for each detector and correction step
475473
/// \param qVecIm is the vector with the imaginary part of the q-vector for each detector and correction step
476474
/// \param histsCorrs is the vector with the histograms with the correction constants for each detector and correction step
477475
/// \param nMode is the modulation of interest
478-
void correctQVec(float cent, std::vector<float>& qVecRe, std::vector<float>& qVecIm, TH3F* histsCorrs, std::vector<TProfile3D*>& shiftProfile, int nMode)
476+
void correctQVec(float centrality, std::vector<float>& qVecRe, std::vector<float>& qVecIm, TH3F* histsCorrs, std::vector<TProfile3D*>& shiftProfile, int nMode)
479477
{
480478
int nCorrections = static_cast<int>(kNCorrections);
481-
if (cent < cfgMaxCentrality) {
479+
if (centrality < cfgMaxCentrality) {
482480
for (auto i{0u}; i < kTPCAll + 1; i++) {
483481
int idxDet = i * kNCorrections;
484482
helperEP.DoRecenter(qVecRe[idxDet + kRecenter], qVecIm[idxDet + kRecenter],
485-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 2, i + 1));
483+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 2, i + 1));
486484

487485
helperEP.DoRecenter(qVecRe[idxDet + kTwist], qVecIm[idxDet + kTwist],
488-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 2, i + 1));
486+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 2, i + 1));
489487
helperEP.DoTwist(qVecRe[idxDet + kTwist], qVecIm[idxDet + kTwist],
490-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 3, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 4, i + 1));
488+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 3, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 4, i + 1));
491489

492490
helperEP.DoRecenter(qVecRe[idxDet + kRescale], qVecIm[idxDet + kRescale],
493-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 2, i + 1));
491+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 1, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 2, i + 1));
494492
helperEP.DoTwist(qVecRe[idxDet + kRescale], qVecIm[idxDet + kRescale],
495-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 3, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 4, i + 1));
493+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 3, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 4, i + 1));
496494
helperEP.DoRescale(qVecRe[idxDet + kRescale], qVecIm[idxDet + kRescale],
497-
histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 5, i + 1), histsCorrs->GetBinContent(static_cast<int>(cent) + 1, 6, i + 1));
495+
histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 5, i + 1), histsCorrs->GetBinContent(static_cast<int>(centrality) + 1, 6, i + 1));
498496
}
499497
if (cfgShiftCorr) {
500498
auto deltaPsiFT0C = 0.0;
@@ -513,21 +511,21 @@ struct qVectorsTable {
513511
auto psiDefTPCNeg = std::atan2(qVecIm[kTPCNeg * nCorrections + kRescale], qVecRe[kTPCNeg * nCorrections + kRescale]) / static_cast<float>(nMode);
514512
auto psiDefTPCAll = std::atan2(qVecIm[kTPCAll * nCorrections + kRescale], qVecRe[kTPCAll * nCorrections + kRescale]) / static_cast<float>(nMode);
515513

516-
for (int iShift = 1; iShift <= 10; iShift++) {
517-
auto coeffShiftXFT0C = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0C, iShift - 0.5));
518-
auto coeffShiftYFT0C = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0C + 1, iShift - 0.5));
519-
auto coeffShiftXFT0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0A, iShift - 0.5));
520-
auto coeffShiftYFT0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0A + 1, iShift - 0.5));
521-
auto coeffShiftXFT0M = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0M, iShift - 0.5));
522-
auto coeffShiftYFT0M = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFT0M + 1, iShift - 0.5));
523-
auto coeffShiftXFV0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFV0A, iShift - 0.5));
524-
auto coeffShiftYFV0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kFV0A + 1, iShift - 0.5));
525-
auto coeffShiftXTPCPos = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCPos, iShift - 0.5));
526-
auto coeffShiftYTPCPos = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCPos + 1, iShift - 0.5));
527-
auto coeffShiftXTPCNeg = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCNeg, iShift - 0.5));
528-
auto coeffShiftYTPCNeg = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCNeg + 1, iShift - 0.5));
529-
auto coeffShiftXTPCAll = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCAll, iShift - 0.5));
530-
auto coeffShiftYTPCAll = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(cent, 2 * kTPCAll + 1, iShift - 0.5));
514+
for (int iShift = 1; iShift <= nShiftIndex; iShift++) {
515+
auto coeffShiftXFT0C = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0C, iShift - 0.5));
516+
auto coeffShiftYFT0C = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0C + 1, iShift - 0.5));
517+
auto coeffShiftXFT0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0A, iShift - 0.5));
518+
auto coeffShiftYFT0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0A + 1, iShift - 0.5));
519+
auto coeffShiftXFT0M = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0M, iShift - 0.5));
520+
auto coeffShiftYFT0M = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFT0M + 1, iShift - 0.5));
521+
auto coeffShiftXFV0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFV0A, iShift - 0.5));
522+
auto coeffShiftYFV0A = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kFV0A + 1, iShift - 0.5));
523+
auto coeffShiftXTPCPos = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCPos, iShift - 0.5));
524+
auto coeffShiftYTPCPos = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCPos + 1, iShift - 0.5));
525+
auto coeffShiftXTPCNeg = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCNeg, iShift - 0.5));
526+
auto coeffShiftYTPCNeg = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCNeg + 1, iShift - 0.5));
527+
auto coeffShiftXTPCAll = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCAll, iShift - 0.5));
528+
auto coeffShiftYTPCAll = shiftProfile.at(nMode - 2)->GetBinContent(shiftProfile.at(nMode - 2)->FindBin(centrality, 2 * kTPCAll + 1, iShift - 0.5));
531529

532530
deltaPsiFT0C += ((2. / (1.0 * iShift)) * (-coeffShiftXFT0C * std::cos(iShift * static_cast<float>(nMode) * psiDefFT0C) + coeffShiftYFT0C * std::sin(iShift * static_cast<float>(nMode) * psiDefFT0C))) / static_cast<float>(nMode);
533531
deltaPsiFT0A += ((2. / (1.0 * iShift)) * (-coeffShiftXFT0A * std::cos(iShift * static_cast<float>(nMode) * psiDefFT0A) + coeffShiftYFT0A * std::sin(iShift * static_cast<float>(nMode) * psiDefFT0A))) / static_cast<float>(nMode);
@@ -613,13 +611,13 @@ struct qVectorsTable {
613611
if (useDetector["QvectorFT0As"]) {
614612
for (std::size_t iChA = 0; iChA < ft0.channelA().size(); iChA++) {
615613
float ampl = ft0.amplitudeA()[iChA];
616-
int FT0AchId = ft0.channelA()[iChA];
614+
int ft0AchId = ft0.channelA()[iChA];
617615

618-
histosQA.fill(HIST("FT0Amp"), ampl, FT0AchId);
619-
histosQA.fill(HIST("FT0AmpCor"), ampl / FT0RelGainConst[FT0AchId], FT0AchId);
616+
histosQA.fill(HIST("FT0Amp"), ampl, ft0AchId);
617+
histosQA.fill(HIST("FT0AmpCor"), ampl / ft0RelGainConst[ft0AchId], ft0AchId);
620618

621-
helperEP.SumQvectors(0, FT0AchId, ampl / FT0RelGainConst[FT0AchId], nMode, qVecDet, sumAmplFT0A, ft0geom, fv0geom);
622-
helperEP.SumQvectors(0, FT0AchId, ampl / FT0RelGainConst[FT0AchId], nMode, qVecFT0M, sumAmplFT0M, ft0geom, fv0geom);
619+
helperEP.SumQvectors(0, ft0AchId, ampl / ft0RelGainConst[ft0AchId], nMode, qVecDet, sumAmplFT0A, ft0geom, fv0geom);
620+
helperEP.SumQvectors(0, ft0AchId, ampl / ft0RelGainConst[ft0AchId], nMode, qVecFT0M, sumAmplFT0M, ft0geom, fv0geom);
623621
}
624622
if (sumAmplFT0A > minAmplitude) {
625623
qVectFT0A[0] = qVecDet.Re();
@@ -631,13 +629,13 @@ struct qVectorsTable {
631629
qVecDet = TComplex(0., 0.);
632630
for (std::size_t iChC = 0; iChC < ft0.channelC().size(); iChC++) {
633631
float ampl = ft0.amplitudeC()[iChC];
634-
int FT0CchId = ft0.channelC()[iChC] + 96;
632+
int ft0CchId = ft0.channelC()[iChC] + 96;
635633

636-
histosQA.fill(HIST("FT0Amp"), ampl, FT0CchId);
637-
histosQA.fill(HIST("FT0AmpCor"), ampl / FT0RelGainConst[FT0CchId], FT0CchId);
634+
histosQA.fill(HIST("FT0Amp"), ampl, ft0CchId);
635+
histosQA.fill(HIST("FT0AmpCor"), ampl / ft0RelGainConst[ft0CchId], ft0CchId);
638636

639-
helperEP.SumQvectors(0, FT0CchId, ampl / FT0RelGainConst[FT0CchId], nMode, qVecDet, sumAmplFT0C, ft0geom, fv0geom);
640-
helperEP.SumQvectors(0, FT0CchId, ampl / FT0RelGainConst[FT0CchId], nMode, qVecFT0M, sumAmplFT0M, ft0geom, fv0geom);
637+
helperEP.SumQvectors(0, ft0CchId, ampl / ft0RelGainConst[ft0CchId], nMode, qVecDet, sumAmplFT0C, ft0geom, fv0geom);
638+
helperEP.SumQvectors(0, ft0CchId, ampl / ft0RelGainConst[ft0CchId], nMode, qVecFT0M, sumAmplFT0M, ft0geom, fv0geom);
641639
}
642640

643641
if (sumAmplFT0C > minAmplitude) {
@@ -657,11 +655,11 @@ struct qVectorsTable {
657655

658656
for (std::size_t iCh = 0; iCh < fv0.channel().size(); iCh++) {
659657
float ampl = fv0.amplitude()[iCh];
660-
int FV0AchId = fv0.channel()[iCh];
661-
histosQA.fill(HIST("FV0Amp"), ampl, FV0AchId);
662-
histosQA.fill(HIST("FV0AmpCor"), ampl / FV0RelGainConst[FV0AchId], FV0AchId);
658+
int fv0AchId = fv0.channel()[iCh];
659+
histosQA.fill(HIST("FV0Amp"), ampl, fv0AchId);
660+
histosQA.fill(HIST("FV0AmpCor"), ampl / fv0RelGainConst[fv0AchId], fv0AchId);
663661

664-
helperEP.SumQvectors(1, FV0AchId, ampl / FV0RelGainConst[FV0AchId], nMode, qVecDet, sumAmplFV0A, ft0geom, fv0geom);
662+
helperEP.SumQvectors(1, fv0AchId, ampl / fv0RelGainConst[fv0AchId], nMode, qVecDet, sumAmplFV0A, ft0geom, fv0geom);
665663
}
666664

667665
if (sumAmplFV0A > minAmplitude) {
@@ -690,7 +688,7 @@ struct qVectorsTable {
690688
qVectTPCAll[1] += trk.pt() * std::sin(trk.phi() * nMode);
691689
trkTPCAllLabel.push_back(trk.globalIndex());
692690
nTrkTPCAll++;
693-
if (std::abs(trk.eta()) < 0.1) {
691+
if (std::abs(trk.eta()) < trackEtaMin) {
694692
continue;
695693
}
696694
if (trk.eta() > 0 && (useDetector["QvectorTPCposs"] || useDetector["QvectorBPoss"])) {
@@ -920,5 +918,5 @@ struct qVectorsTable {
920918
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)
921919
{
922920
return WorkflowSpec{
923-
adaptAnalysisTask<qVectorsTable>(cfgc)};
921+
adaptAnalysisTask<QVectorsTable>(cfgc)};
924922
}

0 commit comments

Comments
 (0)