diff --git a/analysis/PWGCHA/jpsi/CMakeLists.txt b/analysis/PWGCHA/jpsi/CMakeLists.txt
index 832b91e37d4b05931968df39a6dcd5c79574b9c4..f7b087c1f7d99cf94c44348d5eb12bd09fe9c4ba 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 f44b9b0edb02c7215473b80dc36fd08252dea255..03c69afb6c8431088c18862076ac30521eb15758 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 7e0f93cb243aeffa36e768131526114dcd2fb446..0f66ea8f70c97775c47f93c4a4f10000b60f8310 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 d28fde2603be8bb5249fa686799079c9533ff45a..172d962b95daf26871c650818cbfe72c8ccd8b63 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 986ead09b688f4bdc92aeb8948f146fa8c18a04b..075e1214e2b6fa14ff5ca848f9805f09470a8822 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 0decf642e1bb5f395e448df944d3703d341658d3..57da1753293c554c1c8734b79f719c1a533f6b74 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 dd8b1691df85f8ab5c3b079ca3e34f1d75ebd669..5501328e75ceb315c5eb8e5ec188a0f62730963f 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 df994c5d422f9b42df9bc0f448ac64e0b394c149..91754a0bef445aea47b78892c9d4becbea822258 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 867084765378f882cd89189c1c026d0e2ee0ad14..1fa60300b033a6d335c1961c5f923ee4ea59d78d 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 7df5fd17692c63cfdff2466fdd3060e9b336ec68..5a4f7094d6669e3f7e30b941ba1964a1c3ef9863 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 2d7dde947dc2b37e0039ca2f94fddbaa2694f2b8..620bc0b56b38a8b75c4fa8e1989a821cdc2fb931 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 2c341fb5467e0c561f50d45bdff60e8368aafc82..2dd93270a16b7f76230ace7f1e3e3dd9c9685e55 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 ce99c12102631ba4cd52ed158d0705416154873a..01feddd1e51194538eee18e4f7be6066348c5b7a 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 73084956ccfe24f8bd60f267230d002711bd8fe7..ec78ce749cf85d58a2d57fe4082a023a32b756da 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 0e9f15fdccfc279d1ae7a4a741a11231142d8c18..674aa7f4fbb1d3f0396e3f3df06feb2c4341a7ee 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 8824520699f0ac79fa42d2e6141dde5f84e1a3b8..30e59d5bead321dfd2119f30971db4695c5a0255 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 b45f40dbb73ef69ac258df67503ccce295943c79..719b634438521665dd23c96cc6c005f2bcd46449 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 41d872337f63b1958ed0ae7d937050fb01d88c8f..3fe4e58b7f04d77b4a3b859a0711b20cf07f5280 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 690f4ca947eb3356f9efb551b188133effcd91bd..a7fcce39ca2c5ed34356d925a195fa2eeac86074 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 3f56e4b62f0d9fb8a735e3da492bf0f02e8d4d80..79a4ef8e8388ae8131a92654a15ec4eb17ba2fbe 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 9d4d40709fab3f62a14ede609914290e7650062a..5e622004179434fb806ddbb08cb51f9b1653cab8 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 946e7c747e3e50c2ef21bd52c5149ed9cc3f7078..2189862fadd01a55f9c39a40129620eda18a4a1e 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