From 95867f634763ce65ac0ed43956765d2403f308af Mon Sep 17 00:00:00 2001
From: "se.gorbunov" <se.gorbunov@gsi.de>
Date: Fri, 9 Sep 2022 22:15:34 +0000
Subject: [PATCH] L1: remove simd classes from CbmL1FPFitter interface

---
 analysis/PWGCHA/jpsi/CMakeLists.txt           |  2 -
 analysis/PWGCHA/jpsi/CbmAnaJpsiUtils.h        |  3 +-
 .../dielectron/conversion/CMakeLists.txt      |  2 -
 .../conversion/CbmAnaConversion.cxx           |  5 +-
 .../conversion/CbmAnaConversionPhotons.cxx    |  5 +-
 .../conversion/CbmAnaConversionPhotons2.cxx   |  5 +-
 .../conversion/CbmAnaConversionRecoFull.cxx   |  6 +-
 .../conversion/CbmAnaConversionTest.cxx       | 10 ++-
 .../conversion/CbmAnaConversionTest2.cxx      |  6 +-
 .../PWGDIL/dielectron/lmvm/CMakeLists.txt     |  2 -
 analysis/PWGDIL/dielectron/lmvm/LmvmUtils.cxx |  3 +-
 .../dielectron/papaframework/CMakeLists.txt   |  2 -
 .../papaframework/PairAnalysisPairKF.cxx      |  4 --
 .../papaframework/PairAnalysisPairLV.cxx      |  3 -
 .../papaframework/PairAnalysisTrack.cxx       |  4 +-
 .../analysis_tree_converter/CMakeLists.txt    | 64 +++++++++----------
 .../CbmStsTracksConverter.cxx                 | 18 ++----
 reco/KF/CbmKFParticleFinder.cxx               | 34 ++--------
 reco/KF/CbmKFParticleInterface.cxx            | 31 +++------
 reco/KF/KFQA/CbmKFTrackQa.cxx                 |  3 +-
 reco/L1/ParticleFinder/CbmL1PFFitter.cxx      | 59 +++++++++++++++--
 reco/L1/ParticleFinder/CbmL1PFFitter.h        | 21 +++---
 22 files changed, 135 insertions(+), 157 deletions(-)

diff --git a/analysis/PWGCHA/jpsi/CMakeLists.txt b/analysis/PWGCHA/jpsi/CMakeLists.txt
index 832b91e37d..f7b087c1f7 100644
--- a/analysis/PWGCHA/jpsi/CMakeLists.txt
+++ b/analysis/PWGCHA/jpsi/CMakeLists.txt
@@ -18,8 +18,6 @@ ${CBMROOT_SOURCE_DIR}/algo
 ${CBMROOT_SOURCE_DIR}/reco/KF
 ${CBMROOT_SOURCE_DIR}/reco/KF/Interface 
 
-${CBMROOT_SOURCE_DIR}/reco/L1
-${CBMROOT_SOURCE_DIR}/reco/L1/L1Algo
 ${CBMROOT_SOURCE_DIR}/reco/L1/ParticleFinder 
 
 ${CBMROOT_SOURCE_DIR}/rich
diff --git a/analysis/PWGCHA/jpsi/CbmAnaJpsiUtils.h b/analysis/PWGCHA/jpsi/CbmAnaJpsiUtils.h
index f44b9b0edb..03c69afb6c 100644
--- a/analysis/PWGCHA/jpsi/CbmAnaJpsiUtils.h
+++ b/analysis/PWGCHA/jpsi/CbmAnaJpsiUtils.h
@@ -17,7 +17,6 @@
 
 #include <vector>
 
-#include "L1Field.h"
 
 class CbmAnaJpsiUtils {
 public:
@@ -32,7 +31,7 @@ public:
     std::vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    std::vector<L1FieldRegion> vField;
+    std::vector<CbmL1PFFitter::PFFieldRegion> vField;
     std::vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, kfVertex, 3e6);
     cand->fChi2sts  = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
diff --git a/analysis/PWGDIL/dielectron/conversion/CMakeLists.txt b/analysis/PWGDIL/dielectron/conversion/CMakeLists.txt
index 7e0f93cb24..0f66ea8f70 100644
--- a/analysis/PWGDIL/dielectron/conversion/CMakeLists.txt
+++ b/analysis/PWGDIL/dielectron/conversion/CMakeLists.txt
@@ -20,8 +20,6 @@ ${CBMROOT_SOURCE_DIR}/reco/base
 ${CBMROOT_SOURCE_DIR}/reco/KF
 ${CBMROOT_SOURCE_DIR}/reco/KF/Interface 
 
-${CBMROOT_SOURCE_DIR}/reco/L1
-${CBMROOT_SOURCE_DIR}/reco/L1/L1Algo
 ${CBMROOT_SOURCE_DIR}/reco/L1/ParticleFinder 
 
 ${CBMROOT_SOURCE_DIR}/reco/littrack/cbm/elid
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx
index d28fde2603..172d962b95 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversion.cxx
@@ -33,7 +33,6 @@
 #include <Logger.h>
 
 #include "KFParticleTopoReconstructor.h"
