BOSS 8.0.0
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 62 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 37 of file EvtDalitzReso.hh.

Constructor & Destructor Documentation

◆ EvtDalitzReso() [1/7]

EvtDalitzReso::EvtDalitzReso ( )
inline

Definition at line 76 of file EvtDalitzReso.hh.

76{};

Referenced by clone(), and EvtDalitzReso().

◆ 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 36 of file EvtDalitzReso.cc.

38 : _dp( dp )
39 , _pairAng( pairAng )
40 , _pairRes( pairRes )
41 , _spin( spin )
42 , _typeN( typeN )
43 , _m0( m0 )
44 , _g0( g0 )
45 , _massFirst( dp.m( first( pairRes ) ) )
46 , _massSecond( dp.m( second( pairRes ) ) )
47 , _m0_mix( -1. )
48 , _g0_mix( 0. )
49 , _delta_mix( 0. )
50 , _amp_mix( 0., 0. )
51 , _g1( -1. )
52 , _g2( -1. )
53 , _coupling2( Undefined )
54 , _kmatrix_index( -1 )
55 , _fr12prod( 0., 0. )
56 , _fr13prod( 0., 0. )
57 , _fr14prod( 0., 0. )
58 , _fr15prod( 0., 0. )
59 , _s0prod( 0. )
60 , _a( 0. )
61 , _r( 0. )
62 , _Blass( 0. )
63 , _phiB( 0. )
64 , _R( 0. )
65 , _phiR( 0. ) {
66 _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ), _dp.bigM(), _spin );
67 _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
68 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
69 _vd.set_f( 1.5 );
70 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
71 _typeN != K_MATRIX_II ); // single BW cannot be K-matrix
72}
double m(EvtCyclic3::Index i) const
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 75 of file EvtDalitzReso.cc.

79 : _dp( dp )
80 , _pairAng( pairAng )
81 , _pairRes( pairRes )
82 , _spin( spin )
83 , _typeN( typeN )
84 , _m0( m0 )
85 , _g0( g0 )
86 , _massFirst( dp.m( first( pairRes ) ) )
87 , _massSecond( dp.m( second( pairRes ) ) )
88 , _m0_mix( m0_mix )
89 , _g0_mix( g0_mix )
90 , _delta_mix( delta_mix )
91 , _amp_mix( amp_mix )
92 , _g1( -1. )
93 , _g2( -1. )
94 , _coupling2( Undefined )
95 , _kmatrix_index( -1 )
96 , _fr12prod( 0., 0. )
97 , _fr13prod( 0., 0. )
98 , _fr14prod( 0., 0. )
99 , _fr15prod( 0., 0. )
100 , _s0prod( 0. )
101 , _a( 0. )
102 , _r( 0. )
103 , _Blass( 0. )
104 , _phiB( 0. )
105 , _R( 0. )
106 , _phiR( 0. ) {
107 _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ), _dp.bigM(), _spin );
108 _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
109 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
110 _vd.set_f( 1.5 );
111 // single BW (with electromagnetic mixing) cannot be K-matrix
112 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I && _typeN != K_MATRIX_II );
113}

◆ 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 116 of file EvtDalitzReso.cc.

