diff --git a/Examples/JpsiToOmegaPhiGam/JpsiGamPipPimPi0KK.root b/Examples/JpsiToOmegaPhiGam/JpsiGamPipPimPi0KK.root
index 312f53f759b3fcc5f50ff2ae7a1c9eff476f705f..db3b2dfdc1131b427c3a8641f8cdce5cb58620cd 100644
Binary files a/Examples/JpsiToOmegaPhiGam/JpsiGamPipPimPi0KK.root and b/Examples/JpsiToOmegaPhiGam/JpsiGamPipPimPi0KK.root differ
diff --git a/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.cc b/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.cc
index 3bba5c6c50b1ef6b8618c786b7f5492c7b861764..16ddaf9f73f4ab1e7a74e52274a10af050fd7642 100644
--- a/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.cc
+++ b/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.cc
@@ -79,28 +79,28 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
      
      Vector4<float>  V4_PipPimPi0_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab);
      Vector4<float>  V4_KpKm_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab);     
-     Vector4<float>  V4_Pip_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pip_Lab);     
+     Vector4<float>  V4_Pip_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pip_Lab);
+     Vector4<float>  V4_Pim_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pim_Lab);
+     Vector4<float>  V4_Pi0_HeliPipPimPi0=helicityVec(V4_PipPimPi0KpKm_Lab, V4_PipPimPi0_Lab, V4_pi0_Lab);
+     
      Vector4<float>  V4_Kp_HeliKpKm=helicityVec(V4_PipPimPi0KpKm_Lab, V4_KpKm_Lab, V4_Kp_Lab);
      
      Vector4<float>  V4_Kp_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Kp_Lab);
      Vector4<float>  V4_Km_HeliPipPimPi0KpKm=helicityVec(V4_all_Lab, V4_PipPimPi0KpKm_Lab, V4_Km_Lab);
      
-     // Vector4<float> V4_normKpKmDecHeliKsKlKpKm
-     //   (0.5*(V4_Kp_HeliKsKlKpKm.T()+V4_Km_HeliKsKlKpKm.T()),
-     // 	V4_Km_HeliKsKlKpKm.Y()*V4_Kp_HeliKsKlKpKm.Z()-V4_Km_HeliKsKlKpKm.Z()*V4_Kp_HeliKsKlKpKm.Y(),
-     // 	V4_Km_HeliKsKlKpKm.Z()*V4_Kp_HeliKsKlKpKm.X()-V4_Km_HeliKsKlKpKm.X()*V4_Kp_HeliKsKlKpKm.Z(),
-     // 	V4_Km_HeliKsKlKpKm.X()*V4_Kp_HeliKsKlKpKm.Y()-V4_Km_HeliKsKlKpKm.Y()*V4_Kp_HeliKsKlKpKm.X());
      
-     // Vector4<float>  V4_Kl_HeliKsKlKpKm=helicityVec(V4_all_Lab, V4_KsKlKpKm_Lab, V4_Kl_Lab);
-     // Vector4<float>  V4_Ks_HeliKsKlKpKm=helicityVec(V4_all_Lab, V4_KsKlKpKm_Lab, V4_Ks_Lab);
+     Vector4<float> V4_omegaDecPlaneNormal_HeliPipPimPi0 ( 0.5*( V4_Pip_HeliPipPimPi0.T()+ V4_Pim_HeliPipPimPi0.T()+ V4_Pi0_HeliPipPimPi0.T() ),
+							     V4_Pim_HeliPipPimPi0.Y()*V4_Pip_HeliPipPimPi0.Z() - V4_Pim_HeliPipPimPi0.Z()*V4_Pip_HeliPipPimPi0.Y(),
+							     V4_Pim_HeliPipPimPi0.Z()*V4_Pip_HeliPipPimPi0.X() - V4_Pim_HeliPipPimPi0.X()*V4_Pip_HeliPipPimPi0.Z(),
+							     V4_Pim_HeliPipPimPi0.X()*V4_Pip_HeliPipPimPi0.Y() - V4_Pim_HeliPipPimPi0.Y()*V4_Pip_HeliPipPimPi0.X() );
+     
+     
+     
+     double theQ =  V4_Pip_HeliPipPimPi0.E()- V4_Pip_HeliPipPimPi0.M() +  V4_Pim_HeliPipPimPi0.E()- V4_Pim_HeliPipPimPi0.M() +  V4_Pi0_HeliPipPimPi0.E()- V4_Pi0_HeliPipPimPi0.M();
+     double lambdaNorm=theQ*theQ*(theQ*theQ/108.+ V4_Pim_HeliPipPimPi0.M()*theQ/9.+ V4_Pim_HeliPipPimPi0.M()* V4_Pim_HeliPipPimPi0.M()/3.);
+     double lambda= V4_omegaDecPlaneNormal_HeliPipPimPi0.P()*  V4_omegaDecPlaneNormal_HeliPipPimPi0.P()/lambdaNorm;
      
