#include <RunningWidthCalculator.h>
|
| RunningWidthCalculator (const DalitzEventPattern &pat) |
|
TH1D * | makeHisto_phaseSpace (int nBins, double max_m_inMeV, std::string OutputFileName="") |
|
TH1D * | makeHisto_2body (int nBins, double max_m_inMeV, const DecayTree &thisDcy, std::string OutputFileName="") |
|
TH1D * | makeHisto_3body (int nBins, double max_m_inMeV, const DecayTree &thisDcy, std::string OutputFileName="") |
|
TH1D * | makeHisto_dalitz (int nBins, double max_m_inMeV, int nIntegrationEvents, IFastAmplitudeIntegrable *amps=0, std::string OutputFileName="") |
|
TF1 * | getRunningWidthFunction_phaseSpace (double max_s_inGeV2) |
|
TF1 * | getRunningWidthFunction_2body (double max_s_inGeV2, const DecayTree &thisDcy) |
|
TF1 * | getRunningWidthFunction_3body (double max_s_inGeV2, const DecayTree &thisDcy) |
|
TF1 * | getRunningWidthFunction_Fermi (double max_s_inGeV2, double lambda, double s0) |
|
std::vector< double > | getPartialWidthCouplingsFromBF (std::vector< double > BF, std::vector< TF1 * > partialWidths, double m0, double gamma0) |
|
TH1D * | makeRunningMassHisto_3body (int nBins, double max_s_inGeV2, std::vector< TF1 * > gamma, std::vector< double > g, std::string OutputFileName="") |
|
void | setDalitzEventPattern (const DalitzEventPattern &pat) |
|
Definition at line 13 of file RunningWidthCalculator.h.
◆ RunningWidthCalculator()
Definition at line 37 of file RunningWidthCalculator.cpp.
40 cout <<
"RunningWidthCalculator::RunningWidthCalculator: I got called." << endl;
◆ getPartialWidthCouplingsFromBF()
std::vector< double > RunningWidthCalculator::getPartialWidthCouplingsFromBF |
( |
std::vector< double > |
BF, |
|
|
std::vector< TF1 * > |
partialWidths, |
|
|
double |
m0, |
|
|
double |
gamma0 |
|
) |
| |
Definition at line 452 of file RunningWidthCalculator.cpp.
456 std::vector<FitParameter*> fit_couplings;
459 fit_couplings.push_back(scale);
461 for (
unsigned int i=1; i < BF.size() ; i++) {
465 fit_couplings.push_back(
g);
468 chi2BF f(BF, partialWidths, fit_couplings, m0, gamma0);
472 vector<double> couplings;
477 for (
unsigned int i=1; i<fit_couplings.size(); i++) {
478 sum += *fit_couplings[i];
481 for (
unsigned int i=0; i<fit_couplings.size(); i++) {
484 else c = *fit_couplings[i];
485 norm += c*partialWidths[i]->Eval(m0*m0/(
GeV*
GeV));
488 for (
unsigned int i=0; i<fit_couplings.size(); i++) {
491 else c = *fit_couplings[i];
492 couplings.push_back(c / norm * gamma0/
GeV);
std::string anythingToString(const T &anything)
◆ getRunningWidthFunction_2body()
TF1 * RunningWidthCalculator::getRunningWidthFunction_2body |
( |
double |
max_s_inGeV2, |
|
|
const DecayTree & |
thisDcy |
|
) |
| |
Definition at line 564 of file RunningWidthCalculator.cpp.
570 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body: I can handle only 2 body decays but the decay " << thisDcy
571 <<
" has " << thisDcy.
finalState().size() <<
" final state particles. I'll return 0." << endl;
575 if(thisDcy.
nDgtr() != 2){
576 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body: " 577 <<
" Mother should have 2 daughters, but it says it has " 578 << thisDcy.
nDgtr() <<
". I'll return 0." << endl;
583 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body:" 584 <<
"DalitzEventPattern and DecayTree are not compatible. I'll return 0." << endl;
603 par[2] = (BW_X.twoLPlusOne()-1)/2;
607 TF1 *gamma =
new TF1(
"Gamma_2body",
Gamma_2body,0,max_s_inGeV2,nPar);
608 gamma->SetParameters(par);
bool compatibleWith(const DecayTree &tree) const
const ResonanceProperties * get(int i) const
static ResonancePropertiesList * getMe(const std::string &prefix="", MINT::MinuitParameterSet *mps=0)
MINT::const_counted_ptr< DDTree< ValueType > > getDgtrTreePtr(int i) const
const ParticleProperties * get(const std::string &name) const
Double_t Gamma_2body(double M, double m1, double m2, int l, double r)
static const ParticlePropertiesList * getMe()
std::vector< const ValueType * > finalState() const
◆ getRunningWidthFunction_3body()
TF1 * RunningWidthCalculator::getRunningWidthFunction_3body |
( |
double |
max_s_inGeV2, |
|
|
const DecayTree & |
thisDcy |
|
) |
| |
Definition at line 285 of file RunningWidthCalculator.cpp.
291 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body: I can handle only 3 body decays but the decay " << thisDcy
292 <<
" has " << thisDcy.
finalState().size() <<
" final state particles. I'll return 0." << endl;
296 if(thisDcy.
nDgtr() != 2){
297 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body: " 298 <<
" Mother should have 2 daughters, but it says it has " 299 << thisDcy.
nDgtr() <<
". I'll return 0." << endl;
304 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body:" 305 <<
"DalitzEventPattern and DecayTree are not compatible. I'll return 0." << endl;
311 for(
int i=0; i< thisDcy.
nDgtr(); i++){
313 if(dgtr->
nDgtr() == 2) R = dgtr;
314 else bachelor = dgtr;
317 if(0==R || 0== bachelor){
318 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body:" 319 <<
" Didn't find resonance or bachelor. I'll return 0. " << endl;
343 par[4] = (BW_X.twoLPlusOne()-1)/2;
345 par[5] = (BW_R.twoLPlusOne()-1)/2;
351 par[9] = max_s_inGeV2 *
GeV *
GeV;
353 if(dbThis)
for(
int i=0; i<nPar; i++) cout <<
"Parameter " << i <<
" = " << par[i] << endl;
356 gamma->SetParameters(par);
Double_t Gamma_mother_3body(Double_t *x, Double_t *par)
bool compatibleWith(const DecayTree &tree) const
const ResonanceProperties * get(int i) const
const ValueType & getVal() const
static ResonancePropertiesList * getMe(const std::string &prefix="", MINT::MinuitParameterSet *mps=0)
MINT::const_counted_ptr< DDTree< ValueType > > getDgtrTreePtr(int i) const
const ParticleProperties * get(const std::string &name) const
static const ParticlePropertiesList * getMe()
std::vector< const ValueType * > finalState() const
◆ getRunningWidthFunction_Fermi()
TF1 * RunningWidthCalculator::getRunningWidthFunction_Fermi |
( |
double |
max_s_inGeV2, |
|
|
double |
lambda, |
|
|
double |
s0 |
|
) |
| |
Definition at line 758 of file RunningWidthCalculator.cpp.
767 TF1 *gamma =
new TF1(
"Fermi_phaseSpace",
Fermi_phaseSpace,0,max_s_inGeV2,nPar);
768 gamma->SetParameters(par);
double Fermi_phaseSpace(double s, double lambda, double s0, double threshold)
double lambda(double x, double y, double z)
◆ getRunningWidthFunction_phaseSpace()
TF1 * RunningWidthCalculator::getRunningWidthFunction_phaseSpace |
( |
double |
max_s_inGeV2 | ) |
|
Definition at line 728 of file RunningWidthCalculator.cpp.
731 cout <<
"ERROR in RunningWidthCalculator::makeHisto_phaseSpace: I can handle only 3 body decays but the pattern " <<
_pat 732 <<
" has " <<
_pat.
size()-1 <<
" final state particles. I'll return 0." << endl;
744 ps->SetParameters(par);
const ParticleProperties * get(const std::string &name) const
unsigned int size() const
static const ParticlePropertiesList * getMe()
Double_t phaseSpaceIntegral(Double_t *x, Double_t *par)
◆ makeHisto_2body()
TH1D * RunningWidthCalculator::makeHisto_2body |
( |
int |
nBins, |
|
|
double |
max_m_inMeV, |
|
|
const DecayTree & |
thisDcy, |
|
|
std::string |
OutputFileName = "" |
|
) |
| |
Definition at line 615 of file RunningWidthCalculator.cpp.
621 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body: I can handle only 2 body decays but the decay " << thisDcy
622 <<
" has " << thisDcy.
finalState().size() <<
" final state particles. I'll return 0." << endl;
626 if(thisDcy.
nDgtr() != 2){
627 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body: " 628 <<
" Mother should have 2 daughters, but it says it has " 629 << thisDcy.
nDgtr() <<
". I'll return 0." << endl;
634 cout <<
"ERROR in RunningWidthCalculator::makeHisto_2body:" 635 <<
"DalitzEventPattern and DecayTree are not compatible. I'll return 0." << endl;
656 double l = (BW_X.twoLPlusOne()-1)/2;
658 if(OutputFileName==
"")
660 TFile* f=
new TFile(OutputFileName.c_str(),
"RECREATE");
662 TH1D* h=
new TH1D(
"RunningWidth",
";s [GeV^2]; #Gamma (s) [a.u.]",nBins,
_min_s_inGeV2,max_s_inGeV2);
663 for (
int i=1; i<= h->GetNbinsX(); i++) {
664 h->SetBinContent(i,
Gamma_2body( sqrt(h->GetXaxis()->GetBinCenter(i))*
GeV , m1,
m2, l, r));
bool compatibleWith(const DecayTree &tree) const
const ResonanceProperties * get(int i) const
static ResonancePropertiesList * getMe(const std::string &prefix="", MINT::MinuitParameterSet *mps=0)
MINT::const_counted_ptr< DDTree< ValueType > > getDgtrTreePtr(int i) const
const ParticleProperties * get(const std::string &name) const
Double_t Gamma_2body(double M, double m1, double m2, int l, double r)
static const ParticlePropertiesList * getMe()
std::vector< const ValueType * > finalState() const
◆ makeHisto_3body()
TH1D * RunningWidthCalculator::makeHisto_3body |
( |
int |
nBins, |
|
|
double |
max_m_inMeV, |
|
|
const DecayTree & |
thisDcy, |
|
|
std::string |
OutputFileName = "" |
|
) |
| |
Definition at line 196 of file RunningWidthCalculator.cpp.
202 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body: I can handle only 3 body decays but the decay " << thisDcy
203 <<
" has " << thisDcy.
finalState().size() <<
" final state particles. I'll return 0." << endl;
207 if(thisDcy.
nDgtr() != 2){
208 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body: " 209 <<
" Mother should have 2 daughters, but it says it has " 210 << thisDcy.
nDgtr() <<
". I'll return 0." << endl;
215 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body:" 216 <<
"DalitzEventPattern and DecayTree are not compatible. I'll return 0." << endl;
222 for(
int i=0; i< thisDcy.
nDgtr(); i++){
224 if(dgtr->
nDgtr() == 2) R = dgtr;
225 else bachelor = dgtr;
228 if(0==R || 0== bachelor){
229 cout <<
"ERROR in RunningWidthCalculator::makeHisto_3body:" 230 <<
" Didn't find resonance or bachelor. I'll return 0. " << endl;
254 par[4] = (BW_X.twoLPlusOne()-1)/2;
256 par[5] = (BW_R.twoLPlusOne()-1)/2;
262 par[9] = max_s_inGeV2 *
GeV *
GeV;
264 if(dbThis)
for(
int i=0; i<nPar; i++) cout <<
"Parameter " << i <<
" = " << par[i] << endl;
266 if(OutputFileName==
"")
268 TFile* f=
new TFile(OutputFileName.c_str(),
"RECREATE");
271 gamma->SetParameters(par);
273 TH1D* h=
new TH1D(
"RunningWidth",
";s [GeV^2]; #Gamma (s) [a.u.]",nBins,0,max_s_inGeV2);
274 for (
int i=1; i<= h->GetNbinsX(); i++) {
275 h->SetBinContent(i,gamma->Eval(h->GetXaxis()->GetBinCenter(i) ));
Double_t Gamma_mother_3body(Double_t *x, Double_t *par)
bool compatibleWith(const DecayTree &tree) const
const ResonanceProperties * get(int i) const
const ValueType & getVal() const
static ResonancePropertiesList * getMe(const std::string &prefix="", MINT::MinuitParameterSet *mps=0)
MINT::const_counted_ptr< DDTree< ValueType > > getDgtrTreePtr(int i) const
const ParticleProperties * get(const std::string &name) const
static const ParticlePropertiesList * getMe()
std::vector< const ValueType * > finalState() const
◆ makeHisto_dalitz()
TH1D * RunningWidthCalculator::makeHisto_dalitz |
( |
int |
nBins, |
|
|
double |
max_m_inMeV, |
|
|
int |
nIntegrationEvents, |
|
|
IFastAmplitudeIntegrable * |
amps = 0 , |
|
|
std::string |
OutputFileName = "" |
|
) |
| |
Definition at line 50 of file RunningWidthCalculator.cpp.
53 cout <<
"ERROR in RunningWidthCalculator::makeHisto_dalitz: I can handle only 3 body decays but the pattern " <<
_pat 54 <<
" has " <<
_pat.
size()-1 <<
" final state particles. I'll return 0." << endl;
64 if(OutputFileName==
"")
67 TFile* f=
new TFile(OutputFileName.c_str(),
"RECREATE");
68 TH1D* h=
new TH1D(
"RunningWidth",
"RunningWidth",nBins,
_min_s_inGeV2,max_s_inGeV2);
73 for (
int b=1; b<= h->GetNbinsX(); b++) {
79 pp->
setMass(sqrt(h->GetXaxis()->GetBinCenter(b))*
GeV);
88 sg.FillEventList(eventList, nIntegrationEvents);
93 for (
unsigned int i= 0; i< eventList.
size(); i++) {
94 integral += amps->
RealVal(eventList[i])*eventList[i].getWeight()/(eventList[i].getGeneratorPdfRelativeToPhaseSpace());
95 sumw += eventList[i].getWeight()/(eventList[i].getGeneratorPdfRelativeToPhaseSpace());
104 h->Scale(h->GetNbinsX()/h->Integral());
void changeMassForDebug(double newVal) const
virtual double RealVal(EVENT_TYPE &evt)=0
const ResonanceProperties * get(int i) const
static ResonancePropertiesList * getMe(const std::string &prefix="", MINT::MinuitParameterSet *mps=0)
double getVal(const DalitzEventPattern &_pat)
void setMass(double m) const
const ParticleProperties * get(const std::string &name) const
unsigned int size() const
virtual unsigned int size() const
static const ParticlePropertiesList * getMe()
int generatePhaseSpaceEvents(int NumEvents, const DalitzEventPattern &pat, TRandom *rnd=0)
Double_t phaseSpace(Double_t *x, Double_t *par)
◆ makeHisto_phaseSpace()
TH1D * RunningWidthCalculator::makeHisto_phaseSpace |
( |
int |
nBins, |
|
|
double |
max_m_inMeV, |
|
|
std::string |
OutputFileName = "" |
|
) |
| |
Definition at line 692 of file RunningWidthCalculator.cpp.
695 cout <<
"ERROR in RunningWidthCalculator::makeHisto_phaseSpace: I can handle only 3 body decays but the pattern " <<
_pat 696 <<
" has " <<
_pat.
size()-1 <<
" final state particles. I'll return 0." << endl;
700 if(OutputFileName==
"")
704 TFile* f=
new TFile(OutputFileName.c_str(),
"RECREATE");
705 TH1D* h=
new TH1D(
"RunningWidth",
"RunningWidth",nBins,
_min_s_inGeV2,max_s_inGeV2);
715 ps->SetParameters(par);
717 for (
int i=1; i<= h->GetNbinsX(); i++) {
718 h->SetBinContent(i,ps->Eval(h->GetXaxis()->GetBinCenter(i)));
721 h->Scale(h->GetNbinsX()/h->Integral());
const ParticleProperties * get(const std::string &name) const
unsigned int size() const
static const ParticlePropertiesList * getMe()
Double_t phaseSpaceIntegral(Double_t *x, Double_t *par)
◆ makeRunningMassHisto_3body()
TH1D * RunningWidthCalculator::makeRunningMassHisto_3body |
( |
int |
nBins, |
|
|
double |
max_s_inGeV2, |
|
|
std::vector< TF1 * > |
gamma, |
|
|
std::vector< double > |
g, |
|
|
std::string |
OutputFileName = "" |
|
) |
| |
Definition at line 515 of file RunningWidthCalculator.cpp.
517 double absTol = 0.0001;
518 double relTol = 0.001;
519 unsigned int size = 1000;
521 double epsilon= 0.00001;
523 if(OutputFileName==
"")
525 TFile* f=
new TFile(OutputFileName.c_str(),
"RECREATE");
526 TH1D* h_m=
new TH1D(
"RunningMass",
";s [GeV^{2}]; m^{2} (s) [GeV^{2}]",nBins,
_min_s_inGeV2,max_s_inGeV2);
527 for (
int i=1; i<= h_m->GetNbinsX(); i++) {
528 double singularity = h_m->GetXaxis()->GetBinCenter(i);
530 h_m->SetBinContent(i,0);
534 ROOT::Math::IntegratorOneDim integrator(integrand, ROOT::Math::IntegrationOneDim::kADAPTIVESINGULAR, absTol , relTol , size , rule ) ;
535 h_m->SetBinContent(i,(integrator.Integral(
_min_s_inGeV2,singularity-epsilon) + integrator.Integral(singularity+epsilon,max_s_inGeV2*10000))/TMath::Pi());
const ParticleProperties * get(const std::string &name) const
static const ParticlePropertiesList * getMe()
◆ set_min_s_inGeV2()
void RunningWidthCalculator::set_min_s_inGeV2 |
( |
| ) |
|
|
private |
◆ setDalitzEventPattern()
◆ _min_s_inGeV2
double RunningWidthCalculator::_min_s_inGeV2 |
|
private |
◆ _pat
The documentation for this class was generated from the following files: