From 4f48d97e5c13b3611754aa45fdf47cac1571eb88 Mon Sep 17 00:00:00 2001 From: "se.gorbunov" <se.gorbunov@gsi.de> Date: Tue, 13 Sep 2022 20:40:20 +0000 Subject: [PATCH] L1: fixies to run with different SIMD types --- algo/ca/simd/CaSimdVc.h | 5 ++- reco/L1/CbmL1.cxx | 2 +- reco/L1/CbmL1.h | 18 ++++----- reco/L1/L1Algo/L1CATrackFinder.cxx | 51 ++++++++++++------------ reco/L1/L1Algo/L1InitManager.cxx | 2 +- reco/L1/L1Algo/L1MaterialInfo.cxx | 10 ++--- reco/L1/L1Algo/L1MaterialInfo.h | 11 ++--- reco/L1/L1Algo/L1Parameters.h | 6 +-- reco/L1/L1Algo/L1TrackFitter.cxx | 4 +- reco/L1/L1Algo/utils/L1AlgoDraw.cxx | 20 +++++----- reco/L1/ParticleFinder/CbmL1PFFitter.cxx | 4 +- 11 files changed, 68 insertions(+), 65 deletions(-) diff --git a/algo/ca/simd/CaSimdVc.h b/algo/ca/simd/CaSimdVc.h index 8eebae3401..694ffd04e9 100644 --- a/algo/ca/simd/CaSimdVc.h +++ b/algo/ca/simd/CaSimdVc.h @@ -11,8 +11,11 @@ namespace cbm::algo::ca { typedef Vc::float_v fvec; + //typedef Vc::double_v fvec; + //typedef Vc::Vector<float, Vc::VectorAbi::Scalar> fvec; + typedef fvec::EntryType fscal; - typedef Vc::float_m fmask; + typedef fvec::MaskType fmask; #define _fvecalignment __attribute__((aligned(Vc::VectorAlignment))) diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx index 242108264e..f1b0f7107a 100644 --- a/reco/L1/CbmL1.cxx +++ b/reco/L1/CbmL1.cxx @@ -1682,7 +1682,7 @@ std::vector<L1Material> CbmL1::ReadMaterialBudget(L1DetectorID detectorID) result[iSt].SetBins(nBins, rMax); for (int iBinX = 0; iBinX < nBins; ++iBinX) { for (int iBinY = 0; iBinY < nBins; ++iBinY) { - result[iSt].SetRadThick(iBinX, iBinY, 0.01 * hStaRadLen->GetBinContent(iBinX, iBinY)); + result[iSt].SetRadThickBin(iBinX, iBinY, 0.01 * hStaRadLen->GetBinContent(iBinX, iBinY)); } // iBinX } // iBinY LOG(info) << "- station " << iSt; diff --git a/reco/L1/CbmL1.h b/reco/L1/CbmL1.h index 77d56c58e8..21535b2054 100644 --- a/reco/L1/CbmL1.h +++ b/reco/L1/CbmL1.h @@ -625,39 +625,39 @@ void CbmL1::ApplyCorrectionToMaterialMap(L1Material& material, const L1MaterialI if constexpr (detID == L1DetectorID::kTof) { minVal = 0.0015f; } if constexpr (detID != L1DetectorID::kSts) { for (int iBinY = 0; iBinY < material.GetNbins(); ++iBinY) { - keepRow[iBinY] = material.GetRadThick(iBinX, iBinY); + keepRow[iBinY] = material.GetRadThickBin(iBinX, iBinY); } } for (int iBinY = 0; iBinY < material.GetNbins(); ++iBinY) { if constexpr (detID == L1DetectorID::kMvd) { // Correction for holes in the material map - if (material.GetRadThick(iBinX, iBinY) < homogenious.RadThick[0]) { + if (material.GetRadThickBin(iBinX, iBinY) < homogenious.RadThick[0]) { if (iBinY > 0 && iBinY < material.GetNbins() - 1) { - material.SetRadThick(iBinX, iBinY, TMath::Min(keepRow[iBinY - 1], keepRow[iBinY + 1])); + material.SetRadThickBin(iBinX, iBinY, TMath::Min(keepRow[iBinY - 1], keepRow[iBinY + 1])); } } // Correction for the hard-coded value of RadThick of MVD stations - if (material.GetRadThick(iBinX, iBinY) < 0.0015) { material.SetRadThick(iBinX, iBinY, 0.0015); } + if (material.GetRadThickBin(iBinX, iBinY) < 0.0015) { material.SetRadThickBin(iBinX, iBinY, 0.0015); } } else if constexpr (detID == L1DetectorID::kSts) { - if (material.GetRadThick(iBinX, iBinY) < homogenious.RadThick[0]) { - material.SetRadThick(iBinX, iBinY, homogenious.RadThick[0]); + if (material.GetRadThickBin(iBinX, iBinY) < homogenious.RadThick[0]) { + material.SetRadThickBin(iBinX, iBinY, homogenious.RadThick[0]); } } else if constexpr (detID == L1DetectorID::kMuch || detID == L1DetectorID::kTrd || detID == L1DetectorID::kTof) { // Correction for holes in the material map if (L1Algo::TrackingMode::kGlobal != fTrackingMode) { if ((iBinY > 0) && (iBinY < material.GetNbins() - 1)) { - material.SetRadThick(iBinX, iBinY, TMath::Min(keepRow[iBinY - 1], keepRow[iBinY + 1])); + material.SetRadThickBin(iBinX, iBinY, TMath::Min(keepRow[iBinY - 1], keepRow[iBinY + 1])); } } - float val = material.GetRadThick(iBinX, iBinY); + float val = material.GetRadThickBin(iBinX, iBinY); if (val > 0.0015) { // remember last non-zero value minVal = val; } else { // empty bin with no statistics, fill it with the neighbours value - material.SetRadThick(iBinX, iBinY, minVal); + material.SetRadThickBin(iBinX, iBinY, minVal); } } } diff --git a/reco/L1/L1Algo/L1CATrackFinder.cxx b/reco/L1/L1Algo/L1CATrackFinder.cxx index 9ef1489aae..837dfa812b 100644 --- a/reco/L1/L1Algo/L1CATrackFinder.cxx +++ b/reco/L1/L1Algo/L1CATrackFinder.cxx @@ -401,8 +401,8 @@ inline void L1Algo::findDoubletsStep0( // -- collect possible doublets -- const fscal iz = 1.f / (T1.z[i1_4] - fParameters.GetTargetPositionZ()[0]); - const float& timeError = T1.C55[i1_4]; - const float& time = T1.t[i1_4]; + const fscal timeError = T1.C55[i1_4]; + const fscal time = T1.t[i1_4]; L1HitAreaTime areaTime(vGridTime[iStaM], T1.x[i1_4] * iz, T1.y[i1_4] * iz, (sqrt(Pick_m22 * (T1.C00 + stam.XYInfo.C00)) + fMaxDZ * abs(T1.tx))[i1_4] * iz, @@ -556,8 +556,8 @@ inline void L1Algo::findTripletsStep0( // input int iStaM = &stam - fParameters.GetStations().begin(); int iStaR = &star - fParameters.GetStations().begin(); - L1HitIndex_t hitsl_2[fvec::size()]; - L1HitIndex_t hitsm_2_tmp[fvec::size()]; + L1HitIndex_t hitsl_2[fvec::size()] {L1NaN::SetNaN<L1HitIndex_t>()}; + L1HitIndex_t hitsm_2_tmp[fvec::size()] {L1NaN::SetNaN<L1HitIndex_t>()}; L1TrackPar L1TrackPar_0; // SG!! to avoid nans in unfilled part //TODO: SG: investigate, it changes the results !! @@ -604,7 +604,7 @@ inline void L1Algo::findTripletsStep0( // input fvec timeMEr = 1.f; size_t n2_4 = 0; - for (; n2_4 < fvec::size() && i2 < n2; i2++) { + for (; n2_4 < fvec::size() && i2 < n2; i2++, n2_4++) { // if (!mrDuplets[hitsm_2[i2]]) { // n2_4--; // continue; @@ -635,7 +635,6 @@ inline void L1Algo::findTripletsStep0( // input hitsl_2[n2_4] = hitsl_1[i1]; hitsm_2_tmp[n2_4] = hitsm_2[i2]; - n2_4++; } // n2_4 fvec dz = zPos_2 - T2.z; @@ -748,8 +747,8 @@ inline void L1Algo::findTripletsStep0( // input if (fabs(T2.ty[i2_4]) > fMaxSlope) continue; const fvec Pick_r22 = (fTripletChi2Cut - T2.chi2); - const float& timeError = T2.C55[i2_4]; - const float& time = T2.t[i2_4]; + const fscal timeError = T2.C55[i2_4]; + const fscal time = T2.t[i2_4]; // find first possible hit #ifdef DO_NOT_SELECT_TRIPLETS @@ -1332,7 +1331,7 @@ inline void L1Algo::f5( // input if (istar != trip.GetRSta()) continue; unsigned char level = 0; - // float chi2 = trip->GetChi2(); + // fscal chi2 = trip->GetChi2(); L1HitIndex_t ihitl = trip.GetLHit(); L1HitIndex_t ihitm = trip.GetMHit(); @@ -1757,13 +1756,13 @@ void L1Algo::CATrackFinder() HitsUnusedStopIndex[ista] = fInputData.GetStopHitIndex(ista); } - float lasttime = 0; - float starttime = std::numeric_limits<float>::max(); + fscal lasttime = 0; + fscal starttime = std::numeric_limits<fscal>::max(); for (int ist = 0; ist < fParameters.GetNstationsActive(); ++ist) for (L1HitIndex_t ih = fInputData.GetStartHitIndex(ist); ih < fInputData.GetStopHitIndex(ist); ++ih) { - const float& time = fInputData.GetHit(ih).t; + const fscal time = fInputData.GetHit(ih).t; if ((lasttime < time) && (!std::isinf(time))) lasttime = time; if ((starttime > time) && (time > 0)) starttime = time; } @@ -1774,18 +1773,18 @@ void L1Algo::CATrackFinder() c_timerG.Start(); #endif // XXX - float yStep = 1.5 / sqrt(nNotUsedHits); // empirics. 0.01*sqrt(2374) ~= 0.5 + fscal yStep = 1.5 / sqrt(nNotUsedHits); // empirics. 0.01*sqrt(2374) ~= 0.5 - // float yStep = 0.5 / sqrt(nNotUsedHits); // empirics. 0.01*sqrt(2374) ~= 0.5 + // fscal yStep = 0.5 / sqrt(nNotUsedHits); // empirics. 0.01*sqrt(2374) ~= 0.5 if (yStep > 0.3) yStep = 0.3; - float xStep = yStep * 3; - // float xStep = yStep * 3; + fscal xStep = yStep * 3; + // fscal xStep = yStep * 3; // yStep = 0.0078; - // const float hitDensity = sqrt( nNotUsedHits ); + // const fscal hitDensity = sqrt( nNotUsedHits ); - // float yStep = 0.7*4/hitDensity; // empirics. 0.01*sqrt(2374) ~= 0.5 + // fscal yStep = 0.7*4/hitDensity; // empirics. 0.01*sqrt(2374) ~= 0.5 // if (yStep > 0.3) // yStep = 1.25; // xStep = 2.05; @@ -1919,8 +1918,8 @@ void L1Algo::CATrackFinder() fTargY = fParameters.GetTargetPositionY(); fTargZ = fParameters.GetTargetPositionZ(); - float SigmaTargetX = caIteration.GetTargetPosSigmaX(); - float SigmaTargetY = caIteration.GetTargetPosSigmaY(); // target constraint [cm] + fscal SigmaTargetX = caIteration.GetTargetPosSigmaX(); + fscal SigmaTargetY = caIteration.GetTargetPosSigmaY(); // target constraint [cm] // Select magnetic field. For primary tracks - fVtxFieldValue, for secondary tracks - st.fieldSlice if (caIteration.GetPrimaryFlag()) { fTargB = fParameters.GetVertexFieldValue(); } @@ -2315,7 +2314,7 @@ void L1Algo::CATrackFinder() #ifdef _OPENMP omp_set_lock(&fStripToTrackLock[h.f]); #endif - int& stripF = (fStripToTrack)[h.f]; + auto& stripF = (fStripToTrack)[h.f]; if ((stripF >= 0) && (stripF != tr.fID)) { // strip is used by other candidate const auto& other = fTrackCandidates[TrackId2Thread(stripF)][TrackId2Track(stripF)]; if (!other.fIsAlive && L1Branch::compareCand(tr, other)) { stripF = tr.fID; } @@ -2336,7 +2335,7 @@ void L1Algo::CATrackFinder() #ifdef _OPENMP omp_set_lock(&fStripToTrackLock[h.b]); #endif - int& stripB = (fStripToTrack)[h.b]; + auto& stripB = (fStripToTrack)[h.b]; if ((stripB >= 0) && (stripB != tr.fID)) { // strip is used by other candidate const auto& other = fTrackCandidates[TrackId2Thread(stripB)][TrackId2Track(stripB)]; if (!other.fIsAlive && L1Branch::compareCand(tr, other)) { stripB = tr.fID; } @@ -2415,7 +2414,7 @@ void L1Algo::CATrackFinder() if (tr.NHits != fParameters.GetNstationsActive()) BranchExtender(tr); } #endif - float sumTime = 0; + fscal sumTime = 0; #ifdef _OPENMP int num_thread = omp_get_thread_num(); @@ -2433,9 +2432,9 @@ void L1Algo::CATrackFinder() const L1Station& stah = fParameters.GetStation(hit.iSt); auto [xcoor, ycoor] = stah.ConvUVtoXY<fscal>(tempPoint.U(), tempPoint.V()); - float zcoor = tempPoint.Z() - fParameters.GetTargetPositionZ()[0]; + fscal zcoor = tempPoint.Z() - fParameters.GetTargetPositionZ()[0]; - float timeFlight = sqrt(xcoor * xcoor + ycoor * ycoor + zcoor * zcoor) / 30.f; // c = 30[cm/ns] + fscal timeFlight = sqrt(xcoor * xcoor + ycoor * ycoor + zcoor * zcoor) / 30.f; // c = 30[cm/ns] sumTime += (hit.t - timeFlight); } @@ -2602,7 +2601,7 @@ void L1Algo::CATrackFinder() tmp_gti.PrintReal(1); fstream filestr; filestr.open("speedUp.log", fstream::out | fstream::app); - float tripl_speed = 1000. / (tmp_ti.GetTimerAll()["tripl1"].Real()); + fscal tripl_speed = 1000. / (tmp_ti.GetTimerAll()["tripl1"].Real()); filestr << tripl_speed << " "; filestr.close(); diff --git a/reco/L1/L1Algo/L1InitManager.cxx b/reco/L1/L1Algo/L1InitManager.cxx index f5b2c82f47..02c3c47d18 100644 --- a/reco/L1/L1Algo/L1InitManager.cxx +++ b/reco/L1/L1Algo/L1InitManager.cxx @@ -49,7 +49,7 @@ void L1InitManager::AddStation(const L1BaseStationInfo& inStation) << ". Homogeneous material budget will be used: " << inStationCopy.GetRadThick()[0]; L1Material material; material.SetBins(1, 100); - material.SetRadThick(0, 0, inStationCopy.GetRadThick()[0]); + material.SetRadThickBin(0, 0, inStationCopy.GetRadThick()[0]); inStationCopy.SetMaterialMap(std::move(material)); } diff --git a/reco/L1/L1Algo/L1MaterialInfo.cxx b/reco/L1/L1Algo/L1MaterialInfo.cxx index c8ffcea7e3..c02b993a70 100644 --- a/reco/L1/L1Algo/L1MaterialInfo.cxx +++ b/reco/L1/L1Algo/L1MaterialInfo.cxx @@ -122,7 +122,7 @@ L1Material& L1Material::operator=(L1Material&& other) noexcept //------------------------------------------------------------------------------------------------------------------------------------ // -float L1Material::GetRadThick(float x, float y) const +float L1Material::GetRadThickScal(float x, float y) const { x = (x < fRmax && x >= -fRmax) ? x : 0; y = (y < fRmax && y >= -fRmax) ? y : 0; @@ -135,11 +135,11 @@ float L1Material::GetRadThick(float x, float y) const //------------------------------------------------------------------------------------------------------------------------------------ // -fvec L1Material::GetRadThick(fvec x, fvec y) const +fvec L1Material::GetRadThickVec(fvec x, fvec y) const { fvec r; for (size_t i = 0; i < fvec::size(); i++) - r[i] = GetRadThick(x[i], y[i]); + r[i] = GetRadThickScal(x[i], y[i]); return r; } @@ -169,8 +169,8 @@ void L1Material::CheckConsistency() const // void L1Material::SetBins(int nBins, float stationSize) { - fNbins = nBins; - fRmax = stationSize; + fNbins = nBins; + fRmax = stationSize; if (fNbins < 1) { std::stringstream aStream; diff --git a/reco/L1/L1Algo/L1MaterialInfo.h b/reco/L1/L1Algo/L1MaterialInfo.h index c495a61d6f..2356f666c1 100644 --- a/reco/L1/L1Algo/L1MaterialInfo.h +++ b/reco/L1/L1Algo/L1MaterialInfo.h @@ -80,17 +80,18 @@ public: /// Gets value of X/X0 in a given cell of the material table by the indeces of the row and column /// \param iBinX Index of table column /// \param iBinY Index of table row - float GetRadThick(int iBinX, int iBinY) const { return fTable[iBinX + fNbins * iBinY]; } + float GetRadThickBin(int iBinX, int iBinY) const { return fTable[iBinX + fNbins * iBinY]; } /// Gets material thickness in units of X0 in (x,y) point of the station /// \param x X coordinate of the point [cm] /// \param y Y coordinate of the point [cm] - float GetRadThick(float x, float y) const; + float GetRadThickScal(float x, float y) const; /// Gets material thickness in units of X0 in (x,y) point of the station + /// fvec type can be float, that is why "Vec" and "Scal" specifications /// \param x X coordinate of the point [cm] (SIMDized vector) /// \param y Y coordinate of the point [cm] (SIMDized veotor) - fvec GetRadThick(fvec x, fvec y) const; + fvec GetRadThickVec(fvec x, fvec y) const; /// Checks, if the fields are NaN bool IsNaN() const { return L1NaN::IsNaN(fNbins) || L1NaN::IsNaN(fRmax) || L1NaN::IsNaN(fFactor); } @@ -105,7 +106,7 @@ public: /// \param iBinX Index of table column /// \param iBinY Index of table row /// \param thickness Thickness of the material in units of X0 - void SetRadThick(int iBinX, int iBinY, float thickness) { fTable[iBinX + fNbins * iBinY] = thickness; } + void SetRadThickBin(int iBinX, int iBinY, float thickness) { fTable[iBinX + fNbins * iBinY] = thickness; } /// Sets properties of the material table -- number of rows or columnts and the size of station in XY plane /// \param nBins Number of rows or columns @@ -120,7 +121,7 @@ private: float fRmax {L1NaN::SetNaN<decltype(fRmax)>()}; ///< Size of the station in x and y dimensions [cm] float fFactor { L1NaN::SetNaN<decltype(fFactor)>()}; ///< Factor used in the recalculation of point coordinates to row/column id - std::vector<float> fTable {}; ///< Material budget table + std::vector<float> fTable {}; ///< Material budget table /// Serialization function friend class boost::serialization::access; diff --git a/reco/L1/L1Algo/L1Parameters.h b/reco/L1/L1Algo/L1Parameters.h index b1bd49a988..7440474ae0 100644 --- a/reco/L1/L1Algo/L1Parameters.h +++ b/reco/L1/L1Algo/L1Parameters.h @@ -141,9 +141,9 @@ public: /// \param iStActive Global index of an active station /// \param xPos Position of the point in X dimension [cm] /// \param yPos Position of the point in Y dimension [cm] - float GetMaterialThickness(int iStActive, float xPos, float yPos) const + float GetMaterialThicknessScal(int iStActive, float xPos, float yPos) const { - return fThickMap[iStActive].GetRadThick(xPos, yPos); + return fThickMap[iStActive].GetRadThickScal(xPos, yPos); } /// Gets material thickness in units of radiation length in a point on the XY plane for a selected station @@ -152,7 +152,7 @@ public: /// \param yPos Position of the point in Y dimension [cm] (SIMDized vector) fvec GetMaterialThickness(int iStActive, fvec xPos, fvec yPos) const { - return fThickMap[iStActive].GetRadThick(xPos, yPos); + return fThickMap[iStActive].GetRadThickVec(xPos, yPos); } /// Gets X component of target position diff --git a/reco/L1/L1Algo/L1TrackFitter.cxx b/reco/L1/L1Algo/L1TrackFitter.cxx index 0d63bb0736..860e3df7ad 100644 --- a/reco/L1/L1Algo/L1TrackFitter.cxx +++ b/reco/L1/L1Algo/L1TrackFitter.cxx @@ -342,7 +342,7 @@ void L1Algo::L1KFTrackFitter() L1Fit fit; fit.SetParticleMass(GetDefaultParticleMass()); - L1Track* t[fvec::size()]; + L1Track* t[fvec::size()] {nullptr}; const L1Station* sta = fParameters.GetStations().begin(); L1Station staFirst, staLast; // FIXME (?): Probably, we should replace these variables with references (S.Zharko) @@ -807,7 +807,7 @@ void L1Algo::L1KFTrackFitterMuch() L1Fit fit; fit.SetParticleMass(GetDefaultParticleMass()); - L1Track* t[fvec::size()]; + L1Track* t[fvec::size()] {nullptr}; const L1Station* sta = fParameters.GetStations().begin(); L1Station staFirst, staLast; diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx index c96d54dcb4..953a5630eb 100644 --- a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx +++ b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx @@ -151,7 +151,7 @@ void L1AlgoDraw::DrawMCTracks() par1[4] = p.q / p.p; par1[5] = p.z; if (fVerbose >= 5) { - static float pz = -1; + static fscal pz = -1; if (fabs(pz - p.z) > 1.0) cout << "-- "; cout << "point.z = " << p.z << endl; pz = p.z; @@ -172,9 +172,9 @@ void L1AlgoDraw::DrawMCTracks() w = 1; w1 = 0; } - float xl = (w1 * par[0] + w * par1[0]) / (w + w1); - float yl = (w1 * par[1] + w * par1[1]) / (w + w1); - float zl = (w1 * par[5] + w * par1[5]) / (w + w1); + double xl = (w1 * par[0] + w * par1[0]) / (w + w1); + double yl = (w1 * par[1] + w * par1[1]) / (w + w1); + double zl = (w1 * par[5] + w * par1[5]) / (w + w1); if ((fabs(xl) > 50.0) || (fabs(yl) > 50.0)) { //cout << "*** track " << NRegMCTracks+1 << " xl = " << xl << ", zl = " << zl << endl; //cout << "*** track " << NRegMCTracks+1 << " yl = " << yl << ", zl = " << zl << endl; @@ -474,8 +474,8 @@ void L1AlgoDraw::DrawInfo() void L1AlgoDraw::DrawTarget() { - float x = 0, y = 0, z = 0; - float x_t, z_t; + double x = 0, y = 0, z = 0; + double x_t, z_t; TVector3 v3(x, y, z); v3.RotateX(TMath::Pi() / 5); @@ -560,8 +560,8 @@ void L1AlgoDraw::DrawInputHits() int iMC = CbmL1::Instance()->fvHitPointIndexes[ih]; //if( (vSFlag[h.f] | vSFlagB[h.b] )&0x02 ) continue; // if used - float x, y, z; - float x_t, z_t; + fscal x, y, z; + fscal x_t, z_t; algo->GetHitCoor(h, x, y, z, st); TVector3 v3(x, y, z); @@ -694,7 +694,7 @@ void L1AlgoDraw::DrawRestHits(L1HitIndex_t* StsRestHitsStartIndex, L1HitIndex_t* int iMC = CbmL1::Instance()->fvHitPointIndexes[ih]; //if( (vSFlag[h.f] | vSFlagB[h.b] )&0x02 ) continue; // if used - float x, y, z; + fscal x, y, z; algo->GetHitCoor(h, x, y, z, st); if (iMC >= 0) { x_poly[n_poly] = x; @@ -800,7 +800,7 @@ L1AlgoDraw::Point L1AlgoDraw::GetHitCoor(int ih) } } L1Station& sta = vStations[ista]; - float x, y, z; + fscal x, y, z; algo->GetHitCoor(hit, x, y, z, sta); return Point(x, y, z); }; diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx index 5e62200417..c1efd8c924 100644 --- a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx +++ b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx @@ -143,7 +143,7 @@ void CbmL1PFFitter::Fit(vector<CbmStsTrack>& Tracks, vector<int>& pidHypo) L1Fit fit; fit.SetParticleMass(0.000511f); // muon - CbmStsTrack* t[fvec::size()]; + CbmStsTrack* t[fvec::size()] {nullptr}; int ista; const L1Station* sta = CbmL1::Instance()->fpAlgo->GetParameters()->GetStations().begin(); @@ -443,7 +443,7 @@ void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<PFFieldRe L1TrackPar T; // fitting parametr coresponding to current track L1Fit fit; - CbmStsTrack* t[fvec::size()]; + CbmStsTrack* t[fvec::size()] {nullptr}; int nStations = CbmL1::Instance()->fpAlgo->GetParameters()->GetNstationsActive(); int NMvdStations = CbmL1::Instance()->fpAlgo->GetNstationsBeforePipe(); -- GitLab