diff --git a/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.cc b/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.cc
index c5897d6ba4713072870c0eac5f6a37d7880bd8ff..549d25ea113c77d364bfb109d190e80dd8540229 100644
--- a/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.cc
+++ b/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.cc
@@ -61,159 +61,41 @@ double JpsiGamKsKlKKProdLh::calcEvtIntensity(EvtData* theData, fitParams& thePar
 
   double result=0.;
   
-  Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+ 
   complex<double> JmpGmp(0.,0.);
   complex<double> JmpGmm(0.,0.);
   complex<double> JmmGmp(0.,0.);
   complex<double> JmmGmm(0.,0.);
   
-
-  
   if(_massIndependentFit){
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > etaMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > etaPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
-    JmpGmp+=etaGammaAmp(1, 0, 1, theData, etaMag, etaPhi );
-    JmpGmm+=etaGammaAmp(1, 0, -1, theData,  etaMag, etaPhi  );
-    JmmGmp+=etaGammaAmp(-1, 0, 1, theData,  etaMag, etaPhi ); 
-    JmmGmm+=etaGammaAmp(-1, 0, -1, theData,  etaMag, etaPhi  );
-  
+    
+    if(_etacHyp) calcEtacGammaAmp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm,dynamicModelParams::MassIndependent );
+    if(_f02020Hyp) calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent );
+    if(_f22300Hyp) calcF22300Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    if(_eta21870Hyp) calcE21870Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    if(_f1Hyp) calcF1Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    
     result=norm(JmpGmp)+norm(JmpGmm)+norm(JmmGmp)+norm(JmmGmm);
     return result;
   }
   
-
+  //
+  //dynamic is parameterized by Breit-Wigner or Flatte
+  //
+  if(_etacHyp) calcEtacGammaAmp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm,dynamicModelParams::BreitWigner );
+  if(_eta2225Hyp) calcEta2225Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm,dynamicModelParams::BreitWigner );
+  if(_f02020Hyp) calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner );
+  if(_f02020FlatteHyp ) calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::Flatte );
+  if(_f22300Hyp) calcF22300Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
+  if(_eta21870Hyp) calcE21870Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
+  if(_f1Hyp) calcF1Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
   