-     // Vector4<float> V4_normKsKlDecHeliKsKlKpKm
-     //   (0.5*(V4_Kl_HeliKsKlKpKm.T()+V4_Ks_HeliKsKlKpKm.T()),
-     // 	V4_Ks_HeliKsKlKpKm.Y()*V4_Kl_HeliKsKlKpKm.Z()-V4_Ks_HeliKsKlKpKm.Z()*V4_Kl_HeliKsKlKpKm.Y(),
-     // 	V4_Ks_HeliKsKlKpKm.Z()*V4_Kl_HeliKsKlKpKm.X()-V4_Ks_HeliKsKlKpKm.X()*V4_Kl_HeliKsKlKpKm.Z(),
-     // 	V4_Ks_HeliKsKlKpKm.X()*V4_Kl_HeliKsKlKpKm.Y()-V4_Ks_HeliKsKlKpKm.Y()*V4_Kl_HeliKsKlKpKm.X());
      
- 
      EvtDataNew* evtData=new EvtDataNew();
      evtData->FourVecsProd[enumProd4V::Psi] = V4_psi;
      evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0KpKm_HeliPsi]=V4_PipPimPi0KpKm_HeliPsi;
@@ -114,15 +114,19 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
      evtData->FourVecsDec[enumJpsiGamX4V::V4_Km_HeliPsi]=V4_Km_HeliPsi;
      evtData->FourVecsDec[enumJpsiGamX4V::V4_PipPimPi0_HeliPipPimPi0KpKm]=V4_PipPimPi0_HeliPipPimPi0KpKm;
      evtData->FourVecsDec[enumJpsiGamX4V::V4_KpKm_HeliPipPimPi0KpKm]=V4_KpKm_HeliPipPimPi0KpKm;
-     evtData->FourVecsDec[enumJpsiGamX4V::V4_Pip_HeliPipPimPi0]=V4_Pip_HeliPipPimPi0;
      evtData->FourVecsDec[enumJpsiGamX4V::V4_Kp_HeliKpKm]= V4_Kp_HeliKpKm;
      
-     // evtData->FourVecsDec[enumJpsiGamX4V::V4_normKpKmDecHeliKsKlKpKm]=V4_normKpKmDecHeliKsKlKpKm;
-     // evtData->FourVecsDec[enumJpsiGamX4V::V4_normKsKlDecHeliKsKlKpKm]=V4_normKsKlDecHeliKsKlKpKm;
+     evtData->FourVecsDec[enumJpsiGamX4V::V4_Pip_HeliPipPimPi0]=V4_Pip_HeliPipPimPi0;
+     evtData->FourVecsDec[enumJpsiGamX4V::V4_Pim_HeliPipPimPi0]=V4_Pim_HeliPipPimPi0;
+     evtData->FourVecsDec[enumJpsiGamX4V::V4_Pi0_HeliPipPimPi0]=V4_Pi0_HeliPipPimPi0;
      
