Index: src/sas/sascalc/data_util/qsmearing.py
===================================================================
--- src/sas/sascalc/data_util/qsmearing.py	(revision 4466a6a4d798669b35d3d83155593ce8c01cacc5)
+++ src/sas/sascalc/data_util/qsmearing.py	(revision a5b8253583189ae64cae0529b92e16221f283019)
@@ -14,9 +14,10 @@
 import sys
 from sasmodels import sesans
+
 import numpy as np  # type: ignore
 from numpy import pi, exp  # type: ignore
+#from scipy.special import jv as besselj
 
-from sasmodels.resolution import Slit1D, Pinhole1D
-from sasmodels.sesans import SESANS1D
+from sasmodels.resolution import Slit1D, Pinhole1D, SESANS1D
 from sasmodels.resolution2d import Pinhole2D
 from src.sas.sascalc.data_util.nxsunit import Converter
@@ -59,6 +60,5 @@
     # TODO: change other sanity checks to check for file loader instead of data structure?
     _found_sesans = False
-    #if data.dx is not None and data.meta_data['loader']=='SESANS':
-    if data.dx is not None and data.isSesans:
+    if data.dx is not None and data.meta_data['loader']=='SESANS':
         if data.dx[0] > 0.0:
             _found_sesans = True
@@ -66,12 +66,7 @@
     if _found_sesans == True:
         #Pre-compute the Hankel matrix (H)
-        qmax, qunits = data.sample.zacceptance
-        hankel=sesans.SesansTransform()
-        sesans.SesansTransform.set_transform(hankel,
-        SE = Converter(data._xunit)(data.x, "A"),
-        zaccept = Converter(qunits)(qmax, "1/A"),
-        Rmax = 1000000)
+        H0,H, q_calc = sesans.Hankelconstructor(data)
         # Then return the actual transform, as if it were a smearing function
-        return PySmear(SESANS1D(data, hankel._H0, hankel._H, hankel.q), model)
+        return PySmear(SESANS1D(data, H0, H, q_calc), model)
 
     _found_resolution = False
Index: src/sas/sasgui/perspectives/fitting/basepage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/basepage.py	(revision 55db50176845da6589edc694cd3c2436715e9c73)
+++ src/sas/sasgui/perspectives/fitting/basepage.py	(revision f22b43c5dab96bd151987be4415dee98e74b2c29)
@@ -431,4 +431,5 @@
         self.sizer2 = wx.BoxSizer(wx.VERTICAL)
         self.sizer3 = wx.BoxSizer(wx.VERTICAL)
+        self.sizerTrafo = wx.BoxSizer(wx.VERTICAL)
         self.sizer4 = wx.BoxSizer(wx.VERTICAL)
         self.sizer5 = wx.BoxSizer(wx.VERTICAL)
@@ -439,4 +440,5 @@
         self.sizer2.SetMinSize((PANEL_WIDTH, -1))
         self.sizer3.SetMinSize((PANEL_WIDTH, -1))
+        self.sizerTrafo.SetMinSize((PANEL_WIDTH, -1))
         self.sizer4.SetMinSize((PANEL_WIDTH, -1))
         self.sizer5.SetMinSize((PANEL_WIDTH, -1))
@@ -447,4 +449,5 @@
         self.vbox.Add(self.sizer2)
         self.vbox.Add(self.sizer3)
+        self.vbox.Add(self.sizerTrafo)
         self.vbox.Add(self.sizer4)
         self.vbox.Add(self.sizer5)
Index: src/sas/sasgui/perspectives/fitting/fitpage.py
===================================================================
--- src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 55db50176845da6589edc694cd3c2436715e9c73)
+++ src/sas/sasgui/perspectives/fitting/fitpage.py	(revision 4581ac9c93ced39967e80ba484fbc5b6dfee8fb4)
@@ -55,4 +55,7 @@
         self.weightbt_string = None
         self.m_name = None
+        # transform implementation
+        self._fill_Trafo_sizer()
+       # self.Trafobt_string()
         # get smear info from data
         self._get_smear_info()
@@ -92,4 +95,61 @@
         self.parent.on_set_focus(event)
         self.on_tap_focus()
+
+    def onTrafo(self, event):
+        """
+        On Trafo radio button event, sets the Trafobt_string
+        """
+        self.Trafobt_string = event.GetEventObject().GetLabelText()
+        self._set_Trafo()
+
+    def _fill_Trafo_sizer(self):
+
+        title = "Transform"
+        box_description_trafo = wx.StaticBox(self, wx.ID_ANY, str(title))
+        box_description_trafo.SetForegroundColour(wx.BLUE)
+        #boxsizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.VERTICAL)
+        boxsizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.HORIZONTAL)
+        #sizer_trafo = wx.StaticBoxSizer(box_description_trafo, wx.HORIZONTAL)
+        #weighting_set_box = wx.StaticBox(self, wx.ID_ANY,
+         #                              'Select the type of SESANS analysis')
+
+        #sizer_weighting = wx.BoxSizer(wx.HORIZONTAL)
+          #      weighting_box.SetMinSize((_DATA_BOX_WIDTH, 60))
+
+        #For every radio button (each statement x3):
+        self.no_transform = wx.RadioButton(self, wx.ID_ANY,
+                                                  'None', style=wx.RB_GROUP)
+
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+         #                 id=self.no_transform.GetId())
+        self.hankel = wx.RadioButton(self, wx.ID_ANY,
+                                                  'Hankel')
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+        #                  id=self.hankel.GetId())
+        self.cosine = wx.RadioButton(self, wx.ID_ANY,
+                                                  'Cosine')
+        #self.Bind(wx.EVT_RADIOBUTTON, self.onTrafo,
+         #                 id=self.cosine.GetId())
+
+        #Not sure about this (only once though)
+        self.no_transform.SetValue(True)
+
+        #For every radio button (each statement x3):
+        boxsizer_trafo.Add(self.no_transform, 0, wx.LEFT, 10)
+        boxsizer_trafo.Add((14, 10))
+        boxsizer_trafo.Add(self.hankel)
+        boxsizer_trafo.Add((14, 10))
+        boxsizer_trafo.Add(self.cosine)
+        boxsizer_trafo.Add((14, 10))
+            #Default for weighting is False, but these need to be on by default!
+        self.no_transform.Enable(True)
+
+        #Not sure about this (only once though)
+        #weighting_box.Add(sizer_trafo)
+
+        self.sizerTrafo.Clear(True)
+        self.sizerTrafo.Add(boxsizer_trafo, 0, wx.EXPAND | wx.ALL, 10)
+        #self.sizerTrafo.Add(sizer_trafo, 0, wx.EXPAND | wx.ALL, 10)
+        self.sizerTrafo.Layout()
 
     def _fill_data_sizer(self):