-#include "L1Field.h"
 
 
 // includes of standard c++ classes or ROOT classes
@@ -997,7 +996,7 @@ void CbmAnaConversion::Exec(Option_t*)
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -1012,7 +1011,7 @@ void CbmAnaConversion::Exec(Option_t*)
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons.cxx
index 986ead09b6..075e1214e2 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons.cxx
@@ -23,7 +23,6 @@
 #include "FairRootManager.h"
 #include <Logger.h>
 
-#include "L1Field.h"
 //#include "CbmStsKFTrackFitter.h"
 #include "CbmAnaConversionCutSettings.h"
 #include "CbmLitGlobalElectronId.h"
@@ -765,7 +764,7 @@ void CbmAnaConversionPhotons::Exec()
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -779,7 +778,7 @@ void CbmAnaConversionPhotons::Exec()
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons2.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons2.cxx
index 0decf642e1..57da175329 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons2.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionPhotons2.cxx
@@ -26,7 +26,6 @@
 #include "FairRootManager.h"
 #include <Logger.h>
 
-#include "L1Field.h"
 //#include "CbmStsKFTrackFitter.h"
 #include "CbmAnaConversionCutSettings.h"
 #include "CbmAnaConversionKinematicParams.h"
@@ -637,7 +636,7 @@ void CbmAnaConversionPhotons2::Exec()
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -652,7 +651,7 @@ void CbmAnaConversionPhotons2::Exec()
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionRecoFull.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionRecoFull.cxx
index dd8b1691df..5501328e75 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionRecoFull.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionRecoFull.cxx
@@ -37,8 +37,6 @@
 #include "FairRootManager.h"
 #include <Logger.h>
 
-#include "L1Field.h"
-
 
 #define M2E 2.6112004954086e-7
 using namespace std;
@@ -1130,7 +1128,7 @@ void CbmAnaConversionRecoFull::Exec()
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -1219,7 +1217,7 @@ void CbmAnaConversionRecoFull::Exec()
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest.cxx
index df994c5d42..91754a0bef 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest.cxx
@@ -29,8 +29,6 @@
 #include <algorithm>
 #include <map>
 
-#include "L1Field.h"
-
 
 using namespace std;
 
@@ -515,7 +513,7 @@ void CbmAnaConversionTest::DoSTSonlyAnalysis()
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -530,7 +528,7 @@ void CbmAnaConversionTest::DoSTSonlyAnalysis()
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
@@ -1190,7 +1188,7 @@ Bool_t CbmAnaConversionTest::HasRichInd(Int_t gtIndex, Int_t arrayIndex)
 		vector<CbmStsTrack> stsTracks;
 		stsTracks.resize(1);
 		stsTracks[0] = *stsTrack;
-		vector<L1FieldRegion> vField;
+		vector<CbmL1PFFitter::PFFieldRegion> vField;
 		vector<float> chiPrim;
 		fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
 		//cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -1206,7 +1204,7 @@ Bool_t CbmAnaConversionTest::HasRichInd(Int_t gtIndex, Int_t arrayIndex)
 		vector<CbmStsTrack> stsTracks_electron;
 		stsTracks_electron.resize(1);
 		stsTracks_electron[0] = *stsTrack;
-		vector<L1FieldRegion> vField_electron;
+		vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
 		vector<float> chiPrim_electron;
 		vector<int> pidHypo_electron;
 		pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest2.cxx b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest2.cxx
index 8670847653..1fa60300b0 100644
--- a/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest2.cxx
+++ b/analysis/PWGDIL/dielectron/conversion/CbmAnaConversionTest2.cxx
@@ -28,8 +28,6 @@
 #include <algorithm>
 #include <map>
 
-#include "L1Field.h"
-
 
 using namespace std;
 
@@ -322,7 +320,7 @@ void CbmAnaConversionTest2::Exec()
     vector<CbmStsTrack> stsTracks;
     stsTracks.resize(1);
     stsTracks[0] = *stsTrack;
-    vector<L1FieldRegion> vField;
+    vector<CbmL1PFFitter::PFFieldRegion> vField;
     vector<float> chiPrim;
     fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, fKFVertex, 3e6);
     //cand.chi2sts = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
@@ -337,7 +335,7 @@ void CbmAnaConversionTest2::Exec()
     vector<CbmStsTrack> stsTracks_electron;
     stsTracks_electron.resize(1);
     stsTracks_electron[0] = *stsTrack;
-    vector<L1FieldRegion> vField_electron;
+    vector<CbmL1PFFitter::PFFieldRegion> vField_electron;
     vector<float> chiPrim_electron;
     vector<int> pidHypo_electron;
     pidHypo_electron.push_back(11);
