question about the code for waterdipole analysis

Dear alll,

I used the following code to analysis water dipole angle from the surface. This code works for some system, but not work for another system. I don't know why. It seems the "foreach my \\\$setMolecule(@\\\$setMolecules)" doesn't work for specific system. If it's available for you, would please help me out?

I insert "print "I am here\\n";" in the foreach cycle, it doesn't show any result in output.
-----------------------------------------
 #!perl
use strict;
use MaterialsScript qw(:all);
use Math::Trig;

my \\\$doc = \\\$Documents{"12354687892.xtd"};
my \\\$setA = "ai";
my \\\$setB = "water";

# get the trajectory data
my \\\$trj = \\\$doc->Trajectory;
my \\\$numFrames = \\\$trj->NumFrames;

# create a study table for the results
my \\\$std = Documents->New(\\\$doc->Name.".std");
\\\$std->ColumnHeading(0) = "Angle (deg)";
\\\$std->ColumnHeading(1) = "Distance (angstrom)";
my \\\$setMolecules = \\\$doc->UnitCell->Sets(\\\$setB)->Molecules;

# run over all frames in the trajectory
my \\\$irow = 0;
my \\\$setAtoms = \\\$doc->UnitCell->Sets(\\\$setA)->Atoms;
my \\\$plane = \\\$doc->UnitCell->CreateBestFitPlane(\\\$setAtoms);
my \\\$bestFitPlane = \\\$plane->BestFitPlane;
for(my \\\$frame = 201; \\\$frame <= 300; \\\$frame++)
{
   \\\$trj->CurrentFrame = \\\$frame;

   # get the normal vector of the plane
   my \\\$normal = \\\$plane->BestFitPlane->UnitNormalVector;
   
   foreach my \\\$setMolecule(@\\\$setMolecules)
   { 
     print "I am here\\n"; 
     # z position of the molecule
     my \\\$distance = \\\$setMolecule->Center->Z;

     # get dipole moment
     my \\\$dipoleMoment = \\\$setMolecule->DipoleMoment;
     my \\\$direction=Normalize(\\\$dipoleMoment);

     # calculate the angle between the dipole and the surface normal  
     my \\\$cosAngle = InProduct(\\\$normal, \\\$direction);
     my \\\$angle =180/pi*acos(\\\$cosAngle);
     
     print "\\\$distance\\n";
     print "\\\$angle\\n";
       
     # store the data in the study table
     \\\$std->Cell(\\\$irow,1) = \\\$distance;       
     \\\$std->Cell(\\\$irow++,0) = \\\$angle;
   }
}
\\\$doc->Discard; # discard any changes made

sub InProduct(){
my(\\\$a, \\\$b) = @_;
return \\\$a->X*\\\$b->X+\\\$a->Y*\\\$b->Y+\\\$a->Z*\\\$b->Z
}

sub Normalize
{
    my \\\$p = shift;
    my \\\$length = sqrt(\\\$p->X*\\\$p->X +    \\\$p->Y*\\\$p->Y + \\\$p->Z*\\\$p->Z);
    \\\$p->X /= \\\$length;
    \\\$p->Y /= \\\$length;
    \\\$p->Z /= \\\$length;
    return \\\$p;
}
-----------------------------------------------------------------------