evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtBBScalar.cpp
Go to the documentation of this file.
1 
2 /***********************************************************************
3 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4 * *
5 * This file is part of EvtGen. *
6 * *
7 * EvtGen is free software: you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation, either version 3 of the License, or *
10 * (at your option) any later version. *
11 * *
12 * EvtGen is distributed in the hope that it will be useful, *
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15 * GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19 ***********************************************************************/
20 
22 
25 #include "EvtGenBase/EvtPatches.hh"
28 
29 #include <cmath>
30 
31 using namespace std;
32 
33 const float pi = 3.14159;
34 const EvtComplex EvtBBScalar::I = EvtComplex( 0, 1 );
35 const EvtComplex EvtBBScalar::V_ub = EvtComplex( 3.67e-3 * cos( 60 / 180 * pi ),
36  3.67e-3 * cos( 60 / 180 * pi ) );
38 const EvtComplex EvtBBScalar::a1 = EvtComplex( 1.05, 0 );
39 const EvtComplex EvtBBScalar::V_tb = EvtComplex( 0.99915, 0 );
41  EvtComplex( -0.04029 - 0.000813 * cos( 60 / 180 * pi ),
42  -0.000813 * cos( 60 / 180 * pi ) );
43 const EvtComplex EvtBBScalar::a4 = EvtComplex( -387.3e-4, -121e-4 );
44 const EvtComplex EvtBBScalar::a6 = EvtComplex( -555.3e-4, -121e-4 );
45 const double EvtBBScalar::x[] = {420.96, -10485.50, 100639.97, -433916.61,
46  613780.15};
47 const double EvtBBScalar::y[] = {292.62, -735.73};
48 const double EvtBBScalar::m_s = 0.120;
49 const double EvtBBScalar::m_u = 0.029 * 0.120;
50 const double EvtBBScalar::m_b = 4.88;
51 
52 EvtBBScalar::EvtBBScalar() : EvtDecayAmp(), _massRatio( 0 ), _baryonMassSum( 0 )
53 {
54  FormFactor dummy;
55  dummy.value = 0.36;
56  dummy.sigma1 = 0.43;
57  dummy.sigma2 = 0.0;
58  dummy.mV = 5.42;
59  _f1Map.insert( make_pair( string( "K" ), dummy ) );
60  dummy.sigma1 = 0.70;
61  dummy.sigma2 = 0.27;
62  _f0Map.insert( make_pair( string( "K" ), dummy ) );
63  dummy.value = 0.29;
64  dummy.sigma1 = 0.48;
65  dummy.sigma2 = 0.0;
66  dummy.mV = 5.32;
67  _f1Map.insert( make_pair( string( "pi" ), dummy ) );
68  dummy.sigma1 = 0.76;
69  dummy.sigma2 = 0.28;
70  _f0Map.insert( make_pair( string( "pi" ), dummy ) );
71 }
72 
73 std::string EvtBBScalar::getName()
74 {
75  return "B_TO_2BARYON_SCALAR";
76 }
77 
79 {
80  return new EvtBBScalar;
81 }
82 
84 {
85  int baryonId = EvtPDL::getStdHep( baryon );
86  if ( EvtPDL::getStdHep( EvtPDL::getId( "Lambda0" ) ) == baryonId or
87  EvtPDL::getStdHep( EvtPDL::getId( "anti-Lambda0" ) ) == baryonId ) {
89  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "p+" ) ) == baryonId or
90  EvtPDL::getStdHep( EvtPDL::getId( "anti-p-" ) ) == baryonId ) {
92  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "n0" ) ) == baryonId or
93  EvtPDL::getStdHep( EvtPDL::getId( "anti-n0" ) ) == baryonId ) {
95  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "Sigma0" ) ) == baryonId or
96  EvtPDL::getStdHep( EvtPDL::getId( "anti-Sigma0" ) ) == baryonId ) {
98  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "Sigma-" ) ) == baryonId or
99  EvtPDL::getStdHep( EvtPDL::getId( "anti-Sigma+" ) ) == baryonId ) {
101  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "Xi0" ) ) == baryonId or
102  EvtPDL::getStdHep( EvtPDL::getId( "anti-Xi0" ) ) == baryonId ) {
103  _baryonCombination.set( Xi0 );
104  } else if ( EvtPDL::getStdHep( EvtPDL::getId( "Xi-" ) ) == baryonId or
105  EvtPDL::getStdHep( EvtPDL::getId( "anti-Xi+" ) ) == baryonId ) {
107  } else {
108  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
109  << "EvtBBScalar::init: Don't know what to do with this type as the first or second baryon\n";
110  exit( 2 );
111  }
112 }
113 
114 double EvtBBScalar::baryonF1F2( double t ) const
115 {
116  // check for known form factors for combination of baryons
117  if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
118  return -sqrt( 1.5 ) * G_p( t );
119  } else if ( _baryonCombination.test( Sigma0 ) and
120  _baryonCombination.test( Proton ) ) {
121  return -sqrt( 0.5 ) * ( G_p( t ) + 2 * G_n( t ) );
122  } else if ( _baryonCombination.test( Sigma_minus ) and
123  _baryonCombination.test( Neutron ) ) {
124  return -G_p( t ) - 2 * G_n( t );
125  } else if ( _baryonCombination.test( Xi0 ) and
126  _baryonCombination.test( Sigma_minus ) ) {
127  return G_p( t ) - G_n( t );
128  } else if ( _baryonCombination.test( Xi_minus ) and
129  _baryonCombination.test( Sigma0 ) ) {
130  return sqrt( 0.5 ) * ( G_p( t ) - G_n( t ) );
131  } else if ( _baryonCombination.test( Xi_minus ) and
132  _baryonCombination.test( Lambda ) ) {
133  return sqrt( 1.5 ) * ( G_p( t ) + G_n( t ) );
134  } else {
135  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
136  << "EvtBBScalar::baryonF1F2: Don't know what to do with this type as the first or second baryon\n";
137  exit( 2 );
138  }
139 }
140 
141 double EvtBBScalar::formFactorFit( double t, const vector<double>& params ) const
142 {
143  static const double gamma = 2.148;
144  static const double Lambda_0 = 0.3;
145  double result = 0;
146  for ( size_t i = 0; i < params.size(); ++i ) {
147  result += params[i] / pow( t, static_cast<int>( i + 1 ) );
148  }
149  return result * pow( log( t / pow( Lambda_0, 2 ) ), -gamma );
150 }
151 
152 double EvtBBScalar::G_p( double t ) const
153 {
154  const vector<double> v_x( x, x + 5 );
155  return formFactorFit( t, v_x );
156 }
157 
158 double EvtBBScalar::G_n( double t ) const
159 {
160  const vector<double> v_y( y, y + 2 );
161  return -formFactorFit( t, v_y );
162 }
163 
164 double EvtBBScalar::baryon_gA( double t ) const
165 {
166  // check for known form factors for combination of baryons
167  if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
168  return -1 / sqrt( 6. ) * ( D_A( t ) + 3 * F_A( t ) );
169  } else if ( _baryonCombination.test( Sigma0 ) and
170  _baryonCombination.test( Proton ) ) {
171  return 1 / sqrt( 2. ) * ( D_A( t ) - F_A( t ) );
172  } else if ( _baryonCombination.test( Sigma_minus ) and
173  _baryonCombination.test( Neutron ) ) {
174  return D_A( t ) - F_A( t );
175  } else if ( _baryonCombination.test( Xi0 ) and
176  _baryonCombination.test( Sigma_minus ) ) {
177  return D_A( t ) + F_A( t );
178  } else if ( _baryonCombination.test( Xi_minus ) and
179  _baryonCombination.test( Sigma0 ) ) {
180  return 1 / sqrt( 2. ) * ( D_A( t ) + F_A( t ) );
181  } else if ( _baryonCombination.test( Xi_minus ) and
182  _baryonCombination.test( Lambda ) ) {
183  return -1 / sqrt( 6. ) * ( D_A( t ) - 3 * F_A( t ) );
184  } else {
185  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
186  << "EvtBBScalar::baryon_gA: Don't know what to do with this type as the first or second baryon\n";
187  exit( 2 );
188  }
189 }
190 
191 double EvtBBScalar::baryon_gP( double t ) const
192 {
193  // check for known form factors for combination of baryons
194  if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
195  return -1 / sqrt( 6. ) * ( D_P( t ) + 3 * F_P( t ) );
196  } else if ( _baryonCombination.test( Sigma0 ) and
197  _baryonCombination.test( Proton ) ) {
198  return 1 / sqrt( 2. ) * ( D_P( t ) - F_P( t ) );
199  } else if ( _baryonCombination.test( Sigma_minus ) and
200  _baryonCombination.test( Neutron ) ) {
201  return D_P( t ) - F_P( t );
202  } else if ( _baryonCombination.test( Xi0 ) and
203  _baryonCombination.test( Sigma_minus ) ) {
204  return D_P( t ) + F_P( t );
205  } else if ( _baryonCombination.test( Xi_minus ) and
206  _baryonCombination.test( Sigma0 ) ) {
207  return 1 / sqrt( 2. ) * ( D_P( t ) + F_P( t ) );
208  } else if ( _baryonCombination.test( Xi_minus ) and
209  _baryonCombination.test( Lambda ) ) {
210  return -1 / sqrt( 6. ) * ( D_P( t ) - 3 * F_P( t ) );
211  } else {
212  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
213  << "EvtBBScalar::baryon_gP: Don't know what to do with this type as the first or second baryon\n";
214  exit( 2 );
215  }
216 }
217 
218 double EvtBBScalar::baryon_fS( double t ) const
219 {
220  // check for known form factors for combination of baryons
221  if ( _baryonCombination.test( Lambda ) and _baryonCombination.test( Proton ) ) {
222  return -1 / sqrt( 6. ) * ( D_S( t ) + 3 * F_S( t ) );
223  } else if ( _baryonCombination.test( Sigma0 ) and
224  _baryonCombination.test( Proton ) ) {
225  return 1 / sqrt( 2. ) * ( D_S( t ) - F_S( t ) );
226  } else if ( _baryonCombination.test( Sigma_minus ) and
227  _baryonCombination.test( Neutron ) ) {
228  return D_S( t ) - F_S( t );
229  } else if ( _baryonCombination.test( Xi0 ) and
230  _baryonCombination.test( Sigma_minus ) ) {
231  return D_S( t ) + F_S( t );
232  } else if ( _baryonCombination.test( Xi_minus ) and
233  _baryonCombination.test( Sigma0 ) ) {
234  return 1 / sqrt( 2. ) * ( D_S( t ) + F_S( t ) );
235  } else if ( _baryonCombination.test( Xi_minus ) and
236  _baryonCombination.test( Lambda ) ) {
237  return -1 / sqrt( 6. ) * ( D_S( t ) - 3 * F_S( t ) );
238  } else {
239  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
240  << "EvtBBScalar::baryon_fS: Don't know what to do with this type as the first or second baryon\n";
241  exit( 2 );
242  }
243 }
244 
245 double EvtBBScalar::D_A( double t ) const
246 {
247  const double d_tilde[] = {x[0] - 1.5 * y[0], -478};
248  const vector<double> v_d_tilde( d_tilde, d_tilde + 2 );
249  return formFactorFit( t, v_d_tilde );
250 }
251 
252 double EvtBBScalar::F_A( double t ) const
253 {
254  const double f_tilde[] = {2. / 3 * x[0] + 0.5 * y[0], -478};
255  const vector<double> v_f_tilde( f_tilde, f_tilde + 2 );
256  return formFactorFit( t, v_f_tilde );
257 }
258 
259 double EvtBBScalar::D_P( double t ) const
260 {
261  const double d_bar[] = {1.5 * y[0] * _massRatio, /*-952*/ 0};
262  const vector<double> v_d_bar( d_bar, d_bar + 2 );
263  return formFactorFit( t, v_d_bar );
264 }
265 
266 double EvtBBScalar::F_P( double t ) const
267 {
268  const double f_bar[] = {( x[0] - 0.5 * y[0] ) * _massRatio, /*-952*/ 0};
269  const vector<double> v_f_bar( f_bar, f_bar + 2 );
270  return formFactorFit( t, v_f_bar );
271 }
272 
273 double EvtBBScalar::D_S( double t ) const
274 {
275  return -1.5 * _massRatio * G_n( t );
276 }
277 
278 double EvtBBScalar::F_S( double t ) const
279 {
280  return ( G_p( t ) + 0.5 * G_n( t ) ) * _massRatio;
281 }
282 
283 double EvtBBScalar::baryon_hA( double t ) const
284 {
285  return ( 1 / _massRatio * baryon_gP( t ) - baryon_gA( t ) ) *
286  pow( _baryonMassSum, 2 ) / t;
287 }
288 
290 {
291  // no arguments, daughter lambda p_bar pi
292  // charge conservation is checked by base class
293  checkNArg( 0 );
294  checkNDaug( 3 );
299  EvtId baryon1 = getDaug( 0 );
300  EvtId baryon2 = getDaug( 1 );
301  EvtId scalar = getDaug( 2 );
302  int scalarId = EvtPDL::getStdHep( scalar );
303 
304  // Different form factors for the B-pi or B-K transition.
305  if ( scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi+" ) ) or
306  scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi-" ) ) or
307  scalarId == EvtPDL::getStdHep( EvtPDL::getId( "pi0" ) ) ) {
308  _scalarType = "pi";
309  } else if ( scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K+" ) ) or
310  scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K-" ) ) or
311  scalarId == EvtPDL::getStdHep( EvtPDL::getId( "K0" ) ) or
312  scalarId == EvtPDL::getStdHep( EvtPDL::getId( "anti-K0" ) ) ) {
313  _scalarType = "K";
314  } else {
315  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
316  << "EvtBBScalar::init: Can only deal with Kaons or pions as the third particle\n"
317  << "\tFound: " << scalarId << endl;
318  exit( 2 );
319  }
320  // check for known particles
321  setKnownBaryonTypes( baryon1 );
322  setKnownBaryonTypes( baryon2 );
323  double mass1 = EvtPDL::getMass( baryon1 );
324  double mass2 = EvtPDL::getMass( baryon2 );
325  // This whole model deals only with baryons that differ in s-u
326  if ( mass1 > mass2 )
327  _massRatio = ( mass1 - mass2 ) / ( m_s - m_u );
328  else
329  _massRatio = ( mass2 - mass1 ) / ( m_s - m_u );
330  _baryonMassSum = mass1 + mass2;
331 }
332 
333 // initialize phasespace and calculate the amplitude
335 {
337  EvtVector4R B_Momentum = p->getP4Lab();
338  EvtDiracParticle* theLambda = dynamic_cast<EvtDiracParticle*>(
339  p->getDaug( 0 ) );
340  EvtDiracParticle* theAntiP = dynamic_cast<EvtDiracParticle*>(
341  p->getDaug( 1 ) );
342  EvtScalarParticle* theScalar = dynamic_cast<EvtScalarParticle*>(
343  p->getDaug( 2 ) );
344  EvtVector4R scalarMomentum = theScalar->getP4Lab();
345 
346  // The amplitude consists of three matrix elements. These will be calculated one by one here.
347 
348  // loop over all possible spin states
349  for ( int i = 0; i < 2; ++i ) {
350  EvtDiracSpinor lambdaPol = theLambda->spParent( i );
351  for ( int j = 0; j < 2; ++j ) {
352  EvtDiracSpinor antiP_Pol = theAntiP->spParent( j );
353  EvtVector4C theAmplitudePartA = amp_A( B_Momentum, scalarMomentum );
355  for ( int index = 0; index < 4; ++index ) {
356  amplitude += theAmplitudePartA.get( index ) *
357  ( const_B * amp_B( theLambda, lambdaPol, theAntiP,
358  antiP_Pol, index ) +
359  const_C * amp_C( theLambda, lambdaPol, theAntiP,
360  antiP_Pol, index ) );
361  }
362  vertex( i, j, amplitude );
363  }
364  }
365 }
366 
368 {
369  // setProbMax(1);
370  setProbMax( 0.2 ); // found by trial and error
371 }
372 
373 // Form factor f1 for B-pi transition
374 double EvtBBScalar::B_pi_f1( double t ) const
375 {
377  double mv2 = f.mV * f.mV;
378  return f.value / ( ( 1 - t / mv2 ) * ( 1 - f.sigma1 * t / mv2 +
379  f.sigma2 * t * t / mv2 / mv2 ) );
380 }
381 
382 // Form factor f0 for B-pi transition
383 double EvtBBScalar::B_pi_f0( double t ) const
384 {
386  double mv2 = f.mV * f.mV;
387  return f.value / ( 1 - f.sigma1 * t / mv2 + f.sigma2 * t * t / mv2 / mv2 );
388 }
389 
390 // constants of the B and C parts of the amplitude
391 const EvtComplex EvtBBScalar::const_B = V_ub * V_us_star * a1 -
392  V_tb * V_ts_star * a4;
393 const EvtComplex EvtBBScalar::const_C = 2 * a6 * V_tb * V_ts_star;
394 
395 // part A of the amplitude, see hep-ph/0204185
397  const EvtVector4R& p4Scalar )
398 {
399  double mB2 = p4B.mass2();
400  double mScalar2 = p4Scalar.mass2();
401  double t = ( p4B - p4Scalar ).mass2();
402  return ( ( p4B + p4Scalar ) - ( mB2 - mScalar2 ) / t * ( p4B - p4Scalar ) ) *
403  B_pi_f1( t ) +
404  ( mB2 - mScalar2 ) / t * ( p4B - p4Scalar ) * B_pi_f0( t );
405 }
406 
407 // part B of the amplitude, Vector and Axial Vector parts
409  const EvtDiracSpinor& b1Pol,
410  const EvtDiracParticle* baryon2,
411  const EvtDiracSpinor& b2Pol, int index )
412 {
413  return amp_B_vectorPart( baryon1, b1Pol, baryon2, b2Pol, index ) -
414  amp_B_axialPart( baryon1, b1Pol, baryon2, b2Pol, index );
415 }
416 
418  const EvtDiracSpinor& b1Pol,
419  const EvtDiracParticle* baryon2,
420  const EvtDiracSpinor& b2Pol,
421  int index )
422 {
423  double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
424  EvtGammaMatrix gamma;
425  for ( int i = 0; i < 4; ++i ) {
426  gamma += EvtTensor4C::g().get( index, i ) * EvtGammaMatrix::g( i );
427  }
428  // The F2 contribution that is written out in the paper is neglected here.
429  // see hep-ph/0204185
430  EvtDiracSpinor A = EvtComplex( baryonF1F2( t ) ) * b2Pol;
431  EvtDiracSpinor Adjb1Pol = b1Pol.adjoint();
432  EvtDiracSpinor gammaA = gamma * A;
433  return Adjb1Pol * gammaA;
434  // return b1Pol.adjoint()*(gamma*(EvtComplex(baryonF1F2(t))*b2Pol));
435 }
436 
438  const EvtDiracSpinor& b1Pol,
439  const EvtDiracParticle* baryon2,
440  const EvtDiracSpinor& b2Pol,
441  int index )
442 {
443  EvtGammaMatrix gamma;
444  for ( int i = 0; i < 4; ++i ) {
445  gamma += EvtTensor4C::g().get( index, i ) * EvtGammaMatrix::g( i );
446  }
447  double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
448  double mSum = baryon1->mass() + baryon2->mass();
449  EvtVector4C momentum_upper = ( baryon1->getP4Lab() + baryon2->getP4Lab() );
450  EvtVector4C momentum;
451  for ( int mu = 0; mu < 0; ++mu ) {
452  EvtComplex dummy;
453  for ( int i = 0; i < 4; ++i ) {
454  dummy += EvtTensor4C::g().get( index, i ) * momentum_upper.get( i );
455  }
456  momentum.set( mu, dummy );
457  }
458  return b1Pol.adjoint() *
459  ( ( ( baryon_gA( t ) * gamma + EvtGammaMatrix::id() * baryon_hA( t ) /
460  mSum * momentum.get( index ) ) *
461  EvtGammaMatrix::g5() ) *
462  b2Pol );
463 }
464 
465 // part C of the amplitude, Scalar and Pseudoscalar parts
467  const EvtDiracSpinor& b1Pol,
468  const EvtDiracParticle* baryon2,
469  const EvtDiracSpinor& b2Pol, int index )
470 {
471  EvtVector4C baryonSumP4_upper = baryon1->getP4Lab() + baryon2->getP4Lab();
472  EvtVector4C baryonSumP4;
473  for ( int mu = 0; mu < 4; ++mu ) {
474  EvtComplex dummy;
475  for ( int i = 0; i < 4; ++i ) {
476  dummy += EvtTensor4C::g().get( mu, i ) * baryonSumP4_upper.get( i );
477  }
478  baryonSumP4.set( mu, dummy );
479  }
480  double t = ( baryon1->getP4Lab() + baryon2->getP4Lab() ).mass2();
481  return baryonSumP4.get( index ) / ( m_b - m_u ) *
482  ( amp_C_scalarPart( b1Pol, b2Pol, t ) +
483  amp_C_pseudoscalarPart( b1Pol, b2Pol, t ) );
484 }
485 
487  const EvtDiracSpinor& b2Pol,
488  double t )
489 {
490  return baryon_fS( t ) * b1Pol.adjoint() * b2Pol;
491 }
492 
494  const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t )
495 {
496  return baryon_gP( t ) * b1Pol.adjoint() * ( EvtGammaMatrix::g5() * b2Pol );
497 }
double baryonF1F2(double t) const
static const double m_s
Definition: EvtBBScalar.hh:86
double F_P(double t) const
double _massRatio
Definition: EvtBBScalar.hh:118
double B_pi_f0(double t) const
double F_A(double t) const
EvtDiracSpinor adjoint() const
static const double y[]
Definition: EvtBBScalar.hh:84
std::string _scalarType
Definition: EvtBBScalar.hh:91
static const EvtTensor4C & g()
Definition: EvtTensor4C.cpp:44
double D_A(double t) const
const double a6
double mV
Definition: EvtBBScalar.hh:47
EvtVector4R getP4Lab() const
void set(int, const EvtComplex &)
Definition: EvtVector4C.hh:98
double G_n(double t) const
const EvtVector4C amp_A(const EvtVector4R &p4B, const EvtVector4R &p4Scalar)
double D_S(double t) const
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
static const EvtComplex const_C
Definition: EvtBBScalar.hh:123
EvtDiracSpinor spParent(int i) const override
const EvtAmp & amplitude() const
Definition: EvtDecayAmp.hh:68
double value
Definition: EvtBBScalar.hh:44
double formFactorFit(double t, const std::vector< double > &params) const
const EvtComplex amp_B(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
static const double m_b
Definition: EvtBBScalar.hh:88
static const double m_u
Definition: EvtBBScalar.hh:87
const double a1
std::bitset< nBaryons > _baryonCombination
Definition: EvtBBScalar.hh:96
static const double x[]
Definition: EvtBBScalar.hh:83
EvtId * getDaugs()
Definition: EvtDecayBase.hh:66
const EvtComplex amp_C_pseudoscalarPart(const EvtDiracSpinor &b1Pol, const EvtDiracSpinor &b2Pol, double t)
double baryon_fS(double t) const
void setProbMax(double prbmx)
double sigma2
Definition: EvtBBScalar.hh:46
std::map< std::string, FormFactor > _f0Map
Definition: EvtBBScalar.hh:92
static const EvtComplex V_us_star
Definition: EvtBBScalar.hh:75
Definition: EvtId.hh:27
static const EvtComplex V_tb
Definition: EvtBBScalar.hh:77
const EvtComplex amp_B_vectorPart(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
static const EvtGammaMatrix & g(int)
const float pi
Definition: EvtBBScalar.cpp:33
double mass2() const
Definition: EvtVector4R.hh:100
void vertex(const EvtComplex &amp)
Definition: EvtDecayAmp.hh:37
double _baryonMassSum
Definition: EvtBBScalar.hh:119
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double B_pi_f1(double t) const
const double a4
void decay(EvtParticle *p) override
double baryon_gP(double t) const
void checkNDaug(int d1, int d2=-1)
void checkSpinParent(EvtSpinType::spintype sp)
double baryon_hA(double t) const
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setKnownBaryonTypes(const EvtId &baryon)
Definition: EvtBBScalar.cpp:83
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
double mass() const
void init() override
static const EvtComplex a1
Definition: EvtBBScalar.hh:76
std::string getName() override
Definition: EvtBBScalar.cpp:73
int getNDaug() const
Definition: EvtDecayBase.hh:65
double G_p(double t) const
void initProbMax() override
EvtBBScalar * clone() override
Definition: EvtBBScalar.cpp:78
const EvtComplex & get(int) const
Definition: EvtVector4C.hh:125
EvtParticle * getDaug(int i)
Definition: EvtParticle.cpp:91
static const EvtComplex V_ts_star
Definition: EvtBBScalar.hh:78
static const EvtComplex I
Definition: EvtBBScalar.hh:73
static const EvtGammaMatrix & id()
static const EvtComplex V_ub
Definition: EvtBBScalar.hh:74
double D_P(double t) const
const EvtComplex amp_B_axialPart(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
const EvtComplex amp_C(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
double sigma1
Definition: EvtBBScalar.hh:45
static const EvtComplex const_B
Definition: EvtBBScalar.hh:122
static double getMass(EvtId i)
Definition: EvtPDL.cpp:319
static const EvtComplex a4
Definition: EvtBBScalar.hh:79
const EvtComplex & get(int i, int j) const
Definition: EvtTensor4C.hh:112
double F_S(double t) const
static const EvtComplex a6
Definition: EvtBBScalar.hh:80
double baryon_gA(double t) const
const EvtComplex amp_C_scalarPart(const EvtDiracSpinor &b1Pol, const EvtDiracSpinor &b2Pol, double t)
static const EvtGammaMatrix & g5()
static int getStdHep(EvtId id)
Definition: EvtPDL.cpp:362
std::map< std::string, FormFactor > _f1Map
Definition: EvtBBScalar.hh:93
EvtId getDaug(int i) const
Definition: EvtDecayBase.hh:67