-    
-    // calculate and store WignerD functions for Psi -> X gamma (JPC =0-+, 0++, 2++)
-
+     evtData->FourVecsDec[enumJpsiGamX4V::V4_omegaDecPlaneNormal_HeliPipPimPi0] =V4_omegaDecPlaneNormal_HeliPipPimPi0;
+     
+     evtData->KinematicVariables[enumJpsiGamXKin::OmegaDecLambda]=lambda;
+     
+     //
+     // calculate and store WignerD functions for Psi -> X gamma (JPC =0-+, 0++, 2++)
+     //
     Spin jPsi=1;
     for (Spin M=-1; M<=1; M=M+2){
       for (Spin lam=-1; lam<=1; lam++){
@@ -131,23 +135,24 @@ void JpsiToOmegaPhiGamEventList::read4Vecs(EventList& evtList, std::vector<EvtDa
     }
     
   // //WignerD functions for X -> phi phi
-
-  //   for (Spin J_X=0; J_X<=2; J_X++){
-  //     for (Spin lam_X=-J_X; lam_X<=J_X; lam_X++){
-  // 	for (Spin lamPhi1mlamPhi2=-J_X; lamPhi1mlamPhi2<=J_X; lamPhi1mlamPhi2++){
-  // 	evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi1][J_X][lam_X][lamPhi1mlamPhi2]
-  // 	  =Wigner_D(V4_KsKl_HeliKsKlKpKm.Phi(),V4_KsKl_HeliKsKlKpKm.Theta(),0,J_X,lam_X,lamPhi1mlamPhi2);
-  // 	evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi2][J_X][lam_X][lamPhi1mlamPhi2]
-  // 	  =Wigner_D(V4_KpKm_HeliKsKlKpKm.Phi(),V4_KpKm_HeliKsKlKpKm.Theta(),0,J_X,lam_X,lamPhi1mlamPhi2);
-  //     }
-  //   }
-  //   }
     
-    //WignerD function for phi -> K+ K- and phi -> KS KL
+    for (Spin J_X=0; J_X<=2; J_X++){
+      for (Spin lam_X=-J_X; lam_X<=J_X; lam_X++){
+   	for (Spin lamPhilamOmega=-J_X; lamPhilamOmega<=J_X; lamPhilamOmega++){
+	  evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_KK][J_X][lam_X][lamPhilamOmega]
+	    =Wigner_D(V4_KpKm_HeliPipPimPi0KpKm.Phi(),V4_KpKm_HeliPipPimPi0KpKm.Theta(),0,J_X,lam_X,lamPhilamOmega);
+	  evtData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_3pi][J_X][lam_X][lamPhilamOmega]
+	    =Wigner_D(V4_PipPimPi0_HeliPipPimPi0KpKm.Phi(), V4_PipPimPi0_HeliPipPimPi0KpKm.Theta(),0,J_X,lam_X,lamPhilamOmega);
+	}
+      }
+    }
+    
+    //WignerD function for phi -> K+ K- andomega -> pi+ pi- pi0
     Spin phiSpin=1;
     for(Spin M=-phiSpin; M<=phiSpin; M++){
       Spin lam=0;
       evtData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][phiSpin][M][lam] = Wigner_D(V4_Kp_HeliKpKm.Phi(),V4_Kp_HeliKpKm.Theta(), 0,phiSpin,M,lam);
+      evtData->WignerDsDec[enumJpsiGamXDfunc::Df_OmegaToPipPimPi0][phiSpin][M][lam] = Wigner_D(V4_omegaDecPlaneNormal_HeliPipPimPi0.Phi(), V4_omegaDecPlaneNormal_HeliPipPimPi0.Theta(), 0,phiSpin,M,lam);
     }    
     
     evtData->evtWeight=anEvent->Weight();
