Normalization
authorAlexey Shvetsov <alexxy@gentoo.org>
Wed, 11 Jul 2018 15:52:48 +0000 (18:52 +0300)
committerAlexey Shvetsov <alexxy@gentoo.org>
Wed, 11 Jul 2018 15:52:48 +0000 (18:52 +0300)
src/sans.cpp

index 7ff2645f4068c80b0b3625c68789239953ac2075..4c932d9c6684d4aa698e77a7deebbf89669cc370 100644 (file)
@@ -37,6 +37,7 @@
 #include <gromacs/trajectoryanalysis.h>
 #include <gromacs/selection/nbsearch.h>
 #include <gromacs/math/vec.h>
+#include <gromacs/math/units.h>
 
 using namespace gmx;
 
@@ -87,7 +88,9 @@ SANS::SANS()
 
 double SANS::Gaussian(double value, double sigma, RVec Rpos, RVec Rgrid, RVec GridSpacing)
 {
-    return value*M_PI*M_PI*GridSpacing[XX]*GridSpacing[YY]*GridSpacing[ZZ]*exp(-distance2(Rpos, Rgrid)/(2*sigma*sigma))/(std::sqrt(2.0)*sigma*sigma*sigma*108.);
+    //return value*M_PI*M_PI*GridSpacing[XX]*GridSpacing[YY]*GridSpacing[ZZ]*exp(-distance2(Rpos, Rgrid)/(2*sigma*sigma))/(std::sqrt(2.0)*sigma*sigma*sigma*108.);
+    //return value*std::exp(-distance2(Rpos, Rgrid)/(2*sigma*sigma))/(2*M_PI*std::sqrt(2.0*M_PI)*sigma*sigma*sigma);
+    return value*std::exp(-distance2(Rpos, Rgrid)/(2*sigma*sigma))/(2*M_PI*std::sqrt(2.0*M_PI)*sigma*sigma*sigma)*GridSpacing[XX]*GridSpacing[YY]*GridSpacing[ZZ];
 }
 
 void
@@ -174,7 +177,8 @@ SANS::analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc,
                     RVec refPos(point[XX]+pair.dx()[XX], point[YY]+pair.dx()[YY], point[ZZ]+pair.dx()[ZZ]);
                     // fprintf(stderr,"refPos = [ %f %f %f ]\n", refPos[XX], refPos[YY], refPos[ZZ]);
                     // fprintf(stderr, "Mass = %f, Radius = %f\n", top->atoms.atom[pair.refIndex()].m, top->atomtypes.radius[top->atoms.atom[pair.refIndex()].type]);
-                    gausGrid_[i][j][k] += Gaussian(top->atoms.atom[pair.refIndex()].m, 2., refPos, point, gridSpacing_);
+                    gausGrid_[i][j][k] += Gaussian(top->atoms.atom[pair.refIndex()].m, 2., refPos, point, gridSpacing_)*AMU/(NANO*NANO*NANO);
+
                 }
                 fprintf(stderr, "GausGrid[%d, %d, %d] = %f\n", i, j, k, gausGrid_[i][j][k]);
             }