diff --git a/analysis/PWGDIL/dielectron/lmvm/CMakeLists.txt b/analysis/PWGDIL/dielectron/lmvm/CMakeLists.txt
index 7df5fd1769..5a4f7094d6 100644
--- a/analysis/PWGDIL/dielectron/lmvm/CMakeLists.txt
+++ b/analysis/PWGDIL/dielectron/lmvm/CMakeLists.txt
@@ -21,8 +21,6 @@ ${CBMROOT_SOURCE_DIR}/algo
 ${CBMROOT_SOURCE_DIR}/reco/KF
 ${CBMROOT_SOURCE_DIR}/reco/KF/Interface 
 
-${CBMROOT_SOURCE_DIR}/reco/L1
-${CBMROOT_SOURCE_DIR}/reco/L1/L1Algo
 ${CBMROOT_SOURCE_DIR}/reco/L1/ParticleFinder 
 
 ${CBMROOT_SOURCE_DIR}/rich
diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmUtils.cxx b/analysis/PWGDIL/dielectron/lmvm/LmvmUtils.cxx
index 2d7dde947d..620bc0b56b 100644
--- a/analysis/PWGDIL/dielectron/lmvm/LmvmUtils.cxx
+++ b/analysis/PWGDIL/dielectron/lmvm/LmvmUtils.cxx
@@ -17,7 +17,6 @@
 
 #include <iostream>
 
-#include "L1Field.h"
 #include "LmvmCand.h"
 #include "LmvmDef.h"
 
@@ -32,7 +31,7 @@ void LmvmUtils::CalculateAndSetTrackParams(LmvmCand* cand, CbmStsTrack* stsTrack
   vector<CbmStsTrack> stsTracks;
   stsTracks.resize(1);
   stsTracks[0] = *stsTrack;
-  vector<L1FieldRegion> vField;
+  vector<CbmL1PFFitter::PFFieldRegion> vField;
   vector<float> chiPrim;
   fPFFitter.GetChiToVertex(stsTracks, vField, chiPrim, kfVertex, 3e6);
   cand->fChi2sts                 = stsTracks[0].GetChiSq() / stsTracks[0].GetNDF();
diff --git a/analysis/PWGDIL/dielectron/papaframework/CMakeLists.txt b/analysis/PWGDIL/dielectron/papaframework/CMakeLists.txt
index 2c341fb546..2dd93270a1 100644
--- a/analysis/PWGDIL/dielectron/papaframework/CMakeLists.txt
+++ b/analysis/PWGDIL/dielectron/papaframework/CMakeLists.txt
@@ -27,9 +27,7 @@ ${CBMROOT_SOURCE_DIR}/reco/KF
 ${CBMROOT_SOURCE_DIR}/reco/KF/Interface 
 ${KFParticle_INCLUDE_DIR}
 
-${CBMROOT_SOURCE_DIR}/reco/L1
 ${CBMROOT_SOURCE_DIR}/reco/L1/ParticleFinder
-${CBMROOT_SOURCE_DIR}/reco/L1/L1Algo
 
 ${CBMROOT_SOURCE_DIR}/reco/littrack
 ${CBMROOT_SOURCE_DIR}/reco/littrack/cbm
diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairKF.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairKF.cxx
index ce99c12102..01feddd1e5 100644
--- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairKF.cxx
+++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairKF.cxx
@@ -12,16 +12,12 @@
 
 #include "CbmKFParticleInterface.h"
 #include "CbmKFTrack.h"
-#include "CbmL1.h"
-#include "CbmL1PFFitter.h"
 #include "CbmMCTrack.h"
 #include "CbmVertex.h"
 
 #include <TDatabasePDG.h>
 
 #include "KFParticle.h"
-#include "L1Algo.h"
-#include "L1Field.h"
 #include "PairAnalysisTrack.h"
 
 ClassImp(PairAnalysisPairKF)
diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx
index 73084956cc..ec78ce749c 100644
--- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx
+++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisPairLV.cxx
@@ -12,13 +12,10 @@
 
 #include "PairAnalysisPairLV.h"
 
-#include "CbmL1.h"
 #include "CbmMCTrack.h"
 
 #include <TDatabasePDG.h>
 
-#include "L1Algo.h"
-#include "L1Field.h"
 #include "PairAnalysisTrack.h"
 
 ClassImp(PairAnalysisPairLV)
diff --git a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrack.cxx b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrack.cxx
index 0e9f15fdcc..674aa7f4fb 100644
--- a/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrack.cxx
+++ b/analysis/PWGDIL/dielectron/papaframework/PairAnalysisTrack.cxx
@@ -50,8 +50,6 @@
 
 #include <vector>
 
-#include "L1Field.h"
-
 ClassImp(PairAnalysisTrack)
 
   PairAnalysisTrack::PairAnalysisTrack()
@@ -306,7 +304,7 @@ void PairAnalysisTrack::Refit(Int_t pidHypo)
   vector<CbmStsTrack> stsTracks;
   stsTracks.resize(1);
   stsTracks[0] = *fStsTrack;
-  vector<L1FieldRegion> vField;
+  vector<CbmL1PFFitter::PFFieldRegion> vField;
   vector<float> chiPrim;
   vector<int> pidHypos;
   pidHypos.push_back(pidHypo);
diff --git a/analysis/common/analysis_tree_converter/CMakeLists.txt b/analysis/common/analysis_tree_converter/CMakeLists.txt
index 8824520699..30e59d5bea 100644
--- a/analysis/common/analysis_tree_converter/CMakeLists.txt
+++ b/analysis/common/analysis_tree_converter/CMakeLists.txt
@@ -1,19 +1,18 @@
 Set(LIBRARY_NAME CbmAnalysisTreeInterface)
 
 set(SRCS
-        CbmConverterManager.cxx
-        CbmConverterTask.cxx
-        CbmSimEventHeaderConverter.cxx
-        CbmRecEventHeaderConverter.cxx
-        CbmStsTracksConverter.cxx
-        CbmSimTracksConverter.cxx
-        CbmPsdModulesConverter.cxx
-        CbmTofHitsConverter.cxx
-        CbmTrdTracksConverter.cxx
-        CbmRichRingsConverter.cxx
-		CbmMatchEvents.cxx
-    )
-    
+  CbmConverterManager.cxx
+  CbmConverterTask.cxx
+  CbmSimEventHeaderConverter.cxx
+  CbmRecEventHeaderConverter.cxx
+  CbmStsTracksConverter.cxx
+  CbmSimTracksConverter.cxx
+  CbmPsdModulesConverter.cxx
+  CbmTofHitsConverter.cxx
+  CbmTrdTracksConverter.cxx
+  CbmRichRingsConverter.cxx
+  CbmMatchEvents.cxx
+)
 
 Set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