diff --git a/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.hh b/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.hh
index a2943edbeda8322cf99eeb7fe10de037033d4023..83bf76731752be38e49461cc2dd5b14e3da4a566 100644
--- a/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.hh
+++ b/Examples/JpsiToOmegaPhiGam/JpsiToOmegaPhiGamEventList.hh
@@ -12,14 +12,20 @@
 struct enumJpsiGamX4V{
   enum { Psi=0,  V4_PipPimPi0KpKm_HeliPsi, V4_PipPimPi0_HeliPsi, V4_KpKm_HeliPsi, V4_gamma_HeliPsi,
 	 V4_Pip_HeliPsi, V4_Pim_HeliPsi, V4_Pi0_HeliPsi, V4_Kp_HeliPsi, V4_Km_HeliPsi,
-	 V4_PipPimPi0_HeliPipPimPi0KpKm, V4_KpKm_HeliPipPimPi0KpKm, V4_Pip_HeliPipPimPi0, V4_Kp_HeliKpKm, n4Vecs};
+	 V4_PipPimPi0_HeliPipPimPi0KpKm, V4_KpKm_HeliPipPimPi0KpKm, 
+	 V4_Pip_HeliPipPimPi0, V4_Pim_HeliPipPimPi0, V4_Pi0_HeliPipPimPi0,
+	 V4_Kp_HeliKpKm, 
+	 V4_omegaDecPlaneNormal_HeliPipPimPi0, n4Vecs};
   
   static const std::string& name(unsigned int t)
   {
     static std::string fitName[enumJpsiGamX4V::n4Vecs]
       ={ "Psi",  "PipPimPi0KpKm_HeliPsi", "PipPimPi0_HeliPsi", "KpKm_HeliPsi", "gamma_HeliPsi",
 	 "Pip_HeliPsi", "Pim_HeliPsi", "Pi0_HeliPsi", "Kp_HeliPsi", "Km_HeliPsi",
-	 "PipPimPi0_HeliPipPimPi0KpKm", "KpKm_HeliPipPimPi0KpKm", "Pip_HeliPipPimPi0", "Kp_HeliKpKm"  };
+	 "PipPimPi0_HeliPipPimPi0KpKm", "KpKm_HeliPipPimPi0KpKm", 
+	 "Pip_HeliPipPimPi0",  "Pim_HeliPipPimPi0",  "Pi0_HeliPipPimPi0"
+	 "Kp_HeliKpKm", 
+	 "V4_omegaDecPlaneNormal_HeliPipPimPi0"  };
     
     if (t<0 || t>=enumJpsiGamX4V::n4Vecs) assert(0);
     return fitName[t];
@@ -27,18 +33,29 @@ struct enumJpsiGamX4V{
 };
 
 struct enumJpsiGamXDfunc{
-  enum {Df_XToPhiPhi1=0, Df_XToPhiPhi2, Df_PhiToKsKl,Df_PhiToKpKm, nDfuncts};
+  enum {Df_XToOmegaPhi_KK=0, Df_XToOmegaPhi_3pi, Df_OmegaToPipPimPi0, Df_PhiToKpKm, nDfuncts};
 
   static const std::string& name(unsigned int t)
   {
     static std::string fitName[enumJpsiGamXDfunc::nDfuncts]
-      ={"XToPhiPhi1", "XToPhiPhi2", "PhiToKsKl", "PhiToKpKm"};
+      ={"XToOmegaPhi_KK", "XToOmegaPhi_3pi", "OmegaToPipPimPi0", "PhiToKpKm"};
     if (t<0 || t>=enumJpsiGamXDfunc::nDfuncts) assert(0);
     return fitName[t];
   }
 };
 
+struct enumJpsiGamXKin{
+  enum {OmegaDecLambda=0, nKinVars};
 
+  // static const std::string& name(unsigned int t)
+  // {
+  //   static std::string fitName[enumJpsiGamXKin::nKinVars]
+  //     ={"OmegaDecLambda"};
+  //   if (t<0 || t>=enumJpsiGamXKin::nKinVars) assert(0);
+  //   return fitName[t];
+  // }
+};
+   
 
 class EventList;
 
diff --git a/Examples/JpsiToOmegaPhiGam/XToOmegaPhiDecAmps.cc b/Examples/JpsiToOmegaPhiGam/XToOmegaPhiDecAmps.cc
index 999eb17c328a8fb0c326f3108df79a35e2e2acb5..4e27c8a004344a17922a9bf806d1adf13c6e4b50 100644
--- a/Examples/JpsiToOmegaPhiGam/XToOmegaPhiDecAmps.cc
+++ b/Examples/JpsiToOmegaPhiGam/XToOmegaPhiDecAmps.cc
@@ -90,7 +90,7 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData)
         complex<double> amp = theXMag*expiphiX*sqrt(2*XState->L+1)
           *Clebsch(XState->L, 0, XState->S, lambda, XState->J, lambda)
           *Clebsch(1, lambdaPhi1, 1, -lambdaPhi2, XState->S, lambda  )
