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

added KpiS wave with isospin 3/2 in general PWA application

parent b79a420c
No related branches found
No related tags found
No related merge requests found
...@@ -36,10 +36,10 @@ lib Minuit2 : : <file>$(extern)/lib/Linux26SL6_x86_64_gcc444/libMinuit2.so : : ; ...@@ -36,10 +36,10 @@ lib Minuit2 : : <file>$(extern)/lib/Linux26SL6_x86_64_gcc444/libMinuit2.so : : ;
build-project qft++ ; build-project qft++ ;
build-project Utils ; build-project Utils ;
build-project ErrLogger ; build-project ErrLogger ;
build-project PwaDynamics ;
build-project PwaUtils ; build-project PwaUtils ;
build-project pbarpUtils ; build-project pbarpUtils ;
build-project epemUtils ; build-project epemUtils ;
build-project Particle ; build-project Particle ;
build-project Event ; build-project Event ;
build-project PwaDynamics ;
build-project Examples ; build-project Examples ;
...@@ -105,13 +105,19 @@ Meson a0Hat(1600) \hat{a}_0(1600) 0 0 1 -1 -1 1 0 0 0 1.600 0.300 ...@@ -105,13 +105,19 @@ Meson a0Hat(1600) \hat{a}_0(1600) 0 0 1 -1 -1 1 0 0 0 1.600 0.300
# #
# type name texName 3*Q 2*J P C G I I3 S C mass width dyn.f comment # type name texName 3*Q 2*J P C G I I3 S C mass width dyn.f comment
# #
Meson kappa \kappa 0 0 1 0 0 0 0 0 0 0.75 0.05 relBW [PDG nonett 1^3P_0] Meson kappa \kappa 0 0 1 0 0 0 0 -1 0 0.75 0.05 relBW [PDG nonett 1^3P_0]
Meson K K 0 0 -1 0 0 0 0 0 0 0.493 0.0001 relBW [PDG nonett 1^1S_0] Meson K K 0 0 -1 0 0 0 0 0 0 0.493 0.0001 relBW [PDG nonett 1^1S_0]
Meson K+ K^+ 3 0 -1 0 0 0 0 0 +1 0.49367 0.0001 relBW [PDG nonett 1^1S_0] Meson K+ K^+ 3 0 -1 0 0 0 0 0 +1 0.49367 0.0001 relBW [PDG nonett 1^1S_0]
Meson K- K^- -3 0 -1 0 0 0 0 0 -1 0.49367 0.0001 relBW [PDG nonett 1^1S_0] Meson K- K^- -3 0 -1 0 0 0 0 0 -1 0.49367 0.0001 relBW [PDG nonett 1^1S_0]
Meson K* K^\ast 0 2 -1 0 0 0 0 0 0 0.89116 0.0508 relBW [PDG nonett 1^3S_1] Meson K* K^\ast 0 2 -1 0 0 0 0 0 0 0.89116 0.0508 relBW [PDG nonett 1^3S_1]
Meson K*+ K^{\ast+} 0 2 -1 0 0 0 0 0 +1 0.8955 0.0508 relBW [PDG nonett 1^3S_1] Meson K*+ K^{\ast+} 0 2 -1 0 0 0 0 0 +1 0.8955 0.0508 relBW [PDG nonett 1^3S_1]
Meson K*- K^{\ast-} 0 2 -1 0 0 0 0 0 -1 0.8955 0.0505 relBW [PDG nonett 1^3S_1] Meson K*- K^{\ast-} 0 2 -1 0 0 0 0 0 -1 0.8955 0.0505 relBW [PDG nonett 1^3S_1]
Meson KPiS12 K{\pi}S12 0 0 1 0 0 1 0 -1 0 1. 1. relBW [PDG no idea]
Meson KPiS12+ K{\pi}S12^+ 3 0 1 0 0 1 1 -1 +1 1. 1. relBW [PDG no idea]
Meson KPiS12- K{\pi}S12^- -3 0 1 0 0 1 -1 1 -1 1. 1. relBW [PDG no idea]
Meson KPiS32 K{\pi}S32 0 0 1 0 0 3 0 -1 0 1. 1. relBW [PDG no idea]
Meson KPiS32+ K{\pi}S32^+ 3 0 1 0 0 3 1 -1 +1 1. 1. relBW [PDG no idea]
Meson KPiS32- K{\pi}S32^- -3 0 1 0 0 3 -1 1 -1 1. 1. relBW [PDG no idea]
Meson K1(1270) K_1(1270) 0 2 1 0 0 0 0 0 0 1.273 0.090 relBW [PDG nonett 2^1P_1] Meson K1(1270) K_1(1270) 0 2 1 0 0 0 0 0 0 1.273 0.090 relBW [PDG nonett 2^1P_1]
Meson K1(1400) K_1(1400) 0 2 -1 0 0 0 0 0 0 1.402 0.174 relBW [PDG nonett 2^3P_1] Meson K1(1400) K_1(1400) 0 2 -1 0 0 0 0 0 0 1.402 0.174 relBW [PDG nonett 2^3P_1]
Meson K*1(1410) K_1^\ast(1410) 0 2 -1 0 0 1 0 1 0 1.412 0.227 relBW [PDG no idea] Meson K*1(1410) K_1^\ast(1410) 0 2 -1 0 0 1 0 1 0 1.412 0.227 relBW [PDG no idea]
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
#include "PwaUtils/AbsDynamics.hh" #include "PwaUtils/AbsDynamics.hh"
#include "PwaUtils/BreitWignerDynamics.hh" #include "PwaUtils/BreitWignerDynamics.hh"
#include "PwaUtils/FlatteDynamics.hh" #include "PwaUtils/FlatteDynamics.hh"
#include "PwaUtils/KPiSWaveDynamics.hh" #include "PwaUtils/KPiSWaveIso12Dynamics.hh"
#include "PwaUtils/KPiSWaveIso32Dynamics.hh"
#include "PwaUtils/WoDynamics.hh" #include "PwaUtils/WoDynamics.hh"
#include "ErrLogger/ErrLogger.hh" #include "ErrLogger/ErrLogger.hh"
...@@ -52,8 +53,10 @@ boost::shared_ptr<AbsDynamics> DynRegistry::getDynamics(boost::shared_ptr<AbsDec ...@@ -52,8 +53,10 @@ boost::shared_ptr<AbsDynamics> DynRegistry::getDynamics(boost::shared_ptr<AbsDec
result= boost::shared_ptr<AbsDynamics>(new BreitWignerDynamics(theName, fsParticles, theDec->motherPart())); result= boost::shared_ptr<AbsDynamics>(new BreitWignerDynamics(theName, fsParticles, theDec->motherPart()));
else if(theDec->dynType()=="Flatte") else if(theDec->dynType()=="Flatte")
result= boost::shared_ptr<AbsDynamics>(new FlatteDynamics(theName, fsParticles, theDec->motherPart(), theDec->firstDecayChannel(), theDec->secondDecayChannel())); result= boost::shared_ptr<AbsDynamics>(new FlatteDynamics(theName, fsParticles, theDec->motherPart(), theDec->firstDecayChannel(), theDec->secondDecayChannel()));
else if(theDec->dynType()=="KpiSWave") else if(theDec->dynType()=="KpiSWaveIso12")
result= boost::shared_ptr<AbsDynamics>(new KPiSWaveDynamics(theName, fsParticles, theDec->motherPart())); result= boost::shared_ptr<AbsDynamics>(new KPiSWaveIso12Dynamics(theName, fsParticles, theDec->motherPart()));
else if(theDec->dynType()=="KpiSWaveIso32")
result= boost::shared_ptr<AbsDynamics>(new KPiSWaveIso32Dynamics(theName, fsParticles, theDec->motherPart()));
else if(theDec->dynType()=="WoDynamics") result= boost::shared_ptr<AbsDynamics>(new WoDynamics(theName, fsParticles, theDec->motherPart())); else if(theDec->dynType()=="WoDynamics") result= boost::shared_ptr<AbsDynamics>(new WoDynamics(theName, fsParticles, theDec->motherPart()));
else{ else{
Alert << "Dyn type:\t" << theDec->dynType() << "\tdoes not exist" << endmsg; Alert << "Dyn type:\t" << theDec->dynType() << "\tdoes not exist" << endmsg;
......
// KPiSWaveDynamics class definition file. -*- C++ -*- // KPiSWaveIso12Dynamics class definition file. -*- C++ -*-
// Copyright 20123Bertram Kopf // Copyright 20123Bertram Kopf
#include <getopt.h> #include <getopt.h>
#include <fstream> #include <fstream>
#include <string> #include <string>
#include "PwaUtils/KPiSWaveDynamics.hh" #include "PwaUtils/KPiSWaveIso12Dynamics.hh"
#include "PwaUtils/XdecAmpRegistry.hh" #include "PwaUtils/XdecAmpRegistry.hh"
#include "PwaUtils/AbsDecay.hh" #include "PwaUtils/AbsDecay.hh"
#include "PwaUtils/AbsXdecAmp.hh" #include "PwaUtils/AbsXdecAmp.hh"
...@@ -15,23 +15,23 @@ ...@@ -15,23 +15,23 @@
#include "PwaDynamics/FVector.hh" #include "PwaDynamics/FVector.hh"
#include "PwaDynamics/PVectorKPiSFocus.hh" #include "PwaDynamics/PVectorKPiSFocus.hh"
KPiSWaveDynamics::KPiSWaveDynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) : KPiSWaveIso12Dynamics::KPiSWaveIso12Dynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
AbsDynamics(name, fsParticles, mother) AbsDynamics(name, fsParticles, mother)
{ {
_kMatr = boost::shared_ptr<KMatrixKPiSFocus> (new KMatrixKPiSFocus(1)); _kMatr = boost::shared_ptr<KMatrixKPiSFocus> (new KMatrixKPiSFocus(1));
} }
KPiSWaveDynamics::~KPiSWaveDynamics() KPiSWaveIso12Dynamics::~KPiSWaveIso12Dynamics()
{ {
} }
complex<double> KPiSWaveDynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom){ complex<double> KPiSWaveIso12Dynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom){
complex<double> result(0.,0.); complex<double> result(0.,0.);
int evtNo=theData->evtNo; int evtNo=theData->evtNo;
std::string currentKey="default"; std::string currentKey="default";
// if(0!=grandmaAmp) currentKey=_massKey+grandmaAmp->absDec()->dynKey();
if(0!=grandmaAmp) currentKey=_massKey+grandmaAmp->absDec()->massParKey(); if(0!=grandmaAmp) currentKey=_massKey+grandmaAmp->absDec()->massParKey();
if ( _cacheAmps && !_recalcMap[currentKey]){ if ( _cacheAmps && !_recalcMap[currentKey]){
...@@ -52,7 +52,7 @@ complex<double> result(0.,0.); ...@@ -52,7 +52,7 @@ complex<double> result(0.,0.);
return result; return result;
} }
void KPiSWaveDynamics::getDefaultParams(fitParams& fitVal, fitParams& fitErr){ void KPiSWaveIso12Dynamics::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
std::map<std::string, std::map<std::string, double> >::iterator it1; std::map<std::string, std::map<std::string, double> >::iterator it1;
for(it1=_currentbFactorMap.begin(); it1!=_currentbFactorMap.end(); ++it1){ for(it1=_currentbFactorMap.begin(); it1!=_currentbFactorMap.end(); ++it1){
...@@ -90,7 +90,7 @@ void KPiSWaveDynamics::getDefaultParams(fitParams& fitVal, fitParams& fitErr){ ...@@ -90,7 +90,7 @@ void KPiSWaveDynamics::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
} }
} }
bool KPiSWaveDynamics::checkRecalculation(fitParams& theParamVal){ bool KPiSWaveIso12Dynamics::checkRecalculation(fitParams& theParamVal){
_recalculate=false; _recalculate=false;
std::map<std::string, std::map<std::string, double> >::iterator it1; std::map<std::string, std::map<std::string, double> >::iterator it1;
...@@ -144,7 +144,7 @@ bool KPiSWaveDynamics::checkRecalculation(fitParams& theParamVal){ ...@@ -144,7 +144,7 @@ bool KPiSWaveDynamics::checkRecalculation(fitParams& theParamVal){
return _recalculate; return _recalculate;
} }
void KPiSWaveDynamics::updateFitParams(fitParams& theParamVal){ void KPiSWaveIso12Dynamics::updateFitParams(fitParams& theParamVal){
std::map<std::string, std::map<std::string, double> >::iterator it1; std::map<std::string, std::map<std::string, double> >::iterator it1;
for(it1=_currentbFactorMap.begin(); it1!=_currentbFactorMap.end(); ++it1){ for(it1=_currentbFactorMap.begin(); it1!=_currentbFactorMap.end(); ++it1){
...@@ -190,14 +190,12 @@ void KPiSWaveDynamics::updateFitParams(fitParams& theParamVal){ ...@@ -190,14 +190,12 @@ void KPiSWaveDynamics::updateFitParams(fitParams& theParamVal){
} }
} }
void KPiSWaveDynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){ void KPiSWaveIso12Dynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){
if(0==theDec){ if(0==theDec){
Alert << "Can not add AbsXdecAmp; 0 pointer!!!" << endmsg; Alert << "Can not add AbsXdecAmp; 0 pointer!!!" << endmsg;
exit(1); exit(1);
} }
// std::string theName=_massKey+theDec->motherJPC()->name();
// std::string theName=_massKey+theDec->dynKey();
std::string theName=_massKey+theDec->massParKey(); std::string theName=_massKey+theDec->massParKey();
std::cout << "addGrandMa:\t" << theName << std::endl; std::cout << "addGrandMa:\t" << theName << std::endl;
...@@ -212,11 +210,11 @@ void KPiSWaveDynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){ ...@@ -212,11 +210,11 @@ void KPiSWaveDynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){
_currentaProdMap[theName]["a_KpiPosNeg"]=1.; _currentaProdMap[theName]["a_KpiPosNeg"]=1.;
_currentaProdMap[theName]["a_KetapPosNeg"]=1.; _currentaProdMap[theName]["a_KetapPosNeg"]=1.;
_currentbProdMap[theName]["b_KpiPosNeg"]=1.; _currentbProdMap[theName]["b_KpiPosNeg"]=0.5;
_currentbProdMap[theName]["b_KetapPosNeg"]=0.5; _currentbProdMap[theName]["b_KetapPosNeg"]=0.5;
_currentcProdMap[theName]["c_KpiPosNeg"]=1.; _currentcProdMap[theName]["c_KpiPosNeg"]=0.1;
_currentcProdMap[theName]["c_KetapPosNeg"]=0.5; _currentcProdMap[theName]["c_KetapPosNeg"]=0.1;
_currentphaseProdMap[theName]["KpiPhi"]=0.; _currentphaseProdMap[theName]["KpiPhi"]=0.;
_currentphaseProdMap[theName]["KetapPhi"]=0.; _currentphaseProdMap[theName]["KetapPhi"]=0.;
...@@ -240,7 +238,7 @@ void KPiSWaveDynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){ ...@@ -240,7 +238,7 @@ void KPiSWaveDynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){
_recalcMap[theName]=true; _recalcMap[theName]=true;
} }
const std::string& KPiSWaveDynamics::grandMaKey(AbsXdecAmp* grandmaAmp){ const std::string& KPiSWaveIso12Dynamics::grandMaKey(AbsXdecAmp* grandmaAmp){
if(0==grandmaAmp) return _grandmaKey; if(0==grandmaAmp) return _grandmaKey;
// return grandmaAmp->absDec()->dynKey(); // return grandmaAmp->absDec()->dynKey();
return grandmaAmp->absDec()->massParKey(); return grandmaAmp->absDec()->massParKey();
......
// KPiSWaveDynamics class definition file. -*- C++ -*- // KPiSWaveIso12Dynamics class definition file. -*- C++ -*-
// Copyright 2013 Bertram Kopf // Copyright 2013 Bertram Kopf
#pragma once #pragma once
...@@ -17,11 +17,11 @@ class KMatrixKPiSFocus; ...@@ -17,11 +17,11 @@ class KMatrixKPiSFocus;
class FVector; class FVector;
class PVectorKPiSFocus; class PVectorKPiSFocus;
class KPiSWaveDynamics : public AbsDynamics{ class KPiSWaveIso12Dynamics : public AbsDynamics{
public: public:
KPiSWaveDynamics(std::string& massKey, std::vector<Particle*>& fsParticles, Particle* mother); KPiSWaveIso12Dynamics(std::string& massKey, std::vector<Particle*>& fsParticles, Particle* mother);
virtual ~KPiSWaveDynamics(); virtual ~KPiSWaveIso12Dynamics();
virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom=0); virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom=0);
......
// KPiSWaveIso32Dynamics class definition file. -*- C++ -*-
// Copyright 2013 Bertram Kopf
#include <getopt.h>
#include <fstream>
#include <string>
#include "PwaUtils/KPiSWaveIso32Dynamics.hh"
#include "PwaUtils/XdecAmpRegistry.hh"
#include "PwaUtils/AbsDecay.hh"
#include "PwaUtils/AbsXdecAmp.hh"
#include "ErrLogger/ErrLogger.hh"
#include "Particle/Particle.hh"
#include "PwaDynamics/KMatrixKPiSFocus.hh"
#include "PwaDynamics/FVector.hh"
#include "PwaDynamics/PVectorKPiSFocus.hh"
KPiSWaveIso32Dynamics::KPiSWaveIso32Dynamics(std::string& name, std::vector<Particle*>& fsParticles, Particle* mother) :
AbsDynamics(name, fsParticles, mother)
{
_kMatr = boost::shared_ptr<KMatrixKPiSFocus> (new KMatrixKPiSFocus(3));
}
KPiSWaveIso32Dynamics::~KPiSWaveIso32Dynamics()
{
}
complex<double> KPiSWaveIso32Dynamics::eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom){
complex<double> result(0.,0.);
int evtNo=theData->evtNo;
std::string currentKey="default";
if(0!=grandmaAmp) currentKey=_massKey+grandmaAmp->absDec()->massParKey();
if ( _cacheAmps && !_recalcMap[currentKey]){
result=_cachedStringMap[evtNo][currentKey];
}
else{
theMutex.lock();
boost::shared_ptr<FVector> currentFVec=_fVecMap[currentKey];
currentFVec->evalMatrix(theData->FourVecsString[_dynKey].M());
result=(*currentFVec)[0];
if ( _cacheAmps){
_cachedStringMap[evtNo][currentKey]=result;
}
theMutex.unlock();
}
return result;
}
void KPiSWaveIso32Dynamics::getDefaultParams(fitParams& fitVal, fitParams& fitErr){
std::map<std::string, std::map<std::string, double> >::iterator it1;
for(it1=_currentaProdMap.begin(); it1!=_currentaProdMap.end(); ++it1){
std::map<std::string, double>::iterator it2;
std::map<std::string, double>& aProds=it1->second;
for(it2=aProds.begin(); it2!=aProds.end(); ++it2){
fitVal.otherParams[it1->first+it2->first]=it2->second;
fitErr.otherParams[it1->first+it2->first]=1.;
}
std::map<std::string, double>& bProds=_currentbProdMap[it1->first];
for(it2=bProds.begin(); it2!=bProds.end(); ++it2){
fitVal.otherParams[it1->first+it2->first]=it2->second;
fitErr.otherParams[it1->first+it2->first]=1.;
}
std::map<std::string, double>& cProds=_currentcProdMap[it1->first];
for(it2=cProds.begin(); it2!=cProds.end(); ++it2){
fitVal.otherParams[it1->first+it2->first]=it2->second;
fitErr.otherParams[it1->first+it2->first]=1.;
}
std::map<std::string, double>& phaseProds=_currentphaseProdMap[it1->first];
for(it2=phaseProds.begin(); it2!=phaseProds.end(); ++it2){
fitVal.otherParams[it1->first+it2->first]=it2->second;
fitErr.otherParams[it1->first+it2->first]=1.;
}
}
}
bool KPiSWaveIso32Dynamics::checkRecalculation(fitParams& theParamVal){
_recalculate=false;
std::map<std::string, std::map<std::string, double> >::iterator it1;
for(it1=_currentaProdMap.begin(); it1!=_currentaProdMap.end(); ++it1){
_recalcMap[it1->first]=false;
std::map<std::string, double>::iterator it2;
std::map<std::string, double>& aProds=it1->second;
for(it2=aProds.begin(); it2!=aProds.end(); ++it2){
if (fabs(it2->second - theParamVal.otherParams[it1->first+it2->first]) > 1.e-10){
_recalculate=true;
_recalcMap[it1->first]=true;
}
}
std::map<std::string, double>& bProds=_currentbProdMap[it1->first];
for(it2=bProds.begin(); it2!=bProds.end(); ++it2){
if (fabs(it2->second - theParamVal.otherParams[it1->first+it2->first]) > 1.e-10){
_recalculate=true;
_recalcMap[it1->first]=true;
}
}
std::map<std::string, double>& cProds=_currentcProdMap[it1->first];
for(it2=cProds.begin(); it2!=cProds.end(); ++it2){
if (fabs(it2->second - theParamVal.otherParams[it1->first+it2->first]) > 1.e-10){
_recalculate=true;
_recalcMap[it1->first]=true;
}
}
std::map<std::string, double>& phaseProds=_currentphaseProdMap[it1->first];
for(it2=phaseProds.begin(); it2!=phaseProds.end(); ++it2){
if (fabs(it2->second - theParamVal.otherParams[it1->first+it2->first]) > 1.e-10){
_recalculate=true;
_recalcMap[it1->first]=true;
}
}
}
return _recalculate;
}
void KPiSWaveIso32Dynamics::updateFitParams(fitParams& theParamVal){
std::map<std::string, std::map<std::string, double> >::iterator it1;
for(it1=_currentaProdMap.begin(); it1!=_currentaProdMap.end(); ++it1){
std::map<std::string, double>::iterator it2;
std::map<std::string, double>& aProds = it1->second;
for(it2=aProds.begin(); it2!=aProds.end(); ++it2){
it2->second = theParamVal.otherParams[it1->first+it2->first];
}
std::map<std::string, double>& bProds=_currentbProdMap[it1->first];
for(it2=bProds.begin(); it2!=bProds.end(); ++it2){
it2->second = theParamVal.otherParams[it1->first+it2->first];
}
std::map<std::string, double>& cProds=_currentcProdMap[it1->first];
for(it2=cProds.begin(); it2!=cProds.end(); ++it2){
it2->second = theParamVal.otherParams[it1->first+it2->first];
}
std::map<std::string, double>& phaseProds=_currentphaseProdMap[it1->first];
for(it2=phaseProds.begin(); it2!=phaseProds.end(); ++it2){
it2->second = theParamVal.otherParams[it1->first+it2->first];
}
boost::shared_ptr<PVectorKPiSFocus> currentPVec=_pVecMap[it1->first];
currentPVec->updateAprod(0, aProds["a_PosNeg"]);
currentPVec->updateBprod(0, bProds["b_PosNeg"]);
currentPVec->updateCprod(0, cProds["c_PosNeg"]);
currentPVec->updatePhaseprod(0, phaseProds["Phi"]);
}
}
void KPiSWaveIso32Dynamics::addGrandMa(boost::shared_ptr<AbsDecay> theDec){
if(0==theDec){
Alert << "Can not add AbsXdecAmp; 0 pointer!!!" << endmsg;
exit(1);
}
std::string theName=_massKey+theDec->massParKey();
std::cout << "addGrandMa:\t" << theName << std::endl;
std::map<std::string, boost::shared_ptr<FVector> >::iterator it = _fVecMap.find(theName);
if (it != _fVecMap.end()) return;
boost::shared_ptr<PVectorKPiSFocus> currentPVector=boost::shared_ptr<PVectorKPiSFocus>(new PVectorKPiSFocus(_kMatr));
_pVecMap[theName]=currentPVector;
_currentaProdMap[theName]["a_PosNeg"]=1.;
_currentbProdMap[theName]["b_PosNeg"]=0.5;
_currentcProdMap[theName]["c_PosNeg"]=0.1;
_currentphaseProdMap[theName]["Phi"]=0.;
currentPVector->updateAprod(0, _currentaProdMap[theName]["a_PosNeg"]);
currentPVector->updateBprod(0, _currentbProdMap[theName]["b_PosNeg"]);
currentPVector->updateCprod(0, _currentcProdMap[theName]["c_PosNeg"]);
currentPVector->updatePhaseprod(0, _currentphaseProdMap[theName]["Phi"]);
boost::shared_ptr<FVector> currentFVector=boost::shared_ptr<FVector>(new FVector(_kMatr, currentPVector));
_fVecMap[theName]=currentFVector;
_recalcMap[theName]=true;
}
const std::string& KPiSWaveIso32Dynamics::grandMaKey(AbsXdecAmp* grandmaAmp){
if(0==grandmaAmp) return _grandmaKey;
return grandmaAmp->absDec()->massParKey();
}
// KPiSWaveIso32Dynamics class definition file. -*- C++ -*-
// Copyright 2013 Bertram Kopf
#pragma once
#include <iostream>
#include <vector>
#include <complex>
#include <map>
#include <string>
#include <boost/shared_ptr.hpp>
#include "PwaUtils/AbsDynamics.hh"
class AbsXdecAmp;
class KMatrixKPiSFocus;
class FVector;
class PVectorKPiSFocus;
class KPiSWaveIso32Dynamics : public AbsDynamics{
public:
KPiSWaveIso32Dynamics(std::string& massKey, std::vector<Particle*>& fsParticles, Particle* mother);
virtual ~KPiSWaveIso32Dynamics();
virtual complex<double> eval(EvtData* theData, AbsXdecAmp* grandmaAmp, Spin OrbMom=0);
virtual void getDefaultParams(fitParams& fitVal, fitParams& fitErr);
virtual bool checkRecalculation(fitParams& theParamVal);
virtual void updateFitParams(fitParams& theParamVal);
virtual void addGrandMa(boost::shared_ptr<AbsDecay> theDec);
virtual const std::string& grandMaKey(AbsXdecAmp* grandmaAmp);
protected:
// std::string _massKey;
double _currentMass;
std::map<int, complex<double> > _cachedMap;
std::map<std::string, boost::shared_ptr<AbsXdecAmp> > _grandMaAmpMap;
boost::shared_ptr<KMatrixKPiSFocus> _kMatr;
std::map<std::string, boost::shared_ptr<FVector> > _fVecMap;
std::map<std::string, boost::shared_ptr<PVectorKPiSFocus> > _pVecMap;
// std::map<std::string, std::map<std::string, double> > _currentbFactorMap;
std::map<std::string, std::map<std::string, double> > _currentaProdMap;
std::map<std::string, std::map<std::string, double> > _currentbProdMap;
std::map<std::string, std::map<std::string, double> > _currentcProdMap;
std::map<std::string, std::map<std::string, double> > _currentphaseProdMap;
std::map<int, std::map<std::string, complex<float> > > _cachedStringMap;
std::map<std::string, bool > _recalcMap;
private:
};
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