diff --git a/reco/L1/L1Algo/L1TrackPar.h b/reco/L1/L1Algo/L1TrackPar.h
index 261944c4bc54167b6365ae0611299d1924e95058..4f60d6d804055586a3191f48449fd15d9e1cb577 100644
--- a/reco/L1/L1Algo/L1TrackPar.h
+++ b/reco/L1/L1Algo/L1TrackPar.h
@@ -21,17 +21,22 @@ public:
 
   L1TrackPar() = default;
 
-  L1TrackPar(const double* T, const double* C) { Set(T, C); }
+  template<typename T>
+  L1TrackPar(const T* tr, const T* C)
+  {
+    Set(tr, C);
+  }
 
-  void Set(const double* T, const double* C)
+  template<typename T>
+  void Set(const T* tr, const T* C)
   {
-    x  = T[0];
-    y  = T[1];
-    tx = T[2];
-    ty = T[3];
-    qp = T[4];
-    z  = T[5];
-    t  = T[6];
+    x  = tr[0];
+    y  = tr[1];
+    tx = tr[2];
+    ty = tr[3];
+    qp = tr[4];
+    z  = tr[5];
+    t  = tr[6];
 
     chi2 = 0.;
     NDF  = 0.;
diff --git a/reco/L1/L1Algo/L1TrackParFit.h b/reco/L1/L1Algo/L1TrackParFit.h
index 267f6dad92988e7b1f51a2d8439c330611a9e399..3a85a17f20469329d87a90de9f4e50ac88c54c6b 100644
--- a/reco/L1/L1Algo/L1TrackParFit.h
+++ b/reco/L1/L1Algo/L1TrackParFit.h
@@ -18,11 +18,16 @@ public:
 
   L1TrackParFit(const L1TrackPar& t) { SetTrack(t); }
 
-  L1TrackParFit(const double* T, const double* C) { SetTrack(T, C); }
+  template<typename T>
+  L1TrackParFit(const T* tr, const T* C)
+  {
+    SetTrack(tr, C);
+  }
 
-  void SetTrack(const double* T, const double* C)
+  template<typename T>
+  void SetTrack(const T* tr, const T* C)
   {
-    fTr.Set(T, C);
+    fTr.Set(tr, C);
     fQp0 = fTr.qp;
   }