119 : _dp( dp )
120 , _pairAng( pairAng )
121 , _pairRes( pairRes )
122 , _spin( spin )
123 , _typeN( typeN )
124 , _m0( m0 )
125 , _g0( -1. )
126 , _massFirst( dp.m( first( pairRes ) ) )
127 , _massSecond( dp.m( second( pairRes ) ) )
128 , _m0_mix( -1. )
129 , _g0_mix( 0. )
130 , _delta_mix( 0. )
131 , _amp_mix( 0., 0. )
132 , _g1( g1 )
133 , _g2( g2 )
134 , _coupling2( coupling2 )
135 , _kmatrix_index( -1 )
136 , _fr12prod( 0., 0. )
137 , _fr13prod( 0., 0. )
138 , _fr14prod( 0., 0. )
139 , _fr15prod( 0., 0. )
140 , _s0prod( 0. )
141 , _a( 0. )
142 , _r( 0. )
143 , _Blass( 0. )
144 , _phiB( 0. )
145 , _R( 0. )
146 , _phiR( 0. ) {
147 _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ), _dp.bigM(), _spin );
148 _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
149 _vb.set_f( 0.0 ); // Default values for Blatt-Weisskopf factors.
150 _vd.set_f( 1.5 );
151 assert( _coupling2 != Undefined );
152 assert( _typeN != K_MATRIX && _typeN != K_MATRIX_I &&
153 _typeN != K_MATRIX_II ); // coupled BW cannot be K-matrix
154 assert( _typeN != LASS ); // coupled BW cannot be LASS
155 assert( _typeN != NBW ); // for coupled BW, only relativistic BW
156}
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 159 of file EvtDalitzReso.cc.

162 : _dp( dp )
163 , _pairRes( pairRes )
164 , _typeN( typeN )
165 , _m0( 0. )
166 , _g0( 0. )
167 , _massFirst( dp.m( first( pairRes ) ) )
168 , _massSecond( dp.m( second( pairRes ) ) )
169 , _m0_mix( -1. )
170 , _g0_mix( 0. )
171 , _delta_mix( 0. )
172 , _amp_mix( 0., 0. )
173 , _g1( -1. )
174 , _g2( -1. )
175 , _coupling2( Undefined )
176 , _kmatrix_index( -1 )
177 , _fr12prod( fr12prod )
178 , _fr13prod( fr13prod )
179 , _fr14prod( fr14prod )
180 , _fr15prod( fr15prod )
181 , _s0prod( s0prod )
182 , _a( 0. )
183 , _r( 0. )
184 , _Blass( 0. )
185 , _phiB( 0. )
186 , _R( 0. )
187 , _phiR( 0. ) {
188 assert( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II );
189 _spin = EvtSpinType::SCALAR;
190 if ( nameIndex == "Pole1" ) _kmatrix_index = 1;
191 else if ( nameIndex == "Pole2" ) _kmatrix_index = 2;
192 else if ( nameIndex == "Pole3" ) _kmatrix_index = 3;
193 else if ( nameIndex == "Pole4" ) _kmatrix_index = 4;
194 else if ( nameIndex == "Pole5" ) _kmatrix_index = 5;
195 else if ( nameIndex == "f11prod" ) _kmatrix_index = 6;
196 else assert( 0 );
197}

◆ 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 200 of file EvtDalitzReso.cc.

203 : _dp( dp )
204 , _pairRes( pairRes )
205 , _typeN( LASS )
206 , _m0( m0 )
207 , _g0( g0 )
208 , _massFirst( dp.m( first( pairRes ) ) )
209 , _massSecond( dp.m( second( pairRes ) ) )
210 , _m0_mix( -1. )
211 , _g0_mix( 0. )
212 , _delta_mix( 0. )
213 , _amp_mix( 0., 0. )
214 , _g1( -1. )
215 , _g2( -1. )
216 , _coupling2( Undefined )
217 , _kmatrix_index( -1 )
218 , _fr12prod( 0., 0. )
219 , _fr13prod( 0., 0. )
220 , _fr14prod( 0., 0. )
221 , _fr15prod( 0., 0. )
222 , _s0prod( 0. )
223 , _a( a )
224 , _r( r )
225 , _Blass( B )
226 , _phiB( phiB )
227 , _R( R )
228 , _phiR( phiR ) {
229 _spin = EvtSpinType::SCALAR;
230 _vd = EvtTwoBodyVertex( _massFirst, _massSecond, _m0, _spin );
231 _vd.set_f( 1.5 ); // Default values for Blatt-Weisskopf factors.
232}

◆ EvtDalitzReso() [7/7]

EvtDalitzReso::EvtDalitzReso ( const EvtDalitzReso & other)

