MINT2
Classes | Functions
RunningWidthCalculator.cpp File Reference
#include "Mint/CLHEPPhysicalConstants.h"
#include "TMath.h"
#include "TCanvas.h"
#include "TH1D.h"
#include "TF1.h"
#include "Mint/Utils.h"
#include "Mint/DalitzEventList.h"
#include "Mint/RunningWidthCalculator.h"
#include "Mint/SignalGenerator.h"
#include "Mint/ResonanceProperties.h"
#include "Mint/ResonancePropertiesList.h"
#include "Mint/BW_BW.h"
#include "Mint/phaseSpaceIntegrals.h"
#include <cmath>
#include <complex>
#include "Math/Integrator.h"
#include "Math/Functor.h"
#include "Math/GSLIntegrator.h"
#include "Mint/Minimisable.h"
#include "Mint/Minimiser.h"

Go to the source code of this file.

Classes

class  BF_Integrand
 
class  chi2BF
 
class  Dispersion_Integrand
 

Functions

Double_t Bl_2 (double q, double r, int l)
 
Double_t Q (double M, double m1, double m2)
 
Double_t Gamma_2body (double M, double m1, double m2, int l, double r)
 
Double_t Gamma_2body (Double_t *x, Double_t *par)
 
Double_t BW_resonance (double m12, double m1, double m2, int l, double mass, double width, double r)
 
Double_t Gamma_mother_3body_byM12 (Double_t *x, Double_t *par)
 
Double_t Gamma_mother_3body (Double_t *x, Double_t *par)
 
Double_t phaseSpaceIntegral (Double_t *x, Double_t *par)
 
double Fermi_phaseSpace (double s, double lambda, double s0, double threshold)
 
Double_t Fermi_phaseSpace (Double_t *x, Double_t *par)
 

Function Documentation

◆ Bl_2()

Double_t Bl_2 ( double  q,
double  r,
int  l 
)

Definition at line 113 of file RunningWidthCalculator.cpp.

113  {
114 
115  double z= q*r;
116  if(l==1)return (2*z*z)/(1.+z*z);
117  if(l==2)return (13*pow(z,4))/(9.+3.*z*z+pow(z,4));
118  else return 1.;
119 }

◆ BW_resonance()

Double_t BW_resonance ( double  m12,
double  m1,
double  m2,
int  l,
double  mass,
double  width,
double  r 
)

Definition at line 146 of file RunningWidthCalculator.cpp.

146  {
147  double gamma = Gamma_2body(m12,m1,m2,l,r);
148  double gamma0 = Gamma_2body(mass,m1,m2,l,r);
149 
150  gamma= width*gamma/gamma0;
151 
152  return m12*gamma/((mass*mass-m12*m12)*(mass*mass-m12*m12)+(mass*gamma)*(mass*gamma));
153 }
static const double m2
Double_t Gamma_2body(double M, double m1, double m2, int l, double r)

◆ Fermi_phaseSpace() [1/2]

double Fermi_phaseSpace ( double  s,
double  lambda,
double  s0,
double  threshold 
)

Definition at line 749 of file RunningWidthCalculator.cpp.

749  {
750  if (s<threshold)return 0;
751  return sqrt(1.- threshold/s)/(1.+ exp(lambda * (s0-s) ) );
752 }
static const double s
double lambda(double x, double y, double z)
Definition: lambda.h:8

◆ Fermi_phaseSpace() [2/2]

Double_t Fermi_phaseSpace ( Double_t *  x,
Double_t *  par 
)

Definition at line 754 of file RunningWidthCalculator.cpp.

754  {
755  return Fermi_phaseSpace(x[0],par[0],par[1],par[2]);
756 }
double Fermi_phaseSpace(double s, double lambda, double s0, double threshold)

◆ Gamma_2body() [1/2]

Double_t Gamma_2body ( double  M,
double  m1,
double  m2,
int  l,
double  r 
)

Definition at line 132 of file RunningWidthCalculator.cpp.

132  {
133 
134  double q = Q(M,m1,m2);
135 
136  double bl_2 = Bl_2(q,r,l);
137 
138  return q/M * bl_2;
139 }
static const double m2
Double_t Bl_2(double q, double r, int l)
Double_t Q(double M, double m1, double m2)

