diff --git a/src/tools/RMSD.cpp b/src/tools/RMSD.cpp
index 2ccecceb58cd5c24ddd7ee1612655057422acc0f..256e5cedb0be9c96d1c564ce5b454e0f423c7c89 100644
--- a/src/tools/RMSD.cpp
+++ b/src/tools/RMSD.cpp
@@ -117,6 +117,7 @@ void RMSD::setAlign(const vector<double> & align, bool normalize_weights, bool r
     double w=0.0;
     #pragma omp simd reduction(+:w)
     for(unsigned i=0; i<n; i++) w+=this->align[i];
+    plumed_massert(w>epsilon,"It looks like weights used for alignment are zero. Check your reference PDB file.");
     double inv=1.0/w;
     #pragma omp simd
     for(unsigned i=0; i<n; i++) this->align[i]*=inv;
@@ -150,6 +151,7 @@ void RMSD::setDisplace(const vector<double> & displace, bool normalize_weights)
   double w=0.0;
   #pragma omp simd reduction(+:w)
   for(unsigned i=0; i<n; i++) w+=this->displace[i];
+  plumed_massert(w>epsilon,"It looks like weights used for displacement are zero. Check your reference PDB file.");
   double inv=1.0/w;
   if(normalize_weights) {
     #pragma omp simd