Page MenuHomeHEPForge

No OneTemporary

This document is not UTF8. It was detected as ISO-8859-1 (Latin 1) and converted to UTF8 for display.
diff --git a/EvtGenBase/EvtDalitzReso.hh b/EvtGenBase/EvtDalitzReso.hh
index 561b8ab..d1c8a34 100644
--- a/EvtGenBase/EvtDalitzReso.hh
+++ b/EvtGenBase/EvtDalitzReso.hh
@@ -1,151 +1,167 @@
/*****************************************************************************
* Project: BaBar detector at the SLAC PEP-II B-factory
* Package: EvtGenBase
* File: $Id: EvtDalitzReso.hh,v 1.1 2009-03-16 16:50:49 robbep Exp $
*
* Description:
* Class to compute Dalitz amplitudes based on many models that cannot be
* handled with EvtResonance.
*
* Modification history:
* Jordi Garra Ticó 2008/07/03 File created
*****************************************************************************/
#ifndef __EVTDALITZRESO_HH__
#define __EVTDALITZRESO_HH__
#include <string>
#include <vector>
#include <map>
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#include "EvtGenBase/EvtSpinType.hh"
#include "EvtGenBase/EvtTwoBodyVertex.hh"
#include "EvtGenBase/EvtDalitzPoint.hh"
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtBlattWeisskopf.hh"
+#include "EvtGenBase/EvtFlatte.hh"
using std::vector;
using std::map;
class EvtBlattWeisskopf;
class EvtDalitzReso
{
public:
// Numerator type
enum NumType { NBW = 0 , RBW_ZEMACH = 1 , RBW_KUEHN = 2 , RBW_CLEO = 3 ,
RBW_ZEMACH2 = 4 , GS_CLEO = 5 , K_MATRIX = 6 , RBW_CLEO_ZEMACH = 7 ,
GS_CLEO_ZEMACH = 8 , LASS = 9 , K_MATRIX_I = 10, K_MATRIX_II = 11,
- GAUSS_CLEO = 12, GAUSS_CLEO_ZEMACH = 13 };
+ GAUSS_CLEO = 12, GAUSS_CLEO_ZEMACH = 13, FLATTE = 14, NON_RES = 15 };
// Coupling type
// ChgPion : pi+ pi-
// NeuPion : pi0 pi0
// Pion : 0.5*[(pi+ pi-) + (pi0 pi0)]
// ChgKaon : K+ K-
// NeuKaon : K0 K0
// Kaon : 0.5*[(K+ K-) + (K0 K0)]
// EtaPion : eta pi0
enum CouplingType {Undefined=0,PicPic=1,PizPiz,PiPi,KcKc,KzKz,KK,EtaPic,EtaPiz,PicPicKK,WA76};
- EvtDalitzReso() {};
+ EvtDalitzReso() : _typeN(NON_RES) {};
EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes,
- EvtSpinType::spintype spin, double m0, double g0, NumType typeN);
+ EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double f_b=0.0, double f_d=1.5);
EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes,
EvtSpinType::spintype spin, double m0, double g0, NumType typeN,
double m0_mix, double g0_mix, double delta_mix, EvtComplex amp_mix);
EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes,
EvtSpinType::spintype spin, double m0, NumType typeN, double g1, double g2, CouplingType coupling2);
// K-matrix
EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, std::string nameIndex, NumType typeN,
EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod);
// LASS
EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0, double g0,
double a, double r, double B, double phiB, double R, double phiR);
+ //Flatte
+ EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0);
+
EvtDalitzReso(const EvtDalitzReso& other);
~EvtDalitzReso();
EvtDalitzReso* clone() const { return new EvtDalitzReso(*this); }
EvtComplex evaluate(const EvtDalitzPoint& p);
void set_fd( double R ) { _vd.set_f( R ); }
void set_fb( double R ) { _vb.set_f( R ); }
+ void addFlatteParam(const EvtFlatteParam& param) { _flatteParams.push_back(param); }
+
private:
EvtComplex psFactor(double& ma, double& mb, double& m);
EvtComplex psFactor(double& ma1, double& mb1, double& ma2, double& mb2, double& m);
EvtComplex propGauss(const double& m0, const double& s0, const double& m);
EvtComplex propBreitWigner(const double& m0, const double& g0, const double& m);
EvtComplex propBreitWignerRel(const double& m0, const double& g0, const double& m);
EvtComplex propBreitWignerRel(const double& m0, const EvtComplex& g0, const double& m);
EvtComplex propBreitWignerRelCoupled(const double& m0, const EvtComplex& g1, const EvtComplex& g2, const double& m);
EvtComplex propGounarisSakurai(const double& m0, const double& g0, const double& k0,
const double& m, const double& g, const double& k);
inline double GS_f(const double& m0, const double& g0, const double& k0, const double& m, const double& k);
inline double GS_h(const double& m, const double& k);
inline double GS_dhods(const double& m0, const double& k0);
inline double GS_d(const double& m0, const double& k0);
EvtComplex numerator(const EvtDalitzPoint& p, const EvtTwoBodyKine& vb, const EvtTwoBodyKine& vd);
double angDep(const EvtDalitzPoint& p);
EvtComplex mixFactor(EvtComplex prop, EvtComplex prop_mix);
EvtComplex Fvector( double s, int index );
EvtComplex lass(double s);
+ EvtComplex flatte(const double& m);
+
+ inline EvtComplex sqrtCplx(double in) { return (in > 0) ? EvtComplex(sqrt(in), 0) : EvtComplex(0, sqrt(-in)); }
// Dalitz plot
EvtDalitzPlot _dp;
// Pairing indices:
EvtCyclic3::Pair _pairAng; // angular
EvtCyclic3::Pair _pairRes; // resonance
// Spin
EvtSpinType::spintype _spin;
// Numerator type
NumType _typeN;
// Nominal mass and width
double _m0,_g0;
// Vertices
EvtTwoBodyVertex _vb;
EvtTwoBodyVertex _vd;
// Daughter masses
double _massFirst,_massSecond;
// variables for electromagnetic mass mixing
double _m0_mix,_g0_mix,_delta_mix;
EvtComplex _amp_mix;
// variables for coupled Breit-Wigner
double _g1,_g2;
CouplingType _coupling2;
+ // variables for Blatt-Weisskopf form factors
+ double _f_b, _f_d;
+
// K-matrix
int _kmatrix_index;
EvtComplex _fr12prod,_fr13prod,_fr14prod,_fr15prod;
double _s0prod;
// LASS
double _a;
double _r;
double _Blass;
double _phiB;
double _R;
double _phiR;
+
+ // Flatte
+ std::vector<EvtFlatteParam> _flatteParams;
+
};
#endif
diff --git a/EvtGenModels/EvtDalitzDecayInfo.hh b/EvtGenModels/EvtDalitzDecayInfo.hh
index e432276..2ce1b91 100644
--- a/EvtGenModels/EvtDalitzDecayInfo.hh
+++ b/EvtGenModels/EvtDalitzDecayInfo.hh
@@ -1,54 +1,55 @@
//--------------------------------------------------------------------------
//
// Environment:
// This software is part of the EvtGen package developed jointly
// for the BaBar and CLEO collaborations. If you use all or part
// of it, please give an appropriate acknowledgement.
//
// Copyright Information: See EvtGen/COPYRIGHT
// Copyright (C) 1998 Caltech, UCSB
//
// Module: EvtGen/EvtGenericDalitz.hh
//
// Description: Model to describe a generic dalitz decay
//
// Modification history:
//
// DCC 16 December, 2011 Module created
//
//------------------------------------------------------------------------
#ifndef EVTDALITZDECAYINFO_HH
#define EVTDALITZDECAYINFO_HH
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtId.hh"
-#include "EvtGenModels/EvtResonancePrototype.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
#include <vector>
class EvtDalitzDecayInfo {
public:
EvtDalitzDecayInfo(EvtId d1, EvtId d2, EvtId d3)
: _d1(d1), _d2(d2), _d3(d3), _probMax(0.) {}
~EvtDalitzDecayInfo() {}
- void addResonance(EvtResonancePrototype res) {_resonances.push_back(res);}
+ void addResonance(EvtComplex amp, EvtDalitzReso res) {_resonances.push_back(std::pair<EvtComplex, EvtDalitzReso>(amp,res));}
+ void addResonance(std::pair<EvtComplex,EvtDalitzReso> res) {_resonances.push_back(res);}
void setProbMax(double probMax) {_probMax = probMax;}
- const std::vector<EvtResonancePrototype>& getResonances() const {return _resonances;}
+ const std::vector< std::pair<EvtComplex, EvtDalitzReso> >& getResonances() const {return _resonances;}
double getProbMax() const {return _probMax;}
inline const EvtId& daughter1() const {return _d1;}
inline const EvtId& daughter2() const {return _d2;}
inline const EvtId& daughter3() const {return _d3;}
private:
EvtId _d1, _d2, _d3;
- std::vector<EvtResonancePrototype> _resonances;
+ std::vector<std::pair<EvtComplex, EvtDalitzReso> > _resonances;
double _probMax;
};
#endif
diff --git a/EvtGenModels/EvtGenericDalitz.hh b/EvtGenModels/EvtGenericDalitz.hh
index ff0668d..701e57a 100644
--- a/EvtGenModels/EvtGenericDalitz.hh
+++ b/EvtGenModels/EvtGenericDalitz.hh
@@ -1,53 +1,53 @@
//--------------------------------------------------------------------------
//
// Environment:
// This software is part of the EvtGen package developed jointly
// for the BaBar and CLEO collaborations. If you use all or part
// of it, please give an appropriate acknowledgement.
//
// Copyright Information: See EvtGen/COPYRIGHT
// Copyright (C) 1998 Caltech, UCSB
//
// Module: EvtGen/EvtGenericDalitz.hh
//
// Description: Model to describe a generic dalitz decay
//
// Modification history:
//
// DCC 16 December, 2011 Module created
//
//------------------------------------------------------------------------
#ifndef EVTGENERICDALITZ_HH
#define EVTGENERICDALITZ_HH
#include "EvtGenBase/EvtDecayAmp.hh"
#include "EvtGenBase/EvtFlatte.hh"
-#include "EvtGenModels/EvtResonancePrototype.hh"
+#include "EvtGenBase/EvtDalitzReso.hh"
#include <string>
#include <vector>
class EvtParticle;
class EvtGenericDalitz:public EvtDecayAmp {
public:
EvtGenericDalitz() {}
virtual ~EvtGenericDalitz() {}
std::string getName();
EvtDecayBase* clone();
void init();
void initProbMax() {};//prob max will be set in init
void decay(EvtParticle *p);
private:
int _d1,_d2,_d3;
- std::vector<EvtResonancePrototype> _resonances;
+ std::vector<std::pair<EvtComplex,EvtDalitzReso> > _resonances;
};
#endif
diff --git a/EvtGenModels/EvtResonancePrototype.hh b/EvtGenModels/EvtResonancePrototype.hh
deleted file mode 100644
index edc2c44..0000000
--- a/EvtGenModels/EvtResonancePrototype.hh
+++ /dev/null
@@ -1,89 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
-#ifndef EVTRESONANCEPROTOTYPE_HH
-#define EVTRESONANCEPROTOTYPE_HH
-
-#include "EvtGenBase/EvtComplex.hh"
-#include "EvtGenBase/EvtVector4R.hh"
-#include "EvtGenBase/EvtFlatte.hh"
-
-class EvtResonancePrototype {
-public:
-
- EvtResonancePrototype()
- : _factor(0.), _ampl(0.), _theta(0.), _gamma(0.), _mass(0.),
- _spin(0), _useDaughterPair(0), _bwFactor(0), _useRelBW(false),
- _angdenom(false), _useFlatte(false) {}
-
-//NonRes
- EvtResonancePrototype(EvtComplex ampFactor, double ampl, double theta)
- : _factor(ampFactor), _ampl(ampl), _theta(theta), _gamma(0),
- _mass(0), _spin(0), _useDaughterPair(0),
- _bwFactor(0), _useRelBW(0), _angdenom(0), _useFlatte(0), _nonRes(true) {}
-
-//BW
- EvtResonancePrototype(EvtComplex ampFactor, double ampl, double theta,
- double gamma, double mass, int spin, int daughterPair,
- bool invmass_angdenom)
- : _factor(ampFactor), _ampl(ampl), _theta(theta), _gamma(gamma),
- _mass(mass), _spin(spin), _useDaughterPair(daughterPair),
- _bwFactor(0), _useRelBW(false), _angdenom(invmass_angdenom),
- _useFlatte(false), _nonRes(false) {}
-
-//RelBW
- EvtResonancePrototype(EvtComplex ampFactor, double ampl, double theta,
- double gamma, double mass, int spin, int daughterPair,
- int bwFactor)
- : _factor(ampFactor), _ampl(ampl), _theta(theta), _gamma(gamma),
- _mass(mass), _spin(spin), _useDaughterPair(daughterPair),
- _bwFactor(bwFactor), _useRelBW(true), _angdenom(false),
- _useFlatte(false), _nonRes(false) {}
-
-//Flatte
- EvtResonancePrototype(EvtComplex ampFactor, double ampl, double theta,
- double mass, int daughterPair)
- : _factor(ampFactor), _ampl(ampl), _theta(theta), _gamma(0),
- _mass(mass), _spin(0), _useDaughterPair(daughterPair),
- _bwFactor(0), _useRelBW(false), _angdenom(false),
- _useFlatte(true), _nonRes(false) {}
-
- ~EvtResonancePrototype() {}
- EvtComplex getAmp(const EvtVector4R& p4_p, const EvtVector4R& p4_d1,
- const EvtVector4R& p4_d2, const EvtVector4R& p4_d3);
-
- void addFlatteParam(const EvtFlatteParam& param) { _flatteParams.push_back(param); }
-
-private:
-
- EvtComplex _factor;
- double _ampl, _theta, _gamma, _mass;
- int _spin, _useDaughterPair, _bwFactor;
- bool _useRelBW, _angdenom, _useFlatte, _nonRes;
- /* PRIORITY OF FLAGS
- * if _useFlatte is set then we will produce the amplitude from an EvtFlatte
- * else if _useBW is set we will produce a Breitt-Wigner with an EvtResonance
- * else we will use an EvtResonance2 (and flag _angDenom will be used)
- */
- std::vector<EvtFlatteParam> _flatteParams;
-
-};
-
-#endif
diff --git a/src/EvtGenBase/EvtDalitzReso.cpp b/src/EvtGenBase/EvtDalitzReso.cpp
index 14e46fe..abe03ab 100644
--- a/src/EvtGenBase/EvtDalitzReso.cpp
+++ b/src/EvtGenBase/EvtDalitzReso.cpp
@@ -1,839 +1,885 @@
#include "EvtGenBase/EvtPatches.hh"
/*****************************************************************************
* Project: BaBar detector at the SLAC PEP-II B-factory
* Package: EvtGenBase
* File: $Id: EvtDalitzReso.cpp,v 1.1 2009-03-16 16:47:51 robbep Exp $
*
* Description:
* Class to compute Dalitz amplitudes based on many models that cannot be
* handled with EvtResonance.
*
* Modification history:
* Jordi Garra Ticó 2008/07/03 File created
*****************************************************************************/
#include <assert.h>
#include <cmath>
#include <iostream>
#include <stdlib.h>
#include "EvtGenBase/EvtParticle.hh"
#include "EvtGenBase/EvtGenKine.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtMatrix.hh"
#include "EvtGenBase/EvtDalitzReso.hh"
#include "EvtGenBase/EvtdFunction.hh"
#include "EvtGenBase/EvtCyclic3.hh"
#define PRECISION ( 1.e-3 )
using EvtCyclic3::Index;
using EvtCyclic3::Pair;
// single Breit-Wigner
EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
- EvtSpinType::spintype spin, double m0, double g0, NumType typeN)
+ EvtSpinType::spintype spin, double m0, double g0, NumType typeN, double f_b, double f_d)
: _dp(dp),
_pairAng(pairAng),
_pairRes(pairRes),
_spin(spin),
_typeN(typeN),
_m0(m0),_g0(g0),
_massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
_m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
_g1(-1.),_g2(-1.),_coupling2(Undefined),
+ _f_b(f_b), _f_d(f_d),
_kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
_a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
{
_vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
_vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
- _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
- _vd.set_f( 1.5 );
+ _vb.set_f( _f_b ); // Default values for Blatt-Weisskopf factors are 0.0 and 1.5.
+ _vd.set_f( _f_d );
assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II); // single BW cannot be K-matrix
}
// Breit-Wigner with electromagnetic mass mixing
EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, double m0, double g0, NumType typeN,
double m0_mix, double g0_mix, double delta_mix, EvtComplex amp_mix)
: _dp(dp),
_pairAng(pairAng),
_pairRes(pairRes),
_spin(spin),
_typeN(typeN),
_m0(m0),_g0(g0),
_massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
_m0_mix(m0_mix),_g0_mix(g0_mix),_delta_mix(delta_mix),_amp_mix(amp_mix),
_g1(-1.),_g2(-1.),_coupling2(Undefined),
+ _f_b(0.0), _f_d(1.5),
_kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
_a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
{
_vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
_vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
_vd.set_f( 1.5 );
// single BW (with electromagnetic mixing) cannot be K-matrix
assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II);
}
// coupled Breit-Wigner
EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairAng, Pair pairRes,
EvtSpinType::spintype spin, double m0, NumType typeN, double g1, double g2, CouplingType coupling2)
: _dp(dp),
_pairAng(pairAng),
_pairRes(pairRes),
_spin(spin),
_typeN(typeN),
_m0(m0),_g0(-1.),
_massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
_m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
_g1(g1),_g2(g2),_coupling2(coupling2),
+ _f_b(0.0), _f_d(1.5),
_kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
_a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
{
_vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
_vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
_vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
_vd.set_f( 1.5 );
assert(_coupling2 != Undefined);
assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II); // coupled BW cannot be K-matrix
assert(_typeN != LASS); // coupled BW cannot be LASS
assert(_typeN != NBW); // for coupled BW, only relativistic BW
}
// K-Matrix (A&S)
EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes, std::string nameIndex, NumType typeN,
EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod)
: _dp(dp),
_pairRes(pairRes),
_typeN(typeN),
_m0(0.),_g0(0.),
_massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
_m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
_g1(-1.),_g2(-1.),_coupling2(Undefined),
+ _f_b(0.), _f_d(0.),
_kmatrix_index(-1),_fr12prod(fr12prod),_fr13prod(fr13prod),_fr14prod(fr14prod),_fr15prod(fr15prod),_s0prod(s0prod),
_a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
{
assert(_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II);
_spin=EvtSpinType::SCALAR;
if (nameIndex=="Pole1") _kmatrix_index=1;
else if (nameIndex=="Pole2") _kmatrix_index=2;
else if (nameIndex=="Pole3") _kmatrix_index=3;
else if (nameIndex=="Pole4") _kmatrix_index=4;
else if (nameIndex=="Pole5") _kmatrix_index=5;
else if (nameIndex=="f11prod") _kmatrix_index=6;
else assert(0);
}
// LASS parameterization
EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, Pair pairRes,
double m0, double g0, double a, double r, double B, double phiB, double R, double phiR)
: _dp(dp),
_pairRes(pairRes),
_typeN(LASS),
_m0(m0),_g0(g0),
_massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
_m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
_g1(-1.),_g2(-1.),_coupling2(Undefined),
+ _f_b(0.0), _f_d(1.5),
_kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
_a(a),_r(r),_Blass(B),_phiB(phiB),_R(R),_phiR(phiR)
{
_spin=EvtSpinType::SCALAR;
_vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
_vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
}
+//Flatte
+EvtDalitzReso::EvtDalitzReso(const EvtDalitzPlot& dp, EvtCyclic3::Pair pairRes, double m0)
+ : _dp(dp),
+ _pairRes(pairRes),
+ _typeN(FLATTE),
+ _m0(m0), _g0(0.),
+ _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
+ _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
+ _g1(-1.),_g2(-1.),_coupling2(Undefined),
+ _f_b(0.), _f_d(0.),
+ _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
+ _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
+{
+ _spin=EvtSpinType::SCALAR;
+}
+
EvtDalitzReso::EvtDalitzReso(const EvtDalitzReso& other)
: _dp(other._dp),
_pairAng(other._pairAng),
_pairRes(other._pairRes),
_spin(other._spin),
_typeN(other._typeN),
_m0(other._m0),_g0(other._g0),
_vb(other._vb),_vd(other._vd),
_massFirst(other._massFirst),_massSecond(other._massSecond),
_m0_mix(other._m0_mix),_g0_mix(other._g0_mix),_delta_mix(other._delta_mix),_amp_mix(other._amp_mix),
_g1(other._g1),_g2(other._g2),_coupling2(other._coupling2),
+ _f_b(other._f_b), _f_d(other._f_d),
_kmatrix_index(other._kmatrix_index),
_fr12prod(other._fr12prod),_fr13prod(other._fr13prod),_fr14prod(other._fr14prod),_fr15prod(other._fr15prod),
_s0prod(other._s0prod),
- _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR)
+ _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR),
+ _flatteParams(other._flatteParams)
{}
EvtDalitzReso::~EvtDalitzReso()
{}
EvtComplex EvtDalitzReso::evaluate(const EvtDalitzPoint& x)
{
double m = sqrt(x.q(_pairRes));
+ if (_typeN==NON_RES)
+ return EvtComplex(1.0,0.0);
+
// do use always hash table (speed up fitting)
if (_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II)
return Fvector( m*m, _kmatrix_index );
if (_typeN==LASS)
return lass(m*m);
+ if (_typeN==FLATTE)
+ return flatte(m);
+
EvtComplex amp(1.0,0.0);
- if (_dp.bigM() != x.bigM()) _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin);
+ if (fabs(_dp.bigM() - x.bigM()) > 0.000001) {
+ _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin);
+ _vb.set_f(_f_b);
+ }
EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
EvtTwoBodyKine vd(_massFirst,_massSecond,m);
EvtComplex prop(0,0);
if (_typeN==NBW) {
prop = propBreitWigner(_m0,_g0,m);
} else if (_typeN==GAUSS_CLEO || _typeN==GAUSS_CLEO_ZEMACH) {
prop = propGauss(_m0,_g0,m);
} else {
if (_coupling2==Undefined) {
// single BW
double g = (_g0<=0. || _vd.pD()<=0.)? -_g0 : _g0*_vd.widthFactor(vd); // running width
if (_typeN==GS_CLEO || _typeN==GS_CLEO_ZEMACH) {
// Gounaris-Sakurai (GS)
assert(_massFirst==_massSecond);
prop = propGounarisSakurai(_m0,fabs(_g0),_vd.pD(),m,g,vd.p());
} else {
// standard relativistic BW
prop = propBreitWignerRel(_m0,g,m);
}
} else {
// coupled width BW
EvtComplex G1,G2;
switch (_coupling2) {
case PicPic: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
G2 = _g2*_g2*psFactor(mPic,mPic,m);
break;
}
case PizPiz: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2*_g2*psFactor(mPiz,mPiz,m);
break;
}
case PiPi: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2*_g2*psFactor(mPic,mPic,mPiz,mPiz,m);
break;
}
case KcKc: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
G2 = _g2*_g2*psFactor(mKc,mKc,m);
break;
}
case KzKz: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
G2 = _g2*_g2*psFactor(mKz,mKz,m);
break;
}
case KK: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
break;
}
case EtaPic: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
G2 = _g2*_g2*psFactor(mEta,mPic,m);
break;
}
case EtaPiz: {
G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
G2 = _g2*_g2*psFactor(mEta,mPiz,m);
break;
}
case PicPicKK: {
static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
//G1 = _g1*_g1*psFactor(mPic,mPic,m);
G1 = _g1*psFactor(mPic,mPic,m);
static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
//G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
G2 = _g2*psFactor(mKc,mKc,mKz,mKz,m);
break;
}
default:
std::cout << "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state." << std::endl;
assert(0);
break;
}
// calculate standard couple BW propagator
if (_coupling2 != WA76)
prop = _g1*propBreitWignerRelCoupled(_m0,G1,G2,m);
}
}
amp *= prop;
// Compute form-factors (Blatt-Weisskopf penetration factor)
amp *= _vb.formFactor(vb);
amp *= _vd.formFactor(vd);
// Compute numerator (angular distribution)
amp *= numerator(x,vb,vd);
// Compute electromagnetic mass mixing factor
if (_m0_mix>0.) {
EvtComplex prop_mix;
if (_typeN==NBW) {
prop_mix = propBreitWigner(_m0_mix,_g0_mix,m);
} else {
assert(_g1<0.); // running width only
double g_mix = _g0_mix*_vd.widthFactor(vd);
prop_mix = propBreitWignerRel(_m0_mix,g_mix,m);
}
amp *= mixFactor(prop,prop_mix);
}
return amp;
}
EvtComplex EvtDalitzReso::psFactor(double & ma, double & mb, double& m)
{
if (m>(ma+mb)) {
EvtTwoBodyKine vd(ma,mb,m);
return EvtComplex(0,2*vd.p()/m);
} else {
// analytical continuation
double s = m*m;
double phaseFactor_analyticalCont = -0.5*(sqrt(4*ma*ma/s-1)+sqrt(4*mb*mb/s-1));
return EvtComplex(phaseFactor_analyticalCont,0);
}
}
EvtComplex EvtDalitzReso::psFactor(double & ma1,double & mb1, double & ma2, double & mb2, double& m)
{
return 0.5*(psFactor(ma1,mb1,m)+psFactor(ma2,mb2,m));
}
EvtComplex EvtDalitzReso::propGauss(const double& m0, const double& s0, const double& m)
{
// Gaussian
double gauss = 1./sqrt(EvtConst::twoPi)/s0*exp(-(m-m0)*(m-m0)/2./(s0*s0));
return EvtComplex(gauss,0.);
}
EvtComplex EvtDalitzReso::propBreitWigner(const double& m0, const double& g0, const double& m)
{
// non-relativistic BW
return sqrt(g0/EvtConst::twoPi)/(m-m0-EvtComplex(0.0,g0/2.));
}
EvtComplex EvtDalitzReso::propBreitWignerRel(const double& m0, const double& g0, const double& m)
{
// relativistic BW with real width
return 1./(m0*m0-m*m-EvtComplex(0.,m0*g0));
}
EvtComplex EvtDalitzReso::propBreitWignerRel(const double& m0, const EvtComplex& g0, const double& m)
{
// relativistic BW with complex width
return 1./(m0*m0-m*m-EvtComplex(0.,m0)*g0);
}
EvtComplex EvtDalitzReso::propBreitWignerRelCoupled(const double& m0, const EvtComplex& g1, const EvtComplex& g2, const double& m)
{
// relativistic coupled BW
return 1./(m0*m0-m*m-(g1+g2));
}
EvtComplex EvtDalitzReso::propGounarisSakurai(const double& m0, const double& g0, const double& k0,
const double& m, const double& g, const double& k)
{
// Gounaris-Sakurai parameterization of pi+pi- P wave. PRD, Vol61, 112002. PRL, Vol21, 244.
// Expressions taken from BAD637v4, after fixing the imaginary part of the BW denominator: i M_R Gamma_R(s) --> i sqrt(s) Gamma_R(s)
return (1.+GS_d(m0,k0)*g0/m0)/(m0*m0-m*m-EvtComplex(0.,m*g)+GS_f(m0,g0,k0,m,k));
}
inline double EvtDalitzReso::GS_f(const double& m0, const double& g0, const double& k0, const double& m, const double& k)
{
// m: sqrt(s)
// m0: nominal resonance mass
// k: momentum of pion in resonance rest frame (at m)
// k0: momentum of pion in resonance rest frame (at nominal resonance mass)
return g0*m0*m0/(k0*k0*k0)*( k*k*(GS_h(m,k)-GS_h(m0,k0)) + (m0*m0-m*m)*k0*k0*GS_dhods(m0,k0) );
}
inline double EvtDalitzReso::GS_h(const double& m, const double& k)
{return 2./EvtConst::pi*k/m*log((m+2.*k)/(2.*_massFirst)) ;}
inline double EvtDalitzReso::GS_dhods(const double& m0, const double& k0)
{return GS_h(m0,k0)*( 0.125/(k0*k0) - 0.5/(m0*m0) ) + 0.5/(EvtConst::pi*m0*m0) ;}
inline double EvtDalitzReso::GS_d(const double& m0, const double& k0)
{return 3./EvtConst::pi*_massFirst*_massFirst/(k0*k0)*log((m0+2.*k0)/(2.*_massFirst)) +
m0/(2.*EvtConst::pi*k0) - _massFirst*_massFirst*m0/(EvtConst::pi*k0*k0*k0) ;}
EvtComplex EvtDalitzReso::numerator(const EvtDalitzPoint& x, const EvtTwoBodyKine& vb, const EvtTwoBodyKine& vd)
{
EvtComplex ret(0.,0.);
// Non-relativistic Breit-Wigner
if(NBW == _typeN) {
ret = angDep(x);
}
// Standard relativistic Zemach propagator
else if(RBW_ZEMACH == _typeN) {
ret = _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB)*angDep(x);
}
// Standard relativistic Zemach propagator
else if(RBW_ZEMACH2 == _typeN) {
ret = _vd.phaseSpaceFactor(vd,EvtTwoBodyKine::AB)*_vb.phaseSpaceFactor(vb,EvtTwoBodyKine::AB)*angDep(x);
if(_spin == EvtSpinType::VECTOR) {
ret *= -4.;
} else if(_spin == EvtSpinType::TENSOR) {
ret *= 16./3.;
} else if(_spin != EvtSpinType::SCALAR)
assert(0);
}
// Kuehn-Santamaria normalization:
else if(RBW_KUEHN == _typeN) {
ret = _m0*_m0 * angDep(x);
}
// CLEO amplitude
else if( ( RBW_CLEO == _typeN ) || ( GS_CLEO == _typeN ) ||
( RBW_CLEO_ZEMACH == _typeN ) || ( GS_CLEO_ZEMACH == _typeN ) ||
( GAUSS_CLEO == _typeN ) || ( GAUSS_CLEO_ZEMACH == _typeN)) {
Index iA = other(_pairAng); // A = other(BC)
Index iB = common(_pairRes,_pairAng); // B = common(AB,BC)
Index iC = other(_pairRes); // C = other(AB)
double M = x.bigM();
double mA = x.m(iA);
double mB = x.m(iB);
double mC = x.m(iC);
double qAB = x.q(combine(iA,iB));
double qBC = x.q(combine(iB,iC));
double qCA = x.q(combine(iC,iA));
double M2 = M*M;
double m02 = ((RBW_CLEO_ZEMACH == _typeN)||(GS_CLEO_ZEMACH == _typeN)||(GAUSS_CLEO_ZEMACH == _typeN))? qAB : _m0*_m0;
double mA2 = mA*mA;
double mB2 = mB*mB;
double mC2 = mC*mC;
if (_spin == EvtSpinType::SCALAR) ret = EvtComplex(1.,0.);
else if(_spin == EvtSpinType::VECTOR) {
ret = qCA - qBC + (M2 - mC2)*(mB2 - mA2)/m02;
} else if(_spin == EvtSpinType::TENSOR) {
double x1 = qBC - qCA + (M2 - mC2)*(mA2 - mB2)/m02;
double x2 = M2 - mC2;
double x3 = qAB - 2*M2 - 2*mC2 + x2*x2/m02;
double x4 = mA2 - mB2;
double x5 = qAB - 2*mB2 - 2*mA2 + x4*x4/m02;
ret = x1*x1 - x3*x5/3.;
} else assert(0);
}
return ret;
}
double EvtDalitzReso::angDep(const EvtDalitzPoint& x)
{
// Angular dependece for factorizable amplitudes
// unphysical cosines indicate we are in big trouble
double cosTh = x.cosTh(_pairAng,_pairRes); // angle between common(reso,ang) and other(reso)
if(fabs(cosTh) > 1.) {
report(INFO,"EvtGen") << "cosTh " << cosTh << std::endl;
assert(0);
}
// in units of half-spin
return EvtdFunction::d(EvtSpinType::getSpin2(_spin),2*0,2*0,acos(cosTh));
}
EvtComplex EvtDalitzReso::mixFactor(EvtComplex prop, EvtComplex prop_mix)
{
double Delta = _delta_mix*(_m0+_m0_mix);
return 1/(1-Delta*Delta*prop*prop_mix)*(1+_amp_mix*Delta*prop_mix);
}
EvtComplex EvtDalitzReso::Fvector( double s, int index )
{
assert(index>=1 && index<=6);
//Define the complex coupling constant
//The convection is as follow
//i=0 --> pi+ pi-
//i=1 --> KK
//i=2 --> 4pi
//i=3 --> eta eta
//i=4 --> eta eta'
//The first index is the resonace-pole index
double g[5][5]; // Coupling constants. The first index is the pole index. The second index is the decay channel
double ma[5]; // Pole masses. The unit is in GeV
int solution = (_typeN==K_MATRIX)? 3 : ( (_typeN==K_MATRIX_I)? 1 : ( (_typeN==K_MATRIX_II)? 2 : 0 ) ) ;
if (solution==0) { std::cout << "EvtDalitzReso::Fvector() error. Kmatrix solution incorrectly chosen ! " << std::endl; abort(); }
if (solution == 3 ) {
// coupling constants
//pi+pi- channel
g[0][0]=0.22889;
g[1][0]=0.94128;
g[2][0]=0.36856;
g[3][0]=0.33650;
g[4][0]=0.18171;
//K+K- channel
g[0][1]=-0.55377;
g[1][1]=0.55095;
g[2][1]=0.23888;
g[3][1]=0.40907;
g[4][1]=-0.17558;
//4pi channel
g[0][2]=0;
g[1][2]=0;
g[2][2]=0.55639;
g[3][2]=0.85679;
g[4][2]=-0.79658;
//eta eta channel
g[0][3]=-0.39899;
g[1][3]=0.39065;
g[2][3]=0.18340;
g[3][3]=0.19906;
g[4][3]=-0.00355;
//eta eta' channel
g[0][4]=-0.34639;
g[1][4]=0.31503;
g[2][4]=0.18681;
g[3][4]=-0.00984;
g[4][4]=0.22358;
// Pole masses
ma[0]=0.651;
ma[1]=1.20360;
ma[2]=1.55817;
ma[3]=1.21000;
ma[4]=1.82206;
} else if (solution == 1) { // solnI.txt
// coupling constants
//pi+pi- channel
g[0][0]=0.31896;
g[1][0]=0.85963;
g[2][0]=0.47993;
g[3][0]=0.45121;
g[4][0]=0.39391;
//K+K- channel
g[0][1]=-0.49998;
g[1][1]=0.52402;
g[2][1]=0.40254;
g[3][1]=0.42769;
g[4][1]=-0.30860;
//4pi channel
g[0][2]=0;
g[1][2]=0;
g[2][2]=1.0;
g[3][2]=1.15088;
g[4][2]=0.33999;
//eta eta channel
g[0][3]=-0.21554;
g[1][3]=0.38093;
g[2][3]=0.21811;
g[3][3]=0.22925;
g[4][3]=0.06919;
//eta eta' channel
g[0][4]=-0.18294;
g[1][4]=0.23788;
g[2][4]=0.05454;
g[3][4]=0.06444;
g[4][4]=0.32620;
// Pole masses
ma[0]=0.7369;
ma[1]=1.24347;
ma[2]=1.62681;
ma[3]=1.21900;
ma[4]=1.74932;
} else if (solution == 2) { // solnIIa.txt
// coupling constants
//pi+pi- channel
g[0][0]=0.26014;
g[1][0]=0.95289;
g[2][0]=0.46244;
g[3][0]=0.41848;
g[4][0]=0.01804;
//K+K- channel
g[0][1]=-0.57849;
g[1][1]=0.55887;
g[2][1]=0.31712;
g[3][1]=0.49910;
g[4][1]=-0.28430;
//4pi channel
g[0][2]=0;
g[1][2]=0;
g[2][2]=0.70340;
g[3][2]=0.96819;
g[4][2]=-0.90100;
//eta eta channel
g[0][3]=-0.32936;
g[1][3]=0.39910;
g[2][3]=0.22963;
g[3][3]=0.24415;
g[4][3]=-0.07252;
//eta eta' channel
g[0][4]=-0.30906;
g[1][4]=0.31143;
g[2][4]=0.19802;
g[3][4]=-0.00522;
g[4][4]=0.17097;
// Pole masses
ma[0]=0.67460;
ma[1]=1.21094;
ma[2]=1.57896;
ma[3]=1.21900;
ma[4]=1.86602;
}
//Now define the K-matrix pole
double rho1sq,rho2sq,rho4sq,rho5sq;
EvtComplex rho[5];
double f[5][5];
//Initalize the mass of the resonance
double mpi=0.13957;
double mK=0.493677; //using charged K value
double meta=0.54775; //using PDG value
double metap=0.95778; //using PDG value
//Initialize the matrix to value zero
EvtComplex K[5][5];
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
K[i][j]=EvtComplex(0,0);
f[i][j]=0;
}
}
//Input the _f[i][j] scattering data
double s_scatt=0.0 ;
if (solution == 3)
s_scatt=-3.92637;
else if (solution == 1)
s_scatt= -5.0 ;
else if (solution == 2)
s_scatt= -5.0 ;
double sa=1.0;
double sa_0=-0.15;
if (solution == 3) {
f[0][0]=0.23399; // f^scatt
f[0][1]=0.15044;
f[0][2]=-0.20545;
f[0][3]=0.32825;
f[0][4]=0.35412;
}else if (solution == 1) {
f[0][0]=0.04214; // f^scatt
f[0][1]=0.19865;
f[0][2]=-0.63764;
f[0][3]=0.44063;
f[0][4]=0.36717;
}else if (solution == 2) {
f[0][0]=0.26447; // f^scatt
f[0][1]=0.10400;
f[0][2]=-0.35445;
f[0][3]=0.31596;
f[0][4]=0.42483;
}
f[1][0]=f[0][1];
f[2][0]=f[0][2];
f[3][0]=f[0][3];
f[4][0]=f[0][4];
//Now construct the phase-space factor
//For eta-eta' there is no difference term
rho1sq = 1. - pow( mpi + mpi, 2 ) / s; //pi+ pi- phase factor
if( rho1sq >= 0 )
rho[ 0 ] = EvtComplex( sqrt( rho1sq ), 0 );
else
rho[ 0 ] = EvtComplex( 0, sqrt( -rho1sq ) );
rho2sq = 1. - pow( mK + mK, 2 ) / s;
if( rho2sq >= 0 )
rho[ 1 ] = EvtComplex( sqrt( rho2sq ), 0 );
else
rho[ 1 ] = EvtComplex( 0, sqrt( -rho2sq ) );
//using the A&S 4pi phase space Factor:
//Shit, not continue
if( s <= 1 )
{
double real = 1.2274 + .00370909 / ( s * s ) - .111203 / s - 6.39017 * s + 16.8358*s*s - 21.8845*s*s*s + 11.3153*s*s*s*s;
double cont32 = sqrt(1.0-(16.0*mpi*mpi));
rho[ 2 ] = EvtComplex( cont32 * real, 0 );
}
else
rho[ 2 ] = EvtComplex( sqrt( 1. - 16. * mpi * mpi / s ), 0 );
rho4sq = 1. - pow( meta + meta, 2 ) / s;
if( rho4sq >= 0 )
rho[ 3 ] = EvtComplex( sqrt( rho4sq ), 0 );
else
rho[ 3 ] = EvtComplex( 0, sqrt( -rho4sq ) );
rho5sq = 1. - pow( meta + metap, 2 ) / s;
if( rho5sq >= 0 )
rho[ 4 ] = EvtComplex( sqrt( rho5sq ), 0 );
else
rho[ 4 ] = EvtComplex( 0, sqrt( -rho5sq ) );
double smallTerm = 1; // Factor to prevent divergences.
// Check if some pole may arise problems.
for ( int pole = 0; pole < 5; pole++ )
if ( fabs( pow( ma[ pole ], 2 ) - s ) < PRECISION )
smallTerm = pow( ma[ pole ], 2 ) - s;
//now sum all the pole
//equation (3) in the E791 K-matrix paper
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
for (int pole_index=0;pole_index<5;pole_index++) {
double A=g[pole_index][i]*g[pole_index][j];
double B=ma[pole_index]*ma[pole_index]-s;
if ( fabs( B ) < PRECISION )
K[ i ][ j ] += EvtComplex( A , 0 );
else
K[ i ][ j ] += EvtComplex( A / B, 0 ) * smallTerm;
}
}
}
//now add the SVT part
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
double C=f[i][j]*(1.0-s_scatt);
double D=(s-s_scatt);
K[ i ][ j ] += EvtComplex( C / D, 0 ) * smallTerm;
}
}
//Fix the bug in the FOCUS paper
//Include the Alder zero term:
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
double E=(s-(sa*mpi*mpi*0.5))*(1.0-sa_0);
double F=(s-sa_0);
K[ i ][ j ] *= EvtComplex(E/F,0);
}
}
//This is not correct!
//(1-ipK) != (1-iKp)
static EvtMatrix< EvtComplex > mat;
mat.setRange( 5 ); // Try to do in only the first time. DEFINE ALLOCATION IN CONSTRUCTOR.
for ( int row = 0; row < 5; row++ )
for ( int col = 0; col < 5; col++ )
mat( row, col ) = ( row == col ) * smallTerm - EvtComplex( 0., 1. ) * K[ row ][ col ] * rho[ col ];
EvtMatrix< EvtComplex >* matInverse = mat.inverse(); //The 1st row of the inverse matrix. This matrix is {(I-iKp)^-1}_0j
vector< EvtComplex > U1j;
for ( int j = 0; j < 5; j++ )
U1j.push_back( (*matInverse)[ 0 ][ j ] );
delete matInverse;
//this calculates final F0 factor
EvtComplex value( 0, 0 );
if (index<=5) {
//this calculates the beta_idx Factors
for(int j=0;j<5;j++) { // sum for 5 channel
EvtComplex top = U1j[j]*g[index-1][j];
double bottom = ma[index-1]*ma[index-1]-s;
if ( fabs( bottom ) < PRECISION )
value += top;
else
value += top / bottom * smallTerm;
}
} else {
//this calculates fprod Factors
value += U1j[0];
value += U1j[1]*_fr12prod;
value += U1j[2]*_fr13prod;
value += U1j[3]*_fr14prod;
value += U1j[4]*_fr15prod;
value *= (1-_s0prod)/(s-_s0prod) * smallTerm;
}
return value;
}
//replace Breit-Wigner with LASS
EvtComplex EvtDalitzReso::lass(double s)
{
EvtTwoBodyKine vd(_massFirst,_massSecond, sqrt(s));
double q = vd.p();
double GammaM = _g0*_vd.widthFactor(vd); // running width;
//calculate the background phase motion
double cot_deltaB = 1.0/(_a*q) + 0.5*_r*q;
double deltaB = atan( 1.0/cot_deltaB);
double totalB = deltaB + _phiB ;
//calculate the resonant phase motion
double deltaR = atan((_m0*GammaM/(_m0*_m0 - s)));
double totalR = deltaR + _phiR ;
//sum them up
EvtComplex bkgB,resT;
bkgB = EvtComplex(_Blass*sin(totalB),0)*EvtComplex(cos(totalB),sin(totalB));
resT = EvtComplex(_R*sin(deltaR),0)*EvtComplex(cos(totalR),sin(totalR))*EvtComplex(cos(2*totalB),sin(2*totalB));
EvtComplex T = bkgB + resT;
return T;
}
+EvtComplex EvtDalitzReso::flatte(const double& m) {
+ EvtComplex w;
+ for (vector<EvtFlatteParam>::const_iterator param = _flatteParams.begin();
+ param != _flatteParams.end();
+ ++param) {
+ double m1 = (*param).m1(); double m2 = (*param).m2();
+ double g = (*param).g();
+ w += (g*g*sqrtCplx((1-((m1-m2)*(m1-m2))/(m*m))*(1-((m1+m2)*(m1+m2))/(m*m))));
+ }
+
+ EvtComplex denom = _m0*_m0 - m*m - EvtComplex(0,1)*w;
+
+ return EvtComplex(1.0,0.0)/denom;
+}
diff --git a/src/EvtGenModels/EvtDalitzTable.cpp b/src/EvtGenModels/EvtDalitzTable.cpp
index e33a833..a32ee00 100644
--- a/src/EvtGenModels/EvtDalitzTable.cpp
+++ b/src/EvtGenModels/EvtDalitzTable.cpp
@@ -1,317 +1,368 @@
//--------------------------------------------------------------------------
//
// Environment:
// This software is part of the EvtGen package developed jointly
// for the BaBar and CLEO collaborations. If you use all or part
// of it, please give an appropriate acknowledgement.
//
// Copyright Information: See EvtGen/COPYRIGHT
// Copyright (C) 1998 Caltech, UCSB
//
// Module: EvtGen/EvtGenericDalitz.hh
//
// Description: Model to describe a generic dalitz decay
//
// Modification history:
//
// DCC 16 December, 2011 Module created
//
//------------------------------------------------------------------------
#include "EvtGenModels/EvtDalitzTable.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtParserXml.hh"
#include "EvtGenBase/EvtPDL.hh"
#include "EvtGenBase/EvtSpinType.hh"
+#include "EvtGenBase/EvtDalitzPlot.hh"
+#include "EvtGenBase/EvtCyclic3.hh"
#include <stdlib.h>
#include <sstream>
using std::endl;
using std::fstream;
using std::ifstream;
EvtDalitzTable::EvtDalitzTable() {
_dalitztable.clear();
_readFiles.clear();
}
EvtDalitzTable::~EvtDalitzTable() {
_dalitztable.clear();
_readFiles.clear();
}
EvtDalitzTable* EvtDalitzTable::getInstance(const std::string dec_name, bool verbose) {
static EvtDalitzTable* theDalitzTable = 0;
if(theDalitzTable == 0) {
theDalitzTable = new EvtDalitzTable();
}
if(!theDalitzTable->fileHasBeenRead(dec_name)) {
theDalitzTable->readXMLDecayFile(dec_name,verbose);
}
return theDalitzTable;
}
bool EvtDalitzTable::fileHasBeenRead(const std::string dec_name) {
std::vector<std::string>::iterator i = _readFiles.begin();
for( ; i!=_readFiles.end(); i++) {
if((*i).compare(dec_name) == 0) {
return true;
}
}
return false;
}
void EvtDalitzTable::readXMLDecayFile(const std::string dec_name, bool verbose){
_readFiles.push_back(dec_name);
EvtDalitzDecayInfo* dalitzDecay = 0;
- EvtResonancePrototype* resonance = 0;
+ EvtDalitzReso* resonance = 0;
+ EvtComplex cAmp;
EvtId ipar;
std::string decayParent = "";
+ EvtDalitzPlot dp;
EvtParserXml parser;
parser.open(dec_name);
bool endReached = false;
while(parser.readNextTag()) {
//TAGS FOUND UNDER DATA
if(parser.getParentTagTitle() == "data") {
if(parser.getTagTitle() == "dalitzDecay") {
int nDaughters = 0;
EvtId daughter[3];
decayParent = parser.readAttribute("particle");
std::string daugStr = parser.readAttribute("daughters");
double probMax = parser.readAttributeDouble("probMax");
checkParticle(decayParent);
ipar=EvtPDL::getId(decayParent);
std::istringstream daugStream(daugStr);
std::string daugh;
while(std::getline(daugStream, daugh, ' ')) {
checkParticle(daugh);
daughter[nDaughters++] = EvtPDL::getId(daugh);
}
if(nDaughters!=3) {
report(ERROR,"EvtGen") <<
"Expected to find three daughters for dalitzDecay of "<<decayParent<<" near line "
<<parser.getLineNumber()<<", "<<"found "<<nDaughters<<endl;
report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
::abort();
}
+ double m_d1 = EvtPDL::getMass(daughter[0]), m_d2 = EvtPDL::getMass(daughter[1]), m_d3 = EvtPDL::getMass(daughter[2]), M = EvtPDL::getMass(ipar);
+
+ dp = EvtDalitzPlot( m_d1, m_d2, m_d3, M );
+
dalitzDecay = new EvtDalitzDecayInfo(daughter[0],daughter[1],daughter[2]);
dalitzDecay->setProbMax(probMax);
} else if(parser.getTagTitle() == "copyDalitz") {
int nDaughters = 0;
EvtId daughter[3];
int nCopyDaughters = 0;
EvtId copyDaughter[3];
decayParent = parser.readAttribute("particle");
std::string daugStr = parser.readAttribute("daughters");
std::string copyParent = parser.readAttribute("copy");
std::string copyDaugStr = parser.readAttribute("copyDaughters");
checkParticle(decayParent);
ipar=EvtPDL::getId(decayParent);
checkParticle(copyParent);
EvtId copypar=EvtPDL::getId(copyParent);
std::istringstream daugStream(daugStr);
std::istringstream copyDaugStream(copyDaugStr);
std::string daugh;
while(std::getline(daugStream, daugh, ' ')) {
checkParticle(daugh);
daughter[nDaughters++] = EvtPDL::getId(daugh);
}
while(std::getline(copyDaugStream, daugh, ' ')) {
checkParticle(daugh);
copyDaughter[nCopyDaughters++] = EvtPDL::getId(daugh);
}
if(nDaughters!=3 || nCopyDaughters!=3) {
report(ERROR,"EvtGen") <<
"Expected to find three daughters for copyDecay of "<<decayParent<<
" from "<<copyParent<<" near line "<<parser.getLineNumber()<<
", "<<"found "<<nDaughters<<" and "<<nCopyDaughters<<endl;
report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
::abort();
}
copyDecay(ipar, daughter, copypar, copyDaughter);
} else if(parser.getTagTitle() == "/data") { //end of data
endReached = true;
parser.close();
break;
}
//TAGS FOUND UNDER DALITZDECAY
} else if(parser.getParentTagTitle() == "dalitzDecay") {
if(parser.getTagTitle() == "resonance") {
+ //Amplitude
EvtComplex ampFactor(parser.readAttributeDouble("ampFactorReal",1.),
parser.readAttributeDouble("ampFactorImag",0.));
double mag = parser.readAttributeDouble("mag",-999.);
double phase = parser.readAttributeDouble("phase",-999.);
double real = parser.readAttributeDouble("real",-999.);
double imag = parser.readAttributeDouble("imag",-999.);
if((real!=-999. || imag!=-999.) && mag==-999. && phase==-999.) {
if(real==-999.) { real = 0; }
if(imag==-999.) { imag = 0; }
mag = sqrt(real*real + imag*imag);
phase = atan2(imag,real) * EvtConst::radToDegrees;
}
if( mag==-999. ) {
mag = 1.;
}
if( phase==-999. ) {
phase = 0.;
}
+ cAmp = ampFactor*EvtComplex(cos(phase*1.0/EvtConst::radToDegrees),sin(phase*1.0/EvtConst::radToDegrees))*mag;
+
+ //Resonance particle properties
double mass(0.), width(0.);
- int spin(0);
+ EvtSpinType::spintype spinType(EvtSpinType::SCALAR);
std::string particle = parser.readAttribute("particle");
if(particle != "") {
EvtId resId = EvtPDL::getId(particle);
if(resId == EvtId(-1,-1)) {
report(ERROR,"EvtGen") <<"Unknown particle name:"<<particle.c_str()<<endl;
report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
::abort();
} else {
mass = EvtPDL::getMeanMass(resId);
width = EvtPDL::getWidth(resId);
- spin = EvtSpinType::getSpin2(EvtPDL::getSpinType(resId))/2;
+ spinType = EvtPDL::getSpinType(resId);
}
}
width = parser.readAttributeDouble("width",width);
mass = parser.readAttributeDouble("mass",mass);
- spin = parser.readAttributeInt("spin",spin);
- int daughterPair = parser.readAttributeInt("daughterPair");
- int bwFactor = parser.readAttributeInt("bwFactor");
- bool invMassAngDenom = parser.readAttributeBool("invMassAngDenom");
+ switch(parser.readAttributeInt("spin",-1)) {
+ case -1://not set here
+ break;
+ case 0:
+ spinType = EvtSpinType::SCALAR;
+ break;
+ case 1:
+ spinType = EvtSpinType::VECTOR;
+ break;
+ case 2:
+ spinType = EvtSpinType::TENSOR;
+ break;
+ default:
+ report(ERROR,"EvtGen") << "Unsupported spin near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+ ::abort();
+ }
+
+ //Shape and form factors
std::string shape = parser.readAttribute("shape");
+ double FFp = parser.readAttributeDouble("BlattWeisskopfFactorParent",0.0);
+ double FFr = parser.readAttributeDouble("BlattWeisskopfFactorResonance",1.5);
+
+ //Daughter pair for resonance
+ EvtCyclic3::Pair resPair, angPair;
+ switch(parser.readAttributeInt("daughterPair")) {
+ case 1:
+ resPair = EvtCyclic3::AB;
+ angPair = EvtCyclic3::BC;
+ break;
+ case 2:
+ resPair = EvtCyclic3::BC;
+ angPair = EvtCyclic3::CA;
+ break;
+ case 3:
+ resPair = EvtCyclic3::CA;
+ angPair = EvtCyclic3::AB;
+ break;
+ default:
+ if(shape == "NonRes") break; //We don't expect a pair for non-resonant terms
+ report(ERROR,"EvtGen") << "Daughter pair must be 1, 2 or 3 near line "<<parser.getLineNumber()<<" of XML file."<<endl;
+ ::abort();
+ }
- if(shape=="NonRes") {
- resonance = new EvtResonancePrototype(ampFactor, mag, phase);
- } else if(shape=="RelBW") {
- resonance = new EvtResonancePrototype(ampFactor, mag, phase, width, mass, spin, daughterPair, bwFactor);
- } else if(shape=="Flatte") {
- resonance = new EvtResonancePrototype(ampFactor, mag, phase, mass, daughterPair);
- } else { //BW
- resonance = new EvtResonancePrototype(ampFactor, mag, phase, width, mass, spin, daughterPair, invMassAngDenom);
+ if( shape=="RBW" || shape=="RBW_CLEO") {
+ resonance = new EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::RBW_CLEO, FFp, FFr );
+ } else if( shape=="RBW_CLEO_ZEMACH" ) {
+ resonance = new EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::RBW_CLEO_ZEMACH, FFp, FFr );
+ }else if( shape=="Flatte" ) {
+ resonance = new EvtDalitzReso( dp, resPair, mass );
+ } else if( shape=="NonRes" ) {
+ resonance = new EvtDalitzReso( );
+ } else { //NBW
+ resonance = new EvtDalitzReso( dp, angPair, resPair, spinType, mass, width, EvtDalitzReso::NBW, FFp, FFr );
}
if(parser.isTagInline()) {
- dalitzDecay->addResonance(*resonance);
+ dalitzDecay->addResonance(cAmp,*resonance);
delete resonance;
resonance = 0;
}
} else if(parser.getTagTitle() == "/dalitzDecay") {
addDecay(ipar, *dalitzDecay);
delete dalitzDecay;
dalitzDecay = 0;
} else if(verbose) {
report(INFO,"EvtGen") << "Unexpected tag "<<parser.getTagTitle()
<<" found in XML decay file near line "
<<parser.getLineNumber()<<". Tag will be ignored."<<endl;
}
//TAGS FOUND UNDER RESONANCE
} else if(parser.getParentTagTitle() == "resonance"){
if(parser.getTagTitle() == "flatteParam") {
EvtFlatteParam param(parser.readAttributeDouble("mass1"),
parser.readAttributeDouble("mass2"),
parser.readAttributeDouble("g"));
resonance->addFlatteParam(param);
} else if(parser.getTagTitle() == "/resonance") {
- dalitzDecay->addResonance(*resonance);
+ dalitzDecay->addResonance(cAmp,*resonance);
delete resonance;
resonance = 0;
}
}
}
if(!endReached) {
report(ERROR,"EvtGen") << "Either the decay file ended prematurely or the file is badly formed.\n"
<<"Error occured near line"<<parser.getLineNumber()<<endl;
::abort();
}
}
void EvtDalitzTable::checkParticle(std::string particle) {
if (EvtPDL::getId(particle)==EvtId(-1,-1)) {
report(ERROR,"EvtGen") <<"Unknown particle name:"<<particle.c_str()<<endl;
report(ERROR,"EvtGen") <<"Will terminate execution!"<<endl;
::abort();
}
}
void EvtDalitzTable::addDecay(EvtId parent, const EvtDalitzDecayInfo& dec) {
if(_dalitztable.find(parent)!=_dalitztable.end()) {
_dalitztable[parent].push_back(dec);
} else {
_dalitztable[parent].push_back(dec);
}
}
void EvtDalitzTable::copyDecay(EvtId parent, EvtId* daughters,
EvtId copy, EvtId* copyd) {
EvtDalitzDecayInfo decay(daughters[0],daughters[1],daughters[2]);
std::vector<EvtDalitzDecayInfo> copyTable = getDalitzTable(copy);
std::vector<EvtDalitzDecayInfo>::iterator i = copyTable.begin();
for( ; i != copyTable.end(); i++) {
EvtId daughter1 = (*i).daughter1();
EvtId daughter2 = (*i).daughter2();
EvtId daughter3 = (*i).daughter3();
if((copyd[0] == daughter1 && copyd[1] == daughter2 && copyd[2] == daughter3) ||
(copyd[0] == daughter1 && copyd[1] == daughter3 && copyd[2] == daughter2) ||
(copyd[0] == daughter2 && copyd[1] == daughter1 && copyd[2] == daughter3) ||
(copyd[0] == daughter2 && copyd[1] == daughter3 && copyd[2] == daughter1) ||
(copyd[0] == daughter3 && copyd[1] == daughter1 && copyd[2] == daughter2) ||
(copyd[0] == daughter3 && copyd[1] == daughter2 && copyd[2] == daughter1)) {
decay.setProbMax((*i).getProbMax());
- std::vector<EvtResonancePrototype>::const_iterator j = (*i).getResonances().begin();
+ std::vector<std::pair<EvtComplex, EvtDalitzReso> >::const_iterator j = (*i).getResonances().begin();
for( ; j != (*i).getResonances().end(); j++) {
decay.addResonance((*j));
}
addDecay(parent,decay);
return;
}
}
//if we get here then there was no match
report(ERROR,"EvtGen") << "Did not find dalitz decays for particle:"
<<copy<<"\n";
}
std::vector<EvtDalitzDecayInfo> EvtDalitzTable::getDalitzTable(const EvtId& parent) {
std::vector<EvtDalitzDecayInfo> table;
if ( _dalitztable.find(parent)!=_dalitztable.end() ) {
table=_dalitztable[parent];
}
if (table.empty()){
report(ERROR,"EvtGen") << "Did not find dalitz decays for particle:"
<<parent<<"\n";
}
return table;
}
diff --git a/src/EvtGenModels/EvtGenericDalitz.cpp b/src/EvtGenModels/EvtGenericDalitz.cpp
index 486496e..99ffddd 100644
--- a/src/EvtGenModels/EvtGenericDalitz.cpp
+++ b/src/EvtGenModels/EvtGenericDalitz.cpp
@@ -1,101 +1,114 @@
//--------------------------------------------------------------------------
//
// Environment:
// This software is part of the EvtGen package developed jointly
// for the BaBar and CLEO collaborations. If you use all or part
// of it, please give an appropriate acknowledgement.
//
// Copyright Information: See EvtGen/COPYRIGHT
// Copyright (C) 1998 Caltech, UCSB
//
// Module: EvtGen/EvtGenericDalitz.hh
//
// Description: Model to describe a generic dalitz decay
//
// Modification history:
//
// DCC 16 December, 2011 Module created
//
//------------------------------------------------------------------------
#include "EvtGenModels/EvtGenericDalitz.hh"
#include "EvtGenModels/EvtDalitzTable.hh"
#include "EvtGenBase/EvtParticle.hh"
+#include "EvtGenBase/EvtDalitzPoint.hh"
+#include "EvtGenBase/EvtPDL.hh"
std::string EvtGenericDalitz::getName() {
return "GENERIC_DALITZ";
}
EvtDecayBase* EvtGenericDalitz::clone() {
return new EvtGenericDalitz();
}
void EvtGenericDalitz::init() {
checkNArg(1);
EvtId parnum=getParentId();
EvtId d1=getDaug(0);
EvtId d2=getDaug(1);
EvtId d3=getDaug(2);
std::vector<EvtDalitzDecayInfo> decays = EvtDalitzTable::getInstance(getArgStr(0))->getDalitzTable(parnum);
std::vector<EvtDalitzDecayInfo>::iterator i = decays.begin();
for( ; i != decays.end(); i++) {
EvtId daughter1 = (*i).daughter1();
EvtId daughter2 = (*i).daughter2();
EvtId daughter3 = (*i).daughter3();
if(d1 == daughter1 && d2 == daughter2 && d3 == daughter3) {
_d1 = 0;
_d2 = 1;
_d3 = 2;
} else if(d1 == daughter1 && d2 == daughter3 && d3 == daughter2) {
_d1 = 0;
_d2 = 2;
_d3 = 1;
} else if(d1 == daughter2 && d2 == daughter1 && d3 == daughter3) {
_d1 = 1;
_d2 = 0;
_d3 = 2;
} else if(d1 == daughter2 && d2 == daughter3 && d3 == daughter1) {
_d1 = 1;
_d2 = 2;
_d3 = 0;
} else if(d1 == daughter3 && d2 == daughter1 && d3 == daughter2) {
_d1 = 2;
_d2 = 0;
_d3 = 1;
} else if(d1 == daughter3 && d2 == daughter2 && d3 == daughter1) {
_d1 = 2;
_d2 = 1;
_d3 = 0;
} else {
continue;
}
_resonances = (*i).getResonances();
setProbMax((*i).getProbMax());
return;
}
}
void EvtGenericDalitz::decay(EvtParticle *p) {
p->initializePhaseSpace(getNDaug(),getDaugs());
EvtVector4R p4_p = p->getP4();
EvtVector4R p4_d1 = p->getDaug(_d1)->getP4();
EvtVector4R p4_d2 = p->getDaug(_d2)->getP4();
EvtVector4R p4_d3 = p->getDaug(_d3)->getP4();
+ double mA = p->getDaug(_d1)->mass();
+ double mB = p->getDaug(_d2)->mass();
+ double mC = p->getDaug(_d3)->mass();
+
+ double m2AB = ( p4_d1 + p4_d2 ).mass2();
+ double m2CA = ( p4_d1 + p4_d3 ).mass2();
+ double m2BC = ( p4_d2 + p4_d3 ).mass2();
+
+ EvtDalitzPoint point( mA, mB, mC, m2AB, m2BC, m2CA );
+
EvtComplex amp(0,0);
- std::vector<EvtResonancePrototype>::iterator i = _resonances.begin();
+ std::vector<std::pair<EvtComplex,EvtDalitzReso> >::iterator i = _resonances.begin();
for( ; i!= _resonances.end(); i++) {
- amp += (*i).getAmp(p4_p, p4_d1, p4_d2, p4_d3);
+ std::pair<EvtComplex,EvtDalitzReso> res = (*i);
+ amp += res.first * res.second.evaluate( point );
}
vertex(amp);
return;
}
diff --git a/src/EvtGenModels/EvtResonancePrototype.cpp b/src/EvtGenModels/EvtResonancePrototype.cpp
deleted file mode 100644
index 607dac8..0000000
--- a/src/EvtGenModels/EvtResonancePrototype.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//--------------------------------------------------------------------------
-//
-// Environment:
-// This software is part of the EvtGen package developed jointly
-// for the BaBar and CLEO collaborations. If you use all or part
-// of it, please give an appropriate acknowledgement.
-//
-// Copyright Information: See EvtGen/COPYRIGHT
-// Copyright (C) 1998 Caltech, UCSB
-//
-// Module: EvtGen/EvtGenericDalitz.hh
-//
-// Description: Model to describe a generic dalitz decay
-//
-// Modification history:
-//
-// DCC 16 December, 2011 Module created
-//
-//------------------------------------------------------------------------
-
-#include "EvtGenModels/EvtResonancePrototype.hh"
-#include "EvtGenBase/EvtResonance.hh"
-#include "EvtGenBase/EvtResonance2.hh"
-
-EvtComplex EvtResonancePrototype::getAmp(const EvtVector4R& p4_p,
- const EvtVector4R& p4_d1,
- const EvtVector4R& p4_d2,
- const EvtVector4R& p4_d3) {
-
- double pi180inv = 1.0/EvtConst::radToDegrees;
- if(_nonRes) {
- return _factor * _ampl * EvtComplex(cos(_theta*pi180inv),sin(_theta*pi180inv));
- }
-
- EvtVector4R mom1, mom2;
- switch(_useDaughterPair) {
- case 1:
- mom1 = p4_d1;
- mom2 = p4_d2;
- break;
- case 2:
- mom1 = p4_d2;
- mom2 = p4_d3;
- break;
- case 3:
- mom1 = p4_d3;
- mom2 = p4_d1;
- }
- if(_useFlatte) {
- EvtFlatte res(p4_p, mom1, mom2, _ampl, _theta, _mass, _flatteParams);
- return _factor * res.resAmpl();
- } else if(_useRelBW) {
- EvtResonance res(p4_p, mom1, mom2, _ampl, _theta, _gamma, _mass, _spin);
- return _factor * res.relBrWig(_bwFactor);
- } else {
- EvtResonance2 res(p4_p, mom1, mom2, _ampl, _theta, _gamma, _mass, _spin, _angdenom);
- return _factor * res.resAmpl();
- }
-}
diff --git a/validation/DalitzFiles/DalitzDecay1.dec b/validation/DalitzFiles/DalitzDecay1.dec
index 8c62af5..823defb 100644
--- a/validation/DalitzFiles/DalitzDecay1.dec
+++ b/validation/DalitzFiles/DalitzDecay1.dec
@@ -1,6 +1,10 @@
Decay D+
1.0 K- pi+ pi+ D_DALITZ;
Enddecay
+Decay D-
+1.0 K+ pi- pi- D_DALITZ;
+Enddecay
+
End
diff --git a/validation/DalitzFiles/DalitzDecay10.dec b/validation/DalitzFiles/DalitzDecay10.dec
new file mode 100644
index 0000000..75c9d06
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay10.dec
@@ -0,0 +1,10 @@
+Decay D0
+1.0 anti-K0 pi- pi+ D_DALITZ;
+Enddecay
+
+Decay anti-D0
+1.0 K0 pi+ pi- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay11.xml b/validation/DalitzFiles/DalitzDecay11.xml
new file mode 100644
index 0000000..fec73ed
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay11.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=4 from D_DALITZ -->
+ <dalitzDecay particle="D0" daughters="K- pi+ pi0" probMax="600.0">
+ <resonance real="1.497" imag="0.9065" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.1507"
+ mass="0.770" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.39" phase="-0.20" width="0.0505"
+ mass="0.8961" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.44" phase="-17.0" width="0.050"
+ mass="0.8915" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.77" phase="55.5" width="0.294"
+ mass="1.412" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.85" phase="166.0" width="0.294"
+ mass="1.412" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.5" phase="171.0" width="0.240"
+ mass="1.700" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.5" phase="-77.0" width="0.322"
+ mass="1.717" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K+ pi- pi0"
+ copy="D0" copyDaughters="K- pi+ pi0" />
+ <decay name="D0">
+ <channel br="1.0" daughters="K- pi+ pi0" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay11.xml"/>
+ </decay>
+ <decay name="anti-D0">
+ <channel br="1.0" daughters="K+ pi- pi0" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay11.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay12.dec b/validation/DalitzFiles/DalitzDecay12.dec
new file mode 100644
index 0000000..43b1b00
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay12.dec
@@ -0,0 +1,10 @@
+Decay D0
+1.0 K- pi+ pi0 D_DALITZ;
+Enddecay
+
+Decay anti-D0
+1.0 K+ pi- pi0 D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay13.xml b/validation/DalitzFiles/DalitzDecay13.xml
new file mode 100644
index 0000000..90c85af
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay13.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=5 from D_DALITZ -->
+ <dalitzDecay particle="D0" daughters="K0 K- K+" probMax="2500000.0">
+ <resonance real="1.0" imag="0.0" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="113.75" phase="-40.0" width="0.0043"
+ mass="1.019456" spin="1" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
+ <resonance ampFactorReal="1.00" mag="152.25" phase="69.0" width="0.1196"
+ mass="0.9847" spin="0" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
+ <resonance ampFactorReal="1.00" mag="30.5" phase="-201.0" width="0.05"
+ mass="0.980" spin="0" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
+ <resonance ampFactorReal="1.00" mag="85.75" phase="-93.0" width="0.1196"
+ mass="0.9847" spin="0" daughterPair="1" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
+ <resonance ampFactorReal="1.00" mag="8.0" phase="-53.0" width="0.1196"
+ mass="0.9847" spin="0" daughterPair="3" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K0 K+ K-"
+ copy="D0" copyDaughters="K0 K- K+" />
+ <decay name="D0">
+ <channel br="1.0" daughters="K0 K- K+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay13.xml"/>
+ </decay>
+ <decay name="anti-D0">
+ <channel br="1.0" daughters="K0 K+ K-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay13.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay14.dec b/validation/DalitzFiles/DalitzDecay14.dec
new file mode 100644
index 0000000..0a4bdd7
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay14.dec
@@ -0,0 +1,10 @@
+Decay D0
+1.0 K0 K- K+ D_DALITZ;
+Enddecay
+
+Decay anti-D0
+1.0 K0 K+ K- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay15.xml b/validation/DalitzFiles/DalitzDecay15.xml
new file mode 100644
index 0000000..d727c08
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay15.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=6 from D_DALITZ -->
+ <dalitzDecay particle="D_s+" daughters="K- K+ pi+" probMax="45000.0">
+ <resonance real="0" imag="0" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.0455"
+ mass="0.8944" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.48" phase="138.0" width="0.290"
+ mass="1.414" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="5.07" phase="156.0" mass="0.965"
+ daughterPair="1" shape="Flatte">
+ <flatteParam mass1="0.134977" mass2="0.134977" g="0.406" />
+ <flatteParam mass1="0.493677" mass2="0.493677" g="0.800" />
+ </resonance>
+ <resonance ampFactorReal="1.00" mag="1.15" phase="-10.0" width="0.00426"
+ mass="1.019455" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.28" phase="53.0" width="0.265"
+ mass="1.350" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.19" phase="87.0" width="0.137"
+ mass="1.724" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+
+ <copyDalitz particle="D_s-" daughters="K+ K- pi-"
+ copy="D_s+" copyDaughters="K- K+ pi+" />
+ <decay name="D_s+">
+ <channel br="1.0" daughters="K- K+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay15.xml"/>
+ </decay>
+ <decay name="D_s-">
+ <channel br="1.0" daughters="K+ K- pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay15.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay16.dec b/validation/DalitzFiles/DalitzDecay16.dec
new file mode 100644
index 0000000..ed6831e
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay16.dec
@@ -0,0 +1,10 @@
+Decay D_s+
+1.0 K- K+ pi+ D_DALITZ;
+Enddecay
+
+Decay D_s-
+1.0 K+ K- pi- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay17.xml b/validation/DalitzFiles/DalitzDecay17.xml
new file mode 100644
index 0000000..861e329
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay17.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=7 from D_DALITZ -->
+ <dalitzDecay particle="D+" daughters="K- K+ pi+" probMax="35000.0">
+ <resonance real="3.069" imag="4.073" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.0503"
+ mass="0.8960" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="3.7" phase="73.00" width="0.290"
+ mass="1.414" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.189" phase="1.0" width="0.00426"
+ mass="1.019455" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.72" phase="123.0" width="0.265"
+ mass="1.474" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.9" phase="128.0" width="0.15"
+ mass="1.68" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="6.4" phase="150.0" width="0.109"
+ mass="1.4324" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="D-" daughters="K+ K- pi-"
+ copy="D+" copyDaughters="K- K+ pi+" />
+ <decay name="D+">
+ <channel br="1.0" daughters="K- K+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay17.xml"/>
+ </decay>
+ <decay name="D-">
+ <channel br="1.0" daughters="K+ K- pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay17.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay18.dec b/validation/DalitzFiles/DalitzDecay18.dec
new file mode 100644
index 0000000..1b72dd3
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay18.dec
@@ -0,0 +1,10 @@
+Decay D+
+1.0 K- K+ pi+ D_DALITZ;
+Enddecay
+
+Decay D-
+1.0 K+ K- pi- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay19.xml b/validation/DalitzFiles/DalitzDecay19.xml
new file mode 100644
index 0000000..e5901d4
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay19.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=8 from D_DALITZ -->
+ <dalitzDecay particle="D+" daughters="pi- pi+ K+" probMax="2500.0">
+ <resonance real="0" imag="0" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.149"
+ mass="0.775" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.0971" phase="-167.1" width="0.0487"
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.4738" phase="-134.5" width="0.059"
+ mass="0.972" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.2688" phase="54.4" width="0.109"
+ mass="1.432" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="D-" daughters="pi+ pi- K-"
+ copy="D+" copyDaughters="pi- pi+ K+" />
+ <decay name="D+">
+ <channel br="1.0" daughters="pi- pi+ K+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay19.xml"/>
+ </decay>
+ <decay name="D-">
+ <channel br="1.0" daughters="pi+ pi- K-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay19.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay20.dec b/validation/DalitzFiles/DalitzDecay20.dec
new file mode 100644
index 0000000..fc526a5
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay20.dec
@@ -0,0 +1,10 @@
+Decay D+
+1.0 pi- pi+ K+ D_DALITZ;
+Enddecay
+
+Decay D-
+1.0 pi+ pi- K- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay21.xml b/validation/DalitzFiles/DalitzDecay21.xml
new file mode 100644
index 0000000..6228a83
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay21.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=9 from D_DALITZ -->
+ <dalitzDecay particle="D_s+" daughters="pi- pi+ K+" probMax="1700.0">
+ <resonance real="2.906" imag="2.719" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.149"
+ mass="0.775" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.7236" phase="-18.3" width="0.0487"
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.711" phase="145.2" width="0.232"
+ mass="1.414" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.7549" phase="59.3" width="0.270"
+ mass="1.425" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="7.0589" phase="-151.7" width="0.400"
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="D_s-" daughters="pi+ pi- K-"
+ copy="D_s+" copyDaughters="pi- pi+ K+" />
+ <decay name="D_s+">
+ <channel br="1.0" daughters="pi- pi+ K+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay21.xml"/>
+ </decay>
+ <decay name="D_s-">
+ <channel br="1.0" daughters="pi+ pi- K-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay21.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay22.dec b/validation/DalitzFiles/DalitzDecay22.dec
new file mode 100644
index 0000000..04c0108
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay22.dec
@@ -0,0 +1,10 @@
+Decay D_s+
+1.0 pi- pi+ K+ D_DALITZ;
+Enddecay
+
+Decay D_s-
+1.0 pi+ pi- K- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay23.xml b/validation/DalitzFiles/DalitzDecay23.xml
new file mode 100644
index 0000000..366fbb9
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay23.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=10 from D_DALITZ -->
+ <dalitzDecay particle="D+" daughters="pi- pi+ pi+" probMax="1300.0">
+ <resonance real="-2.15" imag="-3.349" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.150"
+ mass="0.769" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="-1.00" mag="1.00" phase="0.00" width="0.150"
+ mass="0.769" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.2811" phase="205.7" width="0.324"
+ mass="0.478" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.2811" phase="205.7" width="0.324"
+ mass="0.478" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.4265" phase="165.0" width="0.044"
+ mass="0.977" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.4265" phase="165.0" width="0.044"
+ mass="0.977" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.0321" phase="57.3" width="0.185"
+ mass="1.275" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.0321" phase="57.3" width="0.185"
+ mass="1.275" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.7888" phase="105.4" width="0.173"
+ mass="1.434" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.7888" phase="105.4" width="0.173"
+ mass="1.434" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.7363" phase="319.1" width="0.310"
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="-1.00" mag="0.7363" phase="319.1" width="0.310"
+ mass="1.465" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="D-" daughters="pi+ pi- pi-"
+ copy="D+" copyDaughters="pi- pi+ pi+" />
+ <decay name="D+">
+ <channel br="1.0" daughters="pi- pi+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay23.xml"/>
+ </decay>
+ <decay name="D-">
+ <channel br="1.0" daughters="pi+ pi- pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay23.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay24.dec b/validation/DalitzFiles/DalitzDecay24.dec
new file mode 100644
index 0000000..4c5a096
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay24.dec
@@ -0,0 +1,10 @@
+Decay D+
+1.0 pi- pi+ pi+ D_DALITZ;
+Enddecay
+
+Decay D-
+1.0 pi+ pi- pi- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay25.xml b/validation/DalitzFiles/DalitzDecay25.xml
new file mode 100644
index 0000000..a8e2ccc
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay25.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=11 from D_DALITZ -->
+ <dalitzDecay particle="D_s+" daughters="pi- pi+ pi+" probMax="2200.0">
+ <resonance real="0.7229" imag="0.01262" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="0.288" phase="109.0" width="0.150"
+ mass="0.769" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="-1.00" mag="0.288" phase="109.0" width="0.150"
+ mass="0.769" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.044"
+ mass="0.977" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.044"
+ mass="0.977" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.075" phase="133.0" width="0.185"
+ mass="1.275" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.075" phase="133.0" width="0.185"
+ mass="1.275" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.225" phase="198.0" width="0.173"
+ mass="1.434" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.225" phase="198.0" width="0.173"
+ mass="1.434" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.107" phase="162.0" width="0.310"
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="-1.00" mag="1.107" phase="162.0" width="0.310"
+ mass="1.465" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="D_s-" daughters="pi+ pi- pi-"
+ copy="D_s+" copyDaughters="pi- pi+ pi+" />
+ <decay name="D_s+">
+ <channel br="1.0" daughters="pi- pi+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay25.xml"/>
+ </decay>
+ <decay name="D_s-">
+ <channel br="1.0" daughters="pi+ pi- pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay25.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay26.dec b/validation/DalitzFiles/DalitzDecay26.dec
new file mode 100644
index 0000000..69a4605
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay26.dec
@@ -0,0 +1,10 @@
+Decay D_s+
+1.0 pi- pi+ pi+ D_DALITZ;
+Enddecay
+
+Decay D_s-
+1.0 pi+ pi- pi- D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay4.xml b/validation/DalitzFiles/DalitzDecay4.xml
index b3d9d09..05ad64e 100644
--- a/validation/DalitzFiles/DalitzDecay4.xml
+++ b/validation/DalitzFiles/DalitzDecay4.xml
@@ -1,32 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
<data>
<dalitzDecay particle="D+" daughters="K- pi+ pi+" probMax="2500.0">
<resonance real="-7.02168" imag="2.33580" shape="NonRes"/>
<resonance ampFactorReal="-0.707106782" mag="1.0" phase="0.0" width="0.0503"
- mass="0.896" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="1.0" phase="0.0" width="0.0503"
- mass="0.896" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="1" />
+ mass="1.463" spin="0" daughterPair="1" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="3" />
+ mass="1.463" spin="0" daughterPair="3" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" width="0.109"
- mass="1.4324" spin="2" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" width="0.109"
- mass="1.4324" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-0.707106782" mag="6.5" phase="29" width="0.323"
- mass="1.717" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="6.5" phase="29" width="0.323"
- mass="1.717" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="1"/>
+ mass="0.809" spin="0" daughterPair="1" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="3"/>
+ mass="0.809" spin="0" daughterPair="3" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
-
+ <copyDalitz particle="D-" daughters="K+ pi- pi-"
+ copy="D+" copyDaughters="K- pi+ pi+" />
<decay name="D+">
<channel br="1.0" daughters="K- pi+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay4.xml"/>
</decay>
+ <decay name="D-">
+ <channel br="1.0" daughters="K+ pi- pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay4.xml"/>
+ </decay>
</data>
diff --git a/validation/DalitzFiles/DalitzDecay5.xml b/validation/DalitzFiles/DalitzDecay5.xml
index 36fbf20..8377b3c 100644
--- a/validation/DalitzFiles/DalitzDecay5.xml
+++ b/validation/DalitzFiles/DalitzDecay5.xml
@@ -1,26 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
<data>
<dalitzDecay particle="D+" daughters="K- pi+ pi+" probMax="2500.0">
<resonance real="-7.02168" imag="2.33580" shape="NonRes"/>
- <resonance ampFactorReal="-0.707106782" mag="1.0" phase="0.0" particle="K*0" daughterPair="1" invMassAngDenom="true"/>
- <resonance ampFactorReal="0.707106782" mag="1.0" phase="0.0" particle="K*0" daughterPair="3" invMassAngDenom="true"/>
+ <resonance ampFactorReal="-0.707106782" mag="1.0" phase="0.0" particle="K*0"
+ daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="0.707106782" mag="1.0" phase="0.0" particle="K*0"
+ daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="1" />
+ mass="1.463" spin="0" daughterPair="1" shape="RBW_CLEO" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="3" />
- <resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0" daughterPair="1" invMassAngDenom="true"/>
- <resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0" daughterPair="3" invMassAngDenom="true"/>
- <resonance ampFactorReal="-0.707106782" mag="6.5" phase="29" particle="K''*0" daughterPair="1" invMassAngDenom="true"/>
- <resonance ampFactorReal="0.707106782" mag="6.5" phase="29" particle="K''*0" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.463" spin="0" daughterPair="3" shape="RBW_CLEO" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0"
+ daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0"
+ daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="-0.707106782" mag="6.5" phase="29" particle="K''*0"
+ daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="0.707106782" mag="6.5" phase="29" particle="K''*0"
+ daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="1"/>
+ mass="0.809" spin="0" daughterPair="1" shape="RBW_CLEO" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="3"/>
+ mass="0.809" spin="0" daughterPair="3" shape="RBW_CLEO" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
<decay name="D+">
<channel br="1.0" daughters="K- pi+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay5.xml"/>
</decay>
</data>
diff --git a/validation/DalitzFiles/DalitzDecay6.xml b/validation/DalitzFiles/DalitzDecay6.xml
index 6bfacaa..b900498 100644
--- a/validation/DalitzFiles/DalitzDecay6.xml
+++ b/validation/DalitzFiles/DalitzDecay6.xml
@@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
<data>
<dalitzDecay particle="D+" daughters="K- pi+ pi+" probMax="2500.0">
<resonance real="-7.02168" imag="2.33580" shape="NonRes"/>
<resonance ampFactorReal="-0.707106782" mag="1.0" phase="0.0" particle="K*0" width="0.0503"
- mass="0.896" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="1.0" phase="0.0" particle="K*0" width="0.0503"
- mass="0.896" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="1" />
+ mass="1.463" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="3" />
+ mass="1.463" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0" width="0.109"
- mass="1.4324" spin="2" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" particle="K_2*0" width="0.109"
- mass="1.4324" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-0.707106782" mag="6.5" phase="29" particle="K''*0" width="0.323"
- mass="1.717" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="6.5" phase="29" particle="K''*0" width="0.323"
- mass="1.717" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="1"/>
+ mass="0.809" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="3"/>
+ mass="0.809" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
<decay name="D+">
<channel br="1.0" daughters="K- pi+ pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay6.xml"/>
</decay>
</data>
diff --git a/validation/DalitzFiles/DalitzDecay7.xml b/validation/DalitzFiles/DalitzDecay7.xml
new file mode 100644
index 0000000..9cd0d21
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay7.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=2 from D_DALITZ -->
+<!-- mags multiplied by 0.388844 and 0.223159 respectively to account for sqrt(gamma0) -->
+ <dalitzDecay particle="D+" daughters="anti-K0 pi+ pi0" probMax="150.0">
+ <resonance real="-0.268361" imag="-0.913601" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="0.388844" phase="0.00" width="0.1512"
+ mass="0.7699" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorResonance="25.38"/>
+ <resonance ampFactorReal="1.00" ampFactorImag="0.00"
+ mag="0.1940367505" phase="41.201" width="0.0498"
+ mass="0.89159" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorResonance="10.15"/>
+ </dalitzDecay>
+ <copyDalitz particle="D-" daughters="K0 pi- pi0"
+ copy="D+" copyDaughters="anti-K0 pi+ pi0" />
+ <decay name="D+">
+ <channel br="1.0" daughters="anti-K0 pi+ pi0" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay7.xml"/>
+ </decay>
+ <decay name="D-">
+ <channel br="1.0" daughters="K0 pi- pi0" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay7.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecay8.dec b/validation/DalitzFiles/DalitzDecay8.dec
new file mode 100644
index 0000000..b10105d
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay8.dec
@@ -0,0 +1,10 @@
+Decay D+
+1.0 anti-K0 pi+ pi0 D_DALITZ;
+Enddecay
+
+Decay D-
+1.0 K0 pi- pi0 D_DALITZ;
+Enddecay
+
+End
+
diff --git a/validation/DalitzFiles/DalitzDecay9.xml b/validation/DalitzFiles/DalitzDecay9.xml
new file mode 100644
index 0000000..b692432
--- /dev/null
+++ b/validation/DalitzFiles/DalitzDecay9.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
+<data>
+<!-- flag=3 from D_DALITZ -->
+ <dalitzDecay particle="D0" daughters="anti-K0 pi- pi+" probMax="3000.0">
+ <resonance real="1.0" imag="0.0" shape="NonRes"/>
+ <resonance ampFactorReal="1.00" mag="1.418" phase="-190.0" width="0.0508"
+ mass="0.89166" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.818" phase="-337.0" width="0.294"
+ mass="1.412" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.909" phase="-5.0" width="0.0985"
+ mass="1.4256" spin="2" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="5.091" phase="-166.0" width="0.322"
+ mass="1.717" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.10" phase="161.0" width="0.0508"
+ mass="0.89166" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.909" phase="-160.0" width="0.1502"
+ mass="0.7693" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.0336" phase="-46.0" width="0.00844"
+ mass="0.78257" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.309" phase="-152.0" width="0.05"
+ mass="0.977" spin="0" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="1.636" phase="-255.0" width="0.272"
+ mass="1.31" spin="0" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.636" phase="-32.0" width="0.1851"
+ mass="1.2754" spin="2" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ </dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K0 pi+ pi-"
+ copy="D0" copyDaughters="anti-K0 pi- pi+" />
+ <decay name="D0">
+ <channel br="1.0" daughters="anti-K0 pi- pi+" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay9.xml"/>
+ </decay>
+ <decay name="anti-D0">
+ <channel br="1.0" daughters="K0 pi+ pi-" model="GENERIC_DALITZ" params="DalitzFiles/DalitzDecay9.xml"/>
+ </decay>
+</data>
+
diff --git a/validation/DalitzFiles/DalitzDecays.xml b/validation/DalitzFiles/DalitzDecays.xml
index 3bef24f..3b41c2b 100644
--- a/validation/DalitzFiles/DalitzDecays.xml
+++ b/validation/DalitzFiles/DalitzDecays.xml
@@ -1,278 +1,257 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="DECAY.XSL" type="text/xsl" ?>
<data>
- <Title>DalitzDecays.xml</Title>
- <Details>Dalitz Decays to emulate the behaviour of the DDALITZ model in GENERIC_DALITZ</Details>
- <Author>D Craik</Author>
- <Version>1.0</Version>
+ <Title>DalitzDecays.xml</Title>
+ <Details>Dalitz Decays to emulate the behaviour of the DDALITZ model in GENERIC_DALITZ</Details>
+ <Author>D Craik</Author>
+ <Version>2.0</Version>
+
<!-- flag=1 from D_DALITZ -->
<dalitzDecay particle="D+" daughters="K- pi+ pi+" probMax="2500.0">
<resonance real="-7.02168" imag="2.33580" shape="NonRes"/>
<resonance ampFactorReal="-0.707106782" mag="1.0" phase="0.0" width="0.0503"
- mass="0.896" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="1.0" phase="0.0" width="0.0503"
- mass="0.896" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="1" />
+ mass="1.463" spin="0" daughterPair="1" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="3.0" phase="-130.3" width="0.164"
- mass="1.463" spin="0" daughterPair="3" />
+ mass="1.463" spin="0" daughterPair="3" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" width="0.109"
- mass="1.4324" spin="2" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="0.96" phase="150.1" width="0.109"
- mass="1.4324" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-0.707106782" mag="6.5" phase="29" width="0.323"
- mass="1.717" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="6.5" phase="29" width="0.323"
- mass="1.717" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.717" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="1"/>
+ mass="0.809" spin="0" daughterPair="1" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="0.707106782" mag="5.01" phase="16.3" width="0.470"
- mass="0.809" spin="0" daughterPair="3"/>
+ mass="0.809" spin="0" daughterPair="3" shape="RBW"
+ BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D-" daughters="K+ pi- pi-"
+ copy="D+" copyDaughters="K- pi+ pi+" />
<!-- flag=2 from D_DALITZ -->
+<!-- mags multiplied by 0.388844 and 0.223159 respectively to account for sqrt(gamma0) -->
<dalitzDecay particle="D+" daughters="anti-K0 pi+ pi0" probMax="150.0">
<resonance real="-0.268361" imag="-0.913601" shape="NonRes"/>
- <resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.1512"
- mass="0.7699" spin="1" daughterPair="2" shape="RelBW" bwFactor="0"/>
- <resonance ampFactorReal="0.654211" ampFactorImag="0.572746"
- mag="0.8695" phase="0.7191" width="0.0498"
- mass="0.89159" spin="1" daughterPair="3" shape="RelBW" bwFactor="1"/>
+ <resonance ampFactorReal="1.00" mag="0.388844" phase="0.00" width="0.1512"
+ mass="0.7699" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorResonance="25.38"/>
+ <resonance ampFactorReal="1.00" ampFactorImag="0.00"
+ mag="0.1940367505" phase="41.201" width="0.0498"
+ mass="0.89159" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorResonance="10.15"/>
</dalitzDecay>
-
-<!--TODO Mixing needs to be added for D0 to anti_K0 pi+ pi-
- anti_D0 to K0 pi+ pi-
- D0 to K0 K+ K-
- anti_Do to K0 K+ K- -->
+ <copyDalitz particle="D-" daughters="K0 pi- pi0"
+ copy="D+" copyDaughters="anti-K0 pi+ pi0" />
<!-- flag=3 from D_DALITZ -->
- <dalitzDecay particle="D0" daughters="anti-K0 pi+ pi-" probMax="3000.0">
+ <dalitzDecay particle="D0" daughters="anti-K0 pi- pi+" probMax="3000.0">
<resonance real="1.0" imag="0.0" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.418" phase="-190.0" width="0.0508"
- mass="0.89166" spin="1" daughterPair="1"/>
+ mass="0.89166" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.818" phase="-337.0" width="0.294"
- mass="1.412" spin="0" daughterPair="1"/>
+ mass="1.412" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.909" phase="-5.0" width="0.0985"
- mass="1.4256" spin="2" daughterPair="1"/>
+ mass="1.4256" spin="2" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="5.091" phase="-166.0" width="0.322"
- mass="1.717" spin="1" daughterPair="1"/>
- <resonance ampFactorReal="1.00" mag="0.10" phase="-19.0" width="0.0508"
- mass="0.89166" spin="1" daughterPair="3"/>
- <resonance ampFactorReal="1.00" mag="0.909" phase="-340.0" width="0.1502"
- mass="0.7693" spin="1" daughterPair="2"/>
- <resonance ampFactorReal="1.00" mag="0.0336" phase="-226.0" width="0.00844"
- mass="0.78257" spin="1" daughterPair="2"/>
+ mass="1.717" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.10" phase="161.0" width="0.0508"
+ mass="0.89166" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.909" phase="-160.0" width="0.1502"
+ mass="0.7693" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.0336" phase="-46.0" width="0.00844"
+ mass="0.78257" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.309" phase="-152.0" width="0.05"
- mass="0.977" spin="0" daughterPair="2"/>
+ mass="0.977" spin="0" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.636" phase="-255.0" width="0.272"
- mass="1.31" spin="0" daughterPair="2"/>
+ mass="1.31" spin="0" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.636" phase="-32.0" width="0.1851"
- mass="1.2754" spin="2" daughterPair="2"/>
+ mass="1.2754" spin="2" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K0 pi+ pi-"
+ copy="D0" copyDaughters="anti-K0 pi- pi+" />
<!-- flag=4 from D_DALITZ -->
<dalitzDecay particle="D0" daughters="K- pi+ pi0" probMax="600.0">
<resonance real="1.497" imag="0.9065" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.1507"
- mass="0.777" spin="1" daughterPair="2"/>
+ mass="0.770" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.39" phase="-0.20" width="0.0505"
- mass="0.8961" spin="1" daughterPair="1"/>
- <resonance ampFactorReal="1.00" mag="0.44" phase="163.0" width="0.050"
- mass="0.8915" spin="1" daughterPair="3"/>
+ mass="0.8961" spin="1" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="0.44" phase="-17.0" width="0.050"
+ mass="0.8915" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.77" phase="55.5" width="0.294"
- mass="1.412" spin="0" daughterPair="3"/>
+ mass="1.412" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.85" phase="166.0" width="0.294"
- mass="1.412" spin="0" daughterPair="1"/>
+ mass="1.412" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.5" phase="171.0" width="0.240"
- mass="1.700" spin="1" daughterPair="2"/>
- <resonance ampFactorReal="1.00" mag="2.5" phase="103.0" width="0.322"
- mass="1.717" spin="1" daughterPair="3"/>
+ mass="1.700" spin="1" daughterPair="2" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
+ <resonance ampFactorReal="1.00" mag="2.5" phase="-77.0" width="0.322"
+ mass="1.717" spin="1" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K+ pi- pi0"
+ copy="D0" copyDaughters="K- pi+ pi0" />
<!-- flag=5 from D_DALITZ -->
- <dalitzDecay particle="D0" daughters="K0 K+ K-" probMax="2500000.0">
+ <dalitzDecay particle="D0" daughters="K0 K- K+" probMax="2500000.0">
<resonance real="1.0" imag="0.0" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="113.75" phase="-40.0" width="0.0043"
- mass="1.019456" spin="1" daughterPair="2"/>
+ mass="1.019456" spin="1" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
<resonance ampFactorReal="1.00" mag="152.25" phase="69.0" width="0.1196"
- mass="0.9847" spin="0" daughterPair="2"/>
+ mass="0.9847" spin="0" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
<resonance ampFactorReal="1.00" mag="30.5" phase="-201.0" width="0.05"
- mass="0.980" spin="0" daughterPair="2"/>
+ mass="0.980" spin="0" daughterPair="2" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
<resonance ampFactorReal="1.00" mag="85.75" phase="-93.0" width="0.1196"
- mass="0.9847" spin="0" daughterPair="1"/>
+ mass="0.9847" spin="0" daughterPair="1" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
<resonance ampFactorReal="1.00" mag="8.0" phase="-53.0" width="0.1196"
- mass="0.9847" spin="0" daughterPair="3"/>
+ mass="0.9847" spin="0" daughterPair="3" shape="NBW" BlattWeisskopfFactorResonance="0.0"/>
</dalitzDecay>
+ <copyDalitz particle="anti-D0" daughters="K0 K+ K-"
+ copy="D0" copyDaughters="K0 K- K+" />
<!-- flag=6 from D_DALITZ -->
<dalitzDecay particle="D_s+" daughters="K- K+ pi+" probMax="45000.0">
<resonance real="0" imag="0" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.0455"
- mass="0.8944" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.8944" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.48" phase="138.0" width="0.290"
- mass="1.414" spin="0" daughterPair="3"/>
+ mass="1.414" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="5.07" phase="156.0" mass="0.965"
daughterPair="1" shape="Flatte">
<flatteParam mass1="0.134977" mass2="0.134977" g="0.406" />
<flatteParam mass1="0.493677" mass2="0.493677" g="0.800" />
</resonance>
<resonance ampFactorReal="1.00" mag="1.15" phase="-10.0" width="0.00426"
- mass="1.019455" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.019455" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.28" phase="53.0" width="0.265"
- mass="1.350" spin="0" daughterPair="1"/>
+ mass="1.350" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.19" phase="87.0" width="0.137"
- mass="1.724" spin="0" daughterPair="1"/>
+ mass="1.724" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D_s-" daughters="K+ K- pi-"
+ copy="D_s+" copyDaughters="K- K+ pi+" />
+
<!-- flag=7 from D_DALITZ -->
<dalitzDecay particle="D+" daughters="K- K+ pi+" probMax="35000.0">
<resonance real="3.069" imag="4.073" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.0503"
- mass="0.8960" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.8960" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="3.7" phase="73.00" width="0.290"
- mass="1.414" spin="0" daughterPair="3"/>
+ mass="1.414" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.189" phase="1.0" width="0.00426"
- mass="1.019455" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.019455" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.72" phase="123.0" width="0.265"
- mass="1.474" spin="0" daughterPair="1"/>
+ mass="1.474" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.9" phase="128.0" width="0.15"
- mass="1.68" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.68" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="6.4" phase="150.0" width="0.109"
- mass="1.4324" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.4324" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D-" daughters="K+ K- pi-"
+ copy="D+" copyDaughters="K- K+ pi+" />
<!-- flag=8 from D_DALITZ -->
<dalitzDecay particle="D+" daughters="pi- pi+ K+" probMax="2500.0">
<resonance real="0" imag="0" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.149"
- mass="0.775" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.775" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.0971" phase="-167.1" width="0.0487"
- mass="0.896" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.4738" phase="-134.5" width="0.059"
- mass="0.972" spin="0" daughterPair="1"/>
+ mass="0.972" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.2688" phase="54.4" width="0.109"
- mass="1.432" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.432" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D-" daughters="pi+ pi- K-"
+ copy="D+" copyDaughters="pi- pi+ K+" />
<!-- flag=9 from D_DALITZ -->
<dalitzDecay particle="D_s+" daughters="pi- pi+ K+" probMax="1700.0">
<resonance real="2.906" imag="2.719" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.149"
- mass="0.775" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.775" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.7236" phase="-18.3" width="0.0487"
- mass="0.896" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.896" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.711" phase="145.2" width="0.232"
- mass="1.414" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.414" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.7549" phase="59.3" width="0.270"
- mass="1.425" spin="0" daughterPair="3"/>
+ mass="1.425" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="7.0589" phase="-151.7" width="0.400"
- mass="1.465" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D_s-" daughters="pi+ pi- K-"
+ copy="D_s+" copyDaughters="pi- pi+ K+" />
<!-- flag=10 from D_DALITZ -->
<dalitzDecay particle="D+" daughters="pi- pi+ pi+" probMax="1300.0">
<resonance real="-2.15" imag="-3.349" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.150"
- mass="0.769" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.769" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-1.00" mag="1.00" phase="0.00" width="0.150"
- mass="0.769" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.769" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.2811" phase="205.7" width="0.324"
- mass="0.478" spin="0" daughterPair="1"/>
+ mass="0.478" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.2811" phase="205.7" width="0.324"
- mass="0.478" spin="0" daughterPair="3"/>
+ mass="0.478" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.4265" phase="165.0" width="0.044"
- mass="0.977" spin="0" daughterPair="1"/>
+ mass="0.977" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.4265" phase="165.0" width="0.044"
- mass="0.977" spin="0" daughterPair="3"/>
+ mass="0.977" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.0321" phase="57.3" width="0.185"
- mass="1.275" spin="2" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.275" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.0321" phase="57.3" width="0.185"
- mass="1.275" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.275" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.7888" phase="105.4" width="0.173"
- mass="1.434" spin="0" daughterPair="1"/>
+ mass="1.434" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.7888" phase="105.4" width="0.173"
- mass="1.434" spin="0" daughterPair="3"/>
+ mass="1.434" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="0.7363" phase="319.1" width="0.310"
- mass="1.465" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-1.00" mag="0.7363" phase="319.1" width="0.310"
- mass="1.465" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.465" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
+ <copyDalitz particle="D-" daughters="pi+ pi- pi-"
+ copy="D+" copyDaughters="pi- pi+ pi+" />
<!-- flag=11 from D_DALITZ -->
<dalitzDecay particle="D_s+" daughters="pi- pi+ pi+" probMax="2200.0">
<resonance real="0.7229" imag="0.01262" shape="NonRes"/>
<resonance ampFactorReal="1.00" mag="0.288" phase="109.0" width="0.150"
- mass="0.769" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="0.769" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-1.00" mag="0.288" phase="109.0" width="0.150"
- mass="0.769" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="0.769" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.044"
- mass="0.977" spin="0" daughterPair="1"/>
+ mass="0.977" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.00" phase="0.00" width="0.044"
- mass="0.977" spin="0" daughterPair="3"/>
+ mass="0.977" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.075" phase="133.0" width="0.185"
- mass="1.275" spin="2" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.275" spin="2" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.075" phase="133.0" width="0.185"
- mass="1.275" spin="2" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.275" spin="2" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.225" phase="198.0" width="0.173"
- mass="1.434" spin="0" daughterPair="1"/>
+ mass="1.434" spin="0" daughterPair="1" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="2.225" phase="198.0" width="0.173"
- mass="1.434" spin="0" daughterPair="3"/>
+ mass="1.434" spin="0" daughterPair="3" shape="RBW" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="1.00" mag="1.107" phase="162.0" width="0.310"
- mass="1.465" spin="1" daughterPair="1" invMassAngDenom="true"/>
+ mass="1.465" spin="1" daughterPair="1" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
<resonance ampFactorReal="-1.00" mag="1.107" phase="162.0" width="0.310"
- mass="1.465" spin="1" daughterPair="3" invMassAngDenom="true"/>
+ mass="1.465" spin="1" daughterPair="3" shape="RBW_CLEO_ZEMACH" BlattWeisskopfFactorParent="5.0"/>
</dalitzDecay>
-
-<!-- copy dalitz decays -->
- <copyDalitz particle="D-" daughters="K+ pi- pi-"
- copy="D+" copyDaughters="K- pi+ pi+" />
- <copyDalitz particle="D+" daughters="K_L0 pi+ pi0"
- copy="D+" copyDaughters="anti-K0 pi+ pi0" />
- <copyDalitz particle="D+" daughters="K_S0 pi+ pi0"
- copy="D+" copyDaughters="anti-K0 pi+ pi0" />
- <copyDalitz particle="D-" daughters="K0 pi- pi0"
- copy="D+" copyDaughters="anti-K0 pi+ pi0" />
- <copyDalitz particle="D-" daughters="K_L0 pi- pi0"
- copy="D+" copyDaughters="anti-K0 pi+ pi0" />
- <copyDalitz particle="D-" daughters="K_S0 pi- pi0"
- copy="D+" copyDaughters="anti-K0 pi+ pi0" />
-
- <copyDalitz particle="D0" daughters="K_L0 pi+ pi-"
- copy="D0" copyDaughters="anti-K0 pi+ pi-" />
- <copyDalitz particle="D0" daughters="K_S0 pi+ pi-"
- copy="D0" copyDaughters="anti-K0 pi+ pi-" />
- <copyDalitz particle="anti-D0" daughters="K0 pi+ pi-"
- copy="D0" copyDaughters="anti-K0 pi+ pi-" />
- <copyDalitz particle="anti-D0" daughters="K_L0 pi+ pi-"
- copy="D0" copyDaughters="anti-K0 pi+ pi-" />
- <copyDalitz particle="anti-D0" daughters="K_S0 pi+ pi-"
- copy="D0" copyDaughters="anti-K0 pi+ pi-" />
-
- <copyDalitz particle="anti-D0" daughters="K+ pi- pi0"
- copy="D0" copyDaughters="K- pi+ pi0" />
-
- <copyDalitz particle="D0" daughters="K_L0 K+ K-"
- copy="D0" copyDaughters="K0 K+ K-" />
- <copyDalitz particle="D0" daughters="K_S0 K+ K-"
- copy="D0" copyDaughters="K0 K+ K-" />
- <copyDalitz particle="anti-D0" daughters="K0 K+ K-"
- copy="D0" copyDaughters="K0 K+ K-" />
- <copyDalitz particle="anti-D0" daughters="K_L0 K+ K-"
- copy="D0" copyDaughters="K0 K+ K-" />
- <copyDalitz particle="anti-D0" daughters="K_S0 K+ K-"
- copy="D0" copyDaughters="K0 K+ K-" />
-
- <copyDalitz particle="D_s-" daughters="K+ K- pi-"
- copy="D_s+" copyDaughters="K- K+ pi+" />
- <copyDalitz particle="D-" daughters="K+ K- pi-"
- copy="D+" copyDaughters="K- K+ pi+" />
- <copyDalitz particle="D-" daughters="pi+ pi- K-"
- copy="D+" copyDaughters="pi- pi+ K+" />
- <copyDalitz particle="D_s-" daughters="pi+ pi- K-"
- copy="D_s+" copyDaughters="pi- pi+ K+" />
- <copyDalitz particle="D-" daughters="pi+ pi- pi-"
- copy="D+" copyDaughters="pi- pi+ pi+" />
<copyDalitz particle="D_s-" daughters="pi+ pi- pi-"
copy="D_s+" copyDaughters="pi- pi+ pi+" />
+
</data>
diff --git a/validation/compareDalitz.C b/validation/compareDalitz.C
new file mode 100644
index 0000000..a56008b
--- /dev/null
+++ b/validation/compareDalitz.C
@@ -0,0 +1,41 @@
+void compareDalitz(TString name1, TString name2) {
+ TCanvas c1;
+ c1.Divide(2,2);
+ TFile f1(name1);
+ TFile f2(name2);
+ TTree* t1 = (TTree*)f1.Get("dalitzTree");
+ TTree* t2 = (TTree*)f2.Get("dalitzTree");
+ t1->SetMarkerColor(kRed);
+ t1->SetLineColor(kRed);
+ t2->SetMarkerColor(kBlue);
+ t2->SetLineColor(kBlue);
+ gStyle->SetOptStat(0);
+ c1.cd(1);
+ t1->Draw("invMass12:invMass23","");
+ t2->Draw("invMass12:invMass23","","same");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetTitle("");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetXTitle("Mass 23 [GeV/c^{2}]");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetYTitle("Mass 12 [GeV/c^{2}]");
+ c1.cd(2);
+ t1->Draw("invMass12","");
+ t2->Draw("invMass12","","same");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetTitle("");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetXTitle("Mass 12 [GeV/c^{2}]");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetYTitle("");
+ c1.cd(3);
+ t1->Draw("invMass23","");
+ t2->Draw("invMass23","","same");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetTitle("");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetXTitle("Mass 23 [GeV/c^{2}]");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetYTitle("");
+ c1.cd(4);
+ t1->Draw("invMass13","");
+ t2->Draw("invMass13","","same");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetTitle("");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetXTitle("Mass 13 [GeV/c^{2}]");
+ ((TH1F*)gPad->GetPrimitive("htemp"))->SetYTitle("");
+ c1.Update();
+
+ cout <<"Hit Enter to continue"<<endl;
+ while (getchar() != '\n');
+}
diff --git a/validation/genDalitzDecays.sh b/validation/genDalitzDecays.sh
index 4cae1f3..85ac70b 100755
--- a/validation/genDalitzDecays.sh
+++ b/validation/genDalitzDecays.sh
@@ -1,6 +1,58 @@
./genExampleRootFiles DalitzFiles/DalitzDecay1.dec rootFiles/DalitzDecay1.root D+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay1.dec rootFiles/DalitzDecay1b.root D- 10000
./genExampleRootFiles DalitzFiles/DalitzDecay2.dec rootFiles/DalitzDecay2.root D+ 10000
./genExampleRootFiles DalitzFiles/DalitzDecay3.xml rootFiles/DalitzDecay3.root D+ 10000 1
./genExampleRootFiles DalitzFiles/DalitzDecay4.xml rootFiles/DalitzDecay4.root D+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay4.xml rootFiles/DalitzDecay4b.root D- 10000 1
./genExampleRootFiles DalitzFiles/DalitzDecay5.xml rootFiles/DalitzDecay5.root D+ 10000 1
./genExampleRootFiles DalitzFiles/DalitzDecay6.xml rootFiles/DalitzDecay6.root D+ 10000 1
+
+./genExampleRootFiles DalitzFiles/DalitzDecay7.xml rootFiles/DalitzDecay7.root D+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay7.xml rootFiles/DalitzDecay7b.root D- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay8.dec rootFiles/DalitzDecay8.root D+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay8.dec rootFiles/DalitzDecay8b.root D- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay9.xml rootFiles/DalitzDecay9.root D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay9.xml rootFiles/DalitzDecay9b.root anti-D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay10.dec rootFiles/DalitzDecay10.root D0 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay10.dec rootFiles/DalitzDecay10b.root anti-D0 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay11.xml rootFiles/DalitzDecay11.root D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay11.xml rootFiles/DalitzDecay11b.root anti-D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay12.dec rootFiles/DalitzDecay12.root D0 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay12.dec rootFiles/DalitzDecay12b.root anti-D0 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay13.xml rootFiles/DalitzDecay13.root D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay13.xml rootFiles/DalitzDecay13b.root anti-D0 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay14.dec rootFiles/DalitzDecay14.root D0 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay14.dec rootFiles/DalitzDecay14b.root anti-D0 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay15.xml rootFiles/DalitzDecay15.root D_s+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay15.xml rootFiles/DalitzDecay15b.root D_s- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay16.dec rootFiles/DalitzDecay16.root D_s+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay16.dec rootFiles/DalitzDecay16b.root D_s- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay17.xml rootFiles/DalitzDecay17.root D+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay17.xml rootFiles/DalitzDecay17b.root D- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay18.dec rootFiles/DalitzDecay18.root D+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay18.dec rootFiles/DalitzDecay18b.root D- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay19.xml rootFiles/DalitzDecay19.root D+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay19.xml rootFiles/DalitzDecay19b.root D- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay20.dec rootFiles/DalitzDecay20.root D+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay20.dec rootFiles/DalitzDecay20b.root D- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay21.xml rootFiles/DalitzDecay21.root D_s+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay21.xml rootFiles/DalitzDecay21b.root D_s- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay22.dec rootFiles/DalitzDecay22.root D_s+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay22.dec rootFiles/DalitzDecay22b.root D_s- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay23.xml rootFiles/DalitzDecay23.root D+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay23.xml rootFiles/DalitzDecay23b.root D- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay24.dec rootFiles/DalitzDecay24.root D+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay24.dec rootFiles/DalitzDecay24b.root D- 10000
+
+./genExampleRootFiles DalitzFiles/DalitzDecay25.xml rootFiles/DalitzDecay25.root D_s+ 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay25.xml rootFiles/DalitzDecay25b.root D_s- 10000 1
+./genExampleRootFiles DalitzFiles/DalitzDecay26.dec rootFiles/DalitzDecay26.root D_s+ 10000
+./genExampleRootFiles DalitzFiles/DalitzDecay26.dec rootFiles/DalitzDecay26b.root D_s- 10000

File Metadata

Mime Type
text/x-diff
Expires
Sat, May 3, 6:55 AM (6 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4975747
Default Alt Text
(129 KB)

Event Timeline