CGEM BOSS 6.6.5.i
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDalitzReso Class Reference

#include <EvtDalitzReso.hh>

Public Types

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
}
 
enum  CouplingType {
  Undefined =0 , PicPic =1 , PizPiz , PiPi ,
  KcKc , KzKz , KK , EtaPic ,
  EtaPiz , PicPicKK , WA76
}
 

Public Member Functions

 EvtDalitzReso ()
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, double m0, double g0, NumType typeN)
 
 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)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairRes, std::string nameIndex, NumType typeN, EvtComplex fr12prod, EvtComplex fr13prod, EvtComplex fr14prod, EvtComplex fr15prod, double s0prod)
 
 EvtDalitzReso (const EvtDalitzPlot &dp, EvtCyclic3::Pair pairRes, double m0, double g0, double a, double r, double B, double phiB, double R, double phiR)
 
 EvtDalitzReso (const EvtDalitzReso &other)
 
 ~EvtDalitzReso ()
 
EvtDalitzResoclone () const
 
EvtComplex evaluate (const EvtDalitzPoint &p)
 
void set_fd (double R)
 
void set_fb (double R)
 

Detailed Description

Definition at line 34 of file EvtDalitzReso.hh.

Member Enumeration Documentation

◆ CouplingType

Enumerator
Undefined 
PicPic 
PizPiz 
PiPi 
KcKc 
KzKz 
KK 
EtaPic 
EtaPiz 
PicPicKK 
WA76 

Definition at line 51 of file EvtDalitzReso.hh.

◆ NumType

Enumerator
NBW 
RBW_ZEMACH 
RBW_KUEHN 
RBW_CLEO 
RBW_ZEMACH2 
GS_CLEO 
K_MATRIX 
RBW_CLEO_ZEMACH 
GS_CLEO_ZEMACH 
LASS 
K_MATRIX_I 
K_MATRIX_II 
GAUSS_CLEO 
GAUSS_CLEO_ZEMACH 

Definition at line 38 of file EvtDalitzReso.hh.

Constructor & Destructor Documentation

◆ EvtDalitzReso() [1/7]

EvtDalitzReso::EvtDalitzReso ( )
inline

Definition at line 53 of file EvtDalitzReso.hh.

53{};

Referenced by clone().

◆ EvtDalitzReso() [2/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot & dp,
EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes,
EvtSpinType::spintype spin,
double m0,
double g0,
NumType typeN )

Definition at line 38 of file EvtDalitzReso.cc.

40 : _dp(dp),
41 _pairAng(pairAng),
42 _pairRes(pairRes),
43 _spin(spin),
44 _typeN(typeN),
45 _m0(m0),_g0(g0),
46 _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
47 _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
48 _g1(-1.),_g2(-1.),_coupling2(Undefined),
49 _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
50 _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
51{
52 _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
53 _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
54 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
55 _vd.set_f( 1.5 );
56 assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II); // single BW cannot be K-matrix
57}
double bigM() const
double m(EvtCyclic3::Index i) const
void set_f(double R)
Index second(Pair i)
Index other(Index i, Index j)
Index first(Pair i)

◆ EvtDalitzReso() [3/7]

EvtDalitzReso::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 )

Definition at line 61 of file EvtDalitzReso.cc.

64 : _dp(dp),
65 _pairAng(pairAng),
66 _pairRes(pairRes),
67 _spin(spin),
68 _typeN(typeN),
69 _m0(m0),_g0(g0),
70 _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
71 _m0_mix(m0_mix),_g0_mix(g0_mix),_delta_mix(delta_mix),_amp_mix(amp_mix),
72 _g1(-1.),_g2(-1.),_coupling2(Undefined),
73 _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
74 _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
75{
76 _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
77 _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
78 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
79 _vd.set_f( 1.5 );
80 // single BW (with electromagnetic mixing) cannot be K-matrix
81 assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II);
82}

◆ EvtDalitzReso() [4/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot & dp,
EvtCyclic3::Pair pairAng,
EvtCyclic3::Pair pairRes,
EvtSpinType::spintype spin,
double m0,
NumType typeN,
double g1,
double g2,
CouplingType coupling2 )

Definition at line 85 of file EvtDalitzReso.cc.

87 : _dp(dp),
88 _pairAng(pairAng),
89 _pairRes(pairRes),
90 _spin(spin),
91 _typeN(typeN),
92 _m0(m0),_g0(-1.),
93 _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
94 _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
95 _g1(g1),_g2(g2),_coupling2(coupling2),
96 _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
97 _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
98{
99 _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),_dp.bigM(),_spin);
100 _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
101 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
102 _vd.set_f( 1.5 );
103 assert(_coupling2 != Undefined);
104 assert(_typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II); // coupled BW cannot be K-matrix
105 assert(_typeN != LASS); // coupled BW cannot be LASS
106 assert(_typeN != NBW); // for coupled BW, only relativistic BW
107}
TF1 * g1

