15 :
BW_BW(tree, namePrefix)
16 , _pr(
"Rho0Omega::pr", 0.1973)
17 , _aRatioSq(
"Rho0Omega::aRatioSq", 3.9)
18 , _eps_coh(
"Rho0Omega::eps_coh", 1.14)
19 , _beta(
"Rho0Omega::beta", -4.3*
pi/180.0)
20 , _delta(
"Rho0Omega::delta", 2.5/
GeV)
21 , _mRho0(-9999), _mOmega(-9999), _GRho0(-9999), _GOmega(-9999)
37 const double p =
Getp(mpipi);
38 const double q =
Getq(mpipi);
41 const double q0_rho0 =
Getq(rho0_mass);
42 const std::complex<double> bw_rho0 =
43 BW( mpipi, rho0_mass, rho0_width, q, q0_rho0);
46 const double q0_omega =
Getq(omega_mass);
47 const std::complex<double> bw_omega =
48 BW( mpipi, omega_mass, omega_width, q, q0_omega);
52 ((omega_mass*omega_width)-
53 (rho0_mass*
GetGammas(omega_mass,rho0_mass,rho0_width)))/
54 ((omega_mass*omega_mass)-(rho0_mass*rho0_mass));
55 const double phi = atan(tanphi);
57 const double Gammas_rho0 =
GetGammas(mpipi, rho0_mass, rho0_width);
59 const std::complex<double> off_diag =
60 std::polar(1.0, phi) *
GetDelta() * (rho0_mass+omega_mass) /
61 std::complex<double>((omega_mass*omega_mass)-(rho0_mass*rho0_mass),
62 -((omega_mass*omega_width) - (rho0_mass*Gammas_rho0)));
65 const std::complex<double> rho0_omega =
82 <<
"\n\t> This is the decay I'm looking at:" 84 <<
"\n\t> These are a few values: " 88 <<
", Blatt-Weisskopf penetration factor: " 103 const double beta =
_beta;
105 return std::polar(1.0, beta);
137 const TLorentzVector p4pipi =
139 const TLorentzVector p4init =
141 const TLorentzVector p4rec = p4init-p4pipi;
143 const double minit = p4init.M();
144 const double mrec = p4rec.M();
146 const double m2init = minit*minit;
147 const double mpipi_p2_mrec = (mpipi + mrec)*(mpipi + mrec);
148 const double mpipi_m2_mrec = (mpipi - mrec)*(mpipi - mrec);
151 sqrt((m2init-mpipi_p2_mrec)*(m2init-mpipi_m2_mrec))/
154 if( (m2init-mpipi_p2_mrec)*(m2init-mpipi_m2_mrec) < 0.0 ){
155 std::cout <<
"p is negative. This should never happen." << std::endl;
163 const double s = mpipi*mpipi;
166 const double q = sqrt(
s-(4.0*m2pi))/2.0;
172 const double qoverpr = q/
_pr;
174 const double D1 = qoverpr * sqrt(2.0/((qoverpr*qoverpr)+1.0));
185 const double s = mpipi*mpipi;
188 const double rhos = 1.0/mpipi*sqrt(
s - (4.0*m2pi));
194 const double& m0,
const double& Gamma0 )
const {
195 const double s = mpipi*mpipi;
196 const double s0 = m0*m0;
200 Gamma0*pow(((
s-(4.0*m2pi))/(s0-(4.0*m2pi))), 1.5)*m0/mpipi;
206 const double& m0,
const double& Gamma0,
207 const double& q,
const double& q0 )
const {
208 const double s = mpipi*mpipi;
209 const double s0 = m0*m0;
211 const double rhos =
Getrhos(mpipi);
212 const double rhos0 =
Getrhos(m0);
213 const double B1 =
GetB1(q,q0);
215 const double Gamma = Gamma0 * rhos / rhos0 * B1 * B1;
217 const std::complex<double> bw =
218 m0 * Gamma0 / rhos0 * B1 /
219 std::complex<double>(s0 -
s,-m0*Gamma);
virtual void resetInternals()
double GetRho0Width() const
const MINT::NamedParameter< double > _pr
const MINT::NamedParameter< double > _delta
double GetPipMass() const
static double width(const std::string &name)
const AssociatedDecayTree & _theDecay
bool setEventPtr(IDalitzEvent &evt) const
double GetGammas(const double &mpipi, const double &m0, const double &Gamma0) const
double GetRho0Mass() const
const ValueType & getVal() const
double GetOmegaWidth() const
virtual double Fr_PDG_BL()
std::complex< double > BW(const double &mpipi, const double &m0, const double &Gamma0, const double &q, const double &q0) const
IDalitzEvent * getEvent() const
const MINT::NamedParameter< double > _beta
Rho0Omega(const AssociatedDecayTree &tree, const std::string &namePrefix="")
double Getrhos(const double &mpipi) const
virtual TLorentzVector daughterP4(int i) const
virtual void print(std::ostream &out=std::cout) const
const MINT::NamedParameter< double > _eps_coh
double Getq(const double &mpipi) const
virtual bool startOfDecayChain() const
std::complex< double > GetExpiBeta() const
std::ostream & operator<<(std::ostream &out, const Rho0Omega &)
double GetD1(const double &q) const
double GetOmegaMass() const
double GetB1(const double &q, const double &q0) const
double Getp(const double &mpipi) const
static double mass(const std::string &name)
virtual std::string name() const
const DDTree< ValueType > * getParent() const
TLorentzVector p(const IDalitzEvent *evt) const
virtual std::complex< double > getVal(IDalitzEvent &evt)
const MINT::NamedParameter< double > _aRatioSq
double GetAOmegatoRho0() const
virtual std::complex< double > BreitWigner()
virtual DalitzCoordinate getDalitzCoordinate(double nSigma=3) const