code: def _merge_two_curves(curve1: Curve, curve2: Curve, qmin, qmax, qsep, use_additive_constant=False):
      
      curve1=curve1.sanitize()
      curve2=curve2.sanitize()
      if len(curve1.trim(qmin, qmax)) > len(curve2.trim(qmin, qmax)):
          curve2_interp = curve2.trim(qmin, qmax)
          curve1_interp = curve1.interpolate(curve2_interp.q)
      else:
          curve1_interp = curve1.trim(qmin, qmax)
          curve2_interp = curve2.interpolate(curve1_interp.q)
      if use_additive_constant:
          bg_init = 0
      else:
          bg_init = FixedParameter(0)
      factor, bg, stat = nonlinear_odr(curve2_interp.Intensity, curve1_interp.Intensity,
                                       curve2_interp.Error, curve1_interp.Error,
                                       lambda x, factor, bg: x * factor + bg, [1.0, bg_init])
      return Curve.merge(curve1 - bg, curve2 * factor, qsep), factor, bg, stat
docs: Merge two scattering curves
  
      :param curve1: the first curve (longer distance)
      :type curve1: sastool.classes.curve.GeneralCurve
      :param curve2: the second curve (shorter distance)
      :type curve2: sastool.classes.curve.GeneralCurve
      :param qmin: lower bound of the interval for determining the scaling factor
      :type qmin: float
      :param qmax: upper bound of the interval for determining the scaling factor
      :type qmax: float
      :param qsep: separating (tailoring) point for the merge
      :type qsep: float
      :return: merged_curve, factor, background, stat
      :rtype tuple of a sastool.classes2.curve.Curve and a float