-          *conj( theData->WignerDsDec[enumJpsiGamXDfunc::Df_XToPhiPhi1][XState->J][lamX][lambda]);
+          *conj( theData->WignerDsDec[enumJpsiGamXDfunc::Df_XToOmegaPhi_KK][XState->J][lamX][lambda]);
         
         amp = amp * phiphiTo4KAmp( theData, lambdaPhi1, lambdaPhi2 );
 
@@ -105,7 +105,9 @@ complex<double> XToOmegaPhiDecAmps::XToPhiPhiAmp(Spin lamX, EvtDataNew* theData)
 complex<double> XToOmegaPhiDecAmps::phiphiTo4KAmp( EvtDataNew* theData, Spin lambdaPhi1, Spin lambdaPhi2 ){
   complex<double> result(0.,0.);
   
-  result = 3. * conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKsKl][1][lambdaPhi1][0])
+  double lambda = theData->KinematicVariables[enumJpsiGamXKin::OmegaDecLambda];
+  
+  result = 3. * conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_OmegaToPipPimPi0][1][lambdaPhi1][0]) * sqrt(lambda)
     * 3.* conj(theData->WignerDsDec[enumJpsiGamXDfunc::Df_PhiToKpKm][1][lambdaPhi2][0]);
   
   return result;
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamEventList.o b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamEventList.o
index c67e4f5c0038cf7c39deba78eadc7d05ad94d297..6984974385a45644677f592eb9a34a768f30f3aa 100644
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamEventList.o and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamEventList.o differ
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamHist.o b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamHist.o
index 7b3d7655bc1a551d305a0e1359f7b938adaeb141..00307f1514f152a9dbbd4d6123deb447d2efa9e1 100644
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamHist.o and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/JpsiToOmegaPhiGamHist.o differ
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp
index ddd8479141c732f1bc5ceb1b0b3de79325fa36e7..d6d83f8b93eb2874131a058efb7cc438138e1e9e 100755
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp differ
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp.o b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp.o
index e8dd83dd26459a7c754399fadb851b36b95861da..581d95895927210abbde16acfb6fdb35a82eeee6 100644
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp.o and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/MJpsiToOmegaPhiGamApp.o differ
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/XToOmegaPhiDecAmps.o b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/XToOmegaPhiDecAmps.o
index 70b6dea7dc5ae2dc3d115ee4fca5cda0d425d820..b22429ba5cfa2eee9bbf63b9913a5190df0a2bdf 100644
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/XToOmegaPhiDecAmps.o and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/XToOmegaPhiDecAmps.o differ
diff --git a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/libJpsiToOmegaPhiGam.a b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/libJpsiToOmegaPhiGam.a
index d4a5fd835515df4373f3ae183e1c530f47d7bad9..80e49677e60aade252d7931c358918a8be42937c 100644
Binary files a/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/libJpsiToOmegaPhiGam.a and b/Examples/JpsiToOmegaPhiGam/bin/gcc-4.4.6/release/link-static/libJpsiToOmegaPhiGam.a differ
diff --git a/Examples/JpsiToOmegaPhiGam/qaSummary.dat b/Examples/JpsiToOmegaPhiGam/qaSummary.dat
index 13d516790c2685a01b88949ea2b8af8b2403847b..859d6457b449c8f0af61a0bdf19d22f9e1c37d9b 100644
--- a/Examples/JpsiToOmegaPhiGam/qaSummary.dat
+++ b/Examples/JpsiToOmegaPhiGam/qaSummary.dat
@@ -1,5 +1,5 @@
-BIC	4392.52
-AICa	4367
-AICc	4367.01
-logLh	2179.5
+BIC	14611.8
+AICa	14586.3
+AICc	14586.3
+logLh	7289.15
 free parameter	4