From b859d854a685ae75d4621a6920ce178e16005479 Mon Sep 17 00:00:00 2001 From: Bertram Kopf <bertram@pc14.ep1.rub.de> Date: Fri, 9 Jan 2015 13:29:28 +0100 Subject: [PATCH] improved pperformance in LSDecNonRef --- PwaUtils/LSDecNonRefAmps.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/PwaUtils/LSDecNonRefAmps.cc b/PwaUtils/LSDecNonRefAmps.cc index 33c82859..307450d0 100644 --- a/PwaUtils/LSDecNonRefAmps.cc +++ b/PwaUtils/LSDecNonRefAmps.cc @@ -148,6 +148,13 @@ complex<double> LSDecNonRefAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtD complex<double> result(0.,0.); std::vector< std::shared_ptr<const LScomb> >::iterator it; + std::map< std::shared_ptr<const LScomb>, complex<double> > dynLSs; + if (_absDyn->isLdependent()){ + for (it=_LSs.begin(); it!=_LSs.end(); ++it){ + dynLSs[*it]=_absDyn->eval(theData, grandmaAmp, (*it)->L); + } + } + std::map<Id3StringType, complex<double> >& currentWignerDMap=theData->WignerDStringId.at(_wignerDKey); for(Spin lambda1=lam1Min; lambda1<=lam1Max; ++lambda1){ @@ -161,7 +168,9 @@ complex<double> LSDecNonRefAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtD double theMag=_currentParamMags.at(*it); double thePhi=_currentParamPhis.at(*it); complex<double> expi(cos(thePhi), sin(thePhi)); - if (_absDyn->isLdependent()) amp+=theMag*expi*_cgPreFactor.at(*it).at(lambda1).at(lambda2)*_absDyn->eval(theData, grandmaAmp, (*it)->L); + // if (_absDyn->isLdependent()) amp+=theMag*expi*_cgPreFactor.at(*it).at(lambda1).at(lambda2)*_absDyn->eval(theData, grandmaAmp, (*it)->L); + // else amp+=theMag*expi*_cgPreFactor.at(*it).at(lambda1).at(lambda2); + if (_absDyn->isLdependent()) amp+=theMag*expi*_cgPreFactor.at(*it).at(lambda1).at(lambda2)*dynLSs.at(*it); else amp+=theMag*expi*_cgPreFactor.at(*it).at(lambda1).at(lambda2); } Id3StringType IdJLamXLam12=FunctionUtils::spin3Index(_J, lamX, lambda); -- GitLab