Definition at line 234 of file EvtDalitzReso.cc.

235 : _dp( other._dp )
236 , _pairAng( other._pairAng )
237 , _pairRes( other._pairRes )
238 , _spin( other._spin )
239 , _typeN( other._typeN )
240 , _m0( other._m0 )
241 , _g0( other._g0 )
242 , _vb( other._vb )
243 , _vd( other._vd )
244 , _massFirst( other._massFirst )
245 , _massSecond( other._massSecond )
246 , _m0_mix( other._m0_mix )
247 , _g0_mix( other._g0_mix )
248 , _delta_mix( other._delta_mix )
249 , _amp_mix( other._amp_mix )
250 , _g1( other._g1 )
251 , _g2( other._g2 )
252 , _coupling2( other._coupling2 )
253 , _kmatrix_index( other._kmatrix_index )
254 , _fr12prod( other._fr12prod )
255 , _fr13prod( other._fr13prod )
256 , _fr14prod( other._fr14prod )
257 , _fr15prod( other._fr15prod )
258 , _s0prod( other._s0prod )
259 , _a( other._a )
260 , _r( other._r )
261 , _Blass( other._Blass )
262 , _phiB( other._phiB )
263 , _R( other._R )
264 , _phiR( other._phiR ) {}

◆ ~EvtDalitzReso()

EvtDalitzReso::~EvtDalitzReso ( )

Definition at line 266 of file EvtDalitzReso.cc.

266{}

Member Function Documentation

◆ clone()

EvtDalitzReso * EvtDalitzReso::clone ( ) const
inline

Definition at line 102 of file EvtDalitzReso.hh.

102{ return new EvtDalitzReso( *this ); }

◆ evaluate()

EvtComplex EvtDalitzReso::evaluate ( const EvtDalitzPoint & p)

Definition at line 268 of file EvtDalitzReso.cc.

