From 836645750dae3c4a068a4896fb7938d96bde1cc7 Mon Sep 17 00:00:00 2001 From: Bertram Kopf <bertram@pc14.ep1.rub.de> Date: Thu, 7 Apr 2016 10:41:57 +0200 Subject: [PATCH] switched from // std::map<std::thread::id, std::map<std::string, complex<float> > > _cachedDynMap; to cachedAmpIdMap for performance improvement --- PwaUtils/AbsXdecAmp.cc | 3 ++- PwaUtils/AbsXdecAmp.hh | 5 ++--- PwaUtils/HeliDecAmps.cc | 3 ++- PwaUtils/LSDecAmps.cc | 3 ++- PwaUtils/TensorDecAmps.cc | 3 ++- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/PwaUtils/AbsXdecAmp.cc b/PwaUtils/AbsXdecAmp.cc index 5b8ad817..361a7939 100644 --- a/PwaUtils/AbsXdecAmp.cc +++ b/PwaUtils/AbsXdecAmp.cc @@ -137,7 +137,8 @@ void AbsXdecAmp::calcDynamics(EvtData* theData, AbsXdecAmp* grandmaAmp){ if(!_absDyn->isLdependent()){ theMutex.lock(); - _cachedDynMap[std::this_thread::get_id()][_absDyn->grandMaKey(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp); + // _cachedDynMap[std::this_thread::get_id()][_absDyn->grandMaKey(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp); + _cachedDynIdMap[std::this_thread::get_id()][_absDyn->grandMaId(grandmaAmp)] = _absDyn->eval( theData, grandmaAmp); theMutex.unlock(); } if(!_daughter1IsStable) _decAmpDaughter1->calcDynamics(theData, this); diff --git a/PwaUtils/AbsXdecAmp.hh b/PwaUtils/AbsXdecAmp.hh index 4b778703..923d3a3f 100644 --- a/PwaUtils/AbsXdecAmp.hh +++ b/PwaUtils/AbsXdecAmp.hh @@ -45,7 +45,7 @@ class AbsDecay; //class AbsDynamics; -typedef CacheVector<std::map<std::string,std::map<Id2StringType, complex<float> > > > intStringShortComplFloatMap; +//typedef CacheVector<std::map<std::string,std::map<Id2StringType, complex<float> > > > intStringShortComplFloatMap; typedef CacheVector<std::map<unsigned short, std::map<Id2StringType, complex<float> > > > intUShortId2StringComplFloatMap; class AbsXdecAmp : public AbsParamHandler{ @@ -104,9 +104,8 @@ protected: Spin _lam2Min; Spin _lam2Max; - // intStringShortComplFloatMap _cachedAmpMap; intUShortId2StringComplFloatMap _cachedAmpIdMap; - std::map<std::thread::id, std::map<std::string, complex<float> > > _cachedDynMap; + std::map<std::thread::id, std::map<unsigned short, complex<float> > > _cachedDynIdMap; diff --git a/PwaUtils/HeliDecAmps.cc b/PwaUtils/HeliDecAmps.cc index ee1e9465..8684f0a5 100644 --- a/PwaUtils/HeliDecAmps.cc +++ b/PwaUtils/HeliDecAmps.cc @@ -260,7 +260,8 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, // result*=_preFactor*_isospinCG*sqrt(2.*_JPCPtr->J+1.); if (_absDyn->isLdependent()) result*=_cachedDynLMap.at(std::this_thread::get_id()); - else result*=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + // else result*=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + else result*=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp)); if(result.real()!=result.real()){ Alert << "result:\t" << result << endmsg; diff --git a/PwaUtils/LSDecAmps.cc b/PwaUtils/LSDecAmps.cc index 24c1a7b1..ab92ebea 100644 --- a/PwaUtils/LSDecAmps.cc +++ b/PwaUtils/LSDecAmps.cc @@ -173,7 +173,8 @@ complex<double> LSDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtData* t result+=amp; } } - if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + // if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + if (!_absDyn->isLdependent()) result *=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp)); return result; } diff --git a/PwaUtils/TensorDecAmps.cc b/PwaUtils/TensorDecAmps.cc index e73b6637..8cb20982 100644 --- a/PwaUtils/TensorDecAmps.cc +++ b/PwaUtils/TensorDecAmps.cc @@ -140,7 +140,8 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData result+=tmpResult; } - if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + //if (!_absDyn->isLdependent()) result *=_cachedDynMap.at(std::this_thread::get_id()).at(_absDyn->grandMaKey(grandmaAmp)); + if (!_absDyn->isLdependent()) result *=_cachedDynIdMap.at(std::this_thread::get_id()).at(_absDyn->grandMaId(grandmaAmp)); result*=_isospinCG; return result; -- GitLab