do loop speed up?



I have a function of four helicity variables s1,s2,..
called emuon(s1,s2,s3,s4), each variable can take
on only values 1 or -1. To compute the sum of
the absolute value squared of the helicity 
amplitudes (to get a unpolarized cross section)
I use the "dumb" do loop code:

Mssq3 : block ([msqsum,s1,s2,s3,s4,sL], sL : [1,-1],
          msqsum : 0,
          for s1 in sL do
           for s2 in sL do
            for s3 in sL do
             for s4 in sL do
              msqsum : msqsum + Avsq (factor (emuon (s1,s2,s3,s4)) ),
          factorsum (msqsum));

I suspect there is a fancier way to do this that will also
be faster.

Any suggestions??

Thanks in Advance,

Ted Woollett

p.s.: Avsq is a homemade  complex amplitude square function.