◆ EvtDalitzReso() [5/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot & dp,
EvtCyclic3::Pair pairRes,
std::string nameIndex,
NumType typeN,
EvtComplex fr12prod,
EvtComplex fr13prod,
EvtComplex fr14prod,
EvtComplex fr15prod,
double s0prod )

Definition at line 111 of file EvtDalitzReso.cc.

113 : _dp(dp),
114 _pairRes(pairRes),
115 _typeN(typeN),
116 _m0(0.),_g0(0.),
117 _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
118 _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
119 _g1(-1.),_g2(-1.),_coupling2(Undefined),
120 _kmatrix_index(-1),_fr12prod(fr12prod),_fr13prod(fr13prod),_fr14prod(fr14prod),_fr15prod(fr15prod),_s0prod(s0prod),
121 _a(0.),_r(0.),_Blass(0.),_phiB(0.),_R(0.),_phiR(0.)
122{
123 assert(_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II);
125 if (nameIndex=="Pole1") _kmatrix_index=1;
126 else if (nameIndex=="Pole2") _kmatrix_index=2;
127 else if (nameIndex=="Pole3") _kmatrix_index=3;
128 else if (nameIndex=="Pole4") _kmatrix_index=4;
129 else if (nameIndex=="Pole5") _kmatrix_index=5;
130 else if (nameIndex=="f11prod") _kmatrix_index=6;
131 else assert(0);
132}

◆ EvtDalitzReso() [6/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzPlot & dp,
EvtCyclic3::Pair pairRes,
double m0,
double g0,
double a,
double r,
double B,
double phiB,
double R,
double phiR )

Definition at line 136 of file EvtDalitzReso.cc.

138 : _dp(dp),
139 _pairRes(pairRes),
140 _typeN(LASS),
141 _m0(m0),_g0(g0),
142 _massFirst(dp.m(first(pairRes))),_massSecond(dp.m(second(pairRes))),
143 _m0_mix(-1.),_g0_mix(0.),_delta_mix(0.),_amp_mix(0.,0.),
144 _g1(-1.),_g2(-1.),_coupling2(Undefined),
145 _kmatrix_index(-1),_fr12prod(0.,0.),_fr13prod(0.,0.),_fr14prod(0.,0.),_fr15prod(0.,0.),_s0prod(0.),
146 _a(a),_r(r),_Blass(B),_phiB(phiB),_R(R),_phiR(phiR)
147{
149 _vd = EvtTwoBodyVertex(_massFirst,_massSecond,_m0,_spin);
150 _vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
151}

◆ EvtDalitzReso() [7/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzReso & other)

Definition at line 155 of file EvtDalitzReso.cc.

156 : _dp(other._dp),
157 _pairAng(other._pairAng),
158 _pairRes(other._pairRes),
159 _spin(other._spin),
160 _typeN(other._typeN),
161 _m0(other._m0),_g0(other._g0),
162 _vb(other._vb),_vd(other._vd),
163 _massFirst(other._massFirst),_massSecond(other._massSecond),
164 _m0_mix(other._m0_mix),_g0_mix(other._g0_mix),_delta_mix(other._delta_mix),_amp_mix(other._amp_mix),
165 _g1(other._g1),_g2(other._g2),_coupling2(other._coupling2),
166 _kmatrix_index(other._kmatrix_index),
167 _fr12prod(other._fr12prod),_fr13prod(other._fr13prod),_fr14prod(other._fr14prod),_fr15prod(other._fr15prod),
168 _s0prod(other._s0prod),
169 _a(other._a),_r(other._r),_Blass(other._Blass),_phiB(other._phiB),_R(other._R),_phiR(other._phiR)
170{}

◆ ~EvtDalitzReso()

EvtDalitzReso::~EvtDalitzReso ( )

Definition at line 173 of file EvtDalitzReso.cc.

174{}

Member Function Documentation

◆ clone()

EvtDalitzReso * EvtDalitzReso::clone ( ) const
inline

Definition at line 77 of file EvtDalitzReso.hh.

77{ return new EvtDalitzReso(*this); }

◆ evaluate()

EvtComplex EvtDalitzReso::evaluate ( const EvtDalitzPoint & p)

Definition at line 177 of file EvtDalitzReso.cc.

