Changeset View
Changeset View
Standalone View
Standalone View
src/LauIsobarDynamics.cc
Show First 20 Lines • Show All 783 Lines • ▼ Show 20 Lines | LauAbsResonance* LauIsobarDynamics::addIncoherentResonance(const TString& resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType) | ||||
// Finally, add the resonance object to the internal array | // Finally, add the resonance object to the internal array | ||||
sigIncohResonances_.push_back(theResonance); | sigIncohResonances_.push_back(theResonance); | ||||
std::cout<<"INFO in LauIsobarDynamics::addIncohResonance : Successfully added incoherent resonance. Total number of incoherent resonances so far = "<<nIncohAmp_<<std::endl; | std::cout<<"INFO in LauIsobarDynamics::addIncohResonance : Successfully added incoherent resonance. Total number of incoherent resonances so far = "<<nIncohAmp_<<std::endl; | ||||
return theResonance; | return theResonance; | ||||
} | } | ||||
void LauIsobarDynamics::defineKMatrixPropagator(const TString& propName, const TString& paramFileName, Int_t resPairAmpInt, | LauKMatrixPropagator* LauIsobarDynamics::defineKMatrixPropagator( const TString& propName, const TString& paramFileName, Int_t resPairAmpInt, | ||||
Int_t nChannels, Int_t nPoles, Int_t rowIndex) | Int_t nChannels, Int_t nPoles, Int_t rowIndex) | ||||
{ | { | ||||
// Define the K-matrix propagator. The resPairAmpInt integer specifies which mass combination should be used | // Define the K-matrix propagator. The resPairAmpInt integer specifies which mass combination should be used | ||||
// for the invariant mass-squared variable "s". The pole masses and coupling constants are defined in the | // for the invariant mass-squared variable "s". The pole masses and coupling constants are defined in the | ||||
// paramFileName parameter file. | // paramFileName parameter file. | ||||
// The number of channels and poles are defined by the nChannels and nPoles integers, respectively. | // The number of channels and poles are defined by the nChannels and nPoles integers, respectively. | ||||
// The integer rowIndex specifies which row of the propagator should be used when | // The integer rowIndex specifies which row of the propagator should be used when | ||||
// summing over all amplitude channels: S-wave will be the first row, so rowIndex = 1. | // summing over all amplitude channels: S-wave will be the first row, so rowIndex = 1. | ||||
// Check that the rowIndex is valid | // Check that the rowIndex is valid | ||||
if (rowIndex < 1 || rowIndex > nChannels) { | if (rowIndex < 1 || rowIndex > nChannels) { | ||||
std::cerr << "ERROR in LauIsobarDynamics::defineKMatrixPropagator. The rowIndex, which is set to " | std::cerr << "ERROR in LauIsobarDynamics::defineKMatrixPropagator. The rowIndex, which is set to " | ||||
<< rowIndex << ", must be between 1 and the number of channels " | << rowIndex << ", must be between 1 and the number of channels " | ||||
<< nChannels << std::endl; | << nChannels << std::endl; | ||||
gSystem->Exit(EXIT_FAILURE); | gSystem->Exit(EXIT_FAILURE); | ||||
} | } | ||||
TString propagatorName(propName), parameterFile(paramFileName); | TString propagatorName(propName), parameterFile(paramFileName); | ||||
LauKMatrixPropagator* thePropagator = LauKMatrixPropFactory::getInstance()->getPropagator(propagatorName, parameterFile, | LauKMatrixPropagator* thePropagator = LauKMatrixPropFactory::getInstance()->getPropagator(propagatorName, parameterFile, | ||||
resPairAmpInt, nChannels, | resPairAmpInt, nChannels, | ||||
nPoles, rowIndex); | nPoles, rowIndex); | ||||
kMatrixPropagators_[propagatorName] = thePropagator; | kMatrixPropagators_[propagatorName] = thePropagator; | ||||
return thePropagator; | |||||
} | } | ||||
void LauIsobarDynamics::addKMatrixProdPole(const TString& poleName, const TString& propName, Int_t poleIndex, Bool_t useProdAdler) | void LauIsobarDynamics::addKMatrixProdPole(const TString& poleName, const TString& propName, Int_t poleIndex, Bool_t useProdAdler) | ||||
{ | { | ||||
// Add a K-matrix production pole term, using the K-matrix propagator given by the propName. | // Add a K-matrix production pole term, using the K-matrix propagator given by the propName. | ||||
// Here, poleIndex is the integer specifying the pole number. | // Here, poleIndex is the integer specifying the pole number. | ||||
Show All 11 Lines | if (poleIndex < 1 || poleIndex > nPoles) { | ||||
<<" for K-matrix propagator "<<propName<<std::endl; | <<" for K-matrix propagator "<<propName<<std::endl; | ||||
return; | return; | ||||
} | } | ||||
// Now add the K-matrix production pole amplitude to the vector of LauAbsResonance pointers. | // Now add the K-matrix production pole amplitude to the vector of LauAbsResonance pointers. | ||||
Int_t resPairAmpInt = thePropagator->getResPairAmpInt(); | Int_t resPairAmpInt = thePropagator->getResPairAmpInt(); | ||||
LauAbsResonance* prodPole = new LauKMatrixProdPole(poleName, poleIndex, resPairAmpInt, | LauAbsResonance* prodPole = new LauKMatrixProdPole(poleName, poleIndex, resPairAmpInt, | ||||
thePropagator, daughters_, useProdAdler); | thePropagator, daughters_, useProdAdler); | ||||
prodPole->setSpinType( LauAbsResonance::Legendre ); | |||||
resTypAmp_.push_back(poleName); | resTypAmp_.push_back(poleName); | ||||
resPairAmp_.push_back(resPairAmpInt); | resPairAmp_.push_back(resPairAmpInt); | ||||
++nAmp_; | ++nAmp_; | ||||
sigResonances_.push_back(prodPole); | sigResonances_.push_back(prodPole); | ||||
// Also store the propName-poleName pair for calculating total fit fractions later on | // Also store the propName-poleName pair for calculating total fit fractions later on | ||||
Show All 32 Lines | if (channelIndex < 1 || channelIndex > nChannels) { | ||||
<<" for K-matrix propagator "<<propName<<std::endl; | <<" for K-matrix propagator "<<propName<<std::endl; | ||||
return; | return; | ||||
} | } | ||||
// Now add the K-matrix production SVP amplitude to the vector of LauAbsResonance pointers. | // Now add the K-matrix production SVP amplitude to the vector of LauAbsResonance pointers. | ||||
Int_t resPairAmpInt = thePropagator->getResPairAmpInt(); | Int_t resPairAmpInt = thePropagator->getResPairAmpInt(); | ||||
LauAbsResonance* prodSVP = new LauKMatrixProdSVP(SVPName, channelIndex, resPairAmpInt, | LauAbsResonance* prodSVP = new LauKMatrixProdSVP(SVPName, channelIndex, resPairAmpInt, | ||||
thePropagator, daughters_, useProdAdler); | thePropagator, daughters_, useProdAdler); | ||||
prodSVP->setSpinType( LauAbsResonance::Legendre ); | |||||
resTypAmp_.push_back(SVPName); | resTypAmp_.push_back(SVPName); | ||||
resPairAmp_.push_back(resPairAmpInt); | resPairAmp_.push_back(resPairAmpInt); | ||||
++nAmp_; | ++nAmp_; | ||||
sigResonances_.push_back(prodSVP); | sigResonances_.push_back(prodSVP); | ||||
// Also store the SVPName-propName pair for calculating total fit fractions later on | // Also store the SVPName-propName pair for calculating total fit fractions later on | ||||
▲ Show 20 Lines • Show All 334 Lines • ▼ Show 20 Lines | for ( std::vector<LauAbsResonance*>::const_iterator iter = sigResonances_.begin(); iter != sigResonances_.end(); ++iter ) { | ||||
if ( model == LauAbsResonance::RhoOmegaMix_GS || | if ( model == LauAbsResonance::RhoOmegaMix_GS || | ||||
model == LauAbsResonance::RhoOmegaMix_GS_1 || | model == LauAbsResonance::RhoOmegaMix_GS_1 || | ||||
model == LauAbsResonance::RhoOmegaMix_RBW || | model == LauAbsResonance::RhoOmegaMix_RBW || | ||||
model == LauAbsResonance::RhoOmegaMix_RBW_1 ) { | model == LauAbsResonance::RhoOmegaMix_RBW_1 ) { | ||||
mass = omegaMass; | mass = omegaMass; | ||||
width = omegaWidth; | width = omegaWidth; | ||||
} | } | ||||
if ( width > narrowWidth_ || width == 0.0 ) { | if ( width > narrowWidth_ || width <= 0.0 ) { | ||||
continue; | continue; | ||||
} | } | ||||
std::cout << "INFO in LauIsobarDynamics::calcDPNormalisationScheme : Found narrow resonance: " << name << ", mass = " << mass << ", width = " << width << ", pair int = " << pair << std::endl; | std::cout << "INFO in LauIsobarDynamics::calcDPNormalisationScheme : Found narrow resonance: " << name << ", mass = " << mass << ", width = " << width << ", pair int = " << pair << std::endl; | ||||
if ( pair == 1 ) { | if ( pair == 1 ) { | ||||
if ( mass < minm23 || mass > maxm23 ){ | if ( mass < minm23 || mass > maxm23 ){ | ||||
std::cout << std::string(53, ' ') << ": But its pole is outside the kinematically allowed range, so will not consider it narrow for the purposes of integration" << std::endl; | std::cout << std::string(53, ' ') << ": But its pole is outside the kinematically allowed range, so will not consider it narrow for the purposes of integration" << std::endl; | ||||
} else { | } else { | ||||
▲ Show 20 Lines • Show All 1,433 Lines • Show Last 20 Lines |