LauIsobarDynamics.cc
Go to the documentation of this file.
49 LauIsobarDynamics::LauIsobarDynamics(LauDaughters* daughters, LauAbsEffModel* effModel, LauAbsEffModel* scfFractionModel) :
106 // for Kspipi, we need a scfFraction 2D histogram for each tagging category. They are provided by the map.
107 // Also, we need to know the place that the tagging category of the current event occupies in the data structure inputFitTree
108 LauIsobarDynamics::LauIsobarDynamics(LauDaughters* daughters, LauAbsEffModel* effModel, LauTagCatScfFractionModelMap scfFractionModel) :
167 for ( std::vector<LauCacheData*>::iterator iter = data_.begin(); iter != data_.end(); ++iter ) {
172 for (std::vector<LauDPPartialIntegralInfo*>::iterator it = dpPartialIntegralInfo_.begin(); it != dpPartialIntegralInfo_.end(); ++it)
225 // For those that have changed mark the corresponding resonance(s) as needing to be re-evaluated
261 for ( std::vector<LauAbsResonance*>::iterator resIter = sigResonances_.begin(); resIter != sigResonances_.end(); ++resIter ) {
268 for ( std::vector<LauParameter*>::const_iterator parIter = resPars.begin(); parIter != resPars.end(); ++parIter ) {
296 for ( std::vector<LauAbsIncohRes*>::iterator resIter = sigIncohResonances_.begin(); resIter != sigIncohResonances_.end(); ++resIter ) {
303 for ( std::vector<LauParameter*>::const_iterator parIter = resPars.begin(); parIter != resPars.end(); ++parIter ) {
341 std::cout << "INFO in LauIsobarDynamics::initialise : No contributions to DP model, not performing normalisation integrals." << std::endl;
346 std::cout<<"INFO in LauIsobarDynamics::initialise : Starting special run to generate the integrals for normalising the PDF..."<<std::endl;
401 std::cout<<"INFO in LauIsobarDynamics::initialise : Initial fit fraction for amplitude ("<<i<<","<<j<<") = "<<fitFrac_[i][j].genValue()<<std::endl;
406 std::cout<<"INFO in LauIsobarDynamics::initialise : Initial fit fraction for incoherent amplitude ("<<i<<","<<i<<") = "<<fitFrac_[i+nAmp_][i+nAmp_].genValue()<<std::endl;
409 std::cout<<"INFO in LauIsobarDynamics::initialise : Initial efficiency = "<<meanDPEff_.initValue()<<std::endl;
411 std::cout<<"INFO in LauIsobarDynamics::initialise : Initial DPRate = "<<DPRate_.initValue()<<std::endl;
423 std::cout<<"INFO in LauIsobarDynamics::initSummary : We are going to do a DP with "<<nameP<<" going to "<<name1<<" "<<name2<<" "<<name3<<std::endl;
436 std::cout<<" : A"<<nAmp_+i<<": "<<incohResTypAmp_[i]<<" (incoherent) to "<<name2<<", "<< name3<<std::endl;
449 std::cout<<" : A"<<nAmp_+i<<": "<<incohResTypAmp_[i]<<" (incoherent) to "<<name1<<", "<< name3<<std::endl;
462 std::cout<<" : A"<<nAmp_+i<<": "<<incohResTypAmp_[i]<<" (incoherent) to "<<name1<<", "<< name2<<std::endl;
537 std::cout<<"INFO in LauIsobarDynamics::writeIntegralsFile : Writing integral output to integrals file "<<intFileName_.Data()<<std::endl;
653 LauAbsResonance* LauIsobarDynamics::addResonance(const TString& resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory, const LauBlattWeisskopfFactor::BarrierType bwType)
671 std::cerr<<"ERROR in LauIsobarDynamics::addResonance : Resonance type \""<<resType<<"\" not allowed for a coherent resonance"<<std::endl;
676 LauAbsResonance *theResonance = resonanceMaker.getResonance(daughters_, resName, resPairAmpInt, resType, bwCategory, bwType);
679 std::cerr<<"ERROR in LauIsobarDynamics::addResonance : Couldn't create the resonance \""<<resName<<"\""<<std::endl;
684 if (flipHelicity_ && daughters_->getCharge(resPairAmpInt) == 0 && daughters_->getChargeParent() == 0 && daughters_->getTypeParent() > 0 ) {
685 if ( ( resPairAmpInt == 1 && TMath::Abs(daughters_->getTypeDaug2()) == TMath::Abs(daughters_->getTypeDaug3()) ) ||
686 ( resPairAmpInt == 2 && TMath::Abs(daughters_->getTypeDaug1()) == TMath::Abs(daughters_->getTypeDaug3()) ) ||
687 ( resPairAmpInt == 3 && TMath::Abs(daughters_->getTypeDaug1()) == TMath::Abs(daughters_->getTypeDaug2()) ) ) {
700 std::cout<<"INFO in LauIsobarDynamics::addResonance : Setting resPairAmp to 0 for "<<resonanceName<<" contribution."<<std::endl;
712 std::cout<<"INFO in LauIsobarDynamics::addResonance : Successfully added resonance. Total number of resonances so far = "<<nAmp_<<std::endl;
717 LauAbsResonance* LauIsobarDynamics::addIncoherentResonance(const TString& resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType)
735 std::cerr<<"ERROR in LauIsobarDynamics::addIncohResonance : Resonance type \""<<resType<<"\" not allowed for an incoherent resonance"<<std::endl;
740 LauAbsIncohRes *theResonance = dynamic_cast<LauAbsIncohRes*>( resonanceMaker.getResonance(daughters_, resName, resPairAmpInt, resType) );
743 std::cerr<<"ERROR in LauIsobarDynamics::addIncohResonance : Couldn't create the resonance \""<<resName<<"\""<<std::endl;
758 std::cout<<"INFO in LauIsobarDynamics::addIncohResonance : Successfully added incoherent resonance. Total number of incoherent resonances so far = "<<nIncohAmp_<<std::endl;
763 void LauIsobarDynamics::defineKMatrixPropagator(const TString& propName, const TString& paramFileName, Int_t resPairAmpInt,
766 // Define the K-matrix propagator. The resPairAmpInt integer specifies which mass combination should be used
767 // for the invariant mass-squared variable "s". The pole masses and coupling constants are defined in the
769 // The number of channels and poles are defined by the nChannels and nPoles integers, respectively.
775 std::cerr << "ERROR in LauIsobarDynamics::defineKMatrixPropagator. The rowIndex, which is set to "
783 LauKMatrixPropagator* thePropagator = LauKMatrixPropFactory::getInstance()->getPropagator(propagatorName, parameterFile,
790 void LauIsobarDynamics::addKMatrixProdPole(const TString& poleName, const TString& propName, Int_t poleIndex)
813 LauAbsResonance* prodPole = new LauKMatrixProdPole(poleName, poleIndex, resPairAmpInt, thePropagator, daughters_);
825 std::cout<<"INFO in LauIsobarDynamics::addKMatrixProdPole : Successfully added K-matrix production pole term. Total number of resonances so far = "<<nAmp_<<std::endl;
829 std::cerr<<"ERROR in LauIsobarDynamics::addKMatrixProdPole : The propagator of the name "<<propName
837 void LauIsobarDynamics::addKMatrixProdSVP(const TString& SVPName, const TString& propName, Int_t channelIndex)
860 LauAbsResonance* prodSVP = new LauKMatrixProdSVP(SVPName, channelIndex, resPairAmpInt, thePropagator, daughters_);
872 std::cout<<"INFO in LauIsobarDynamics::addKMatrixProdSVP : Successfully added K-matrix production slowly-varying (SVP) term. Total number of resonances so far = "<<nAmp_<<std::endl;
876 std::cerr<<"ERROR in LauIsobarDynamics::addKMatrixProdSVP : The propagator of the name "<<propName
887 for (std::vector<LauAbsResonance*>::const_iterator iter=sigResonances_.begin(); iter!=sigResonances_.end(); ++iter) {
898 for (std::vector<LauAbsIncohRes*>::const_iterator iter=sigIncohResonances_.begin(); iter!=sigIncohResonances_.end(); ++iter) {
929 std::cerr<<"ERROR in LauIsobarDynamics::getResonance : Couldn't find resonance with index \""<<resIndex<<"\" in the model."<<std::endl;
941 std::cerr<<"ERROR in LauIsobarDynamics::getResonance : Couldn't find resonance with index \""<<resIndex<<"\" in the model."<<std::endl;
950 std::cerr<<"ERROR in LauIsobarDynamics::findResonance : Couldn't find resonance with name \""<<resName<<"\" in the model."<<std::endl;
961 std::cerr<<"ERROR in LauIsobarDynamics::findResonance : Couldn't find resonance with name \""<<resName<<"\" in the model."<<std::endl;
986 for (std::vector<LauDPPartialIntegralInfo*>::iterator it = dpPartialIntegralInfo_.begin(); it != dpPartialIntegralInfo_.end(); ++it)
1000 std::cerr<<"ERROR in LauIsobarDynamics::calcDPNormalisationScheme : Scheme already stored!"<<std::endl;
1019 for ( std::vector<LauAbsResonance*>::const_iterator iter = sigResonances_.begin(); iter != sigResonances_.end(); ++iter ) {
1025 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Found narrow resonance: "<<name<<", mass = "<<mass<<", width = "<<width<<", pair int = "<<pair<<std::endl;
1036 std::cerr<<"WARNING in LauIsobarDynamics::calcDPNormalisationScheme : strange pair integer, "<<pair<<", for resonance \""<<(*iter)->getResonanceName()<<std::endl;
1040 for ( std::vector<LauAbsIncohRes*>::const_iterator iter = sigIncohResonances_.begin(); iter != sigIncohResonances_.end(); ++iter ) {
1046 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Found narrow resonance: "<<name<<", mass = "<<mass<<", width = "<<width<<", pair int = "<<pair<<std::endl;
1049 std::cout<<" : But its pole is outside the kinematically allowed range, so will not consider it narrow for the purposes of integration"<<std::endl;
1055 std::cout<<" : But its pole is outside the kinematically allowed range, so will not consider it narrow for the purposes of integration"<<std::endl;
1061 std::cout<<" : But its pole is outside the kinematically allowed range, so will not consider it narrow for the purposes of integration"<<std::endl;
1066 std::cerr<<"WARNING in LauIsobarDynamics::calcDPNormalisationScheme : strange pair integer, "<<pair<<", for resonance \""<<(*iter)->getResonanceName()<<std::endl;
1092 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : No narrow resonances found, integrating over whole Dalitz plot..."<<std::endl;
1093 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1098 // - can later consider whether there's a need to split up the mPrime axis into regions around particularly narrow resonances in m12
1099 // - but it seems that this isn't really needed since even the default tune gives a good resolution for most narrow resonances such as phi / chi_c0
1100 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One or more narrow resonances found in m12, integrating over whole square Dalitz plot with bin widths of "<<mPrimeBinWidth<<" in mPrime and "<<thPrimeBinWidth<<" in thetaPrime..."<<std::endl;
1101 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(0.0, 1.0, 0.0, 1.0, mPrimeBinWidth, thPrimeBinWidth, precision, nAmp_, nIncohAmp_, kTRUE, kinematics_));
1114 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m13, close to threshold, dividing Dalitz plot into two regions..."<<std::endl;
1115 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1117 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1119 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m13, dividing Dalitz plot into three regions..."<<std::endl;
1120 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1121 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1123 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin, resMax, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1130 for ( std::map<Double_t,Double_t>::const_iterator iter = m13NarrowRes.begin(); iter != m13NarrowRes.end(); ++iter ) {
1146 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m13, both close to threshold, dividing Dalitz plot into two regions..."<<std::endl;
1147 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Max, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1149 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, res2Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1151 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m13, one close to threshold, dividing Dalitz plot into four regions..."<<std::endl;
1152 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res1Max, res2Min, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1153 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Max, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1155 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, res1Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1157 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Min, res2Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1161 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found close together in m13, dividing Dalitz plot into three regions..."<<std::endl;
1162 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, res1Min, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1163 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Max, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1165 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res1Min, res2Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1167 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m13, dividing Dalitz plot into five regions..."<<std::endl;
1168 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, res1Min, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1169 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res1Max, res2Min, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1170 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Max, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1172 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res1Min, res1Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1174 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(res2Min, res2Max, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1189 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m23, close to threshold, dividing Dalitz plot into two regions..."<<std::endl;
1190 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, resMax, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1192 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, resMax, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1194 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m23, dividing Dalitz plot into three regions..."<<std::endl;
1195 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, resMin, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1196 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, resMax, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1198 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, resMin, resMax, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1205 for ( std::map<Double_t,Double_t>::const_iterator iter = m23NarrowRes.begin(); iter != m23NarrowRes.end(); ++iter ) {
1221 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m23, both close to threshold, dividing Dalitz plot into two regions..."<<std::endl;
1222 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Max, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1224 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, res2Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1226 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m23, one close to threshold, dividing Dalitz plot into four regions..."<<std::endl;
1227 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res1Max, res2Min, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1228 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Max, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1230 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, res1Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1232 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Min, res2Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1236 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found close together in m23, dividing Dalitz plot into three regions..."<<std::endl;
1237 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, res1Min, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1238 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Max, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1240 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res1Min, res2Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1242 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Two narrow resonances found in m23, dividing Dalitz plot into five regions..."<<std::endl;
1243 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, res1Min, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1244 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res1Max, res2Min, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1245 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Max, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1247 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res1Min, res1Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1249 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, res2Min, res2Max, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1269 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m13 and one in m23, both close to threshold, dividing Dalitz plot into four regions..."<<std::endl;
1272 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1275 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1278 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1281 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1283 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m13, close to threshold, and one in m23, not close to threshold, dividing Dalitz plot into six regions..."<<std::endl;
1284 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1285 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1288 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1291 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1292 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1295 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1297 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in m23, close to threshold, and one in m13, not close to threshold, dividing Dalitz plot into six regions..."<<std::endl;
1298 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1299 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1302 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1303 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1306 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1309 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1311 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : One narrow resonance found in both m13 and m23, neither close to threshold, dividing Dalitz plot into nine regions..."<<std::endl;
1312 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1313 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1314 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1315 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1318 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1319 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1322 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1323 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1326 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1332 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m13, dividing Dalitz plot into two regions..."<<std::endl;
1335 for ( std::map<Double_t,Double_t>::const_iterator iter = m13NarrowRes.begin(); iter != m13NarrowRes.end(); ++iter ) {
1342 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax, maxm13, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1344 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax, minm23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1349 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m23, dividing Dalitz plot into two regions..."<<std::endl;
1352 for ( std::map<Double_t,Double_t>::const_iterator iter = m23NarrowRes.begin(); iter != m23NarrowRes.end(); ++iter ) {
1359 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, resMax, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1361 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, maxm13, minm23, resMax, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1367 for ( std::map<Double_t,Double_t>::const_iterator iter = m23NarrowRes.begin(); iter != m23NarrowRes.end(); ++iter ) {
1382 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m23 and one in m13, close to threshold, dividing Dalitz plot into four regions..."<<std::endl;
1385 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1388 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1391 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1394 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1396 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m23 and one in m13, not close to threshold, dividing Dalitz plot into six regions..."<<std::endl;
1399 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1400 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1403 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMin13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1404 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1407 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1410 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMin13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1417 for ( std::map<Double_t,Double_t>::const_iterator iter = m13NarrowRes.begin(); iter != m13NarrowRes.end(); ++iter ) {
1432 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m13 and one in m23, close to threshold, dividing Dalitz plot into four regions..."<<std::endl;
1435 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1438 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1441 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1444 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1446 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in m13 and one in m23, not close to threshold, dividing Dalitz plot into six regions..."<<std::endl;
1447 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1448 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1451 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1454 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMin23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1455 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1458 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMin23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1463 std::cout<<"INFO in LauIsobarDynamics::calcDPNormalisationScheme : Multiple narrow resonances found in both m13 and m23, dividing Dalitz plot into four regions..."<<std::endl;
1466 for ( std::map<Double_t,Double_t>::const_iterator iter = m13NarrowRes.begin(); iter != m13NarrowRes.end(); ++iter ) {
1476 for ( std::map<Double_t,Double_t>::const_iterator iter = m23NarrowRes.begin(); iter != m23NarrowRes.end(); ++iter ) {
1486 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1489 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(resMax13, maxm13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1492 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, resMax23, maxm23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1495 dpPartialIntegralInfo_.push_back(new LauDPPartialIntegralInfo(minm13, resMax13, minm23, resMax23, m13BinWidth, m23BinWidth, precision, nAmp_, nIncohAmp_));
1501 void LauIsobarDynamics::setIntegralBinWidths(const Double_t m13BinWidth, const Double_t m23BinWidth,
1537 Bool_t withinDP = squareDP ? kinematics_->withinSqDPLimits(m13, m23) : kinematics_->withinDPLimits(m13Sq, m23Sq);
1562 void LauIsobarDynamics::calculateAmplitudes( LauDPPartialIntegralInfo* intInfo, const UInt_t m13Point, const UInt_t m23Point )
1708 std::cerr<<"ERROR in LauIsobarDynamics::resAmp : index = "<<index<<" is not within the range 0 to "<<nAmp_-1<<std::endl;
1716 std::cerr<<"ERROR in LauIsobarDynamics::resAmp : Couldn't retrieve valid resonance with index = "<<index<<std::endl;
1769 std::cerr<<"ERROR in LauIsobarDynamics::incohResAmp : index = "<<index<<" is not within the range 0 to "<<nIncohAmp_-1<<std::endl;
1777 std::cerr<<"ERROR in LauIsobarDynamics::incohResAmp : Couldn't retrieve valid incoherent resonance with index = "<<index<<std::endl;
1832 void LauIsobarDynamics::setFFTerm(const UInt_t index, const Double_t realPart, const Double_t imagPart)
1836 std::cerr<<"ERROR in LauIsobarDynamics::setFFTerm : index = "<<index<<" is not within the range 0 to "<<nAmp_-1<<std::endl;
1845 // Function to set the internal incoherent intensity term (normally calculated using incohResAmp(index).
1847 std::cerr<<"ERROR in LauIsobarDynamics::setFFTerm : index = "<<index<<" is not within the range 0 to "<<nIncohAmp_-1<<std::endl;
1988 // Now loop over all resonances and find those which are K-matrix components for this propagator
2031 std::cout<<"INFO in LauIsobarDynamics::calcExtraInfo : Total K-matrix fit fraction for propagator "<<propName<<" is "<<kMatrixTotFitFrac<<std::endl;
2163 LauIsobarDynamics::ToyMCStatus LauIsobarDynamics::checkToyMC(Bool_t printErrorMessages, Bool_t printInfoMessages)
2171 std::cerr<<"WARNING in LauIsobarDynamics::checkToyMC : More than "<<iterationsMax_<<" iterations performed and no event accepted."<<std::endl;
2176 std::cerr<<" : |A|^2 maximum was set to "<<aSqMaxSet_<<" but this appears to be too high."<<std::endl;
2178 std::cerr<<" : The value of |A|^2 maximum will be decreased and the generation restarted."<<std::endl;
2181 std::cout<<"INFO in LauIsobarDynamics::checkToyMC : |A|^2 max reset to "<<aSqMaxSet_<<std::endl;
2185 std::cerr<<" : |A|^2 maximum was set to "<<aSqMaxSet_<<", which seems to be correct for the given model."<<std::endl;
2186 std::cerr<<" : However, the generation is very inefficient - please check your model."<<std::endl;
2187 std::cerr<<" : The maximum number of iterations will be increased and the generation restarted."<<std::endl;
2190 std::cout<<"INFO in LauIsobarDynamics::checkToyMC : max number of iterations reset to "<<iterationsMax_<<std::endl;
2196 std::cerr<<"WARNING in LauIsobarDynamics::checkToyMC : |A|^2 maximum was set to "<<aSqMaxSet_<<" but a value exceeding this was found: "<<aSqMaxVar_<<std::endl;
2197 std::cerr<<" : Run was invalid, as any generated MC will be biased, according to the accept/reject method!"<<std::endl;
2198 std::cerr<<" : The value of |A|^2 maximum be reset to be > "<<aSqMaxVar_<<" and the generation restarted."<<std::endl;
2201 std::cout<<"INFO in LauIsobarDynamics::checkToyMC : |A|^2 max reset to "<<aSqMaxSet_<<std::endl;
2204 std::cout<<"INFO in LauIsobarDynamics::checkToyMC : aSqMaxSet = "<<aSqMaxSet_<<" and aSqMaxVar = "<<aSqMaxVar_<<std::endl;
2216 std::cerr<<"ERROR in LauIsobarDynamics::setDataEventNo : Event index too large: "<<iEvt<<" >= "<<data_.size()<<"."<<std::endl;
2225 scfFraction_ = currentEvent_->retrieveScfFraction(); // These two are necessary, even though the dynamics don't actually use scfFraction_ or jacobian_,
2226 jacobian_ = currentEvent_->retrieveJacobian(); // since this is at the heart of the caching mechanism.
2265 void LauIsobarDynamics::calcLikelihoodInfo(const Double_t m13Sq, const Double_t m23Sq, const Int_t tagCat)
2336 // Since this is the first caching, we need to make sure to calculate everything for every resonance
2345 std::cerr<<"ERROR in LauIsobarDynamics::fillDataTree : Expecting at least 2 variables " <<"in input data tree, but there are "<<nBranches<<"!\n";
2346 std::cerr<<" : Make sure you have the right number of variables in your input data file!"<<std::endl;
2352 for ( std::vector<LauCacheData*>::iterator iter = data_.begin(); iter != data_.end(); ++iter ) {
2425 // then calculate totAmp_ and finally ASq_ = totAmp_.abs2() (without the efficiency correction!)
2442 // then calculate totAmp_ and finally ASq_ = totAmp_.abs2() (without the efficiency correction!)
2456 std::cerr << "ERROR in LauIsobarDynamics::updateCoeffs : Expected " << this->getnTotAmp() << " but got " << coeffs.size() << std::endl;
2467 // TODO should perhaps keep track of whether the resonance parameters have changed here and if none of those and none of the coeffs have changed then we don't need to update the norm
KMStringMap kMatrixPropSet_ The names of the M-matrix components in the model mapped to their propagators. Definition: LauIsobarDynamics.hh:715 std::vector< LauComplex > Amp_ The complex coefficients for the amplitude components. Definition: LauIsobarDynamics.hh:679 void modifyDataTree() Recache the amplitude values for those that have changed. Definition: LauIsobarDynamics.cc:2294 Int_t nSigGenLoop_ The number of unsucessful attempts to generate an event so far. Definition: LauIsobarDynamics.hh:832 TString getNameDaug1() const Get name of the first daughter particle. Definition: LauDaughters.cc:231 Double_t getm23Max() const Get the m23 maximum defined as (mParent - m1) Definition: LauKinematics.hh:286 Double_t retrievemPrime() const Retrieve the square Dalitz plot coordinate, m'. Definition: LauCacheData.hh:133 Bool_t squareDP() const Are the square Dalitz plot co-ordinates being calculated? Definition: LauKinematics.hh:51 TRandom * randomFun() Access the singleton random number generator with a particular seed. Definition: LauRandom.cc:20 File containing declaration of LauKMatrixPropFactory class. File containing declaration of LauFitDataTree class. File containing declaration of LauNRAmplitude class. void setIntegralBinWidths(const Double_t m13BinWidth, const Double_t m23BinWidth, const Double_t mPrimeBinWidth=0.001, const Double_t thPrimeBinWidth=0.001) Set the widths of the bins to use when integrating across the Dalitz plot or square Dalitz plot... Definition: LauIsobarDynamics.cc:1501 Bool_t recalcNormalisation_ Flag to recalculate the normalisation. Definition: LauIsobarDynamics.hh:844 void storeIntensity(const UInt_t m13Point, const UInt_t m23Point, const UInt_t iAmp, const Double_t intensity) Store the intensity for the given grid point and intensity index. Definition: LauDPPartialIntegralInfo.hh:190 Double_t retrievem23Sq() const Retrieve the invariant mass squared of the second and third daugthers. Definition: LauCacheData.hh:127 Int_t getTypeDaug1() const Get PDG code of the first daughter particle. Definition: LauDaughters.cc:251 const TString & getResonanceName() const Get the name of the resonance. Definition: LauAbsResonance.hh:117 void updateCoeffs(const std::vector< LauComplex > &coeffs) Update the complex coefficients for the resonances. Definition: LauIsobarDynamics.cc:2452 void updateSqDPKinematics(Double_t mPrime, Double_t thetaPrime) Update all kinematic quantities based on the square DP co-ordinates m' and theta'. Definition: LauKinematics.cc:99 std::set< UInt_t > integralsToBeCalculated_ Resonance indices for which the amplitudes and integrals should be recalculated. Definition: LauIsobarDynamics.hh:856 Double_t m13BinWidth_ The bin width to use when integrating over m13. Definition: LauIsobarDynamics.hh:751 Bool_t flipHelicity_ The helicity flip flag for new amplitude components. Definition: LauIsobarDynamics.hh:841 File containing declaration of LauAbsEffModel class. ClassImp(LauAbsCoeffSet) std::vector< Int_t > resPairAmp_ The index of the daughter not produced by the resonance for each amplitude component. Definition: LauIsobarDynamics.hh:721 Bool_t hasResonance(const TString &resName) const Check whether this model includes a named resonance. Definition: LauIsobarDynamics.cc:912 const LauAbsResonance * findResonance(const TString &resName) const Retrieve the named resonance. Definition: LauIsobarDynamics.cc:957 std::vector< LauParameter > extraParameters_ any extra parameters/quantities (e.g. K-matrix total fit fractions) Definition: LauIsobarDynamics.hh:703 File containing declaration of LauKMatrixProdPole class. Class that defines the particular 3-body decay under study. Definition: LauDaughters.hh:33 const std::vector< Double_t > & retrieveImagAmp() const Retrieve the imaginary parts of the amplitudes. Definition: LauCacheData.hh:175 Int_t getCharge(Int_t resPairAmpInt) const Get charge of a particular two-daughter combination. Definition: LauDaughters.cc:291 Double_t getEvtJacobian() const Retrieve the Jacobian, for the transformation into square DP coordinates, for the current event... Definition: LauIsobarDynamics.hh:311 File containing declaration of LauBelleNR class. void defineKMatrixPropagator(const TString &propName, const TString ¶mFileName, Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles, Int_t rowIndex=1) Define a new K-matrix Propagator. Definition: LauIsobarDynamics.cc:763 std::vector< Double_t > fSqEffSum_ The event-by-event running total of the dynamical amplitude squared for each amplitude component... Definition: LauIsobarDynamics.hh:823 File containing declaration of LauKMatrixProdSVP class. void calcDPNormalisationScheme() Calculate the Dalitz plot normalisation integrals across the whole Dalitz plot. Definition: LauIsobarDynamics.cc:997 LauAbsEffModel * effModel_ The efficiency model across the Dalitz plot. Definition: LauIsobarDynamics.hh:663 void calcExtraInfo(const Bool_t init=kFALSE) Calculate the fit fractions, mean efficiency and total DP rate. Definition: LauIsobarDynamics.cc:1854 std::vector< Int_t > incohResPairAmp_ The index of the daughter not produced by the resonance for each incoherent amplitude component... Definition: LauIsobarDynamics.hh:727 Double_t DPNorm_ The normalisation factor for the log-likelihood function. Definition: LauIsobarDynamics.hh:682 LauTagCatScfFractionModelMap scfFractionModel_ The self cross feed fraction models across the Dalitz plot. Definition: LauIsobarDynamics.hh:670 LauParArray fitFrac_ The fit fractions for the amplitude components. Definition: LauIsobarDynamics.hh:685 File containing declaration of LauDaughters class. Double_t aSqMaxVar_ The maximum value of A squared that has been seen so far while generating. Definition: LauIsobarDynamics.hh:838 Double_t scfFraction_ The fraction of events that are poorly reconstructed (the self cross feed fraction) at the current po... Definition: LauIsobarDynamics.hh:787 Abstract class for defining incoherent resonant amplitude models. Definition: LauAbsIncohRes.hh:29 Double_t m13Sq_ The invariant mass squared of the first and third daughters. Definition: LauIsobarDynamics.hh:769 LauAbsResonance * getResonance(const LauDaughters *daughters, const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory=LauBlattWeisskopfFactor::Default, const LauBlattWeisskopfFactor::BarrierType bwType=LauBlattWeisskopfFactor::BWPrimeBarrier) Create a resonance. Definition: LauResonanceMaker.cc:504 Int_t iterationsMax_ The maximum allowed number of attempts when generating an event. Definition: LauIsobarDynamics.hh:829 TString getConjResName(const TString &resName) const Retrieve the name of the charge conjugate of a named resonance. Definition: LauIsobarDynamics.cc:2473 Definition: LauAbsResonance.hh:53 std::vector< Double_t > resonanceParValues_ List of floating resonance parameter values from previous calculation. Definition: LauIsobarDynamics.hh:850 File containing declaration of LauBelleSymNR class. File containing declaration of LauPrint class. Pure abstract base class for defining the efficiency description across the signal Dalitz plot... Definition: LauAbsEffModel.hh:32 void setIncohIntenTerm(const UInt_t index, const Double_t value) Set the dynamic part of the intensity for a given incoherent amplitude component at the current point... Definition: LauIsobarDynamics.cc:1843 Double_t getm13Min() const Get the m13 minimum defined as (m1 + m3) Definition: LauKinematics.hh:275 Class for defining (a section of) the Dalitz plot integration binning scheme. Definition: LauDPPartialIntegralInfo.hh:35 Double_t retrieveJacobian() const Retrieve the Jacobian for the transformation into square-Dalitz-plot coordinates. ... Definition: LauCacheData.hh:163 std::map< TString, Double_t > LauFitData Type for holding event data. Definition: LauFitDataTree.hh:31 void calcDPNormalisation() Calculate the Dalitz plot normalisation integrals across the whole Dalitz plot. Definition: LauIsobarDynamics.cc:980 TString getNameDaug2() const Get name of the second daughter particle. Definition: LauDaughters.cc:236 Double_t getM23Value(const UInt_t m23Point) const Retrieve the m23 value at the given grid point. Definition: LauDPPartialIntegralInfo.hh:138 std::vector< TString > incohResTypAmp_ The resonance types of all of the incoherent amplitude components. Definition: LauIsobarDynamics.hh:724 std::vector< LauAbsIncohRes * > sigIncohResonances_ The incoherent resonances in the model. Definition: LauIsobarDynamics.hh:709 UInt_t nBranches() const Obtain the number of branches in the tree. Definition: LauFitDataTree.cc:170 Double_t getEvtScfFraction() const Retrieve the fraction of events that are poorly reconstructed (the self cross feed fraction) for the ... Definition: LauIsobarDynamics.hh:305 void resAmp(const UInt_t index) Calculate the dynamic part of the amplitude for a given component at the current point in the Dalitz ... Definition: LauIsobarDynamics.cc:1702 LauKMatrixPropagator * getPropagator(const TString &name, const TString ¶mFileName, Int_t resPairAmpInt, Int_t nChannels, Int_t nPoles, Int_t rowIndex) Retrieve the propagator if it already exists, otherwise create one. Definition: LauKMatrixPropFactory.cc:53 void calcLikelihoodInfo(const UInt_t iEvt) Calculate the likelihood (and all associated information) for the given event number. Definition: LauIsobarDynamics.cc:2229 std::vector< Double_t > fSqSum_ The event-by-event running total of the dynamical amplitude squared for each amplitude component... Definition: LauIsobarDynamics.hh:820 File containing declaration of LauKinematics class. UInt_t getnm23Points() const Retrieve the number of bins in m23. Definition: LauDPPartialIntegralInfo.hh:110 File containing declaration of LauKMatrixPropagator class. Double_t getm13Max() const Get the m13 maximum defined as (mParent - m2) Definition: LauKinematics.hh:291 UInt_t getnm13Points() const Retrieve the number of bins in m13. Definition: LauDPPartialIntegralInfo.hh:104 Definition: LauIsobarDynamics.hh:47 Class for defining a K-matrix production pole amplitude term. Definition: LauKMatrixProdPole.hh:31 Double_t getm12Min() const Get the m12 minimum defined as (m1 + m2) Definition: LauKinematics.hh:280 const LauAbsResonance * getResonance(const UInt_t resIndex) const Retrieve a resonance by its index. Definition: LauIsobarDynamics.cc:922 Double_t retrievem13Sq() const Retrieve the invariant mass squared of the first and third daugthers. Definition: LauCacheData.hh:121 Double_t m23Sq_ The invariant mass squared of the second and third daughters. Definition: LauIsobarDynamics.hh:772 Double_t evtLike_ The normalised likelihood for the current event. Definition: LauIsobarDynamics.hh:796 File containing declaration of LauIsobarDynamics class. std::vector< std::vector< LauComplex > > fifjEffSum_ The event-by-event running total of efficiency corrected amplitude cross terms for each pair of ampli... Definition: LauIsobarDynamics.hh:805 Singleton factory class for creating resonances. Definition: LauResonanceMaker.hh:35 void updateKinematics(Double_t m13Sq, Double_t m23Sq) Update all kinematic quantities based on the DP co-ordinates m13Sq and m23Sq. Definition: LauKinematics.cc:82 Bool_t fullySymmetricDP_ Whether the Dalitz plot is fully symmetric. Definition: LauIsobarDynamics.hh:736 void fillDataTree(const LauFitDataTree &fitDataTree) Fill the internal data structure that caches the resonance dynamics. Definition: LauIsobarDynamics.cc:2331 void resetNormVectors() Zero the various values used to store integrals info. Definition: LauIsobarDynamics.cc:179 Double_t calcSqDPJacobian(const Double_t mPrime, const Double_t thPrime) const Calculate the Jacobian for the transformation m23^2, m13^2 -> m', theta' (square DP) at the given poin... Definition: LauKinematics.cc:130 Double_t abs2() const Obtain the square of the absolute value of the complex number. Definition: LauComplex.hh:232 Bool_t gotSymmetricalDP() const Is Dalitz plot symmetric, i.e. 2 identical particles. Definition: LauDaughters.hh:66 static LauKMatrixPropFactory * getInstance() Get a static instance of this factory class. Only one is created per application. ... Definition: LauKMatrixPropFactory.cc:45 File containing declaration of LauResonanceMaker class. Double_t m23BinWidth_ The bin width to use when integrating over m23. Definition: LauIsobarDynamics.hh:754 File containing declaration of LauCacheData class. virtual LauResonanceModel getResonanceModel() const =0 Get the resonance model type. Double_t getm12Max() const Get the m12 maximum defined as (mParent - m3) Definition: LauKinematics.hh:296 void addKMatrixProdPole(const TString &poleName, const TString &propName, Int_t poleIndex) Add a K-matrix production pole term to the model. Definition: LauIsobarDynamics.cc:790 void calcTotalAmp(const Bool_t useEff) Calculate the total Dalitz plot amplitude at the current point in the Dalitz plot. Definition: LauIsobarDynamics.cc:1619 Double_t retrieveScfFraction(Int_t tagCat) Obtain the self cross feed fraction of the current event from the model. Definition: LauIsobarDynamics.cc:2499 std::vector< TString > resTypAmp_ The resonance types of all of the amplitude components. Definition: LauIsobarDynamics.hh:718 const std::vector< Double_t > & retrieveIncohIntensities() const Retrieve the incoherent intensities. Definition: LauCacheData.hh:181 const std::vector< Double_t > & retrieveRealAmp() const Retrieve the real parts of the amplitudes. Definition: LauCacheData.hh:169 LauIsobarDynamics(LauDaughters *daughters, LauAbsEffModel *effModel, LauAbsEffModel *scfFractionModel=0) Constructor. Definition: LauIsobarDynamics.cc:49 LauCacheData * currentEvent_ The cached data for the current event. Definition: LauIsobarDynamics.hh:700 void initialiseVectors() Initialise the internal storage for this model. Definition: LauIsobarDynamics.cc:476 Double_t jacobian_ The Jacobian, for the transformation into square DP coordinates at the current point in the Dalitz pl... Definition: LauIsobarDynamics.hh:790 Bool_t withinSqDPLimits(Double_t mPrime, Double_t thetaPrime) const Check whether a given (m',theta') point is within the kinematic limits of the Dalitz plot... Definition: LauKinematics.cc:422 void flipAndUpdateKinematics() Flips the DP variables m13^2 <-> m23^2 and recalculates all kinematic quantities. ... Definition: LauKinematics.cc:478 std::map< Int_t, LauAbsEffModel * > LauTagCatScfFractionModelMap The type used for containing multiple self cross feed fraction models for different categories (e... Definition: LauIsobarDynamics.hh:43 Double_t narrowWidth_ The value below which a resonance width is considered to be narrow. Definition: LauIsobarDynamics.hh:763 Double_t getM13Value(const UInt_t m13Point) const Retrieve the m13 value at the given grid point. Definition: LauDPPartialIntegralInfo.hh:131 Definition: LauAbsResonance.hh:55 void incohResAmp(const UInt_t index) Calculate the dynamic part of the intensity for a given incoherent component at the current point in ... Definition: LauIsobarDynamics.cc:1763 File containing declaration of LauDPPartialIntegralInfo class. std::vector< std::vector< LauComplex > > fifjSum_ The event-by-event running total of the amplitude cross terms for each pair of amplitude components... Definition: LauIsobarDynamics.hh:811 Double_t getm23Min() const Get the m23 minimum defined as (m2 + m3) Definition: LauKinematics.hh:270 Double_t retrieveScfFraction() const Retrieve the fraction of poorly reconstructed events (the so-called self cross feed fraction) ... Definition: LauCacheData.hh:157 Double_t retrievethPrime() const Retrieve the square Dalitz plot coordinate, theta'. Definition: LauCacheData.hh:139 UInt_t getnTotAmp() const Retrieve the total number of amplitude components. Definition: LauIsobarDynamics.hh:444 virtual Double_t calcEfficiency(const LauKinematics *kinematics) const =0 Determine the efficiency for a given point in the Dalitz plot. Double_t calcSigDPNorm() Calculate the normalisation factor for the log-likelihood function. Definition: LauIsobarDynamics.cc:2070 Bool_t withinDPLimits(Double_t m13Sq, Double_t m23Sq) const Check whether a given (m13Sq,m23Sq) point is within the kinematic limits of the Dalitz plot... Definition: LauKinematics.cc:350 Int_t getTypeDaug3() const Get PDG code of the third daughter particle. Definition: LauDaughters.cc:261 void addGridPointToIntegrals(const Double_t weight) Add the amplitude values (with the appropriate weight) at the current grid point to the running integ... Definition: LauIsobarDynamics.cc:1662 Double_t thPrimeBinWidth_ The bin width to use when integrating over thetaPrime. Definition: LauIsobarDynamics.hh:760 const LauFitData & getData(UInt_t iEvt) const Retrieve the data for a given event. Definition: LauFitDataTree.cc:312 File containing LauRandom namespace. LauAbsResonance * addResonance(const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType, const LauBlattWeisskopfFactor::BlattWeisskopfCategory bwCategory=LauBlattWeisskopfFactor::Default, const LauBlattWeisskopfFactor::BarrierType bwType=LauBlattWeisskopfFactor::BWPrimeBarrier) Add a resonance to the Dalitz plot. Definition: LauIsobarDynamics.cc:653 void rotateAndUpdateKinematics() Cyclically rotates the DP variables (m12 -> m23, m23 -> m13, m13 -> m12) and recalculates all kinemat... Definition: LauKinematics.cc:487 void removeCharge(TString &string) const Remove the charge from the given particle name. Definition: LauIsobarDynamics.cc:968 Double_t eff_ The efficiency at the current point in the Dalitz plot. Definition: LauIsobarDynamics.hh:784 void calculateAmplitudes() Calculate the amplitudes for all resonances for the current kinematics. Definition: LauIsobarDynamics.cc:1600 Int_t getTypeDaug2() const Get PDG code of the second daughter particle. Definition: LauDaughters.cc:256 Double_t getWeight(const UInt_t m13Point, const UInt_t m23Point) const Retrieve the weight for the given grid point. Definition: LauDPPartialIntegralInfo.hh:124 Int_t resonanceIndex(const TString &resName) const Retrieve the index for the given resonance. Definition: LauIsobarDynamics.cc:882 Bool_t gotReweightedEvent() Calculates whether an event with the current kinematics should be accepted in order to produce a dist... Definition: LauIsobarDynamics.cc:2417 Abstract class for defining type for resonance amplitude models (Breit-Wigner, Flatte etc... Definition: LauAbsResonance.hh:37 Double_t binningFactor_ The factor relating the width of the narrowest resonance and the binning size. Definition: LauIsobarDynamics.hh:766 void addKMatrixProdSVP(const TString &SVPName, const TString &propName, Int_t channelIndex) Add a K-matrix slowly-varying part (SVP) term to the model. Definition: LauIsobarDynamics.cc:837 std::vector< LauCacheData * > data_ The cached data for all events. Definition: LauIsobarDynamics.hh:697 Bool_t gotFullySymmetricDP() const Is Dalitz plot fully symmetric, i.e. 3 identical particles. Definition: LauDaughters.hh:72 void findIntegralsToBeRecalculated() Determine which amplitudes and integrals need to be recalculated. Definition: LauIsobarDynamics.cc:222 Class for defining signal dynamics using the isobar model. Definition: LauIsobarDynamics.hh:39 Double_t getEventWeight() Calculate the acceptance rate, for events with the current kinematics, when generating events accordi... Definition: LauIsobarDynamics.cc:2438 LauAbsResonance * addIncoherentResonance(const TString &resName, const Int_t resPairAmpInt, const LauAbsResonance::LauResonanceModel resType) Add an incoherent resonance to the Dalitz plot. Definition: LauIsobarDynamics.cc:717 File containing LauConstants namespace. void writeIntegralsFile() Write the results of the integrals (and related information) to a file. Definition: LauIsobarDynamics.cc:532 File containing declaration of LauAbsResonance class. void calcDPPartialIntegral(LauDPPartialIntegralInfo *intInfo) Calculate the Dalitz plot normalisation integrals over a given range. Definition: LauIsobarDynamics.cc:1513 Double_t mPrimeBinWidth_ The bin width to use when integrating over mPrime. Definition: LauIsobarDynamics.hh:757 ToyMCStatus checkToyMC(Bool_t printErrorMessages=kTRUE, Bool_t printInfoMessages=kFALSE) Check the status of the toy MC generation. Definition: LauIsobarDynamics.cc:2163 UInt_t getnCohAmp() const Retrieve the number of coherent amplitude components. Definition: LauIsobarDynamics.hh:450 Double_t getEvtEff() const Retrieve the efficiency for the current event. Definition: LauIsobarDynamics.hh:299 UInt_t nIncohAmp_ The number of incoherent amplitude components. Definition: LauIsobarDynamics.hh:676 Bool_t gotKMatrixMatch(UInt_t resAmpInt, const TString &propName) const Check whether a resonance is a K-matrix component of a given propagator. Definition: LauIsobarDynamics.cc:2040 std::vector< LauDPPartialIntegralInfo * > dpPartialIntegralInfo_ The storage of the integration scheme. Definition: LauIsobarDynamics.hh:745 Double_t getIntensity(const UInt_t m13Point, const UInt_t m23Point, const UInt_t iAmp) const Retrieve the intensity for the given grid point and intensity index. Definition: LauDPPartialIntegralInfo.hh:181 void genFlatPhaseSpace(Double_t &m13Sq, Double_t &m23Sq) const Routine to generate events flat in phase-space. Definition: LauKinematics.cc:323 void setDataEventNo(UInt_t iEvt) Load the data for a given event. Definition: LauIsobarDynamics.cc:2210 Definition: LauAbsResonance.hh:54 Bool_t normalizationSchemeDone_ Whether the scheme for the integration has been determined. Definition: LauIsobarDynamics.hh:742 std::vector< LauParameter * > resonancePars_ List of floating resonance parameters. Definition: LauIsobarDynamics.hh:847 std::vector< std::vector< UInt_t > > resonanceParResIndex_ Indices in sigResonances_ to point to the corresponding signal resonance(s) for each floating paramet... Definition: LauIsobarDynamics.hh:853 BlattWeisskopfCategory Define resonance categories that will share common barrier factor radii. Definition: LauBlattWeisskopfFactor.hh:41 void storeEfficiency(const UInt_t m13Point, const UInt_t m23Point, const Double_t efficiency) Store the efficiency for the given grid point. Definition: LauDPPartialIntegralInfo.hh:154 const LauComplex & getAmplitude(const UInt_t m13Point, const UInt_t m23Point, const UInt_t iAmp) const Retrieve the amplitude for the given grid point and amplitude index. Definition: LauDPPartialIntegralInfo.hh:163 LauParameter meanDPEff_ The mean efficiency across the Dalitz plot. Definition: LauIsobarDynamics.hh:694 virtual Bool_t preSymmetrised() const Is the amplitude pre-symmetrised? Definition: LauAbsResonance.hh:179 Bool_t integralsDone_ Whether the integrals have been performed. Definition: LauIsobarDynamics.hh:739 std::vector< Double_t > incohInten_ The dynamic part of the intensity for each incoherent amplitude component at the current point in the... Definition: LauIsobarDynamics.hh:817 virtual LauComplex amplitude(const LauKinematics *kinematics) Calculate the complex amplitude. Definition: LauAbsResonance.cc:173 void storeAmplitude(const UInt_t m13Point, const UInt_t m23Point, const UInt_t iAmp, const LauComplex &litude) Store the amplitude for the given grid point and amplitude index. Definition: LauDPPartialIntegralInfo.hh:172 std::vector< LauComplex > ff_ The dynamic part of the amplitude for each amplitude component at the current point in the Dalitz plo... Definition: LauIsobarDynamics.hh:814 static bool isIncoherentModel(LauResonanceModel model) Is the resonance model incoherent? Definition: LauAbsResonance.cc:28 void initialise(const std::vector< LauComplex > &coeffs) Initialise the Dalitz plot dynamics. Definition: LauIsobarDynamics.cc:245 TString getNameDaug3() const Get name of the third daughter particle. Definition: LauDaughters.cc:241 std::vector< Double_t > fNorm_ The normalisation factors for the dynamic parts of the amplitude for each amplitude component... Definition: LauIsobarDynamics.hh:826 Class for defining a K-matrix production "slowly-varying part" (SVP) amplitude. Definition: LauKMatrixProdSVP.hh:31 File containing declaration of LauAbsIncohRes class. std::vector< LauAbsResonance * > sigResonances_ The resonances in the model. Definition: LauIsobarDynamics.hh:706 virtual Double_t intensityFactor(const LauKinematics *kinematics)=0 Get intensity factor. void setFFTerm(const UInt_t index, const Double_t realPart, const Double_t imagPart) Set the dynamic part of the amplitude for a given amplitude component at the current point in the Dal... Definition: LauIsobarDynamics.cc:1832 Double_t retrieveEfficiency() Obtain the efficiency of the current event from the model. Definition: LauIsobarDynamics.cc:2490 LauParArray fitFracEffUnCorr_ The efficiency-uncorrected fit fractions for the amplitude components. Definition: LauIsobarDynamics.hh:688 Class for defining a K-matrix propagator. Definition: LauKMatrixPropagator.hh:36 Generated by 1.8.5 |