178{
179 double m = sqrt(x.q(_pairRes));
180
181 // do use always hash table (speed up fitting)
182 if (_typeN==K_MATRIX || _typeN==K_MATRIX_I || _typeN==K_MATRIX_II)
183 return Fvector( m*m, _kmatrix_index );
184
185 if (_typeN==LASS)
186 return lass(m*m);
187
188 EvtComplex amp(1.0,0.0);
189
190 if (_dp.bigM() != x.bigM()) _vb = EvtTwoBodyVertex(_m0,_dp.m(EvtCyclic3::other(_pairRes)),x.bigM(),_spin);
191 EvtTwoBodyKine vb(m,x.m(EvtCyclic3::other(_pairRes)),x.bigM());
192 EvtTwoBodyKine vd(_massFirst,_massSecond,m);
193
194 EvtComplex prop(0,0);
195 if (_typeN==NBW) {
196 prop = propBreitWigner(_m0,_g0,m);
197 } else if (_typeN==GAUSS_CLEO || _typeN==GAUSS_CLEO_ZEMACH) {
198 prop = propGauss(_m0,_g0,m);
199 } else {
200 if (_coupling2==Undefined) {
201 // single BW
202 double g = (_g0<=0. || _vd.pD()<=0.)? -_g0 : _g0*_vd.widthFactor(vd); // running width
203 if (_typeN==GS_CLEO || _typeN==GS_CLEO_ZEMACH) {
204 // Gounaris-Sakurai (GS)
205 assert(_massFirst==_massSecond);
206 prop = propGounarisSakurai(_m0,fabs(_g0),_vd.pD(),m,g,vd.p());
207 } else {
208 // standard relativistic BW
209 prop = propBreitWignerRel(_m0,g,m);
210 }
211 } else {
212 // coupled width BW
213 EvtComplex G1,G2;
214 switch (_coupling2) {
215 case PicPic: {
216 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
217 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
218 G2 = _g2*_g2*psFactor(mPic,mPic,m);
219 break;
220 }
221 case PizPiz: {
222 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
223 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
224 G2 = _g2*_g2*psFactor(mPiz,mPiz,m);
225 break;
226 }
227 case PiPi: {
228 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
229 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
230 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
231 G2 = _g2*_g2*psFactor(mPic,mPic,mPiz,mPiz,m);
232 break;
233 }
234 case KcKc: {
235 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
236 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
237 G2 = _g2*_g2*psFactor(mKc,mKc,m);
238 break;
239 }
240 case KzKz: {
241 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
242 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
243 G2 = _g2*_g2*psFactor(mKz,mKz,m);
244 break;
245 }
246 case KK: {
247 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
248 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
249 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
250 G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
251 break;
252 }
253 case EtaPic: {
254 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
255 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
256 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
257 G2 = _g2*_g2*psFactor(mEta,mPic,m);
258 break;
259 }
260 case EtaPiz: {
261 G1 = _g1*_g1*psFactor(_massFirst,_massSecond,m);
262 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
263 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
264 G2 = _g2*_g2*psFactor(mEta,mPiz,m);
265 break;
266 }
267 case PicPicKK: {
268 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
269 //G1 = _g1*_g1*psFactor(mPic,mPic,m);
270 G1 = _g1*psFactor(mPic,mPic,m);
271 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
272 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
273 //G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
274 G2 = _g2*psFactor(mKc,mKc,mKz,mKz,m);
275 break;
276 }
277 default:
278 std::cout << "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state." << std::endl;
279 assert(0);
280 break;
281 }
282 // calculate standard couple BW propagator
283 if (_coupling2 != WA76)
284 prop = _g1*propBreitWignerRelCoupled(_m0,G1,G2,m);
285 }
286 }
287 amp *= prop;
288
289 // Compute form-factors (Blatt-Weisskopf penetration factor)
290 amp *= _vb.formFactor(vb);
291 amp *= _vd.formFactor(vd);
292
293 // Compute numerator (angular distribution)
294 amp *= numerator(x,vb,vd);
295
296 // Compute electromagnetic mass mixing factor
297 if (_m0_mix>0.) {
298 EvtComplex prop_mix;
299 if (_typeN==NBW) {
300 prop_mix = propBreitWigner(_m0_mix,_g0_mix,m);
301 } else {
302 assert(_g1<0.); // running width only
303 double g_mix = _g0_mix*_vd.widthFactor(vd);
304 prop_mix = propBreitWignerRel(_m0_mix,g_mix,m);
305 }
306 amp *= mixFactor(prop,prop_mix);
307 }
308
309 return amp;
310}
Double_t x[10]
static double getMass(EvtId i)
Definition EvtPDL.hh:46
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:287
double formFactor(EvtTwoBodyKine x) const
double pD() const
double widthFactor(EvtTwoBodyKine x) const

◆ set_fb()

void EvtDalitzReso::set_fb ( double R)
inline

Definition at line 82 of file EvtDalitzReso.hh.

82{ _vb.set_f( R ); }

◆ set_fd()

void EvtDalitzReso::set_fd ( double R)
inline

Definition at line 81 of file EvtDalitzReso.hh.

81{ _vd.set_f( R ); }

The documentation for this class was generated from the following files: