Skip to content
Snippets Groups Projects
Commit 83664575 authored by Bertram Kopf's avatar Bertram Kopf
Browse files

switched from // std::map<std::thread::id, std::map<std::string,...

switched from   //  std::map<std::thread::id, std::map<std::string, complex<float> > > _cachedDynMap; to cachedAmpIdMap for performance improvement
parent a8943f7a
No related branches found
No related tags found
No related merge requests found
...@@ -137,7 +137,8 @@ void AbsXdecAmp::calcDynamics(EvtData* theData, AbsXdecAmp* grandmaAmp){ ...@@ -137,7 +137,8 @@ void AbsXdecAmp::calcDynamics(EvtData* theData, AbsXdecAmp* grandmaAmp){
if(!_absDyn->isLdependent()){ if(!_absDyn->isLdependent()){
theMutex.lock(); 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(); theMutex.unlock();
} }
if(!_daughter1IsStable) _decAmpDaughter1->calcDynamics(theData, this); if(!_daughter1IsStable) _decAmpDaughter1->calcDynamics(theData, this);
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
class AbsDecay; class AbsDecay;
//class AbsDynamics; //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; typedef CacheVector<std::map<unsigned short, std::map<Id2StringType, complex<float> > > > intUShortId2StringComplFloatMap;
class AbsXdecAmp : public AbsParamHandler{ class AbsXdecAmp : public AbsParamHandler{
...@@ -104,9 +104,8 @@ protected: ...@@ -104,9 +104,8 @@ protected:
Spin _lam2Min; Spin _lam2Min;
Spin _lam2Max; Spin _lam2Max;
// intStringShortComplFloatMap _cachedAmpMap;
intUShortId2StringComplFloatMap _cachedAmpIdMap; 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;
......
...@@ -260,7 +260,8 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, ...@@ -260,7 +260,8 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs,
// result*=_preFactor*_isospinCG*sqrt(2.*_JPCPtr->J+1.); // result*=_preFactor*_isospinCG*sqrt(2.*_JPCPtr->J+1.);
if (_absDyn->isLdependent()) result*=_cachedDynLMap.at(std::this_thread::get_id()); 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()){ if(result.real()!=result.real()){
Alert << "result:\t" << result << endmsg; Alert << "result:\t" << result << endmsg;
......
...@@ -173,7 +173,8 @@ complex<double> LSDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtData* t ...@@ -173,7 +173,8 @@ complex<double> LSDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin& lamX, EvtData* t
result+=amp; 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; return result;
} }
......
...@@ -140,7 +140,8 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData ...@@ -140,7 +140,8 @@ complex<double> TensorDecAmps::lsLoop(AbsXdecAmp* grandmaAmp, Spin lamX, EvtData
result+=tmpResult; 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; result*=_isospinCG;
return result; return result;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment