diff --git a/PwaDynamics/FVector.cc b/PwaDynamics/FVector.cc index a908535c0474d8d6b6a033478d105aa534e5e11a..15b03ca226910bf7aca38f2dcea7eb5b8b97f3b1 100644 --- a/PwaDynamics/FVector.cc +++ b/PwaDynamics/FVector.cc @@ -22,6 +22,7 @@ //************************************************************************// #include "PwaDynamics/FVector.hh" +#include "ErrLogger/ErrLogger.hh" //#include "qft++/relativistic-quantum-mechanics/Utils.hh" @@ -88,6 +89,11 @@ complex<double> FVector::evalProjMatrix(const double mass, int index){ for(int i=0;i<NumRows(); ++i){ result+=denomMatrInv(index,i)*(*_Pvector)(i,0); } + + if(result.real() != result.real()){ + Alert << "result:\t" << result << endmsg; + exit(0); + } return result; } diff --git a/PwaDynamics/KMatrixSlowAdlerCorRel.cc b/PwaDynamics/KMatrixSlowAdlerCorRel.cc index 4e5ef07b24c6cc7f54bf070c2880cebb5f2c1efe..9869875ac705bd57501fed66512e90b41915b10c 100644 --- a/PwaDynamics/KMatrixSlowAdlerCorRel.cc +++ b/PwaDynamics/KMatrixSlowAdlerCorRel.cc @@ -60,8 +60,21 @@ void KMatrixSlowAdlerCorRel::evalMatrix(const double mass){ (*this)+= *(*it); } - double adlerFactor=(1.-_sAdler0)/(mass*mass-_sAdler0)*(mass*mass-_sAdler*0.1349766*0.1349766/2.); - double s0ScatFactor=(1.0-_s0Scat)/(mass*mass-_s0Scat); + double sAdler0Denom=mass*mass-_sAdler0; + if( fabs(sAdler0Denom)<1e-10){ + if(sAdler0Denom<0) sAdler0Denom=-1e-10; + else sAdler0Denom=1e-10; + } + + + double adlerFactor=(1.-_sAdler0)/sAdler0Denom*(mass*mass-_sAdler*0.1349766*0.1349766/2.); + + double s0ScatDenom=mass*mass-_s0Scat; + if( fabs(s0ScatDenom)<1e-10){ + if(s0ScatDenom<0.) s0ScatDenom=-1e-10; + else s0ScatDenom=1e-10; + } + double s0ScatFactor=(1.0-_s0Scat)/s0ScatDenom; for (int i=0; i<NumRows(); ++i){ for (int j=0; j<NumCols(); ++j){ diff --git a/PwaDynamics/PVectorSlowCorRel.cc b/PwaDynamics/PVectorSlowCorRel.cc index f812afa8a8696761de9ddfdc1baa5b653f76b0be..ecd76061bc39f34f3714becd5eec466c3a4f4792 100644 --- a/PwaDynamics/PVectorSlowCorRel.cc +++ b/PwaDynamics/PVectorSlowCorRel.cc @@ -47,8 +47,14 @@ void PVectorSlowCorRel::evalMatrix(const double mass){ thePVector += *(*it); } + double s0prodDenom=mass*mass-_s0prod; + if(fabs(s0prodDenom)<1e-10){ + if (s0prodDenom<0.) s0prodDenom=-1e-10; + else s0prodDenom=1e-10; + } + for (int i=0; i<thePVector.NumRows(); ++i){ - this->operator()(i,0)=thePVector(i,0)+ _fProdVec[i]*(1.0-_s0prod)/(mass*mass-_s0prod); + this->operator()(i,0)=thePVector(i,0)+ _fProdVec[i]*(1.0-_s0prod)/s0prodDenom; } } diff --git a/PwaUtils/HeliDecAmps.cc b/PwaUtils/HeliDecAmps.cc index c27233038d6b41da4e55feb57320e4c28bf308bd..9538145af68ce156dc8119c143ca96f19e2ce992 100644 --- a/PwaUtils/HeliDecAmps.cc +++ b/PwaUtils/HeliDecAmps.cc @@ -129,7 +129,7 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, int evtNo=theData->evtNo; if ( _cacheAmps && !_recalculate){ - result=_cachedAmpMap[evtNo][lamX][lamFs]; + result=_cachedAmpMap.at(evtNo).at(lamX).at(lamFs); result*=_absDyn->eval(theData, grandmaAmp); if(result.real()!=result.real()) DebugMsg << "result:\t" << result << endmsg; return result; @@ -148,9 +148,9 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, if(_enabledlamFsDaughter2 && lamFs!=lambda2) continue; double theMag=it->second; - double thePhi=_currentParamPhiLamLams[it->first]; + double thePhi=_currentParamPhiLamLams.at(it->first); complex<double> expi(cos(thePhi), sin(thePhi)); - complex<double> amp = it->first->parityFactor*theMag*expi*conj( theData->WignerDsString[_wignerDKey][it->first->J][lamX][lambda]); + complex<double> amp = it->first->parityFactor*theMag*expi*conj( theData->WignerDsString.at(_wignerDKey).at(it->first->J).at(lamX).at(lambda)); result+=amp*daughterAmp(lambda1, lambda2, theData, lamFs); } @@ -163,7 +163,10 @@ complex<double> HeliDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, } result*=_absDyn->eval(theData, grandmaAmp); - if(result.real()!=result.real()) DebugMsg << "result:\t" << result << endmsg; + if(result.real()!=result.real()){ + Alert << "result:\t" << result << endmsg; + exit(0); + } return result; } diff --git a/PwaUtils/LSDecAmps.cc b/PwaUtils/LSDecAmps.cc index e2400bb075104fa629079a3bb704a350ee9c9b59..a13a29b9c42cfc3f224031363544848ba07dfb27 100644 --- a/PwaUtils/LSDecAmps.cc +++ b/PwaUtils/LSDecAmps.cc @@ -140,6 +140,13 @@ complex<double> LSDecAmps::XdecAmp(Spin& lamX, EvtData* theData, Spin& lamFs, Ab } result*=_absDyn->eval(theData, grandmaAmp); + if(result.real()!=result.real()){ + Info << "dyn name: " << _absDyn->name() + << "\nname(): " << name() + << endmsg; + Alert << "result:\t" << result << endmsg; + exit(0); + } return result; } @@ -169,6 +176,10 @@ complex<double> LSDecAmps::lsLoop(Spin& lamX, EvtData* theData, Spin& lam1Min, S } } result*=_preFactor*_isospinCG; + if(result.real()!=result.real()){ + Alert << "result:\t" << result << endmsg; + exit(0); + } return result; }