Index: /trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc
===================================================================
--- /trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc	(revision 1370)
+++ /trunk/WuerzburgSoft/Thomas/mphys/MElectron.cc	(revision 1371)
@@ -262,5 +262,5 @@
         *ep = e;
 
-    const Double_t omega = e*E/E0/E0;
+    const Double_t omega = (e/E0)*(E/E0);
     const Double_t Gamma = 4.*omega;
 
@@ -297,6 +297,7 @@
     // e:  photon energy after interaction, lab
 
-    const Double_t gamma     = fEnergy/E0;
-    const Double_t beta      = sqrt(1.-1./(gamma*gamma));
+    const Double_t gamma = fEnergy/E0;
+    // const Double_t beta  = sqrt(1.-1./(gamma*gamma));
+    const Double_t gammabeta = sqrt(gamma*gamma-1);
 
     const Double_t f = fEnergy/e;
@@ -308,16 +309,16 @@
         if (t>0)
             cout << "~" << flush;
-        t = rand.Uniform(TMath::Pi()/2)+TMath::Pi()*3/4;
-        Double_t er  = gamma*epsilon*(1.-beta*cos(t)); // photon energy rest frame
-        arg = (f - E0/er - 1)/(f*beta+1);
+        t = rand.Uniform(TMath::Pi())+TMath::Pi()/2;
+        Double_t er  = epsilon*(gamma-gammabeta*cos(t)); // photon energy rest frame
+        arg = (f - E0/er - 1)/(sqrt(fEnergy*fEnergy-E0*E0)/e+1);
 
     } while (arg<-1 || arg>1);
 
     const Double_t theta1s = acos(arg);
-    const Double_t thetas = atan(sin(t)/(gamma*(cos(t)-beta)));
+    const Double_t thetas = atan(sin(t)/(gamma*cos(t)-gammabeta));
 
     const Double_t thetastar = thetas-theta1s;
 
-    const Double_t theta1 = atan(sin(thetastar)/(gamma*(cos(thetastar)+beta)));
+    const Double_t theta1 = atan(sin(thetastar)/(gamma*cos(thetastar)+gammabeta));
 
     fEnergy -= e;
@@ -433,5 +434,5 @@
     TVectorD p(3);
 
-    Double_t rho = TMath::Pi()/2;    // [2pi]
+    Double_t rho = 0;    
     if (B>0)
     {
Index: /trunk/WuerzburgSoft/Thomas/mphys/MParticle.cc
===================================================================
--- /trunk/WuerzburgSoft/Thomas/mphys/MParticle.cc	(revision 1370)
+++ /trunk/WuerzburgSoft/Thomas/mphys/MParticle.cc	(revision 1371)
@@ -109,5 +109,5 @@
 void MParticle::InitRandom()
 {
-    TRandom rnd(0);
+    static TRandom rnd(0);
     fPhi = rnd.Uniform(TMath::Pi()*2);
     fPsi = rnd.Uniform(TMath::Pi()*2);
