diff --git a/PwaUtils/EvtDataBaseList.hh b/PwaUtils/EvtDataBaseList.hh
index eb5b560aa2d6649e6e2b5f93da4f1ae19858011c..804975d25ae0c125470db2e06dcc39701f1da838 100644
--- a/PwaUtils/EvtDataBaseList.hh
+++ b/PwaUtils/EvtDataBaseList.hh
@@ -44,7 +44,7 @@ typedef std::map<unsigned short, double> mapShortDouble;
 typedef std::map<unsigned short, Vector4<double> > mapShort4Vec;
 typedef std::map<unsigned short, map<Id2StringType, complex<double> > > mapShortInt2Complex;
 typedef std::map<unsigned short, map<unsigned short, map<Id3StringType, complex<double> > > > mapShortShortInt3Complex;
-
+typedef std::map<unsigned short, map<Id3StringType, map<unsigned short, complex<double> > > > mapShortInt3ShortComplex;
 
 struct EvtData {
   mapShortInt3Complex WignerDIdId3;
@@ -55,6 +55,7 @@ struct EvtData {
   mapShortInt2Complex Complex2Spin;
   mapShortShortInt3Complex ComplexLS3Spin;
   mapShortShortInt3Complex ComplexN3Spin;
+  mapShortInt3ShortComplex Complex3SpinLS;
   double evtWeight;
   int evtNo;
 };
diff --git a/PwaUtils/IsobarTensorDecay.cc b/PwaUtils/IsobarTensorDecay.cc
index f526622112bf3f2fdc60978cb2ea3d44734500ad..1a1692cfb4bc478df3e1d3c68047e1c5729f9c4b 100644
--- a/PwaUtils/IsobarTensorDecay.cc
+++ b/PwaUtils/IsobarTensorDecay.cc
@@ -295,7 +295,8 @@ void IsobarTensorDecay::fillWignerDs(std::map<std::string, Vector4<double> >& fs
 	  }
 	  Id3StringType IdLamXLam1Lam2=FunctionUtils::spin3Index(lamMother, lamDaughter1, lamDaughter2);
 	  unsigned short currentLSId=(*itJPCLS)->idnumberLS;
-	  evtData->ComplexLS3Spin[_nameId][currentLSId][IdLamXLam1Lam2]=result(0);	  
+	  // evtData->ComplexLS3Spin[_nameId][currentLSId][IdLamXLam1Lam2]=result(0);
+          evtData->Complex3SpinLS[_nameId][IdLamXLam1Lam2][currentLSId]=result(0);
 	}
       }
     }
diff --git a/PwaUtils/TensorDecAmps.cc b/PwaUtils/TensorDecAmps.cc
index ee59d983a0a967e61ef734f661f26af84705dd75..2931e096bbac637470cc658a06a530fe1250fae6 100644
--- a/PwaUtils/TensorDecAmps.cc
+++ b/PwaUtils/TensorDecAmps.cc
@@ -119,7 +119,8 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData
 				      Spin lam1Max, Spin lam2Min, Spin lam2Max, bool withDecs) {
   complex<double> result(0.,0.);
 
-  map<unsigned short, map<Id3StringType, complex<double> > >& currentLS3SpinMap=theData->ComplexLS3Spin.at(_decay->nameId());
+  // map<unsigned short, map<Id3StringType, complex<double> > >& currentLS3SpinMap=theData->ComplexLS3Spin.at(_decay->nameId());
+  map<Id3StringType, map<unsigned short, complex<double> > >& current3SpinLSMap=theData->Complex3SpinLS.at(_decay->nameId());
   std::vector< std::shared_ptr<const LScomb> >::const_iterator itLS;
 
   for(Spin lambda1=-_Jdaughter1; lambda1<=_Jdaughter1; ++lambda1){
@@ -127,9 +128,11 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData
       for(Spin lambda2=-_Jdaughter2; lambda2<=_Jdaughter2; ++lambda2){ 
       if(lambda2<lam2Min || lambda2>lam2Max) continue;
       Id3StringType IdLamXLam1Lam2=FunctionUtils::spin3Index(lamX, lambda1, lambda2);
+      map<unsigned short, complex<double> >& currentLSMap = current3SpinLSMap.at(IdLamXLam1Lam2);
       complex<double> amp(0.,0.);
       for(itLS=_LSs.begin(); itLS!=_LSs.end(); ++itLS){
-	complex<double> tmpamp=_currentParamMagExpi.at(*itLS)*currentLS3SpinMap.at((*itLS)->idnumberLS).at(IdLamXLam1Lam2);
+	//complex<double> tmpamp=_currentParamMagExpi.at(*itLS)*currentLS3SpinMap.at((*itLS)->idnumberLS).at(IdLamXLam1Lam2);
+	complex<double> tmpamp=_currentParamMagExpi.at(*itLS)*currentLSMap.at((*itLS)->idnumberLS);
 	if (_absDyn->isLdependent()){
           tmpamp *=_cachedDynIdLSMap.at((*itLS)->L).at(_absDyn->grandMaId(grandmaAmp));
         }