@@ -36,53 +35,52 @@ Set(INCLUDE_DIRECTORIES
   ${CBMROOT_SOURCE_DIR}/sim/transport/geosetup
 
   ${CBMROOT_SOURCE_DIR}/reco/KF
-  ${CBMROOT_SOURCE_DIR}/reco/L1
-  ${CBMROOT_SOURCE_DIR}/reco/L1/L1Algo
+  ${CBMROOT_SOURCE_DIR}/reco/L1/ParticleFinder
   ${CBMROOT_SOURCE_DIR}/sim/transport/generators/unigen
 )
 
-Include_Directories (${INCLUDE_DIRECTORIES})
+Include_Directories(${INCLUDE_DIRECTORIES})
 
 Set(SYSTEM_INCLUDE_DIRECTORIES
   ${BASE_INCLUDE_DIRECTORIES}
-  ${Boost_INCLUDE_DIR} 
+  ${Boost_INCLUDE_DIR}
   ${KFParticle_INCLUDE_DIR}
   ${AnalysisTree_INCLUDE_DIR}
 )
 
-Include_Directories (SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
+Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
 
-set (LINK_DIRECTORIES
+set(LINK_DIRECTORIES
   ${AnalysisTree_LIBRARY_DIR}
   ${KFParticle_LIB_DIR}
   ${FAIRROOT_LIBRARY_DIR}
   ${ROOT_LIBRARY_DIR}
   ${Boost_LIBRARY_DIRS}
 )
- 
+
 link_directories(${LINK_DIRECTORIES})
 
-IF (SSE_FOUND)
+IF(SSE_FOUND)
   Message(STATUS "${LIBRARY_NAME} will be compiled with SSE support")
   ADD_DEFINITIONS(-DHAVE_SSE)
   SET_SOURCE_FILES_PROPERTIES(${SRCS} PROPERTIES COMPILE_FLAGS "-msse -O3")
-ELSE (SSE_FOUND)
+ELSE(SSE_FOUND)
   MESSAGE(STATUS "${LIBRARY_NAME} will be compiled without SSE support")
   SET_SOURCE_FILES_PROPERTIES(${SRCS} PROPERTIES COMPILE_FLAGS "-msse -O3")
-ENDIF (SSE_FOUND)
+ENDIF(SSE_FOUND)
 
 Set(LINKDEF CbmAnalysisTreeInterfaceLinkDef.h)
 
 Set(_AnalysisTree_LIB AnalysisTreeBase AnalysisTreeInfra)
 
-Set(DEPENDENCIES 
-	${_AnalysisTree_LIB}
-  Algo 
-	CbmData 
-	CbmBase 
-	KFParticleInterface
-	L1 
-	CbmSimGenerators
+Set(DEPENDENCIES
+  ${_AnalysisTree_LIB}
+  Algo
+  CbmData
+  CbmBase
+  KFParticleInterface
+  L1
+  CbmSimGenerators
 )
 
 Set(DEFINITIONS -DDO_TPCCATRACKER_EFF_PERFORMANCE -DNonhomogeneousField -DCBM -DUSE_TIMERS)
@@ -92,7 +90,7 @@ ADD_DEFINITIONS(${DEFINITIONS})
 GENERATE_LIBRARY()
 
 Install(FILES ../../../macro/analysis/common/analysis_tree_converter/run_analysis_tree_maker.C
-        DESTINATION share/cbmroot/macro/analysis_tree
-       )
+  DESTINATION share/cbmroot/macro/analysis_tree
+)
 
 Add_Dependencies(CbmAnalysisTreeInterface ANALYSISTREE)
diff --git a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
index b45f40dbb7..719b634438 100644
--- a/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
+++ b/analysis/common/analysis_tree_converter/CbmStsTracksConverter.cxx
@@ -6,13 +6,13 @@
 
 #include "CbmDefs.h"
 #include "CbmEvent.h"
+#include "CbmL1PFFitter.h"
 #include "CbmMCDataManager.h"
 #include "CbmMCTrack.h"
 #include "CbmStsTrack.h"
 #include "CbmTrackMatchNew.h"
 #include "CbmVertex.h"
 #include "Interface/CbmKFVertex.h"
-#include "ParticleFinder/CbmL1PFFitter.h"
 
 #include "FairRootManager.h"
 
@@ -24,7 +24,6 @@
 #include <cmath>
 
 #include "AnalysisTree/Matching.hpp"
-#include "L1Field.h"
 
 
 ClassImp(CbmStsTracksConverter);
@@ -106,7 +105,7 @@ float CbmStsTracksConverter::ExtrapolateToVertex(CbmStsTrack* sts_track, Analysi
   std::vector<CbmStsTrack> tracks = {*sts_track};
   CbmL1PFFitter fitter;
   std::vector<float> chi2_to_vtx;
-  std::vector<L1FieldRegion> field;
+  std::vector<CbmL1PFFitter::PFFieldRegion> field;
   CbmKFVertex kfVertex = CbmKFVertex(*cbm_prim_vertex_);
   if (is_reproduce_cbmkfpf_) {
     std::vector<int> pdgVector = {pdg};
@@ -116,16 +115,9 @@ float CbmStsTracksConverter::ExtrapolateToVertex(CbmStsTrack* sts_track, Analysi
   *sts_track = tracks[0];
 
   if (is_write_kfinfo_) {
-    track.SetField(float(field.at(0).cx0[0]), imf_);
-    track.SetField(float(field.at(0).cx1[0]), imf_ + 1);
-    track.SetField(float(field.at(0).cx2[0]), imf_ + 2);
-    track.SetField(float(field.at(0).cy0[0]), imf_ + 3);
-    track.SetField(float(field.at(0).cy1[0]), imf_ + 4);
-    track.SetField(float(field.at(0).cy2[0]), imf_ + 5);
-    track.SetField(float(field.at(0).cz0[0]), imf_ + 6);
-    track.SetField(float(field.at(0).cz1[0]), imf_ + 7);
-    track.SetField(float(field.at(0).cz2[0]), imf_ + 8);
-    track.SetField(float(field.at(0).z0[0]), imf_ + 9);
+    for (int i = 0; i < 10; i++) {
+      track.SetField(field[0].fP[i], imf_ + i);
+    }
   }
 
   return chi2_to_vtx[0];
diff --git a/reco/KF/CbmKFParticleFinder.cxx b/reco/KF/CbmKFParticleFinder.cxx
index 41d872337f..3fe4e58b7f 100644
--- a/reco/KF/CbmKFParticleFinder.cxx
+++ b/reco/KF/CbmKFParticleFinder.cxx
@@ -19,8 +19,6 @@
 
 #include "FairRunAna.h"
 
-#include "L1Field.h"
-
 //KF Particle headers
 #include <Logger.h>
 
@@ -277,38 +275,20 @@ void CbmKFParticleFinder::Exec(Option_t* /*opt*/)
       kfVertex.GetRefZ() = fCbmPrimVertex->GetZ();
     }
 
-    vector<L1FieldRegion> vField, vFieldAtLastPoint;
+    vector<CbmL1PFFitter::PFFieldRegion> vField, vFieldAtLastPoint;
     fitter.Fit(vRTracks, pdg);
     fitter.GetChiToVertex(vRTracks, vField, vChiToPrimVtx, kfVertex, 3);
     fitter.CalculateFieldRegionAtLastPoint(vRTracks, vFieldAtLastPoint);
     vector<KFFieldVector> vFieldVector(ntracks), vFieldVectorAtLastPoint(ntracks);
     for (Int_t iTr = 0; iTr < ntracks; iTr++) {
-      int entrSIMD                = iTr % fvec::size();
-      int entrVec                 = iTr / fvec::size();
-      vFieldVector[iTr].fField[0] = vField[entrVec].cx0[entrSIMD];
-      vFieldVector[iTr].fField[1] = vField[entrVec].cx1[entrSIMD];
-      vFieldVector[iTr].fField[2] = vField[entrVec].cx2[entrSIMD];
-      vFieldVector[iTr].fField[3] = vField[entrVec].cy0[entrSIMD];
-      vFieldVector[iTr].fField[4] = vField[entrVec].cy1[entrSIMD];
-      vFieldVector[iTr].fField[5] = vField[entrVec].cy2[entrSIMD];
-      vFieldVector[iTr].fField[6] = vField[entrVec].cz0[entrSIMD];
-      vFieldVector[iTr].fField[7] = vField[entrVec].cz1[entrSIMD];
-      vFieldVector[iTr].fField[8] = vField[entrVec].cz2[entrSIMD];
-      vFieldVector[iTr].fField[9] = vField[entrVec].z0[entrSIMD];
+      for (int i = 0; i < 10; i++) {
+        vFieldVector[iTr].fField[i] = vField[iTr].fP[i];
+      }
     }
     for (Int_t iTr = 0; iTr < ntracks; iTr++) {
-      int entrSIMD                           = iTr % fvec::size();
-      int entrVec                            = iTr / fvec::size();
-      vFieldVectorAtLastPoint[iTr].fField[0] = vFieldAtLastPoint[entrVec].cx0[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[1] = vFieldAtLastPoint[entrVec].cx1[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[2] = vFieldAtLastPoint[entrVec].cx2[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[3] = vFieldAtLastPoint[entrVec].cy0[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[4] = vFieldAtLastPoint[entrVec].cy1[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[5] = vFieldAtLastPoint[entrVec].cy2[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[6] = vFieldAtLastPoint[entrVec].cz0[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[7] = vFieldAtLastPoint[entrVec].cz1[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[8] = vFieldAtLastPoint[entrVec].cz2[entrSIMD];
-      vFieldVectorAtLastPoint[iTr].fField[9] = vFieldAtLastPoint[entrVec].z0[entrSIMD];
+      for (int i = 0; i < 10; i++) {
+        vFieldVectorAtLastPoint[iTr].fField[i] = vFieldAtLastPoint[iTr].fP[i];
+      }
     }
 
     if (!fSuperEventAnalysis) {
diff --git a/reco/KF/CbmKFParticleInterface.cxx b/reco/KF/CbmKFParticleInterface.cxx
index 690f4ca947..a7fcce39ca 100644
--- a/reco/KF/CbmKFParticleInterface.cxx
+++ b/reco/KF/CbmKFParticleInterface.cxx
@@ -12,8 +12,6 @@
 #include "CbmL1PFFitter.h"
 #include "CbmStsTrack.h"
 
-#include "L1Field.h"
-
 //KF Particle headers
 #include "KFPTrackVector.h"
 #include "KFParticle.h"
@@ -42,7 +40,7 @@ void CbmKFParticleInterface::SetKFParticleFromStsTrack(CbmStsTrack* track, KFPar
   vector<float> vChiToPrimVtx;
   CbmKFVertex kfVertex;
 
-  vector<L1FieldRegion> vField;
+  vector<CbmL1PFFitter::PFFieldRegion> vField;
   fitter.GetChiToVertex(vRTracks, vField, vChiToPrimVtx, kfVertex, -3);
 
   KFPTrackVector tracks;
@@ -116,26 +114,15 @@ void CbmKFParticleInterface::SetKFParticleFromStsTrack(CbmStsTrack* track, KFPar
     cov[19] = cbpz * pz + b * cpzpz;
     cov[20] = cpzpz;
 
-    float field[10];
-    int entrSIMD = iTr % fvec::size();
-    int entrVec  = iTr / fvec::size();
-    field[0]     = vField[entrVec].cx0[entrSIMD];
-    field[1]     = vField[entrVec].cx1[entrSIMD];
-    field[2]     = vField[entrVec].cx2[entrSIMD];
-    field[3]     = vField[entrVec].cy0[entrSIMD];
-    field[4]     = vField[entrVec].cy1[entrSIMD];
-    field[5]     = vField[entrVec].cy2[entrSIMD];
-    field[6]     = vField[entrVec].cz0[entrSIMD];
-    field[7]     = vField[entrVec].cz1[entrSIMD];
-    field[8]     = vField[entrVec].cz2[entrSIMD];
-    field[9]     = vField[entrVec].z0[entrSIMD];
-
-    for (Int_t iP = 0; iP < 6; iP++)
+    for (Int_t iP = 0; iP < 6; iP++) {
       tracks.SetParameter(par[iP], iP, iTr);
-    for (Int_t iC = 0; iC < 21; iC++)
+    }
+    for (Int_t iC = 0; iC < 21; iC++) {
       tracks.SetCovariance(cov[iC], iC, iTr);
-    for (Int_t iF = 0; iF < 10; iF++)
-      tracks.SetFieldCoefficient(field[iF], iF, iTr);
+    }
+    for (Int_t iF = 0; iF < 10; iF++) {
+      tracks.SetFieldCoefficient(vField[iTr].fP[iF], iF, iTr);
+    }
     tracks.SetId(1, iTr);
     tracks.SetPDG(pdg, iTr);
     tracks.SetQ(q, iTr);
@@ -165,7 +152,7 @@ void CbmKFParticleInterface::ExtrapolateTrackToPV(const CbmStsTrack* track, CbmV
   assert(pv);
   if (pv) kfVertex = CbmKFVertex(*pv);
 
-  vector<L1FieldRegion> vField;
+  vector<CbmL1PFFitter::PFFieldRegion> vField;
   fitter.GetChiToVertex(vRTracks, vField, vChiToPrimVtx, kfVertex, 1000000.f);
 
   chiPrim    = vChiToPrimVtx[0];
diff --git a/reco/KF/KFQA/CbmKFTrackQa.cxx b/reco/KF/KFQA/CbmKFTrackQa.cxx
index 3f56e4b62f..79a4ef8e83 100644
--- a/reco/KF/KFQA/CbmKFTrackQa.cxx
+++ b/reco/KF/KFQA/CbmKFTrackQa.cxx
@@ -22,7 +22,6 @@
 #include "KFParticleMatch.h"
 #include "KFParticleTopoReconstructor.h"
 #include "KFTopoPerformance.h"
-#include "L1Field.h"
 
 //ROOT headers
 #include "TClonesArray.h"
@@ -428,7 +427,7 @@ void CbmKFTrackQa::Exec(Option_t* /*opt*/)
 
   CbmL1PFFitter fitter;
   vector<float> vChiToPrimVtx;
-  vector<L1FieldRegion> vField;
+  vector<CbmL1PFFitter::PFFieldRegion> vField;
   fitter.Fit(vRTracks, pdg);
   fitter.GetChiToVertex(vRTracks, vField, vChiToPrimVtx, kfVertex, 3000000);
 
diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
index 9d4d40709f..5e62200417 100644
--- a/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
+++ b/reco/L1/ParticleFinder/CbmL1PFFitter.cxx
@@ -39,6 +39,7 @@
 #include "L1Algo.h"  // Also defines L1Parameters
 #include "L1Def.h"
 #include "L1Extrapolation.h"
+#include "L1Field.h"
 #include "L1Filtration.h"
 #include "L1Fit.h"
 #include "L1MaterialInfo.h"
@@ -60,6 +61,43 @@ CbmL1PFFitter::CbmL1PFFitter() {}
 
 CbmL1PFFitter::~CbmL1PFFitter() {}
 
+inline void CbmL1PFFitter::PFFieldRegion::setFromL1FieldRegion(const L1FieldRegion& fld, int i)
+{
+  fP[0] = fld.cx0[i];
+  fP[1] = fld.cx1[i];
+  fP[2] = fld.cx2[i];
+
+  fP[3] = fld.cy0[i];
+  fP[4] = fld.cy1[i];
+  fP[5] = fld.cy2[i];
+
+  fP[6] = fld.cz0[i];
+  fP[7] = fld.cz1[i];
+  fP[8] = fld.cz2[i];
+
+  fP[9] = fld.z0[i];
+}
+
+inline void CbmL1PFFitter::PFFieldRegion::getL1FieldRegion(L1FieldRegion& fld, int i)
+{
+  fld.cx0[i] = fP[0];
+  fld.cx1[i] = fP[1];
+  fld.cx2[i] = fP[2];
+
+  fld.cy0[i] = fP[3];
+  fld.cy1[i] = fP[4];
+  fld.cy2[i] = fP[5];
+
+  fld.cz0[i] = fP[6];
+  fld.cz1[i] = fP[7];
+  fld.cz2[i] = fP[8];
+
+  fld.z0[i] = fP[9];
+}
+
+inline CbmL1PFFitter::PFFieldRegion::PFFieldRegion(const L1FieldRegion& fld, int i) { setFromL1FieldRegion(fld, i); }
+
+
 void FilterFirst(L1TrackPar& track, fvec& x, fvec& y, L1Station& st)
 {
   track.C00 = st.XYInfo.C00;
@@ -396,7 +434,7 @@ void CbmL1PFFitter::Fit(vector<CbmStsTrack>& Tracks, vector<int>& pidHypo)
   delete[] fB;
 }
 
-void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<L1FieldRegion>& field, vector<float>& chiToVtx,
+void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<PFFieldRegion>& field, vector<float>& chiToVtx,
                                    CbmKFVertex& primVtx, float chiPrim)
 {
   chiToVtx.reserve(Tracks.size());
@@ -495,7 +533,9 @@ void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<L1FieldRe
     fB[0]     = CbmL1::Instance()->fpAlgo->GetParameters()->GetVertexFieldValue();
     zField[0] = CbmL1::Instance()->fpAlgo->GetParameters()->GetTargetPositionZ();
     fld.Set(fB[2], zField[2], fB[1], zField[1], fB[0], zField[0]);
-    field.push_back(fld);
+    for (int i = 0; i < nTracks_SIMD; i++) {
+      field.emplace_back(fld, i);
+    }
 
     for (int iSt = nStations - 4; iSt >= 0; iSt--) {
 
@@ -567,7 +607,7 @@ void CbmL1PFFitter::GetChiToVertex(vector<CbmStsTrack>& Tracks, vector<L1FieldRe
   delete[] zSta;
 }
 
-void CbmL1PFFitter::CalculateFieldRegion(vector<CbmStsTrack>& Tracks, vector<L1FieldRegion>& field)
+void CbmL1PFFitter::CalculateFieldRegion(vector<CbmStsTrack>& Tracks, vector<PFFieldRegion>& field)
 {
   field.reserve(Tracks.size());
 
@@ -635,11 +675,13 @@ void CbmL1PFFitter::CalculateFieldRegion(vector<CbmStsTrack>& Tracks, vector<L1F
     fB[0]     = CbmL1::Instance()->fpAlgo->GetParameters()->GetVertexFieldValue();
     zField[0] = CbmL1::Instance()->fpAlgo->GetParameters()->GetTargetPositionZ();
     fld.Set(fB[2], zField[2], fB[1], zField[1], fB[0], zField[0]);
-    field.push_back(fld);
+    for (int i = 0; i < nTracks_SIMD; i++) {
+      field.emplace_back(fld, i);
+    }
   }
 }
 
-void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks, vector<L1FieldRegion>& field)
+void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks, vector<PFFieldRegion>& field)
 {
   field.reserve(Tracks.size());
 
@@ -666,8 +708,9 @@ void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks,
   for (unsigned short itrack = 0; itrack < N_vTracks; itrack += fvec::size()) {
     if (N_vTracks - itrack < static_cast<unsigned short>(fvec::size())) nTracks_SIMD = N_vTracks - itrack;
 
-    for (int i = 0; i < nTracks_SIMD; i++)
+    for (int i = 0; i < nTracks_SIMD; i++) {
       t[i] = &Tracks[itrack + i];  // current track
+    }
 
     for (int iVec = 0; iVec < nTracks_SIMD; iVec++) {
       int nHitsTrackMvd = t[iVec]->GetNofMvdHits();
@@ -708,6 +751,8 @@ void CbmL1PFFitter::CalculateFieldRegionAtLastPoint(vector<CbmStsTrack>& Tracks,
     }
 
     fld.Set(fB[0], zField[0], fB[1], zField[1], fB[2], zField[2]);
-    field.push_back(fld);
+    for (int i = 0; i < nTracks_SIMD; i++) {
+      field.emplace_back(fld, i);
+    }
   }
 }
diff --git a/reco/L1/ParticleFinder/CbmL1PFFitter.h b/reco/L1/ParticleFinder/CbmL1PFFitter.h
index 946e7c747e..2189862fad 100644
--- a/reco/L1/ParticleFinder/CbmL1PFFitter.h
+++ b/reco/L1/ParticleFinder/CbmL1PFFitter.h
@@ -22,25 +22,30 @@
 
 #include <vector>
 
-class CbmL1Track;
 class CbmStsTrack;
-class L1TrackPar;
-class L1UMeasurementInfo;
-struct L1MaterialInfo;
-class L1Station;
 class L1FieldRegion;
 class CbmKFVertex;
 
 class CbmL1PFFitter {
 public:
+  // A container for parameters of L1FieldRegion
+  struct PFFieldRegion {
+    PFFieldRegion() {}
+    PFFieldRegion(const L1FieldRegion&, int i);
+    void setFromL1FieldRegion(const L1FieldRegion&, int i);
+    void getL1FieldRegion(L1FieldRegion&, int i);
+
+    float fP[10] {0.};
+  };
+
   CbmL1PFFitter();
   ~CbmL1PFFitter();
 
   //functions for fitting CbmStsTrack
   void Fit(std::vector<CbmStsTrack>& Tracks, std::vector<int>& pidHypo);
-  void CalculateFieldRegion(std::vector<CbmStsTrack>& Tracks, std::vector<L1FieldRegion>& Field);
-  void CalculateFieldRegionAtLastPoint(std::vector<CbmStsTrack>& Tracks, std::vector<L1FieldRegion>& field);
-  void GetChiToVertex(std::vector<CbmStsTrack>& Tracks, std::vector<L1FieldRegion>& field, std::vector<float>& chiToVtx,
+  void CalculateFieldRegion(std::vector<CbmStsTrack>& Tracks, std::vector<PFFieldRegion>& Field);
+  void CalculateFieldRegionAtLastPoint(std::vector<CbmStsTrack>& Tracks, std::vector<PFFieldRegion>& field);
+  void GetChiToVertex(std::vector<CbmStsTrack>& Tracks, std::vector<PFFieldRegion>& field, std::vector<float>& chiToVtx,
                       CbmKFVertex& primVtx, float chiPrim = -1);
 };
 #endif
-- 
GitLab