◆ Gamma_2body() [2/2]

Double_t Gamma_2body ( Double_t *  x,
Double_t *  par 
)

Definition at line 141 of file RunningWidthCalculator.cpp.

141  {
142  if(sqrt(x[0])*GeV< (par[0]+par[1]))return 0;
143  return Gamma_2body(sqrt(x[0])*GeV,par[0],par[1],(int)par[2],par[3]);
144 }
static const double GeV
Double_t Gamma_2body(double M, double m1, double m2, int l, double r)

◆ Gamma_mother_3body()

Double_t Gamma_mother_3body ( Double_t *  x,
Double_t *  par 
)

Definition at line 171 of file RunningWidthCalculator.cpp.

171  {
172 
173  const int nPar = 10;
174  const int nPar_new = 11;
175  double min_s12 = par[1]+par[2];
176  double bachelorMass = par[3] ;
177 
178  // Copy parameters
179  Double_t par_new[nPar_new];
180  for (int i=0; i< nPar; i++) {
181  par_new[i] = par[i];
182  }
183  // Add m(1,2,3) as parameter
184  par_new[10] = sqrt(x[0])*GeV;
185 
186  if(sqrt(x[0])*GeV-bachelorMass<min_s12)return 0.;
187 
188  TF1 *gamma_byS12 = new TF1("Gamma_mother_3body_byM12",Gamma_mother_3body_byM12,min_s12,par[9],nPar_new);
189  gamma_byS12->SetParameters(par_new);
190  double gamma = gamma_byS12->Integral(min_s12, sqrt(x[0])*GeV-bachelorMass);
191 
192  return gamma;
193 }
Double_t Gamma_mother_3body_byM12(Double_t *x, Double_t *par)
static const double GeV

◆ Gamma_mother_3body_byM12()

Double_t Gamma_mother_3body_byM12 ( Double_t *  x,
Double_t *  par 
)

Definition at line 155 of file RunningWidthCalculator.cpp.

155  {
156 
157  //3 body decay : X -> (R->1 2) 3
158  //par[0]: mother (X) radius
159  //x[0]: m12, to be integrated over
160  //par[i]: final state masses, i=1,2,3
161  //par[4]: angular momentum in X -> R 3
162  //par[5]: angular momentum in R -> 1 2
163  //par[6]: resonance (R) mass
164  //par[7]: resonance (R) width
165  //par[8]: resonance (X) radius
166  //par[10]: mother (X) mass
167 
168  return Gamma_2body(par[10],x[0],par[3],par[4],par[0])*BW_resonance(x[0],par[1],par[2],par[5],par[6],par[7],par[8])*x[0];
169 }
Double_t BW_resonance(double m12, double m1, double m2, int l, double mass, double width, double r)
Double_t Gamma_2body(double M, double m1, double m2, int l, double r)

◆ phaseSpaceIntegral()

Double_t phaseSpaceIntegral ( Double_t *  x,
Double_t *  par 
)

Definition at line 676 of file RunningWidthCalculator.cpp.

676  {
677 
678  //x[0]: mumsRecoMass()^2
679  //par[0]: mumsMass()
680  //par[i]: final state masses (i=1,2,3)
681 
683  double ps_val = ps.getVal(sqrt(x[0])*GeV,par[1],par[2],par[3]);
684  double ps0_val = ps.getVal(par[0],par[1],par[2],par[3]);
685 
686  double ps_ratio=0.;
687  if(ps0_val>0)ps_ratio= ps_val/ps0_val;
688 
689  return ps_ratio * par[0]/(sqrt(x[0])*GeV);
690 }
double getVal(const DalitzEventPattern &_pat)
static const double GeV

◆ Q()

Double_t Q ( double  M,
double  m1,
double  m2 
)

Definition at line 121 of file RunningWidthCalculator.cpp.

122 {
123  Double_t q2 = (M*M-(m1+m2)*(m1+m2) ) * (M*M-(m1-m2)*(m1-m2) ) / (4.*M*M) ;
124  if(q2<0){
125  cout << " q2 = " << q2 << " M = " << M << " m1 = " << m1 << " m2 = " << m2 << endl;
126  q2=0;
127 
128  }
129  return sqrt(q2);
130 }
static const double m2