-  if(_etacHyp){
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEtacGamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEtacGamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
-    
-    double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::etac];
-    double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::etac];
-    complex<double> theDynamicPart = BreitWigner(fv2Phi, mass, width);
-    //complex<double> theDynamicPart = BreitWignerBlattW(fv2Phi, _phiMass, _phiMass, mass, width, 1);
-    
-    JmpGmp+=etaGammaAmp(1, 0, 1, theData, PsiToEtacGamMag, PsiToEtacGamPhi )*theDynamicPart;
-    JmpGmm+=etaGammaAmp(1, 0, -1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi  )*theDynamicPart;
-    JmmGmp+=etaGammaAmp(-1, 0, 1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi )*theDynamicPart;
-    JmmGmm+=etaGammaAmp(-1, 0, -1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi  )*theDynamicPart;
-    
-  }
-  
-  if (_eta2225Hyp){
-    
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2225GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEta2225Gamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2225GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEta2225Gamma];
-    
-    double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::eta2225];
-    double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::eta2225];
-    complex<double> theDynamicPart = BreitWigner(fv2Phi, mass, width);
-    //complex<double> theDynamicPart = BreitWignerBlattW(fv2Phi, _phiMass, _phiMass, mass, width, 1);
-    
-    JmpGmp+=etaGammaAmp(1, 0, 1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
-    JmpGmm+=etaGammaAmp(1, 0, -1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
-    JmmGmp+=etaGammaAmp(-1, 0, 1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
-    JmmGmm+=etaGammaAmp(-1, 0, -1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
-    
-  }
-
-  if (_f02020Hyp || _f02020FlatteHyp ){
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof02020GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF02020Gamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof02020GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF02020Gamma];
-    
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F02020ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F02020ToPhiPhi];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F02020ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F02020ToPhiPhi];
-    
-    dynamicModelParams theDynModel;
-    double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f02020];
-    
-    if( _f02020FlatteHyp  ){
-      double gKK =  theParamVal.gFactors[paramEnumJpsiGamKsKlKK::f02020gKK];
-      double gPhiPhi =  theParamVal.gFactors[paramEnumJpsiGamKsKlKK::f02020gPhiPhi];
-      initializeFlatteModel( theDynModel, fv2Phi, mass, gPhiPhi, gKK   );
-      
-    }else if( _f02020Hyp ){
-      double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f02020];
-      initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
-    }
-    
-    JmpGmp+=f0GammaAmp(1, 1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
-    JmpGmm+=f0GammaAmp(1, -1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
-    JmmGmp+=f0GammaAmp(-1, 1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
-    JmmGmm+=f0GammaAmp(-1, -1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
+  result=norm(JmpGmp)+norm(JmpGmm)+norm(JmmGmp)+norm(JmmGmm);
+  if(_usePhasespace){
+    result = result + theParamVal.otherParams[paramEnumJpsiGamKsKlKK::phaseSpace];
   }
   
-  if (_f22300Hyp){
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof2GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF22300Gamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof2GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF22300Gamma];
-    
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F2ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F22300ToPhiPhi];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F2ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F22300ToPhiPhi];
-    
-    double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f22300];
-    double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f22300];
-    
-    Spin f2Spin=2;
-    dynamicModelParams theDynModel;
-    initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
-    
-    
-    JmpGmp+=f2GammaAmp(1, 1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-    JmpGmm+=f2GammaAmp(1, -1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-    JmmGmp+=f2GammaAmp(-1, 1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-    JmmGmm+=f2GammaAmp(-1, -1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-  } 
-  
-
-    if (_eta21870Hyp){
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEta21870Gamma];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEta21870Gamma];
-    
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > Eta2ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::Eta21870ToPhiPhi];
-    std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > Eta2ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::Eta21870ToPhiPhi];
-    
-    double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::eta21870];
-    double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::eta21870];
-    
-    Spin eta2Spin=2;
-     dynamicModelParams theDynModel;
-     initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
-    
-    JmpGmp+=f2GammaAmp(1, 1, eta2Spin, theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
-    JmpGmm+=f2GammaAmp(1, -1, eta2Spin,theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
-    JmmGmp+=f2GammaAmp(-1, 1, eta2Spin,theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
-    JmmGmm+=f2GammaAmp(-1, -1, eta2Spin, theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width , _useCommonProductionPhase,theDynModel );
-    }     
-    
-    
-
-    if(_f1Hyp){
-      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof1GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF1Gamma];
-      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof1GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF1Gamma];
-      
-      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F1ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F1ToPhiPhi];
-      std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F1ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F1ToPhiPhi];
-      
-      double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f1];
-      double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f1];
-      
-      Spin f1Spin=1;
-      dynamicModelParams theDynModel;
-      initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
-      
-      JmpGmp+=f2GammaAmp(1, 1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-      JmpGmm+=f2GammaAmp(1, -1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-      JmmGmp+=f2GammaAmp(-1, 1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-      JmmGmm+=f2GammaAmp(-1, -1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
-    }
-    
-
-    result=norm(JmpGmp)+norm(JmpGmm)+norm(JmmGmp)+norm(JmmGmm);
-    
-    if(_usePhasespace){
-      result = result + theParamVal.otherParams[paramEnumJpsiGamKsKlKK::phaseSpace];
-    }
-    
-    return result;  
+  return result;  
 }
 
 complex<double> JpsiGamKsKlKKProdLh::calcCoherentAmp(Spin Minit, Spin lamGam, fitParams& theParamVal, EvtData* theData){
@@ -223,7 +105,6 @@ complex<double> JpsiGamKsKlKKProdLh::calcCoherentAmp(Spin Minit, Spin lamGam, fi
 
 
 
-
 complex<double> JpsiGamKsKlKKProdLh::etaGammaAmp(Spin Minit, Spin Metac, Spin Mgamma, EvtData* theData, 
 						 std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& PsiToEtaMag, 
 						 std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess >& PsiToEtaPhi ){
@@ -719,3 +600,273 @@ JpsiGamKsKlKKProdLh::initializeHypothesisMap( const std::map<const std::string,
   
   return true;
 }
+
+
+
+double 
+JpsiGamKsKlKKProdLh::calcComponentIntensity(  EvtData* theData, fitParams& theParamVal, std::string component  ){
+  
+  double result=0.0;
+  complex<double> JmpGmp(0.0,0.0);
+  complex<double> JmpGmm(0.0,0.0);
+  complex<double> JmmGmp(0.0,0.0);
+  complex<double> JmmGmm(0.0,0.0);
+  
+  std::map<const std::string, bool>::const_iterator iter= _hypMap.find(component);
+  if (iter ==_hypMap.end()){
+    Alert << "Component " << component << " was not included in fit hypothesis" <<endmsg ;
+    return 0;
+  }
+  if (iter !=_hypMap.end() && !iter->second ){
+    Alert << "Component " << component << " was disabled in fit hypothesis"  <<endmsg ;
+    return 0;
+  }
+  
+  
+  if(_massIndependentFit){
+    
+    if(component == "etacHyp" ){
+      calcEtacGammaAmp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm,dynamicModelParams::MassIndependent  );
+    }
+    else if( component == "f02020Hyp" ){
+      calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent );
+    }
+    else if(component == "f22300Hyp"){
+      calcF22300Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    }
+    else if(component == "eta21870Hyp"){
+      calcE21870Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    }
+    else if(component == "f1Hyp"){
+      calcF1Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::MassIndependent);
+    }
+    
+    result=norm(JmpGmp)+norm(JmpGmm)+norm(JmmGmp)+norm(JmmGmm);
+    return result;
+  }
+  
+  
+  
+  //
+  //mass-dependent parameterization
+  //
+  
+  if(component == "etacHyp" ){
+    calcEtacGammaAmp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner    );
+  }
+  
+  else if(component == "eta2225Hyp"){
+    calcEta2225Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm,dynamicModelParams::BreitWigner );
+  }
+
+
+  else if( component == "f02020Hyp" ){
+    calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner );
+  }
+  
+  else if(component == "f02020FlatteHyp"){
+    calcF02020Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::Flatte );
+  }
+  
+  else if(component == "f22300Hyp"){
+    calcF22300Amp( theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
+  }
+  
+  else if(component == "eta21870Hyp"){
+    calcE21870Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
+  }
+  
+  else if(component == "f1Hyp"){
+    calcF1Amp(theData, theParamVal, JmpGmp,JmpGmm, JmmGmp,JmmGmm, dynamicModelParams::BreitWigner);
+  }
+  
+  return  norm(JmpGmp)+norm(JmpGmm)+norm(JmmGmp)+norm(JmmGmm);
+
+
+
+  
+  return 0.0;
+}
+
+
+ void 
+ JpsiGamKsKlKKProdLh::calcEtacGammaAmp( EvtData* theData, fitParams& theParamVal, 
+					complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+					dynamicModelParams::enumDynamicModel theModel){
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEtacGamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEtacGamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEtacGamma];
+   
+
+   Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+   double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::etac];
+   double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::etac];
+   complex<double> theDynamicPart(1.,0.);
+   if(theModel == dynamicModelParams::BreitWigner) theDynamicPart = BreitWigner(fv2Phi, mass, width);
+   //complex<double> theDynamicPart = BreitWignerBlattW(fv2Phi, _phiMass, _phiMass, mass, width, 1);
+   
+   JmpGmp+=etaGammaAmp(1, 0, 1, theData, PsiToEtacGamMag, PsiToEtacGamPhi )*theDynamicPart;
+   JmpGmm+=etaGammaAmp(1, 0, -1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi  )*theDynamicPart;
+   JmmGmp+=etaGammaAmp(-1, 0, 1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi )*theDynamicPart;
+   JmmGmm+=etaGammaAmp(-1, 0, -1, theData,  PsiToEtacGamMag, PsiToEtacGamPhi  )*theDynamicPart;
+ }
+
+
+
+void 
+JpsiGamKsKlKKProdLh::calcEta2225Amp(EvtData* theData, fitParams& theParamVal, 
+				    complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm,
+				    dynamicModelParams::enumDynamicModel theModel){
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2225GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEta2225Gamma];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2225GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEta2225Gamma];
+  
+  Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+  double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::eta2225];
+  double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::eta2225];
+  complex<double> theDynamicPart(1.,0.);
+  if(theModel == dynamicModelParams::BreitWigner) theDynamicPart = BreitWigner(fv2Phi, mass, width);
+  //complex<double> theDynamicPart = BreitWignerBlattW(fv2Phi, _phiMass, _phiMass, mass, width, 1);
+  
+  JmpGmp+=etaGammaAmp(1, 0, 1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
+  JmpGmm+=etaGammaAmp(1, 0, -1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
+  JmmGmp+=etaGammaAmp(-1, 0, 1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
+  JmmGmm+=etaGammaAmp(-1, 0, -1, theData, PsiToEta2225GamMag, PsiToEta2225GamPhi )*theDynamicPart;
+  
+}
+
+
+
+void 
+JpsiGamKsKlKKProdLh::calcF02020Amp(EvtData* theData, fitParams& theParamVal, 
+				   complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+				   dynamicModelParams::enumDynamicModel theModel){
+  
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof02020GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF02020Gamma];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof02020GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF02020Gamma];
+  
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F02020ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F02020ToPhiPhi];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F02020ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F02020ToPhiPhi];
+  
+  Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+  dynamicModelParams theDynModel;
+  double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f02020];
+  
+  if( theModel == dynamicModelParams::Flatte  ){
+    double gKK =  theParamVal.gFactors[paramEnumJpsiGamKsKlKK::f02020gKK];
+    double gPhiPhi =  theParamVal.gFactors[paramEnumJpsiGamKsKlKK::f02020gPhiPhi];
+    initializeFlatteModel( theDynModel, fv2Phi, mass, gPhiPhi, gKK   );
+    
+  }else if( theModel == dynamicModelParams::BreitWigner ){
+    double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f02020];
+    initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
+  }else if( theModel == dynamicModelParams::MassIndependent ){
+    theDynModel.value=complex<double>(1.,0.);
+    theDynModel.dynamicModel = dynamicModelParams::MassIndependent;
+  }
+
+  
+  
+  JmpGmp+=f0GammaAmp(1, 1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
+  JmpGmm+=f0GammaAmp(1, -1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
+  JmmGmp+=f0GammaAmp(-1, 1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
+  JmmGmm+=f0GammaAmp(-1, -1, theData,  PsiTof02020GamMag, PsiTof02020GamPhi,F02020ToPhiPhiMag,F02020ToPhiPhiPhi,_useCommonProductionPhase, theDynModel );
+}
+
+
+
+void JpsiGamKsKlKKProdLh::calcF22300Amp(EvtData* theData, fitParams& theParamVal, 
+					complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+					dynamicModelParams::enumDynamicModel theModel){
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof2GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF22300Gamma];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof2GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF22300Gamma];
+  
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F2ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F22300ToPhiPhi];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F2ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F22300ToPhiPhi];
+  
+  Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+  double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f22300];
+  double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f22300];
+  
+  Spin f2Spin=2;
+  dynamicModelParams theDynModel;
+  if(theModel==dynamicModelParams::BreitWigner) {
+    initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  ); 
+  }
+  else if(theModel == dynamicModelParams::MassIndependent){
+    theDynModel.value=complex<double>(1.,0);
+    theDynModel.dynamicModel=dynamicModelParams::MassIndependent;
+  }
+  
+  
+  
+  JmpGmp+=f2GammaAmp(1, 1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+  JmpGmm+=f2GammaAmp(1, -1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+  JmmGmp+=f2GammaAmp(-1, 1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+  JmmGmm+=f2GammaAmp(-1, -1, f2Spin, theData,  PsiTof2GamMag, PsiTof2GamPhi,F2ToPhiPhiMag,F2ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+} 
+
+ 
+
+
+
+void 
+JpsiGamKsKlKKProdLh::calcE21870Amp(EvtData* theData, fitParams& theParamVal, 
+				   complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+				   dynamicModelParams::enumDynamicModel theModel){
+  
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToEta21870Gamma];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiToEta2GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToEta21870Gamma];
+  
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > Eta2ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::Eta21870ToPhiPhi];
+  std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > Eta2ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::Eta21870ToPhiPhi];
+  
+  Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+  double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::eta21870];
+  double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::eta21870];
+  
+  Spin eta2Spin=2;
+  dynamicModelParams theDynModel;
+  if(theModel==dynamicModelParams::BreitWigner){ initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
+  }
+  else if(theModel == dynamicModelParams::MassIndependent){
+    theDynModel.value=complex<double>(1.,0);
+    theDynModel.dynamicModel=dynamicModelParams::MassIndependent;
+  }
+  
+  JmpGmp+=f2GammaAmp(1, 1, eta2Spin, theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
+  JmpGmm+=f2GammaAmp(1, -1, eta2Spin,theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
+  JmmGmp+=f2GammaAmp(-1, 1, eta2Spin,theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width, _useCommonProductionPhase,theDynModel );
+  JmmGmm+=f2GammaAmp(-1, -1, eta2Spin, theData,  PsiToEta2GamMag, PsiToEta2GamPhi,Eta2ToPhiPhiMag,Eta2ToPhiPhiPhi,mass,width , _useCommonProductionPhase,theDynModel );
+}     
+
+
+
+
+ void 
+ JpsiGamKsKlKKProdLh::calcF1Amp(EvtData* theData, fitParams& theParamVal, 
+				complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+				dynamicModelParams::enumDynamicModel theModel){
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof1GamMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::PsiToF1Gamma];
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > PsiTof1GamPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::PsiToF1Gamma];
+   
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F1ToPhiPhiMag=theParamVal.Mags[paramEnumJpsiGamKsKlKK::F1ToPhiPhi];
+   std::map< boost::shared_ptr<const JPCLS>, double, pawian::Collection::SharedPtrLess > F1ToPhiPhiPhi=theParamVal.Phis[paramEnumJpsiGamKsKlKK::F1ToPhiPhi];
+   
+   Vector4<double> fv2Phi = theData->FourVecs[enumJpsiGamKsKlKKData::V4_KsKlKpKm_HeliPsi];
+   double mass = theParamVal.Masses[paramEnumJpsiGamKsKlKK::f1];
+   double width = theParamVal.Widths[paramEnumJpsiGamKsKlKK::f1];
+   
+   Spin f1Spin=1;
+   dynamicModelParams theDynModel;
+   if(theModel == dynamicModelParams::BreitWigner ){
+     initializeBreitWignerModel( theDynModel, fv2Phi,  mass, width, dynamicModelParams::BreitWigner  );
+   }
+   else if(theModel == dynamicModelParams::MassIndependent){
+     theDynModel.value=complex<double>(1.,0);
+     theDynModel.dynamicModel=dynamicModelParams::MassIndependent;
+   }
+   
+   JmpGmp+=f2GammaAmp(1, 1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+   JmpGmm+=f2GammaAmp(1, -1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+   JmmGmp+=f2GammaAmp(-1, 1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+   JmmGmm+=f2GammaAmp(-1, -1, f1Spin, theData,  PsiTof1GamMag, PsiTof1GamPhi,F1ToPhiPhiMag,F1ToPhiPhiPhi,mass,width, _useCommonProductionPhase, theDynModel );
+ }
diff --git a/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.hh b/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.hh
index f08d82d6c73d28eb76456d55163e88344204879b..e40f3ed5b89aaa162d04a61eec3c5c22bc8ae9b5 100644
--- a/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.hh
+++ b/Examples/JpsiGamKsKlKK/JpsiGamKsKlKKProdLh.hh
@@ -52,6 +52,10 @@ public:
   void useCommonProductionPhase( bool commonPhase ){_useCommonProductionPhase=commonPhase;}
   void massIndependentFit( bool massIndep){ _massIndependentFit=massIndep;  }
   
+  double calcComponentIntensity(  EvtData* theData, fitParams& theParamVal,  std::string component  );
+
+
+  
 protected:
 
   virtual complex<double> calcCoherentAmp(Spin Minit, Spin lamGam, fitParams&  theParamVal, EvtData* theData);  
@@ -91,6 +95,25 @@ protected:
   bool  initializeFlatteModel( dynamicModelParams &theDynModel, const Vector4<double> &fv2Phi, double mass, double gPhiPhi, double gKK );
   bool  initializeBreitWignerModel(dynamicModelParams &theDynModel,const Vector4<double> &fv2Phi, double mass, double width, dynamicModelParams::enumDynamicModel theModel  );
   
+  
+  void calcEtacGammaAmp( EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+			dynamicModelParams::enumDynamicModel theModel);
+  void calcEta2225Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm,
+		      dynamicModelParams::enumDynamicModel theModel);
+  
+  void calcF02020Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+		     dynamicModelParams::enumDynamicModel theModel);
+
+  void calcF22300Amp(EvtData* theData, fitParams& theParamVal,complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+		     dynamicModelParams::enumDynamicModel theModel);
+  
+  void calcE21870Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+		     dynamicModelParams::enumDynamicModel theModel);
+  
+  void calcF1Amp(EvtData* theData, fitParams& theParamVal, complex<double> &JmpGmp, complex<double> &JmpGmm, complex<double> &JmmGmp, complex<double> &JmmGmm, 
+		 dynamicModelParams::enumDynamicModel theModel);
+  
+  
   bool _etacHyp;
   bool _eta2225Hyp;
   bool _f02020Hyp;
diff --git a/Examples/JpsiGamKsKlKK/MJpsiGamKlKsKKApp.cc b/Examples/JpsiGamKsKlKK/MJpsiGamKlKsKKApp.cc
index 548c6101e22c095f5e185277c4e27c4459894392..d29a05548f95daf74623dd1006d51cfef92dc9aa 100644
--- a/Examples/JpsiGamKsKlKK/MJpsiGamKlKsKKApp.cc
+++ b/Examples/JpsiGamKsKlKK/MJpsiGamKlKsKKApp.cc
@@ -265,10 +265,28 @@ int main(int __argc,char *__argv[]){
 
   
   //calculate intensity contributions
-  //EvtData* evtdata = eventsData.getDataVecs();
-  //theLhPtr->calcEvtIntensity( evtdata    , finalFitParams );
+  JpsiGamKsKlKKProdLh* contrLh = new JpsiGamKsKlKKProdLh(theJpsiGamKsKlKKEventListPtr, hypMap);
+  contrLh->massIndependentFit( theAppParams.massIndependentFit() );
+  contrLh->useCommonProductionPhase( theAppParams.useCommonProductionPhases() );
   
-
+  boost::shared_ptr<const EvtDataBaseList> theEvtList=contrLh->getEventList();
+  const std::vector<EvtData*> mcList=theEvtList->getDataVecs();
+  
+  std::map<const std::string, bool>::const_iterator hypo= hypMap.begin();
+  while(hypo !=hypMap.end()){
+    if( hypo->second ){
+      
+      std::vector<EvtData*>::const_iterator it=mcList.begin();
+      double integral=0.0;
+      while(it!=mcList.end()){
+	integral+=contrLh->calcComponentIntensity( *it, finalFitParams, hypo->first );
+	//integral+= theLhPtr->calcComponentIntensity( *it, finalFitParams, "etacHyp" );
+	it++;
+      }
+      Info << "Events for component " << hypo->first << ": " << integral << endmsg;
+    }
+    hypo++;
+  }
   
   
   JpsiGamKsKlKKHist theHist(theLhPtr, finalFitParams);
diff --git a/Examples/JpsiGamKsKlKK/plotQA.C b/Examples/JpsiGamKsKlKK/plotQA.C
index b0bafce664bfd3dcbab376e38365012f48d55d3c..b534c0977639b8ca30301f9c15d3bc98d63dc6a6 100644
--- a/Examples/JpsiGamKsKlKK/plotQA.C
+++ b/Examples/JpsiGamKsKlKK/plotQA.C
@@ -46,8 +46,8 @@ void plotQA(TString fName="./JpsiGamKsKlKK.root"){
   c2->cd(ipad);
   plotHist("_chi");
   
-  c1->Print("qaPlots.pdf(");
-  c2->Print("qaPlots.pdf)");
+  c1->Print("qaPlots.ps(");
+  c2->Print("qaPlots.ps)");
   
 }