From cb37415a0b2cfc0e4f0384dc925c19aaa0cd4081 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Sat, 10 Dec 2022 18:00:18 +0100
Subject: [PATCH] rm postfix _at_bottom from formfactor fcts

---
 Examples/fq/Sphere.py                         |   2 +-
 Examples/scatter2d/CustomFormFactor.py        |   2 +-
 Resample/Particle/ReParticle.cpp              |   4 +-
 Resample/Particle/ReParticle.h                |   2 +-
 Sample/HardParticle/Box.cpp                   |   2 +-
 Sample/HardParticle/Box.h                     |   2 +-
 Sample/HardParticle/Cone.cpp                  |   2 +-
 Sample/HardParticle/Cone.h                    |   2 +-
 Sample/HardParticle/Cylinder.cpp              |   2 +-
 Sample/HardParticle/Cylinder.h                |   2 +-
 Sample/HardParticle/EllipsoidalCylinder.cpp   |   2 +-
 Sample/HardParticle/EllipsoidalCylinder.h     |   2 +-
 Sample/HardParticle/HemiEllipsoid.cpp         |   2 +-
 Sample/HardParticle/HemiEllipsoid.h           |   2 +-
 Sample/HardParticle/HorizontalCylinder.cpp    |   2 +-
 Sample/HardParticle/HorizontalCylinder.h      |   2 +-
 Sample/HardParticle/IFormFactorPolyhedron.cpp |   2 +-
 Sample/HardParticle/IFormFactorPolyhedron.h   |   2 +-
 Sample/HardParticle/IFormFactorPrism.cpp      |   2 +-
 Sample/HardParticle/IFormFactorPrism.h        |   2 +-
 Sample/HardParticle/IProfileRipple.cpp        |   2 +-
 Sample/HardParticle/IProfileRipple.h          |   2 +-
 Sample/HardParticle/LongBoxGauss.cpp          |   2 +-
 Sample/HardParticle/LongBoxGauss.h            |   2 +-
 Sample/HardParticle/LongBoxLorentz.cpp        |   2 +-
 Sample/HardParticle/LongBoxLorentz.h          |   2 +-
 Sample/HardParticle/Sphere.cpp                |   2 +-
 Sample/HardParticle/Sphere.h                  |   2 +-
 Sample/HardParticle/Spheroid.cpp              |   2 +-
 Sample/HardParticle/Spheroid.h                |   2 +-
 Sample/HardParticle/TruncatedSphere.cpp       |   2 +-
 Sample/HardParticle/TruncatedSphere.h         |   2 +-
 Sample/HardParticle/TruncatedSpheroid.cpp     |   2 +-
 Sample/HardParticle/TruncatedSpheroid.h       |   2 +-
 Sample/Particle/IFormFactor.cpp               |   6 +-
 Sample/Particle/IFormFactor.h                 |   4 +-
 Sample/SoftParticle/FuzzySphere.cpp           |   2 +-
 Sample/SoftParticle/FuzzySphere.h             |   2 +-
 Sample/SoftParticle/Gauss.cpp                 |   2 +-
 Sample/SoftParticle/Gauss.h                   |   2 +-
 Tests/Unit/Numeric/BisectFF.cpp               |  10 +-
 Tests/Unit/Numeric/FormFactorOtherTest.cpp    |  16 +-
 .../Numeric/FormFactorSpecializationTest.cpp  |   4 +-
 Tests/Unit/Numeric/FormFactorSymmetryTest.cpp |   4 +-
 Tests/Unit/Sample/FormFactorBasicTest.cpp     |  12 +-
 auto/Wrap/libBornAgainSample.py               | 108 ++++----
 auto/Wrap/libBornAgainSample_wrap.cpp         | 262 +++++++++---------
 auto/Wrap/libBornAgainSample_wrap.h           |   2 +-
 48 files changed, 252 insertions(+), 254 deletions(-)

diff --git a/Examples/fq/Sphere.py b/Examples/fq/Sphere.py
index 053c47cea9f..ee93bef5b66 100755
--- a/Examples/fq/Sphere.py
+++ b/Examples/fq/Sphere.py
@@ -18,7 +18,7 @@ if __name__ == '__main__':
     v = ff.volume()
     n = bp.simargs['n']
     x = [ qmax*i/(n-1) for i in range(n) ]
-    y = [ ff.formfactor_at_bottom(C3(q,0,0)).real/v for q in x ]
+    y = [ ff.formfactor(C3(q,0,0)).real/v for q in x ]
     ym = [ -f for f in y ]
 
     plt.semilogy(x, y)
diff --git a/Examples/scatter2d/CustomFormFactor.py b/Examples/scatter2d/CustomFormFactor.py
index 5781665ed2a..f6a371251de 100755
--- a/Examples/scatter2d/CustomFormFactor.py
+++ b/Examples/scatter2d/CustomFormFactor.py
@@ -36,7 +36,7 @@ class CustomFormFactor(ba.IFormFactor):
         cloned_ff.transferToCPP()
         return cloned_ff
 
-    def formfactor_at_bottom(self, q):
+    def formfactor(self, q):
         qzhH = 0.5*q.z()*self.H
         qxhL = 0.5*q.x()*self.L
         qyhL = 0.5*q.y()*self.L
diff --git a/Resample/Particle/ReParticle.cpp b/Resample/Particle/ReParticle.cpp
index 3ee337e48fc..02249d1b629 100644
--- a/Resample/Particle/ReParticle.cpp
+++ b/Resample/Particle/ReParticle.cpp
@@ -74,9 +74,9 @@ const IFormFactor* ReParticle::iformfactor() const
     return m_ff.get();
 }
 
-complex_t ReParticle::formfactor_at_bottom(C3 q) const
+complex_t ReParticle::formfactor(C3 q) const
 {
-    return m_ff->formfactor_at_bottom(q);
+    return m_ff->formfactor(q);
 }
 
 complex_t ReParticle::theFF(const WavevectorInfo& wavevectors) const
diff --git a/Resample/Particle/ReParticle.h b/Resample/Particle/ReParticle.h
index d486ae685f0..39069f7f974 100644
--- a/Resample/Particle/ReParticle.h
+++ b/Resample/Particle/ReParticle.h
@@ -54,7 +54,7 @@ public:
 
     const IFormFactor* iformfactor() const;
 
-    virtual complex_t formfactor_at_bottom(C3 q) const;
+    virtual complex_t formfactor(C3 q) const;
 
 private:
     const std::unique_ptr<const IFormFactor> m_ff;
diff --git a/Sample/HardParticle/Box.cpp b/Sample/HardParticle/Box.cpp
index b4ab6649909..01bb8b056f1 100644
--- a/Sample/HardParticle/Box.cpp
+++ b/Sample/HardParticle/Box.cpp
@@ -30,7 +30,7 @@ Box::Box(double length, double width, double height)
 {
 }
 
-complex_t Box::formfactor_at_bottom(C3 q) const
+complex_t Box::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     complex_t qzHdiv2 = m_height / 2 * q.z();
diff --git a/Sample/HardParticle/Box.h b/Sample/HardParticle/Box.h
index 03dda90bb45..944183a6c41 100644
--- a/Sample/HardParticle/Box.h
+++ b/Sample/HardParticle/Box.h
@@ -61,7 +61,7 @@ public:
     {
         return m_length / 2.0;
     }
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/Cone.cpp b/Sample/HardParticle/Cone.cpp
index 854725a090d..fc8c6717fdf 100644
--- a/Sample/HardParticle/Cone.cpp
+++ b/Sample/HardParticle/Cone.cpp
@@ -35,7 +35,7 @@ Cone::Cone(double radius, double height, double alpha)
 {
 }
 
-complex_t Cone::formfactor_at_bottom(C3 q) const
+complex_t Cone::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double R = m_radius;
diff --git a/Sample/HardParticle/Cone.h b/Sample/HardParticle/Cone.h
index b87c8204c7e..97140bdae65 100644
--- a/Sample/HardParticle/Cone.h
+++ b/Sample/HardParticle/Cone.h
@@ -57,7 +57,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/Cylinder.cpp b/Sample/HardParticle/Cylinder.cpp
index ae9480097c9..163803a5620 100644
--- a/Sample/HardParticle/Cylinder.cpp
+++ b/Sample/HardParticle/Cylinder.cpp
@@ -32,7 +32,7 @@ Cylinder::Cylinder(double radius, double height)
 {
 }
 
-complex_t Cylinder::formfactor_at_bottom(C3 q) const
+complex_t Cylinder::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double R = m_radius;
diff --git a/Sample/HardParticle/Cylinder.h b/Sample/HardParticle/Cylinder.h
index 211cd5b096e..fbaa06b6aa9 100644
--- a/Sample/HardParticle/Cylinder.h
+++ b/Sample/HardParticle/Cylinder.h
@@ -53,7 +53,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/EllipsoidalCylinder.cpp b/Sample/HardParticle/EllipsoidalCylinder.cpp
index 991a34b82b9..bbfd0313fa3 100644
--- a/Sample/HardParticle/EllipsoidalCylinder.cpp
+++ b/Sample/HardParticle/EllipsoidalCylinder.cpp
@@ -39,7 +39,7 @@ double EllipsoidalCylinder::radialExtension() const
     return (m_radius_x + m_radius_y) / 2.0;
 }
 
-complex_t EllipsoidalCylinder::formfactor_at_bottom(C3 q) const
+complex_t EllipsoidalCylinder::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     complex_t qxRa = q.x() * m_radius_x;
diff --git a/Sample/HardParticle/EllipsoidalCylinder.h b/Sample/HardParticle/EllipsoidalCylinder.h
index aa7e34c217b..f0e1da0fc35 100644
--- a/Sample/HardParticle/EllipsoidalCylinder.h
+++ b/Sample/HardParticle/EllipsoidalCylinder.h
@@ -54,7 +54,7 @@ public:
 
     double radialExtension() const override;
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/HemiEllipsoid.cpp b/Sample/HardParticle/HemiEllipsoid.cpp
index 640e90a4878..6074fea3211 100644
--- a/Sample/HardParticle/HemiEllipsoid.cpp
+++ b/Sample/HardParticle/HemiEllipsoid.cpp
@@ -40,7 +40,7 @@ double HemiEllipsoid::radialExtension() const
     return (m_radius_x + m_radius_y) / 2.0;
 }
 
-complex_t HemiEllipsoid::formfactor_at_bottom(C3 q) const
+complex_t HemiEllipsoid::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double R = m_radius_x;
diff --git a/Sample/HardParticle/HemiEllipsoid.h b/Sample/HardParticle/HemiEllipsoid.h
index e805db9d859..2dd28750a46 100644
--- a/Sample/HardParticle/HemiEllipsoid.h
+++ b/Sample/HardParticle/HemiEllipsoid.h
@@ -56,7 +56,7 @@ public:
 
     double radialExtension() const override;
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/HorizontalCylinder.cpp b/Sample/HardParticle/HorizontalCylinder.cpp
index 01f5f0cb0fe..e32bd325dc9 100644
--- a/Sample/HardParticle/HorizontalCylinder.cpp
+++ b/Sample/HardParticle/HorizontalCylinder.cpp
@@ -41,7 +41,7 @@ HorizontalCylinder::HorizontalCylinder(double radius, double length)
 {
 }
 