268 {
269 double m = sqrt( x.q( _pairRes ) );
270
271 // do use always hash table (speed up fitting)
272 if ( _typeN == K_MATRIX || _typeN == K_MATRIX_I || _typeN == K_MATRIX_II )
273 return Fvector( m * m, _kmatrix_index );
274
275 if ( _typeN == LASS ) return lass( m * m );
276
277 EvtComplex amp( 1.0, 0.0 );
278
279 if ( _dp.bigM() != x.bigM() )
280 _vb = EvtTwoBodyVertex( _m0, _dp.m( EvtCyclic3::other( _pairRes ) ), x.bigM(), _spin );
281 EvtTwoBodyKine vb( m, x.m( EvtCyclic3::other( _pairRes ) ), x.bigM() );
282 EvtTwoBodyKine vd( _massFirst, _massSecond, m );
283
284 EvtComplex prop( 0, 0 );
285 if ( _typeN == NBW ) { prop = propBreitWigner( _m0, _g0, m ); }
286 else if ( _typeN == GAUSS_CLEO || _typeN == GAUSS_CLEO_ZEMACH )
287 { prop = propGauss( _m0, _g0, m ); }
288 else
289 {
290 if ( _coupling2 == Undefined )
291 {
292 // single BW
293 double g =
294 ( _g0 <= 0. || _vd.pD() <= 0. ) ? -_g0 : _g0 * _vd.widthFactor( vd ); // running
295 // width
296 if ( _typeN == GS_CLEO || _typeN == GS_CLEO_ZEMACH )
297 {
298 // Gounaris-Sakurai (GS)
299 assert( _massFirst == _massSecond );
300 prop = propGounarisSakurai( _m0, fabs( _g0 ), _vd.pD(), m, g, vd.p() );
301 }
302 else
303 {
304 // standard relativistic BW
305 prop = propBreitWignerRel( _m0, g, m );
306 }
307 }
308 else
309 {
310 // coupled width BW
311 EvtComplex G1, G2;
312 switch ( _coupling2 )
313 {
314 case PicPic: {
315 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
316 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
317 G2 = _g2 * _g2 * psFactor( mPic, mPic, m );
318 break;
319 }
320 case PizPiz: {
321 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
322 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
323 G2 = _g2 * _g2 * psFactor( mPiz, mPiz, m );
324 break;
325 }
326 case PiPi: {
327 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
328 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
329 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
330 G2 = _g2 * _g2 * psFactor( mPic, mPic, mPiz, mPiz, m );
331 break;
332 }
333 case KcKc: {
334 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
335 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
336 G2 = _g2 * _g2 * psFactor( mKc, mKc, m );
337 break;
338 }
339 case KzKz: {
340 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
341 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
342 G2 = _g2 * _g2 * psFactor( mKz, mKz, m );
343 break;
344 }
345 case KK: {
346 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
347 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
348 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
349 G2 = _g2 * _g2 * psFactor( mKc, mKc, mKz, mKz, m );
350 break;
351 }
352 case EtaPic: {
353 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
354 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
355 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
356 G2 = _g2 * _g2 * psFactor( mEta, mPic, m );
357 break;
358 }
359 case EtaPiz: {
360 G1 = _g1 * _g1 * psFactor( _massFirst, _massSecond, m );
361 static double mEta = EvtPDL::getMass( EvtPDL::getId( "eta" ) );
362 static double mPiz = EvtPDL::getMass( EvtPDL::getId( "pi0" ) );
363 G2 = _g2 * _g2 * psFactor( mEta, mPiz, m );
364 break;
365 }
366 case PicPicKK: {
367 static double mPic = EvtPDL::getMass( EvtPDL::getId( "pi+" ) );
368 // G1 = _g1*_g1*psFactor(mPic,mPic,m);
369 G1 = _g1 * psFactor( mPic, mPic, m );
370 static double mKc = EvtPDL::getMass( EvtPDL::getId( "K+" ) );
371 static double mKz = EvtPDL::getMass( EvtPDL::getId( "K0" ) );
372 // G2 = _g2*_g2*psFactor(mKc,mKc,mKz,mKz,m);
373 G2 = _g2 * psFactor( mKc, mKc, mKz, mKz, m );
374 break;
375 }
376 default:
377 std::cout << "EvtDalitzReso:evaluate(): PANIC, wrong coupling2 state." << std::endl;
378 assert( 0 );
379 break;
380 }
381 // calculate standard couple BW propagator
382 if ( _coupling2 != WA76 ) prop = _g1 * propBreitWignerRelCoupled( _m0, G1, G2, m );
383 }
384 }
385 amp *= prop;
386
387 // Compute form-factors (Blatt-Weisskopf penetration factor)
388 amp *= _vb.formFactor( vb );
389 amp *= _vd.formFactor( vd );
390
391 // Compute numerator (angular distribution)
392 amp *= numerator( x, vb, vd );
393
394 // Compute electromagnetic mass mixing factor
395 if ( _m0_mix > 0. )
396 {
397 EvtComplex prop_mix;
398 if ( _typeN == NBW ) { prop_mix = propBreitWigner( _m0_mix, _g0_mix, m ); }
399 else
400 {
401 assert( _g1 < 0. ); // running width only
402 double g_mix = _g0_mix * _vd.widthFactor( vd );
403 prop_mix = propBreitWignerRel( _m0_mix, g_mix, m );
404 }
405 amp *= mixFactor( prop, prop_mix );
406 }
407
408 return amp;
409}
Double_t x[10]
static double getMass(EvtId i)
Definition EvtPDL.hh:44
static EvtId getId(const std::string &name)
Definition EvtPDL.cc:272

◆ set_fb()

void EvtDalitzReso::set_fb ( double R)
inline

Definition at line 107 of file EvtDalitzReso.hh.

107{ _vb.set_f( R ); }

◆ set_fd()

void EvtDalitzReso::set_fd ( double R)
inline

Definition at line 106 of file EvtDalitzReso.hh.

106{ _vd.set_f( R ); }

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