-complex_t HorizontalCylinder::formfactor_at_bottom(C3 q) const
+complex_t HorizontalCylinder::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double R = m_radius;
diff --git a/Sample/HardParticle/HorizontalCylinder.h b/Sample/HardParticle/HorizontalCylinder.h
index 63bcb78edf5..84df5812e2c 100644
--- a/Sample/HardParticle/HorizontalCylinder.h
+++ b/Sample/HardParticle/HorizontalCylinder.h
@@ -62,7 +62,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/IFormFactorPolyhedron.cpp b/Sample/HardParticle/IFormFactorPolyhedron.cpp
index fa056c952c5..912c26e60bf 100644
--- a/Sample/HardParticle/IFormFactorPolyhedron.cpp
+++ b/Sample/HardParticle/IFormFactorPolyhedron.cpp
@@ -69,7 +69,7 @@ Span IFormFactorPolyhedron::exec_spanZ(const IRotation* rotation) const
     return PolyhedralUtil::spanZ(m_vertices, rotation);
 }
 
-complex_t IFormFactorPolyhedron::formfactor_at_bottom(C3 q) const
+complex_t IFormFactorPolyhedron::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     return exp_I(-m_z_bottom * q.z()) * pimpl->formfactor(q);
diff --git a/Sample/HardParticle/IFormFactorPolyhedron.h b/Sample/HardParticle/IFormFactorPolyhedron.h
index f309b4b01e7..3de6c3d9fdb 100644
--- a/Sample/HardParticle/IFormFactorPolyhedron.h
+++ b/Sample/HardParticle/IFormFactorPolyhedron.h
@@ -36,7 +36,7 @@ public:
     double volume() const override;
     double radialExtension() const override;
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
 protected:
     void setPolyhedron(const ff::Topology& topology, double z_bottom,
diff --git a/Sample/HardParticle/IFormFactorPrism.cpp b/Sample/HardParticle/IFormFactorPrism.cpp
index be2e27db4c5..67c63db1dea 100644
--- a/Sample/HardParticle/IFormFactorPrism.cpp
+++ b/Sample/HardParticle/IFormFactorPrism.cpp
@@ -37,7 +37,7 @@ void IFormFactorPrism::setPrism(bool symmetry_Ci, const std::vector<R3>& base_ve
 
 //! Returns the form factor F(q) of this polyhedron, respecting the offset height/2.
 
-complex_t IFormFactorPrism::formfactor_at_bottom(C3 q) const
+complex_t IFormFactorPrism::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     return exp_I(height() / 2 * q.z()) * pimpl->formfactor(q);
diff --git a/Sample/HardParticle/IFormFactorPrism.h b/Sample/HardParticle/IFormFactorPrism.h
index 08fa0f419b0..ddac0f08794 100644
--- a/Sample/HardParticle/IFormFactorPrism.h
+++ b/Sample/HardParticle/IFormFactorPrism.h
@@ -27,7 +27,7 @@ public:
 
     virtual double height() const = 0;
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
 protected:
     void setPrism(bool symmetry_Ci, const std::vector<R3>& base_vertices) const;
diff --git a/Sample/HardParticle/IProfileRipple.cpp b/Sample/HardParticle/IProfileRipple.cpp
index 776876067e0..44f62f60c50 100644
--- a/Sample/HardParticle/IProfileRipple.cpp
+++ b/Sample/HardParticle/IProfileRipple.cpp
@@ -35,7 +35,7 @@ double IProfileRipple::radialExtension() const
     return (m_width + m_length) / 4.0;
 }
 
-complex_t IProfileRipple::formfactor_at_bottom(C3 q) const
+complex_t IProfileRipple::formfactor(C3 q) const
 {
     return factor_x(q.x()) * factor_yz(q.y(), q.z());
 }
diff --git a/Sample/HardParticle/IProfileRipple.h b/Sample/HardParticle/IProfileRipple.h
index 3140c8dc944..fc305933837 100644
--- a/Sample/HardParticle/IProfileRipple.h
+++ b/Sample/HardParticle/IProfileRipple.h
@@ -30,7 +30,7 @@ public:
 
     double radialExtension() const override;
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
     std::string validate() const override;
 
 protected:
diff --git a/Sample/HardParticle/LongBoxGauss.cpp b/Sample/HardParticle/LongBoxGauss.cpp
index 190d93fc130..cd5ef1d0d3f 100644
--- a/Sample/HardParticle/LongBoxGauss.cpp
+++ b/Sample/HardParticle/LongBoxGauss.cpp
@@ -30,7 +30,7 @@ LongBoxGauss::LongBoxGauss(double length, double width, double height)
 {
 }
 
-complex_t LongBoxGauss::formfactor_at_bottom(C3 q) const
+complex_t LongBoxGauss::formfactor(C3 q) const
 {
     complex_t qxL2 = std::pow(m_length * q.x(), 2) / 2.0;
     complex_t qyWdiv2 = m_width * q.y() / 2.0;
diff --git a/Sample/HardParticle/LongBoxGauss.h b/Sample/HardParticle/LongBoxGauss.h
index c92ec1e53a0..5494c32c116 100644
--- a/Sample/HardParticle/LongBoxGauss.h
+++ b/Sample/HardParticle/LongBoxGauss.h
@@ -56,7 +56,7 @@ public:
         return m_length / 2.0;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/LongBoxLorentz.cpp b/Sample/HardParticle/LongBoxLorentz.cpp
index 41b17df416a..46221668e58 100644
--- a/Sample/HardParticle/LongBoxLorentz.cpp
+++ b/Sample/HardParticle/LongBoxLorentz.cpp
@@ -30,7 +30,7 @@ LongBoxLorentz::LongBoxLorentz(double length, double width, double height)
 {
 }
 
-complex_t LongBoxLorentz::formfactor_at_bottom(C3 q) const
+complex_t LongBoxLorentz::formfactor(C3 q) const
 {
     complex_t qxL2 = 2.5 * std::pow(m_length * q.x(), 2);
     complex_t qyWdiv2 = m_width * q.y() / 2.0;
diff --git a/Sample/HardParticle/LongBoxLorentz.h b/Sample/HardParticle/LongBoxLorentz.h
index eacbae70c0b..d3e04a4d096 100644
--- a/Sample/HardParticle/LongBoxLorentz.h
+++ b/Sample/HardParticle/LongBoxLorentz.h
@@ -57,7 +57,7 @@ public:
         return m_length / 2.0;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/Sphere.cpp b/Sample/HardParticle/Sphere.cpp
index 4fe05210429..13fdac1bf07 100644
--- a/Sample/HardParticle/Sphere.cpp
+++ b/Sample/HardParticle/Sphere.cpp
@@ -44,7 +44,7 @@ Span Sphere::exec_spanZ(const IRotation* rotation) const
     return {new_centre.z() - m_radius, new_centre.z() + m_radius};
 }
 
-complex_t Sphere::formfactor_at_bottom(C3 q) const
+complex_t Sphere::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     complex_t result = SampleUtils::someff::ffSphere(q, m_radius);
diff --git a/Sample/HardParticle/Sphere.h b/Sample/HardParticle/Sphere.h
index a628eec115c..3743e7f3ed9 100644
--- a/Sample/HardParticle/Sphere.h
+++ b/Sample/HardParticle/Sphere.h
@@ -49,7 +49,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/Spheroid.cpp b/Sample/HardParticle/Spheroid.cpp
index 3304ac9c1c9..ede62d390f1 100644
--- a/Sample/HardParticle/Spheroid.cpp
+++ b/Sample/HardParticle/Spheroid.cpp
@@ -35,7 +35,7 @@ Spheroid::Spheroid(double radius, double height)
 {
 }
 
-complex_t Spheroid::formfactor_at_bottom(C3 q) const
+complex_t Spheroid::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     double h = m_height / 2;
diff --git a/Sample/HardParticle/Spheroid.h b/Sample/HardParticle/Spheroid.h
index a47b38182fb..17060cf42a8 100644
--- a/Sample/HardParticle/Spheroid.h
+++ b/Sample/HardParticle/Spheroid.h
@@ -53,7 +53,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/TruncatedSphere.cpp b/Sample/HardParticle/TruncatedSphere.cpp
index 7f39a2fd444..87c55a95a02 100644
--- a/Sample/HardParticle/TruncatedSphere.cpp
+++ b/Sample/HardParticle/TruncatedSphere.cpp
@@ -35,7 +35,7 @@ TruncatedSphere::TruncatedSphere(double radius, double height, double dh)
 }
 
 //! Complex form factor.
-complex_t TruncatedSphere::formfactor_at_bottom(C3 q) const
+complex_t TruncatedSphere::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     if (std::abs(q.mag()) < std::numeric_limits<double>::epsilon())
diff --git a/Sample/HardParticle/TruncatedSphere.h b/Sample/HardParticle/TruncatedSphere.h
index 21a3067dc6d..14d9f20e437 100644
--- a/Sample/HardParticle/TruncatedSphere.h
+++ b/Sample/HardParticle/TruncatedSphere.h
@@ -57,7 +57,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/HardParticle/TruncatedSpheroid.cpp b/Sample/HardParticle/TruncatedSpheroid.cpp
index 0eb13463ead..73049ffb802 100644
--- a/Sample/HardParticle/TruncatedSpheroid.cpp
+++ b/Sample/HardParticle/TruncatedSpheroid.cpp
@@ -36,7 +36,7 @@ TruncatedSpheroid::TruncatedSpheroid(double radius, double height, double height
 {
 }
 
-complex_t TruncatedSpheroid::formfactor_at_bottom(C3 q) const
+complex_t TruncatedSpheroid::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double H = m_height;
diff --git a/Sample/HardParticle/TruncatedSpheroid.h b/Sample/HardParticle/TruncatedSpheroid.h
index 356dc32255c..1ebb01c08a7 100644
--- a/Sample/HardParticle/TruncatedSpheroid.h
+++ b/Sample/HardParticle/TruncatedSpheroid.h
@@ -63,7 +63,7 @@ public:
         return m_radius;
     }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/Particle/IFormFactor.cpp b/Sample/Particle/IFormFactor.cpp
index 68e4ee60adb..41526cbcee4 100644
--- a/Sample/Particle/IFormFactor.cpp
+++ b/Sample/Particle/IFormFactor.cpp
@@ -33,7 +33,7 @@ IFormFactor::~IFormFactor() = default;
 
 double IFormFactor::volume() const
 {
-    return std::abs(formfactor_at_bottom(C3()));
+    return std::abs(formfactor(C3()));
 }
 
 Span IFormFactor::spanZ(const IRotation* rotation) const
@@ -64,7 +64,7 @@ std::string IFormFactor::pythonConstructor() const
 
 complex_t IFormFactor::theFF(const WavevectorInfo& wavevectors) const
 {
-    return formfactor_at_bottom(wavevectors.getQ());
+    return formfactor(wavevectors.getQ());
 }
 
 SpinMatrix IFormFactor::thePolFF(const WavevectorInfo& wavevectors) const
@@ -74,5 +74,5 @@ SpinMatrix IFormFactor::thePolFF(const WavevectorInfo& wavevectors) const
 
 SpinMatrix IFormFactor::formfactor_pol(C3 q) const
 {
-    return formfactor_at_bottom(q) * SpinMatrix::One();
+    return formfactor(q) * SpinMatrix::One();
 }
diff --git a/Sample/Particle/IFormFactor.h b/Sample/Particle/IFormFactor.h
index 16c71a88970..69306604421 100644
--- a/Sample/Particle/IFormFactor.h
+++ b/Sample/Particle/IFormFactor.h
@@ -60,11 +60,11 @@ public:
     SpinMatrix thePolFF(const WavevectorInfo& wavevectors) const;
 
     //! Returns scattering amplitude for complex scattering wavevector q=k_i-k_f in case
-    //! of matrix interactions. Default implementation calls formfactor_at_bottom(q) and
+    //! of matrix interactions. Default implementation calls formfactor(q) and
     //! multiplies with the unit matrix.
     SpinMatrix formfactor_pol(C3 q) const;
 
-    virtual complex_t formfactor_at_bottom(C3 q) const = 0;
+    virtual complex_t formfactor(C3 q) const = 0;
 
 protected:
     virtual Span exec_spanZ(const IRotation* rotation) const;
diff --git a/Sample/SoftParticle/FuzzySphere.cpp b/Sample/SoftParticle/FuzzySphere.cpp
index 34479661fb2..02ac961796d 100644
--- a/Sample/SoftParticle/FuzzySphere.cpp
+++ b/Sample/SoftParticle/FuzzySphere.cpp
@@ -30,7 +30,7 @@ FuzzySphere::FuzzySphere(double mean, double sigma)
 {
 }
 
-complex_t FuzzySphere::formfactor_at_bottom(C3 q) const
+complex_t FuzzySphere::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     double q2 = std::norm(q.x()) + std::norm(q.y()) + std::norm(q.z());
diff --git a/Sample/SoftParticle/FuzzySphere.h b/Sample/SoftParticle/FuzzySphere.h
index 12ef0e3b42a..ae95c472e2a 100644
--- a/Sample/SoftParticle/FuzzySphere.h
+++ b/Sample/SoftParticle/FuzzySphere.h
@@ -32,7 +32,7 @@ public:
 
     double radialExtension() const override { return m_radius; }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Sample/SoftParticle/Gauss.cpp b/Sample/SoftParticle/Gauss.cpp
index f7d5369ed9a..0ae32fb0287 100644
--- a/Sample/SoftParticle/Gauss.cpp
+++ b/Sample/SoftParticle/Gauss.cpp
@@ -31,7 +31,7 @@ GaussSphere::GaussSphere(double mean_radius)
 {
 }
 
-complex_t GaussSphere::formfactor_at_bottom(C3 q) const
+complex_t GaussSphere::formfactor(C3 q) const
 {
     ASSERT(m_validated);
     const double max_ql = std::sqrt(-4 * M_PI * std::log(std::numeric_limits<double>::min()) / 3);
diff --git a/Sample/SoftParticle/Gauss.h b/Sample/SoftParticle/Gauss.h
index d4ad5cd6257..75991e6cead 100644
--- a/Sample/SoftParticle/Gauss.h
+++ b/Sample/SoftParticle/Gauss.h
@@ -33,7 +33,7 @@ public:
 
     double radialExtension() const override { return m_mean_radius; }
 
-    complex_t formfactor_at_bottom(C3 q) const override;
+    complex_t formfactor(C3 q) const override;
 
     std::string validate() const override;
 
diff --git a/Tests/Unit/Numeric/BisectFF.cpp b/Tests/Unit/Numeric/BisectFF.cpp
index 67492ffcafa..8cd7da8dad8 100644
--- a/Tests/Unit/Numeric/BisectFF.cpp
+++ b/Tests/Unit/Numeric/BisectFF.cpp
@@ -24,8 +24,8 @@
 complex_t deriv(const IFormFactor& ff, const C3& qf, const complex_t Ff,
                 const PolyhedralDiagnosis& /*df*/, const C3& qdir, const double qstep)
 {
-    assert(Ff == ff.formfactor_at_bottom(qf));
-    complex_t Fi = ff.formfactor_at_bottom(qf + qstep * qdir);
+    assert(Ff == ff.formfactor(qf));
+    complex_t Fi = ff.formfactor(qf + qstep * qdir);
     PolyhedralDiagnosis di = polyhedralDiagnosis;
     // assert(di==df);
     return (Ff - Fi) / qstep;
@@ -76,7 +76,7 @@ void bisect(int& ifail, const C3& qdir, const IFormFactor& ff, const C3& q0, con
         return;
     }
     C3 q2 = (q0 + q1) / 2.;
-    complex_t F2 = ff.formfactor_at_bottom(q2);
+    complex_t F2 = ff.formfactor(q2);
     PolyhedralDiagnosis d2 = polyhedralDiagnosis;
     if (d2 != d0)
         bisect(ifail, qdir, ff, q0, q2, F0, F2, d0, d2, qmindiff, Fmaxreldiff);
@@ -87,9 +87,9 @@ void bisect(int& ifail, const C3& qdir, const IFormFactor& ff, const C3& q0, con
 void run_bisection(int& ifail, IFormFactor& ff, const C3& q0, const C3& q1)
 {
     const double qdiffmin = std::max(q0.mag(), q1.mag()) / 4e11;
-    complex_t F0 = ff.formfactor_at_bottom(q0);
+    complex_t F0 = ff.formfactor(q0);
     PolyhedralDiagnosis d0 = polyhedralDiagnosis;
-    complex_t F1 = ff.formfactor_at_bottom(q1);
+    complex_t F1 = ff.formfactor(q1);
     PolyhedralDiagnosis d1 = polyhedralDiagnosis;
 
     if (d0 == d1)
diff --git a/Tests/Unit/Numeric/FormFactorOtherTest.cpp b/Tests/Unit/Numeric/FormFactorOtherTest.cpp
index 983df4f408a..0dd18d67517 100644
--- a/Tests/Unit/Numeric/FormFactorOtherTest.cpp
+++ b/Tests/Unit/Numeric/FormFactorOtherTest.cpp
@@ -15,9 +15,9 @@ TEST_F(FormFactorOtherTest, HorizontalCylinderAsCylinder)
     const double R = .3, L = 3;
     Cylinder p0(R, L);
     HorizontalCylinder p1(R, L);
-    test_absEq_at_realQ([&](C3 q) { return p0.formfactor_at_bottom(q); },
-                        [&](C3 q) { return p1.formfactor_at_bottom(q.rotatedY(M_PI / 2)); }, 2e-15,
-                        1e-99, 100);
+    test_absEq_at_realQ([&](C3 q) { return p0.formfactor(q); },
+                        [&](C3 q) { return p1.formfactor(q.rotatedY(M_PI / 2)); }, 2e-15, 1e-99,
+                        100);
 }
 
 TEST_F(FormFactorOtherTest, HorizontalCylinderSlices)
@@ -26,10 +26,8 @@ TEST_F(FormFactorOtherTest, HorizontalCylinderSlices)
     HorizontalCylinder p0(R, L);
     HorizontalCylinder p1a(R, L, -R, -0.3 * R);
     HorizontalCylinder p1b(R, L, -0.3 * R, +R);
-    test_complexEq_at_realQ([&](C3 q) { return p0.formfactor_at_bottom(q); },
-                            [&](C3 q) {
-                                return p1a.formfactor_at_bottom(q)
-                                       + exp_I(q.z() * 0.7 * R) * p1b.formfactor_at_bottom(q);
-                            },
-                            1.2e-3, 1e-99, 100);
+    test_complexEq_at_realQ(
+        [&](C3 q) { return p0.formfactor(q); },
+        [&](C3 q) { return p1a.formfactor(q) + exp_I(q.z() * 0.7 * R) * p1b.formfactor(q); },
+        1.2e-3, 1e-99, 100);
 }
diff --git a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
index 794c42e9f6c..200a679b637 100644
--- a/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
+++ b/Tests/Unit/Numeric/FormFactorSpecializationTest.cpp
@@ -17,8 +17,8 @@ protected:
 private:
     void test_ff_eq(C3 q, IFormFactor* p0, IFormFactor* p1, double eps)
     {
-        const complex_t f0 = p0->formfactor_at_bottom(q);
-        const complex_t f1 = p1->formfactor_at_bottom(q);
+        const complex_t f0 = p0->formfactor(q);
+        const complex_t f1 = p1->formfactor(q);
         const double avge = (std::abs(f0) + std::abs(f1)) / 2;
         const double precision = std::max(1e-16, eps * avge);
         EXPECT_NEAR(real(f0), real(f1), precision) << "q=" << q << "\n"
diff --git a/Tests/Unit/Numeric/FormFactorSymmetryTest.cpp b/Tests/Unit/Numeric/FormFactorSymmetryTest.cpp
index 4c8f0f333b9..da5068c0524 100644
--- a/Tests/Unit/Numeric/FormFactorSymmetryTest.cpp
+++ b/Tests/Unit/Numeric/FormFactorSymmetryTest.cpp
@@ -12,11 +12,11 @@ private:
 
     void test_qq_eq(IFormFactor* ff, C3 q, C3 p, double eps)
     {
-        complex_t f0 = ff->formfactor_at_bottom(q);
+        complex_t f0 = ff->formfactor(q);
 #ifdef ALGORITHM_DIAGNOSTIC
         std::string msg0 = polyhedralDiagnosis.message();
 #endif
-        const complex_t f1 = ff->formfactor_at_bottom(p);
+        const complex_t f1 = ff->formfactor(p);
         const double avge = (std::abs(f0) + std::abs(f1)) / 2;
         const double precision = std::max(1e-16, eps * avge);
         EXPECT_NEAR(real(f0), real(f1), precision)
diff --git a/Tests/Unit/Sample/FormFactorBasicTest.cpp b/Tests/Unit/Sample/FormFactorBasicTest.cpp
index 9877abd7300..f7dbb896fe4 100644
--- a/Tests/Unit/Sample/FormFactorBasicTest.cpp
+++ b/Tests/Unit/Sample/FormFactorBasicTest.cpp
@@ -11,7 +11,7 @@ protected:
     void test_eps_q(const IFormFactor* p, C3 qdir, double eps) const
     {
         C3 q = eps * qdir;
-        complex_t ff = p->formfactor_at_bottom(q);
+        complex_t ff = p->formfactor(q);
         // std::cout<<"q="<<q<<" -> "<<std::setprecision(16)<<" ff0="<<V<<", ff ="<<ff<<"\n";
         EXPECT_LE(real(ff), V * (1 + 4e-16));
         if (R * R * R < V / 20 || R * R * R > 20 * V)
@@ -30,7 +30,7 @@ protected:
     }
     void test_ff(const IFormFactor* p)
     {
-        complex_t ff0 = p->formfactor_at_bottom(C3(0., 0., 0.));
+        complex_t ff0 = p->formfactor(C3(0., 0., 0.));
         EXPECT_EQ(imag(ff0), 0.);
         V = real(ff0);
         EXPECT_NEAR(p->volume(), V, 3e-16 * V);
@@ -59,7 +59,7 @@ protected:
         IFormFactor* clone = p->clone();
         EXPECT_EQ(clone->volume(), V);
         C3 q(.1, .2, complex_t(.3, .004));
-        EXPECT_EQ(clone->formfactor_at_bottom(q), p->formfactor_at_bottom(q));
+        EXPECT_EQ(clone->formfactor(q), p->formfactor(q));
         delete clone;
     }
     double V, R;
@@ -79,9 +79,9 @@ protected:
                        std::complex<double> exp_a, std::complex<double> exp_b,
                        std::complex<double> exp_c)
     {
-        std::complex<double> ff_a = p->formfactor_at_bottom(a);
-        std::complex<double> ff_b = p->formfactor_at_bottom(b);
-        std::complex<double> ff_c = p->formfactor_at_bottom(c);
+        std::complex<double> ff_a = p->formfactor(a);
+        std::complex<double> ff_b = p->formfactor(b);
+        std::complex<double> ff_c = p->formfactor(c);
         std::cout << std::fixed;
         std::cout << "FormFactor Calculation for " << p->className() << "\n";
         std::cout << std::setprecision(2) << "F(" << a << ") = " << std::setprecision(15) << ff_a
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index 058444152de..3763adbbe81 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -2687,9 +2687,9 @@ class IFormFactor(ISampleNode):
         r"""formfactor_pol(IFormFactor self, C3 q) -> SpinMatrix"""
         return _libBornAgainSample.IFormFactor_formfactor_pol(self, q)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(IFormFactor self, C3 q) -> complex_t"""
-        return _libBornAgainSample.IFormFactor_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(IFormFactor self, C3 q) -> complex_t"""
+        return _libBornAgainSample.IFormFactor_formfactor(self, q)
 
     def exec_spanZ(self, rotation):
         r"""exec_spanZ(IFormFactor self, IRotation rotation) -> Span"""
@@ -4712,9 +4712,9 @@ class IFormFactorPolyhedron(IFormFactor):
         r"""radialExtension(IFormFactorPolyhedron self) -> double"""
         return _libBornAgainSample.IFormFactorPolyhedron_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(IFormFactorPolyhedron self, C3 q) -> complex_t"""
-        return _libBornAgainSample.IFormFactorPolyhedron_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(IFormFactorPolyhedron self, C3 q) -> complex_t"""
+        return _libBornAgainSample.IFormFactorPolyhedron_formfactor(self, q)
 
 # Register IFormFactorPolyhedron in _libBornAgainSample:
 _libBornAgainSample.IFormFactorPolyhedron_swigregister(IFormFactorPolyhedron)
@@ -4732,9 +4732,9 @@ class IFormFactorPrism(IFormFactorPolyhedron):
         r"""height(IFormFactorPrism self) -> double"""
         return _libBornAgainSample.IFormFactorPrism_height(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(IFormFactorPrism self, C3 q) -> complex_t"""
-        return _libBornAgainSample.IFormFactorPrism_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(IFormFactorPrism self, C3 q) -> complex_t"""
+        return _libBornAgainSample.IFormFactorPrism_formfactor(self, q)
 
 # Register IFormFactorPrism in _libBornAgainSample:
 _libBornAgainSample.IFormFactorPrism_swigregister(IFormFactorPrism)
@@ -4763,9 +4763,9 @@ class IProfileRipple(IFormFactor):
         r"""radialExtension(IProfileRipple self) -> double"""
         return _libBornAgainSample.IProfileRipple_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(IProfileRipple self, C3 q) -> complex_t"""
-        return _libBornAgainSample.IProfileRipple_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(IProfileRipple self, C3 q) -> complex_t"""
+        return _libBornAgainSample.IProfileRipple_formfactor(self, q)
 
     def validate(self):
         r"""validate(IProfileRipple self) -> std::string"""
@@ -4963,9 +4963,9 @@ class Box(IFormFactorPrism):
         r"""radialExtension(Box self) -> double"""
         return _libBornAgainSample.Box_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(Box self, C3 q) -> complex_t"""
-        return _libBornAgainSample.Box_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(Box self, C3 q) -> complex_t"""
+        return _libBornAgainSample.Box_formfactor(self, q)
 
     def validate(self):
         r"""validate(Box self) -> std::string"""
@@ -5055,9 +5055,9 @@ class Cone(IFormFactor):
         r"""radialExtension(Cone self) -> double"""
         return _libBornAgainSample.Cone_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(Cone self, C3 q) -> complex_t"""
-        return _libBornAgainSample.Cone_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(Cone self, C3 q) -> complex_t"""
+        return _libBornAgainSample.Cone_formfactor(self, q)
 
     def validate(self):
         r"""validate(Cone self) -> std::string"""
@@ -5187,9 +5187,9 @@ class Cylinder(IFormFactor):
         r"""radialExtension(Cylinder self) -> double"""
         return _libBornAgainSample.Cylinder_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(Cylinder self, C3 q) -> complex_t"""
-        return _libBornAgainSample.Cylinder_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(Cylinder self, C3 q) -> complex_t"""
+        return _libBornAgainSample.Cylinder_formfactor(self, q)
 
     def validate(self):
         r"""validate(Cylinder self) -> std::string"""
@@ -5275,9 +5275,9 @@ class EllipsoidalCylinder(IFormFactor):
         r"""radialExtension(EllipsoidalCylinder self) -> double"""
         return _libBornAgainSample.EllipsoidalCylinder_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(EllipsoidalCylinder self, C3 q) -> complex_t"""
-        return _libBornAgainSample.EllipsoidalCylinder_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(EllipsoidalCylinder self, C3 q) -> complex_t"""
+        return _libBornAgainSample.EllipsoidalCylinder_formfactor(self, q)
 
     def validate(self):
         r"""validate(EllipsoidalCylinder self) -> std::string"""
@@ -5319,9 +5319,9 @@ class Sphere(IFormFactor):
         r"""radialExtension(Sphere self) -> double"""
         return _libBornAgainSample.Sphere_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(Sphere self, C3 q) -> complex_t"""
-        return _libBornAgainSample.Sphere_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(Sphere self, C3 q) -> complex_t"""
+        return _libBornAgainSample.Sphere_formfactor(self, q)
 
     def validate(self):
         r"""validate(Sphere self) -> std::string"""
@@ -5367,9 +5367,9 @@ class Spheroid(IFormFactor):
         r"""radialExtension(Spheroid self) -> double"""
         return _libBornAgainSample.Spheroid_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(Spheroid self, C3 q) -> complex_t"""
-        return _libBornAgainSample.Spheroid_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(Spheroid self, C3 q) -> complex_t"""
+        return _libBornAgainSample.Spheroid_formfactor(self, q)
 
     def validate(self):
         r"""validate(Spheroid self) -> std::string"""
@@ -5420,9 +5420,9 @@ class HemiEllipsoid(IFormFactor):
         r"""radialExtension(HemiEllipsoid self) -> double"""
         return _libBornAgainSample.HemiEllipsoid_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(HemiEllipsoid self, C3 q) -> complex_t"""
-        return _libBornAgainSample.HemiEllipsoid_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(HemiEllipsoid self, C3 q) -> complex_t"""
+        return _libBornAgainSample.HemiEllipsoid_formfactor(self, q)
 
     def validate(self):
         r"""validate(HemiEllipsoid self) -> std::string"""
@@ -5476,9 +5476,9 @@ class HorizontalCylinder(IFormFactor):
         r"""radialExtension(HorizontalCylinder self) -> double"""
         return _libBornAgainSample.HorizontalCylinder_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(HorizontalCylinder self, C3 q) -> complex_t"""
-        return _libBornAgainSample.HorizontalCylinder_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(HorizontalCylinder self, C3 q) -> complex_t"""
+        return _libBornAgainSample.HorizontalCylinder_formfactor(self, q)
 
     def validate(self):
         r"""validate(HorizontalCylinder self) -> std::string"""
@@ -5564,9 +5564,9 @@ class LongBoxGauss(IFormFactor):
         r"""radialExtension(LongBoxGauss self) -> double"""
         return _libBornAgainSample.LongBoxGauss_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(LongBoxGauss self, C3 q) -> complex_t"""
-        return _libBornAgainSample.LongBoxGauss_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(LongBoxGauss self, C3 q) -> complex_t"""
+        return _libBornAgainSample.LongBoxGauss_formfactor(self, q)
 
     def validate(self):
         r"""validate(LongBoxGauss self) -> std::string"""
@@ -5616,9 +5616,9 @@ class LongBoxLorentz(IFormFactor):
         r"""radialExtension(LongBoxLorentz self) -> double"""
         return _libBornAgainSample.LongBoxLorentz_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(LongBoxLorentz self, C3 q) -> complex_t"""
-        return _libBornAgainSample.LongBoxLorentz_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(LongBoxLorentz self, C3 q) -> complex_t"""
+        return _libBornAgainSample.LongBoxLorentz_formfactor(self, q)
 
     def validate(self):
         r"""validate(LongBoxLorentz self) -> std::string"""
@@ -6132,9 +6132,9 @@ class TruncatedSphere(IFormFactor):
         r"""radialExtension(TruncatedSphere self) -> double"""
         return _libBornAgainSample.TruncatedSphere_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(TruncatedSphere self, C3 q) -> complex_t"""
-        return _libBornAgainSample.TruncatedSphere_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(TruncatedSphere self, C3 q) -> complex_t"""
+        return _libBornAgainSample.TruncatedSphere_formfactor(self, q)
 
     def validate(self):
         r"""validate(TruncatedSphere self) -> std::string"""
@@ -6188,9 +6188,9 @@ class TruncatedSpheroid(IFormFactor):
         r"""radialExtension(TruncatedSpheroid self) -> double"""
         return _libBornAgainSample.TruncatedSpheroid_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(TruncatedSpheroid self, C3 q) -> complex_t"""
-        return _libBornAgainSample.TruncatedSpheroid_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(TruncatedSpheroid self, C3 q) -> complex_t"""
+        return _libBornAgainSample.TruncatedSpheroid_formfactor(self, q)
 
     def validate(self):
         r"""validate(TruncatedSpheroid self) -> std::string"""
@@ -6232,9 +6232,9 @@ class GaussSphere(IFormFactor):
         r"""radialExtension(GaussSphere self) -> double"""
         return _libBornAgainSample.GaussSphere_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(GaussSphere self, C3 q) -> complex_t"""
-        return _libBornAgainSample.GaussSphere_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(GaussSphere self, C3 q) -> complex_t"""
+        return _libBornAgainSample.GaussSphere_formfactor(self, q)
 
     def validate(self):
         r"""validate(GaussSphere self) -> std::string"""
@@ -6272,9 +6272,9 @@ class FuzzySphere(IFormFactor):
         r"""radialExtension(FuzzySphere self) -> double"""
         return _libBornAgainSample.FuzzySphere_radialExtension(self)
 
-    def formfactor_at_bottom(self, q):
-        r"""formfactor_at_bottom(FuzzySphere self, C3 q) -> complex_t"""
-        return _libBornAgainSample.FuzzySphere_formfactor_at_bottom(self, q)
+    def formfactor(self, q):
+        r"""formfactor(FuzzySphere self, C3 q) -> complex_t"""
+        return _libBornAgainSample.FuzzySphere_formfactor(self, q)
 
     def validate(self):
         r"""validate(FuzzySphere self) -> std::string"""
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index 65662ac941e..b7f85e14e93 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -8060,7 +8060,7 @@ bool SwigDirector_IFormFactor::canSliceAnalytically(IRotation const *rot) const
 }
 
 
-complex_t SwigDirector_IFormFactor::formfactor_at_bottom(C3 q) const {
+complex_t SwigDirector_IFormFactor::formfactor(C3 q) const {
   complex_t c_result;
   swig::SwigVar_PyObject obj0;
   obj0 = SWIG_NewPointerObj((new C3(SWIG_STD_MOVE(q))), SWIGTYPE_p_Vec3T_std__complexT_double_t_t, SWIG_POINTER_OWN |  0 );
@@ -8069,17 +8069,17 @@ complex_t SwigDirector_IFormFactor::formfactor_at_bottom(C3 q) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char *const swig_method_name = "formfactor_at_bottom";
+  const char *const swig_method_name = "formfactor";
   PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunctionObjArgs(method ,(PyObject *)obj0, NULL);
 #else
-  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("formfactor_at_bottom");
+  swig::SwigVar_PyObject swig_method_name = SWIG_Python_str_FromChar("formfactor");
   swig::SwigVar_PyObject result = PyObject_CallMethodObjArgs(swig_get_self(), (PyObject *) swig_method_name ,(PyObject *)obj0, NULL);
 #endif
   if (!result) {
     PyObject *error = PyErr_Occurred();
     if (error) {
-      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.formfactor_at_bottom'");
+      Swig::DirectorMethodException::raise("Error detected when calling 'IFormFactor.formfactor'");
     }
   }
   std::complex<double> swig_val;
@@ -34282,7 +34282,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IFormFactor_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_IFormFactor_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactor *arg1 = (IFormFactor *) 0 ;
   C3 arg2 ;
@@ -34295,19 +34295,19 @@ SWIGINTERN PyObject *_wrap_IFormFactor_formfactor_at_bottom(PyObject *self, PyOb
   bool upcall = false;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "IFormFactor_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "IFormFactor_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IFormFactor, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactor_formfactor_at_bottom" "', argument " "1"" of type '" "IFormFactor const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactor_formfactor" "', argument " "1"" of type '" "IFormFactor const *""'"); 
   }
   arg1 = reinterpret_cast< IFormFactor * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactor_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactor_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactor_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactor_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
@@ -34318,9 +34318,9 @@ SWIGINTERN PyObject *_wrap_IFormFactor_formfactor_at_bottom(PyObject *self, PyOb
   upcall = (director && (director->swig_get_self()==swig_obj[0]));
   try {
     if (upcall) {
-      Swig::DirectorPureVirtualException::raise("IFormFactor::formfactor_at_bottom");
+      Swig::DirectorPureVirtualException::raise("IFormFactor::formfactor");
     } else {
-      result = ((IFormFactor const *)arg1)->formfactor_at_bottom(arg2);
+      result = ((IFormFactor const *)arg1)->formfactor(arg2);
     }
   } catch (Swig::DirectorException&) {
     SWIG_fail;
@@ -48143,7 +48143,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IFormFactorPolyhedron_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_IFormFactorPolyhedron_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactorPolyhedron *arg1 = (IFormFactorPolyhedron *) 0 ;
   C3 arg2 ;
@@ -48154,26 +48154,26 @@ SWIGINTERN PyObject *_wrap_IFormFactorPolyhedron_formfactor_at_bottom(PyObject *
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "IFormFactorPolyhedron_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "IFormFactorPolyhedron_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IFormFactorPolyhedron, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactorPolyhedron_formfactor_at_bottom" "', argument " "1"" of type '" "IFormFactorPolyhedron const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactorPolyhedron_formfactor" "', argument " "1"" of type '" "IFormFactorPolyhedron const *""'"); 
   }
   arg1 = reinterpret_cast< IFormFactorPolyhedron * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactorPolyhedron_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactorPolyhedron_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactorPolyhedron_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactorPolyhedron_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((IFormFactorPolyhedron const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((IFormFactorPolyhedron const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -48233,7 +48233,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IFormFactorPrism_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_IFormFactorPrism_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactorPrism *arg1 = (IFormFactorPrism *) 0 ;
   C3 arg2 ;
@@ -48244,26 +48244,26 @@ SWIGINTERN PyObject *_wrap_IFormFactorPrism_formfactor_at_bottom(PyObject *self,
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "IFormFactorPrism_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "IFormFactorPrism_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IFormFactorPrism, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactorPrism_formfactor_at_bottom" "', argument " "1"" of type '" "IFormFactorPrism const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactorPrism_formfactor" "', argument " "1"" of type '" "IFormFactorPrism const *""'"); 
   }
   arg1 = reinterpret_cast< IFormFactorPrism * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactorPrism_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactorPrism_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactorPrism_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IFormFactorPrism_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((IFormFactorPrism const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((IFormFactorPrism const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -48370,7 +48370,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IProfileRipple_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_IProfileRipple_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   IProfileRipple *arg1 = (IProfileRipple *) 0 ;
   C3 arg2 ;
@@ -48381,26 +48381,26 @@ SWIGINTERN PyObject *_wrap_IProfileRipple_formfactor_at_bottom(PyObject *self, P
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "IProfileRipple_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "IProfileRipple_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IProfileRipple, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IProfileRipple_formfactor_at_bottom" "', argument " "1"" of type '" "IProfileRipple const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IProfileRipple_formfactor" "', argument " "1"" of type '" "IProfileRipple const *""'"); 
   }
   arg1 = reinterpret_cast< IProfileRipple * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IProfileRipple_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IProfileRipple_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IProfileRipple_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IProfileRipple_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((IProfileRipple const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((IProfileRipple const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -49621,7 +49621,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Box_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_Box_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Box *arg1 = (Box *) 0 ;
   C3 arg2 ;
@@ -49632,26 +49632,26 @@ SWIGINTERN PyObject *_wrap_Box_formfactor_at_bottom(PyObject *self, PyObject *ar
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "Box_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "Box_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Box, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Box_formfactor_at_bottom" "', argument " "1"" of type '" "Box const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Box_formfactor" "', argument " "1"" of type '" "Box const *""'"); 
   }
   arg1 = reinterpret_cast< Box * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Box_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Box_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Box_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Box_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((Box const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((Box const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -50249,7 +50249,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Cone_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_Cone_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Cone *arg1 = (Cone *) 0 ;
   C3 arg2 ;
@@ -50260,26 +50260,26 @@ SWIGINTERN PyObject *_wrap_Cone_formfactor_at_bottom(PyObject *self, PyObject *a
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "Cone_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "Cone_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Cone, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Cone_formfactor_at_bottom" "', argument " "1"" of type '" "Cone const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Cone_formfactor" "', argument " "1"" of type '" "Cone const *""'"); 
   }
   arg1 = reinterpret_cast< Cone * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Cone_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Cone_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Cone_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Cone_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((Cone const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((Cone const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -51205,7 +51205,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Cylinder_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_Cylinder_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Cylinder *arg1 = (Cylinder *) 0 ;
   C3 arg2 ;
@@ -51216,26 +51216,26 @@ SWIGINTERN PyObject *_wrap_Cylinder_formfactor_at_bottom(PyObject *self, PyObjec
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "Cylinder_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "Cylinder_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Cylinder, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Cylinder_formfactor_at_bottom" "', argument " "1"" of type '" "Cylinder const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Cylinder_formfactor" "', argument " "1"" of type '" "Cylinder const *""'"); 
   }
   arg1 = reinterpret_cast< Cylinder * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Cylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Cylinder_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Cylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Cylinder_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((Cylinder const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((Cylinder const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -51796,7 +51796,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_EllipsoidalCylinder_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_EllipsoidalCylinder_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   EllipsoidalCylinder *arg1 = (EllipsoidalCylinder *) 0 ;
   C3 arg2 ;
@@ -51807,26 +51807,26 @@ SWIGINTERN PyObject *_wrap_EllipsoidalCylinder_formfactor_at_bottom(PyObject *se
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "EllipsoidalCylinder_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "EllipsoidalCylinder_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_EllipsoidalCylinder, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "EllipsoidalCylinder_formfactor_at_bottom" "', argument " "1"" of type '" "EllipsoidalCylinder const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "EllipsoidalCylinder_formfactor" "', argument " "1"" of type '" "EllipsoidalCylinder const *""'"); 
   }
   arg1 = reinterpret_cast< EllipsoidalCylinder * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "EllipsoidalCylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "EllipsoidalCylinder_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "EllipsoidalCylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "EllipsoidalCylinder_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((EllipsoidalCylinder const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((EllipsoidalCylinder const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -52177,7 +52177,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Sphere_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_Sphere_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Sphere *arg1 = (Sphere *) 0 ;
   C3 arg2 ;
@@ -52188,26 +52188,26 @@ SWIGINTERN PyObject *_wrap_Sphere_formfactor_at_bottom(PyObject *self, PyObject
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "Sphere_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "Sphere_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Sphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Sphere_formfactor_at_bottom" "', argument " "1"" of type '" "Sphere const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Sphere_formfactor" "', argument " "1"" of type '" "Sphere const *""'"); 
   }
   arg1 = reinterpret_cast< Sphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Sphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Sphere_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Sphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Sphere_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((Sphere const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((Sphere const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -52503,7 +52503,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Spheroid_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_Spheroid_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   Spheroid *arg1 = (Spheroid *) 0 ;
   C3 arg2 ;
@@ -52514,26 +52514,26 @@ SWIGINTERN PyObject *_wrap_Spheroid_formfactor_at_bottom(PyObject *self, PyObjec
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "Spheroid_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "Spheroid_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_Spheroid, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Spheroid_formfactor_at_bottom" "', argument " "1"" of type '" "Spheroid const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Spheroid_formfactor" "', argument " "1"" of type '" "Spheroid const *""'"); 
   }
   arg1 = reinterpret_cast< Spheroid * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Spheroid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Spheroid_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Spheroid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Spheroid_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((Spheroid const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((Spheroid const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -52888,7 +52888,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_HemiEllipsoid_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_HemiEllipsoid_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   HemiEllipsoid *arg1 = (HemiEllipsoid *) 0 ;
   C3 arg2 ;
@@ -52899,26 +52899,26 @@ SWIGINTERN PyObject *_wrap_HemiEllipsoid_formfactor_at_bottom(PyObject *self, Py
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "HemiEllipsoid_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "HemiEllipsoid_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_HemiEllipsoid, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HemiEllipsoid_formfactor_at_bottom" "', argument " "1"" of type '" "HemiEllipsoid const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HemiEllipsoid_formfactor" "', argument " "1"" of type '" "HemiEllipsoid const *""'"); 
   }
   arg1 = reinterpret_cast< HemiEllipsoid * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "HemiEllipsoid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "HemiEllipsoid_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "HemiEllipsoid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "HemiEllipsoid_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((HemiEllipsoid const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((HemiEllipsoid const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -53312,7 +53312,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_HorizontalCylinder_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_HorizontalCylinder_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   HorizontalCylinder *arg1 = (HorizontalCylinder *) 0 ;
   C3 arg2 ;
@@ -53323,26 +53323,26 @@ SWIGINTERN PyObject *_wrap_HorizontalCylinder_formfactor_at_bottom(PyObject *sel
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "HorizontalCylinder_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "HorizontalCylinder_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_HorizontalCylinder, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalCylinder_formfactor_at_bottom" "', argument " "1"" of type '" "HorizontalCylinder const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "HorizontalCylinder_formfactor" "', argument " "1"" of type '" "HorizontalCylinder const *""'"); 
   }
   arg1 = reinterpret_cast< HorizontalCylinder * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "HorizontalCylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "HorizontalCylinder_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "HorizontalCylinder_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "HorizontalCylinder_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((HorizontalCylinder const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((HorizontalCylinder const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -53903,7 +53903,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_LongBoxGauss_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_LongBoxGauss_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   LongBoxGauss *arg1 = (LongBoxGauss *) 0 ;
   C3 arg2 ;
@@ -53914,26 +53914,26 @@ SWIGINTERN PyObject *_wrap_LongBoxGauss_formfactor_at_bottom(PyObject *self, PyO
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "LongBoxGauss_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "LongBoxGauss_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_LongBoxGauss, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LongBoxGauss_formfactor_at_bottom" "', argument " "1"" of type '" "LongBoxGauss const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LongBoxGauss_formfactor" "', argument " "1"" of type '" "LongBoxGauss const *""'"); 
   }
   arg1 = reinterpret_cast< LongBoxGauss * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LongBoxGauss_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LongBoxGauss_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "LongBoxGauss_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "LongBoxGauss_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((LongBoxGauss const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((LongBoxGauss const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -54266,7 +54266,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_LongBoxLorentz_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_LongBoxLorentz_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   LongBoxLorentz *arg1 = (LongBoxLorentz *) 0 ;
   C3 arg2 ;
@@ -54277,26 +54277,26 @@ SWIGINTERN PyObject *_wrap_LongBoxLorentz_formfactor_at_bottom(PyObject *self, P
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "LongBoxLorentz_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "LongBoxLorentz_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_LongBoxLorentz, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LongBoxLorentz_formfactor_at_bottom" "', argument " "1"" of type '" "LongBoxLorentz const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "LongBoxLorentz_formfactor" "', argument " "1"" of type '" "LongBoxLorentz const *""'"); 
   }
   arg1 = reinterpret_cast< LongBoxLorentz * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LongBoxLorentz_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "LongBoxLorentz_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "LongBoxLorentz_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "LongBoxLorentz_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((LongBoxLorentz const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((LongBoxLorentz const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -57843,7 +57843,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_TruncatedSphere_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_TruncatedSphere_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   TruncatedSphere *arg1 = (TruncatedSphere *) 0 ;
   C3 arg2 ;
@@ -57854,26 +57854,26 @@ SWIGINTERN PyObject *_wrap_TruncatedSphere_formfactor_at_bottom(PyObject *self,
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "TruncatedSphere_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "TruncatedSphere_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_TruncatedSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "TruncatedSphere_formfactor_at_bottom" "', argument " "1"" of type '" "TruncatedSphere const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "TruncatedSphere_formfactor" "', argument " "1"" of type '" "TruncatedSphere const *""'"); 
   }
   arg1 = reinterpret_cast< TruncatedSphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "TruncatedSphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "TruncatedSphere_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "TruncatedSphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "TruncatedSphere_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((TruncatedSphere const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((TruncatedSphere const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -58243,7 +58243,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_TruncatedSpheroid_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_TruncatedSpheroid_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   TruncatedSpheroid *arg1 = (TruncatedSpheroid *) 0 ;
   C3 arg2 ;
@@ -58254,26 +58254,26 @@ SWIGINTERN PyObject *_wrap_TruncatedSpheroid_formfactor_at_bottom(PyObject *self
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "TruncatedSpheroid_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "TruncatedSpheroid_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_TruncatedSpheroid, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "TruncatedSpheroid_formfactor_at_bottom" "', argument " "1"" of type '" "TruncatedSpheroid const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "TruncatedSpheroid_formfactor" "', argument " "1"" of type '" "TruncatedSpheroid const *""'"); 
   }
   arg1 = reinterpret_cast< TruncatedSpheroid * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "TruncatedSpheroid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "TruncatedSpheroid_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "TruncatedSpheroid_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "TruncatedSpheroid_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((TruncatedSpheroid const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((TruncatedSpheroid const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -58532,7 +58532,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_GaussSphere_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_GaussSphere_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   GaussSphere *arg1 = (GaussSphere *) 0 ;
   C3 arg2 ;
@@ -58543,26 +58543,26 @@ SWIGINTERN PyObject *_wrap_GaussSphere_formfactor_at_bottom(PyObject *self, PyOb
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "GaussSphere_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "GaussSphere_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_GaussSphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GaussSphere_formfactor_at_bottom" "', argument " "1"" of type '" "GaussSphere const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "GaussSphere_formfactor" "', argument " "1"" of type '" "GaussSphere const *""'"); 
   }
   arg1 = reinterpret_cast< GaussSphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GaussSphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "GaussSphere_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GaussSphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "GaussSphere_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((GaussSphere const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((GaussSphere const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -58812,7 +58812,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_FuzzySphere_formfactor_at_bottom(PyObject *self, PyObject *args) {
+SWIGINTERN PyObject *_wrap_FuzzySphere_formfactor(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   FuzzySphere *arg1 = (FuzzySphere *) 0 ;
   C3 arg2 ;
@@ -58823,26 +58823,26 @@ SWIGINTERN PyObject *_wrap_FuzzySphere_formfactor_at_bottom(PyObject *self, PyOb
   PyObject *swig_obj[2] ;
   complex_t result;
   
-  if (!SWIG_Python_UnpackTuple(args, "FuzzySphere_formfactor_at_bottom", 2, 2, swig_obj)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "FuzzySphere_formfactor", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FuzzySphere, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FuzzySphere_formfactor_at_bottom" "', argument " "1"" of type '" "FuzzySphere const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FuzzySphere_formfactor" "', argument " "1"" of type '" "FuzzySphere const *""'"); 
   }
   arg1 = reinterpret_cast< FuzzySphere * >(argp1);
   {
     res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_Vec3T_std__complexT_double_t_t,  0  | 0);
     if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FuzzySphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'"); 
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "FuzzySphere_formfactor" "', argument " "2"" of type '" "C3""'"); 
     }  
     if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FuzzySphere_formfactor_at_bottom" "', argument " "2"" of type '" "C3""'");
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "FuzzySphere_formfactor" "', argument " "2"" of type '" "C3""'");
     } else {
       C3 * temp = reinterpret_cast< C3 * >(argp2);
       arg2 = *temp;
       if (SWIG_IsNewObj(res2)) delete temp;
     }
   }
-  result = ((FuzzySphere const *)arg1)->formfactor_at_bottom(arg2);
+  result = ((FuzzySphere const *)arg1)->formfactor(arg2);
   resultobj = SWIG_From_std_complex_Sl_double_Sg_(static_cast< std::complex<double> >(result));
   return resultobj;
 fail:
@@ -61756,7 +61756,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "IFormFactor_theFF", _wrap_IFormFactor_theFF, METH_VARARGS, "IFormFactor_theFF(IFormFactor self, WavevectorInfo const & wavevectors) -> complex_t"},
 	 { "IFormFactor_thePolFF", _wrap_IFormFactor_thePolFF, METH_VARARGS, "IFormFactor_thePolFF(IFormFactor self, WavevectorInfo const & wavevectors) -> SpinMatrix"},
 	 { "IFormFactor_formfactor_pol", _wrap_IFormFactor_formfactor_pol, METH_VARARGS, "IFormFactor_formfactor_pol(IFormFactor self, C3 q) -> SpinMatrix"},
-	 { "IFormFactor_formfactor_at_bottom", _wrap_IFormFactor_formfactor_at_bottom, METH_VARARGS, "IFormFactor_formfactor_at_bottom(IFormFactor self, C3 q) -> complex_t"},
+	 { "IFormFactor_formfactor", _wrap_IFormFactor_formfactor, METH_VARARGS, "IFormFactor_formfactor(IFormFactor self, C3 q) -> complex_t"},
 	 { "IFormFactor_exec_spanZ", _wrap_IFormFactor_exec_spanZ, METH_VARARGS, "IFormFactor_exec_spanZ(IFormFactor self, IRotation rotation) -> Span"},
 	 { "disown_IFormFactor", _wrap_disown_IFormFactor, METH_O, NULL},
 	 { "IFormFactor_swigregister", IFormFactor_swigregister, METH_O, NULL},
@@ -62330,17 +62330,17 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_IFormFactorPolyhedron", _wrap_delete_IFormFactorPolyhedron, METH_O, "delete_IFormFactorPolyhedron(IFormFactorPolyhedron self)"},
 	 { "IFormFactorPolyhedron_volume", _wrap_IFormFactorPolyhedron_volume, METH_O, "IFormFactorPolyhedron_volume(IFormFactorPolyhedron self) -> double"},
 	 { "IFormFactorPolyhedron_radialExtension", _wrap_IFormFactorPolyhedron_radialExtension, METH_O, "IFormFactorPolyhedron_radialExtension(IFormFactorPolyhedron self) -> double"},
-	 { "IFormFactorPolyhedron_formfactor_at_bottom", _wrap_IFormFactorPolyhedron_formfactor_at_bottom, METH_VARARGS, "IFormFactorPolyhedron_formfactor_at_bottom(IFormFactorPolyhedron self, C3 q) -> complex_t"},
+	 { "IFormFactorPolyhedron_formfactor", _wrap_IFormFactorPolyhedron_formfactor, METH_VARARGS, "IFormFactorPolyhedron_formfactor(IFormFactorPolyhedron self, C3 q) -> complex_t"},
 	 { "IFormFactorPolyhedron_swigregister", IFormFactorPolyhedron_swigregister, METH_O, NULL},
 	 { "delete_IFormFactorPrism", _wrap_delete_IFormFactorPrism, METH_O, "delete_IFormFactorPrism(IFormFactorPrism self)"},
 	 { "IFormFactorPrism_height", _wrap_IFormFactorPrism_height, METH_O, "IFormFactorPrism_height(IFormFactorPrism self) -> double"},
-	 { "IFormFactorPrism_formfactor_at_bottom", _wrap_IFormFactorPrism_formfactor_at_bottom, METH_VARARGS, "IFormFactorPrism_formfactor_at_bottom(IFormFactorPrism self, C3 q) -> complex_t"},
+	 { "IFormFactorPrism_formfactor", _wrap_IFormFactorPrism_formfactor, METH_VARARGS, "IFormFactorPrism_formfactor(IFormFactorPrism self, C3 q) -> complex_t"},
 	 { "IFormFactorPrism_swigregister", IFormFactorPrism_swigregister, METH_O, NULL},
 	 { "IProfileRipple_length", _wrap_IProfileRipple_length, METH_O, "IProfileRipple_length(IProfileRipple self) -> double"},
 	 { "IProfileRipple_height", _wrap_IProfileRipple_height, METH_O, "IProfileRipple_height(IProfileRipple self) -> double"},
 	 { "IProfileRipple_width", _wrap_IProfileRipple_width, METH_O, "IProfileRipple_width(IProfileRipple self) -> double"},
 	 { "IProfileRipple_radialExtension", _wrap_IProfileRipple_radialExtension, METH_O, "IProfileRipple_radialExtension(IProfileRipple self) -> double"},
-	 { "IProfileRipple_formfactor_at_bottom", _wrap_IProfileRipple_formfactor_at_bottom, METH_VARARGS, "IProfileRipple_formfactor_at_bottom(IProfileRipple self, C3 q) -> complex_t"},
+	 { "IProfileRipple_formfactor", _wrap_IProfileRipple_formfactor, METH_VARARGS, "IProfileRipple_formfactor(IProfileRipple self, C3 q) -> complex_t"},
 	 { "IProfileRipple_validate", _wrap_IProfileRipple_validate, METH_O, "IProfileRipple_validate(IProfileRipple self) -> std::string"},
 	 { "delete_IProfileRipple", _wrap_delete_IProfileRipple, METH_O, "delete_IProfileRipple(IProfileRipple self)"},
 	 { "IProfileRipple_swigregister", IProfileRipple_swigregister, METH_O, NULL},
@@ -62398,7 +62398,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Box_height", _wrap_Box_height, METH_O, "Box_height(Box self) -> double"},
 	 { "Box_volume", _wrap_Box_volume, METH_O, "Box_volume(Box self) -> double"},
 	 { "Box_radialExtension", _wrap_Box_radialExtension, METH_O, "Box_radialExtension(Box self) -> double"},
-	 { "Box_formfactor_at_bottom", _wrap_Box_formfactor_at_bottom, METH_VARARGS, "Box_formfactor_at_bottom(Box self, C3 q) -> complex_t"},
+	 { "Box_formfactor", _wrap_Box_formfactor, METH_VARARGS, "Box_formfactor(Box self, C3 q) -> complex_t"},
 	 { "Box_validate", _wrap_Box_validate, METH_O, "Box_validate(Box self) -> std::string"},
 	 { "delete_Box", _wrap_delete_Box, METH_O, "delete_Box(Box self)"},
 	 { "Box_swigregister", Box_swigregister, METH_O, NULL},
@@ -62427,7 +62427,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Cone_height", _wrap_Cone_height, METH_O, "Cone_height(Cone self) -> double"},
 	 { "Cone_alpha", _wrap_Cone_alpha, METH_O, "Cone_alpha(Cone self) -> double"},
 	 { "Cone_radialExtension", _wrap_Cone_radialExtension, METH_O, "Cone_radialExtension(Cone self) -> double"},
-	 { "Cone_formfactor_at_bottom", _wrap_Cone_formfactor_at_bottom, METH_VARARGS, "Cone_formfactor_at_bottom(Cone self, C3 q) -> complex_t"},
+	 { "Cone_formfactor", _wrap_Cone_formfactor, METH_VARARGS, "Cone_formfactor(Cone self, C3 q) -> complex_t"},
 	 { "Cone_validate", _wrap_Cone_validate, METH_O, "Cone_validate(Cone self) -> std::string"},
 	 { "delete_Cone", _wrap_delete_Cone, METH_O, "delete_Cone(Cone self)"},
 	 { "Cone_swigregister", Cone_swigregister, METH_O, NULL},
@@ -62472,7 +62472,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Cylinder_height", _wrap_Cylinder_height, METH_O, "Cylinder_height(Cylinder self) -> double"},
 	 { "Cylinder_radius", _wrap_Cylinder_radius, METH_O, "Cylinder_radius(Cylinder self) -> double"},
 	 { "Cylinder_radialExtension", _wrap_Cylinder_radialExtension, METH_O, "Cylinder_radialExtension(Cylinder self) -> double"},
-	 { "Cylinder_formfactor_at_bottom", _wrap_Cylinder_formfactor_at_bottom, METH_VARARGS, "Cylinder_formfactor_at_bottom(Cylinder self, C3 q) -> complex_t"},
+	 { "Cylinder_formfactor", _wrap_Cylinder_formfactor, METH_VARARGS, "Cylinder_formfactor(Cylinder self, C3 q) -> complex_t"},
 	 { "Cylinder_validate", _wrap_Cylinder_validate, METH_O, "Cylinder_validate(Cylinder self) -> std::string"},
 	 { "delete_Cylinder", _wrap_delete_Cylinder, METH_O, "delete_Cylinder(Cylinder self)"},
 	 { "Cylinder_swigregister", Cylinder_swigregister, METH_O, NULL},
@@ -62500,7 +62500,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "EllipsoidalCylinder_radiusY", _wrap_EllipsoidalCylinder_radiusY, METH_O, "EllipsoidalCylinder_radiusY(EllipsoidalCylinder self) -> double"},
 	 { "EllipsoidalCylinder_height", _wrap_EllipsoidalCylinder_height, METH_O, "EllipsoidalCylinder_height(EllipsoidalCylinder self) -> double"},
 	 { "EllipsoidalCylinder_radialExtension", _wrap_EllipsoidalCylinder_radialExtension, METH_O, "EllipsoidalCylinder_radialExtension(EllipsoidalCylinder self) -> double"},
-	 { "EllipsoidalCylinder_formfactor_at_bottom", _wrap_EllipsoidalCylinder_formfactor_at_bottom, METH_VARARGS, "EllipsoidalCylinder_formfactor_at_bottom(EllipsoidalCylinder self, C3 q) -> complex_t"},
+	 { "EllipsoidalCylinder_formfactor", _wrap_EllipsoidalCylinder_formfactor, METH_VARARGS, "EllipsoidalCylinder_formfactor(EllipsoidalCylinder self, C3 q) -> complex_t"},
 	 { "EllipsoidalCylinder_validate", _wrap_EllipsoidalCylinder_validate, METH_O, "EllipsoidalCylinder_validate(EllipsoidalCylinder self) -> std::string"},
 	 { "delete_EllipsoidalCylinder", _wrap_delete_EllipsoidalCylinder, METH_O, "delete_EllipsoidalCylinder(EllipsoidalCylinder self)"},
 	 { "EllipsoidalCylinder_swigregister", EllipsoidalCylinder_swigregister, METH_O, NULL},
@@ -62514,7 +62514,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Sphere_parDefs", _wrap_Sphere_parDefs, METH_O, "Sphere_parDefs(Sphere self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"},
 	 { "Sphere_radius", _wrap_Sphere_radius, METH_O, "Sphere_radius(Sphere self) -> double"},
 	 { "Sphere_radialExtension", _wrap_Sphere_radialExtension, METH_O, "Sphere_radialExtension(Sphere self) -> double"},
-	 { "Sphere_formfactor_at_bottom", _wrap_Sphere_formfactor_at_bottom, METH_VARARGS, "Sphere_formfactor_at_bottom(Sphere self, C3 q) -> complex_t"},
+	 { "Sphere_formfactor", _wrap_Sphere_formfactor, METH_VARARGS, "Sphere_formfactor(Sphere self, C3 q) -> complex_t"},
 	 { "Sphere_validate", _wrap_Sphere_validate, METH_O, "Sphere_validate(Sphere self) -> std::string"},
 	 { "delete_Sphere", _wrap_delete_Sphere, METH_O, "delete_Sphere(Sphere self)"},
 	 { "Sphere_swigregister", Sphere_swigregister, METH_O, NULL},
@@ -62529,7 +62529,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Spheroid_height", _wrap_Spheroid_height, METH_O, "Spheroid_height(Spheroid self) -> double"},
 	 { "Spheroid_radius", _wrap_Spheroid_radius, METH_O, "Spheroid_radius(Spheroid self) -> double"},
 	 { "Spheroid_radialExtension", _wrap_Spheroid_radialExtension, METH_O, "Spheroid_radialExtension(Spheroid self) -> double"},
-	 { "Spheroid_formfactor_at_bottom", _wrap_Spheroid_formfactor_at_bottom, METH_VARARGS, "Spheroid_formfactor_at_bottom(Spheroid self, C3 q) -> complex_t"},
+	 { "Spheroid_formfactor", _wrap_Spheroid_formfactor, METH_VARARGS, "Spheroid_formfactor(Spheroid self, C3 q) -> complex_t"},
 	 { "Spheroid_validate", _wrap_Spheroid_validate, METH_O, "Spheroid_validate(Spheroid self) -> std::string"},
 	 { "delete_Spheroid", _wrap_delete_Spheroid, METH_O, "delete_Spheroid(Spheroid self)"},
 	 { "Spheroid_swigregister", Spheroid_swigregister, METH_O, NULL},
@@ -62546,7 +62546,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "HemiEllipsoid_radiusX", _wrap_HemiEllipsoid_radiusX, METH_O, "HemiEllipsoid_radiusX(HemiEllipsoid self) -> double"},
 	 { "HemiEllipsoid_radiusY", _wrap_HemiEllipsoid_radiusY, METH_O, "HemiEllipsoid_radiusY(HemiEllipsoid self) -> double"},
 	 { "HemiEllipsoid_radialExtension", _wrap_HemiEllipsoid_radialExtension, METH_O, "HemiEllipsoid_radialExtension(HemiEllipsoid self) -> double"},
-	 { "HemiEllipsoid_formfactor_at_bottom", _wrap_HemiEllipsoid_formfactor_at_bottom, METH_VARARGS, "HemiEllipsoid_formfactor_at_bottom(HemiEllipsoid self, C3 q) -> complex_t"},
+	 { "HemiEllipsoid_formfactor", _wrap_HemiEllipsoid_formfactor, METH_VARARGS, "HemiEllipsoid_formfactor(HemiEllipsoid self, C3 q) -> complex_t"},
 	 { "HemiEllipsoid_validate", _wrap_HemiEllipsoid_validate, METH_O, "HemiEllipsoid_validate(HemiEllipsoid self) -> std::string"},
 	 { "HemiEllipsoid_swigregister", HemiEllipsoid_swigregister, METH_O, NULL},
 	 { "HemiEllipsoid_swiginit", HemiEllipsoid_swiginit, METH_VARARGS, NULL},
@@ -62563,7 +62563,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "HorizontalCylinder_slice_bottom", _wrap_HorizontalCylinder_slice_bottom, METH_O, "HorizontalCylinder_slice_bottom(HorizontalCylinder self) -> double"},
 	 { "HorizontalCylinder_slice_top", _wrap_HorizontalCylinder_slice_top, METH_O, "HorizontalCylinder_slice_top(HorizontalCylinder self) -> double"},
 	 { "HorizontalCylinder_radialExtension", _wrap_HorizontalCylinder_radialExtension, METH_O, "HorizontalCylinder_radialExtension(HorizontalCylinder self) -> double"},
-	 { "HorizontalCylinder_formfactor_at_bottom", _wrap_HorizontalCylinder_formfactor_at_bottom, METH_VARARGS, "HorizontalCylinder_formfactor_at_bottom(HorizontalCylinder self, C3 q) -> complex_t"},
+	 { "HorizontalCylinder_formfactor", _wrap_HorizontalCylinder_formfactor, METH_VARARGS, "HorizontalCylinder_formfactor(HorizontalCylinder self, C3 q) -> complex_t"},
 	 { "HorizontalCylinder_validate", _wrap_HorizontalCylinder_validate, METH_O, "HorizontalCylinder_validate(HorizontalCylinder self) -> std::string"},
 	 { "delete_HorizontalCylinder", _wrap_delete_HorizontalCylinder, METH_O, "delete_HorizontalCylinder(HorizontalCylinder self)"},
 	 { "HorizontalCylinder_swigregister", HorizontalCylinder_swigregister, METH_O, NULL},
@@ -62591,7 +62591,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "LongBoxGauss_height", _wrap_LongBoxGauss_height, METH_O, "LongBoxGauss_height(LongBoxGauss self) -> double"},
 	 { "LongBoxGauss_width", _wrap_LongBoxGauss_width, METH_O, "LongBoxGauss_width(LongBoxGauss self) -> double"},
 	 { "LongBoxGauss_radialExtension", _wrap_LongBoxGauss_radialExtension, METH_O, "LongBoxGauss_radialExtension(LongBoxGauss self) -> double"},
-	 { "LongBoxGauss_formfactor_at_bottom", _wrap_LongBoxGauss_formfactor_at_bottom, METH_VARARGS, "LongBoxGauss_formfactor_at_bottom(LongBoxGauss self, C3 q) -> complex_t"},
+	 { "LongBoxGauss_formfactor", _wrap_LongBoxGauss_formfactor, METH_VARARGS, "LongBoxGauss_formfactor(LongBoxGauss self, C3 q) -> complex_t"},
 	 { "LongBoxGauss_validate", _wrap_LongBoxGauss_validate, METH_O, "LongBoxGauss_validate(LongBoxGauss self) -> std::string"},
 	 { "delete_LongBoxGauss", _wrap_delete_LongBoxGauss, METH_O, "delete_LongBoxGauss(LongBoxGauss self)"},
 	 { "LongBoxGauss_swigregister", LongBoxGauss_swigregister, METH_O, NULL},
@@ -62607,7 +62607,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "LongBoxLorentz_height", _wrap_LongBoxLorentz_height, METH_O, "LongBoxLorentz_height(LongBoxLorentz self) -> double"},
 	 { "LongBoxLorentz_width", _wrap_LongBoxLorentz_width, METH_O, "LongBoxLorentz_width(LongBoxLorentz self) -> double"},
 	 { "LongBoxLorentz_radialExtension", _wrap_LongBoxLorentz_radialExtension, METH_O, "LongBoxLorentz_radialExtension(LongBoxLorentz self) -> double"},
-	 { "LongBoxLorentz_formfactor_at_bottom", _wrap_LongBoxLorentz_formfactor_at_bottom, METH_VARARGS, "LongBoxLorentz_formfactor_at_bottom(LongBoxLorentz self, C3 q) -> complex_t"},
+	 { "LongBoxLorentz_formfactor", _wrap_LongBoxLorentz_formfactor, METH_VARARGS, "LongBoxLorentz_formfactor(LongBoxLorentz self, C3 q) -> complex_t"},
 	 { "LongBoxLorentz_validate", _wrap_LongBoxLorentz_validate, METH_O, "LongBoxLorentz_validate(LongBoxLorentz self) -> std::string"},
 	 { "delete_LongBoxLorentz", _wrap_delete_LongBoxLorentz, METH_O, "delete_LongBoxLorentz(LongBoxLorentz self)"},
 	 { "LongBoxLorentz_swigregister", LongBoxLorentz_swigregister, METH_O, NULL},
@@ -62775,7 +62775,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "TruncatedSphere_radius", _wrap_TruncatedSphere_radius, METH_O, "TruncatedSphere_radius(TruncatedSphere self) -> double"},
 	 { "TruncatedSphere_removedTop", _wrap_TruncatedSphere_removedTop, METH_O, "TruncatedSphere_removedTop(TruncatedSphere self) -> double"},
 	 { "TruncatedSphere_radialExtension", _wrap_TruncatedSphere_radialExtension, METH_O, "TruncatedSphere_radialExtension(TruncatedSphere self) -> double"},
-	 { "TruncatedSphere_formfactor_at_bottom", _wrap_TruncatedSphere_formfactor_at_bottom, METH_VARARGS, "TruncatedSphere_formfactor_at_bottom(TruncatedSphere self, C3 q) -> complex_t"},
+	 { "TruncatedSphere_formfactor", _wrap_TruncatedSphere_formfactor, METH_VARARGS, "TruncatedSphere_formfactor(TruncatedSphere self, C3 q) -> complex_t"},
 	 { "TruncatedSphere_validate", _wrap_TruncatedSphere_validate, METH_O, "TruncatedSphere_validate(TruncatedSphere self) -> std::string"},
 	 { "delete_TruncatedSphere", _wrap_delete_TruncatedSphere, METH_O, "delete_TruncatedSphere(TruncatedSphere self)"},
 	 { "TruncatedSphere_swigregister", TruncatedSphere_swigregister, METH_O, NULL},
@@ -62792,7 +62792,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "TruncatedSpheroid_heightFlattening", _wrap_TruncatedSpheroid_heightFlattening, METH_O, "TruncatedSpheroid_heightFlattening(TruncatedSpheroid self) -> double"},
 	 { "TruncatedSpheroid_removedTop", _wrap_TruncatedSpheroid_removedTop, METH_O, "TruncatedSpheroid_removedTop(TruncatedSpheroid self) -> double"},
 	 { "TruncatedSpheroid_radialExtension", _wrap_TruncatedSpheroid_radialExtension, METH_O, "TruncatedSpheroid_radialExtension(TruncatedSpheroid self) -> double"},
-	 { "TruncatedSpheroid_formfactor_at_bottom", _wrap_TruncatedSpheroid_formfactor_at_bottom, METH_VARARGS, "TruncatedSpheroid_formfactor_at_bottom(TruncatedSpheroid self, C3 q) -> complex_t"},
+	 { "TruncatedSpheroid_formfactor", _wrap_TruncatedSpheroid_formfactor, METH_VARARGS, "TruncatedSpheroid_formfactor(TruncatedSpheroid self, C3 q) -> complex_t"},
 	 { "TruncatedSpheroid_validate", _wrap_TruncatedSpheroid_validate, METH_O, "TruncatedSpheroid_validate(TruncatedSpheroid self) -> std::string"},
 	 { "delete_TruncatedSpheroid", _wrap_delete_TruncatedSpheroid, METH_O, "delete_TruncatedSpheroid(TruncatedSpheroid self)"},
 	 { "TruncatedSpheroid_swigregister", TruncatedSpheroid_swigregister, METH_O, NULL},
@@ -62806,7 +62806,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "GaussSphere_parDefs", _wrap_GaussSphere_parDefs, METH_O, "GaussSphere_parDefs(GaussSphere self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"},
 	 { "GaussSphere_meanRadius", _wrap_GaussSphere_meanRadius, METH_O, "GaussSphere_meanRadius(GaussSphere self) -> double"},
 	 { "GaussSphere_radialExtension", _wrap_GaussSphere_radialExtension, METH_O, "GaussSphere_radialExtension(GaussSphere self) -> double"},
-	 { "GaussSphere_formfactor_at_bottom", _wrap_GaussSphere_formfactor_at_bottom, METH_VARARGS, "GaussSphere_formfactor_at_bottom(GaussSphere self, C3 q) -> complex_t"},
+	 { "GaussSphere_formfactor", _wrap_GaussSphere_formfactor, METH_VARARGS, "GaussSphere_formfactor(GaussSphere self, C3 q) -> complex_t"},
 	 { "GaussSphere_validate", _wrap_GaussSphere_validate, METH_O, "GaussSphere_validate(GaussSphere self) -> std::string"},
 	 { "delete_GaussSphere", _wrap_delete_GaussSphere, METH_O, "delete_GaussSphere(GaussSphere self)"},
 	 { "GaussSphere_swigregister", GaussSphere_swigregister, METH_O, NULL},
@@ -62819,7 +62819,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "FuzzySphere_className", _wrap_FuzzySphere_className, METH_O, "FuzzySphere_className(FuzzySphere self) -> std::string"},
 	 { "FuzzySphere_parDefs", _wrap_FuzzySphere_parDefs, METH_O, "FuzzySphere_parDefs(FuzzySphere self) -> std::vector< ParaMeta,std::allocator< ParaMeta > >"},
 	 { "FuzzySphere_radialExtension", _wrap_FuzzySphere_radialExtension, METH_O, "FuzzySphere_radialExtension(FuzzySphere self) -> double"},
-	 { "FuzzySphere_formfactor_at_bottom", _wrap_FuzzySphere_formfactor_at_bottom, METH_VARARGS, "FuzzySphere_formfactor_at_bottom(FuzzySphere self, C3 q) -> complex_t"},
+	 { "FuzzySphere_formfactor", _wrap_FuzzySphere_formfactor, METH_VARARGS, "FuzzySphere_formfactor(FuzzySphere self, C3 q) -> complex_t"},
 	 { "FuzzySphere_validate", _wrap_FuzzySphere_validate, METH_O, "FuzzySphere_validate(FuzzySphere self) -> std::string"},
 	 { "delete_FuzzySphere", _wrap_delete_FuzzySphere, METH_O, "delete_FuzzySphere(FuzzySphere self)"},
 	 { "FuzzySphere_swigregister", FuzzySphere_swigregister, METH_O, NULL},
diff --git a/auto/Wrap/libBornAgainSample_wrap.h b/auto/Wrap/libBornAgainSample_wrap.h
index a9876ffc2cc..e58e9412d20 100644
--- a/auto/Wrap/libBornAgainSample_wrap.h
+++ b/auto/Wrap/libBornAgainSample_wrap.h
@@ -78,7 +78,7 @@ public:
     virtual double volume() const;
     virtual double radialExtension() const;
     virtual bool canSliceAnalytically(IRotation const *rot) const;
-    virtual complex_t formfactor_at_bottom(C3 q) const;
+    virtual complex_t formfactor(C3 q) const;
     virtual Span exec_spanZ(IRotation const *rotation) const;
     virtual Span exec_spanZSwigPublic(IRotation const *rotation) const {
       return IFormFactor::exec_spanZ(rotation);
-- 
GitLab