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.hh
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 
21 #ifndef EVTBBSCALAR_HH
22 #define EVTBBSCALAR_HH
23 
24 #include "EvtGenBase/EvtComplex.hh"
25 #include "EvtGenBase/EvtConst.hh"
28 #include "EvtGenBase/EvtId.hh"
29 #include "EvtGenBase/EvtPDL.hh"
33 
34 #include <bitset>
35 #include <map>
36 #include <string>
37 #include <vector>
38 
39 // Implementation of the decay B- -> lambda p_bar pi according to
40 // hep-ph/0204185, hep-ph/0211240
41 // This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
42 
43 struct FormFactor {
44  double value;
45  double sigma1;
46  double sigma2;
47  double mV;
48 };
49 
50 enum Baryons
51 {
57  Xi0,
60 };
61 
62 class EvtBBScalar : public EvtDecayAmp {
63  public:
64  EvtBBScalar();
65  std::string getName() override;
66  EvtBBScalar* clone() override;
67  void decay( EvtParticle* p ) override;
68  void init() override;
69  void initProbMax() override;
70 
71  private:
72  // used values of constants
73  static const EvtComplex I;
74  static const EvtComplex V_ub;
75  static const EvtComplex V_us_star;
76  static const EvtComplex a1;
77  static const EvtComplex V_tb;
78  static const EvtComplex V_ts_star;
79  static const EvtComplex a4;
80  static const EvtComplex a6;
81 
82  // used parameters in the calculation of the magnetic form factors
83  static const double x[];
84  static const double y[];
85  // quark masses as used in the model
86  static const double m_s;
87  static const double m_u;
88  static const double m_b;
89 
90  // used to choose the right value for the form factor depending on the type of scalar
91  std::string _scalarType;
92  mutable std::map<std::string, FormFactor> _f0Map;
93  mutable std::map<std::string, FormFactor> _f1Map;
94 
95  // only consider F1+F2 here
96  std::bitset<nBaryons> _baryonCombination;
97  void setKnownBaryonTypes( const EvtId& baryon );
98 
99  double B_pi_f1( double t ) const;
100  double B_pi_f0( double t ) const;
101  double baryonF1F2( double t ) const;
102  double G_p( double t ) const;
103  double G_n( double t ) const;
104 
105  double baryon_gA( double t ) const;
106  double baryon_hA( double t ) const;
107  double baryon_gP( double t ) const;
108  double baryon_fS( double t ) const;
109 
110  double D_A( double t ) const;
111  double F_A( double t ) const;
112  double D_P( double t ) const;
113  double F_P( double t ) const;
114  double D_S( double t ) const;
115  double F_S( double t ) const;
116 
117  // (mB1 - mB2)/(mq1 - mq1)
118  double _massRatio;
120  double formFactorFit( double t, const std::vector<double>& params ) const;
121 
122  static const EvtComplex const_B;
123  static const EvtComplex const_C;
124  const EvtVector4C amp_A( const EvtVector4R& p4B, const EvtVector4R& p4Scalar );
125  const EvtComplex amp_B( const EvtDiracParticle* baryon1,
126  const EvtDiracSpinor& b1Pol,
127  const EvtDiracParticle* baryon2,
128  const EvtDiracSpinor& b2Pol, int index );
129  const EvtComplex amp_B_vectorPart( const EvtDiracParticle* baryon1,
130  const EvtDiracSpinor& b1Pol,
131  const EvtDiracParticle* baryon2,
132  const EvtDiracSpinor& b2Pol, int index );
133  const EvtComplex amp_B_axialPart( const EvtDiracParticle* baryon1,
134  const EvtDiracSpinor& b1Pol,
135  const EvtDiracParticle* baryon2,
136  const EvtDiracSpinor& b2Pol, int index );
137  const EvtComplex amp_C( const EvtDiracParticle* baryon1,
138  const EvtDiracSpinor& b1Pol,
139  const EvtDiracParticle* baryon2,
140  const EvtDiracSpinor& b2Pol, int index );
141  const EvtComplex amp_C_scalarPart( const EvtDiracSpinor& b1Pol,
142  const EvtDiracSpinor& b2Pol, double t );
144  const EvtDiracSpinor& b2Pol,
145  double t );
146 
147  // initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
148  EvtComplex calcAmpliude( const EvtParticle* p, const unsigned int polState );
149 };
150 
151 #endif
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
static const double y[]
Definition: EvtBBScalar.hh:84
std::string _scalarType
Definition: EvtBBScalar.hh:91
double D_A(double t) const
double mV
Definition: EvtBBScalar.hh:47
double G_n(double t) const
const EvtVector4C amp_A(const EvtVector4R &p4B, const EvtVector4R &p4Scalar)
double D_S(double t) const
static const EvtComplex const_C
Definition: EvtBBScalar.hh:123
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
std::bitset< nBaryons > _baryonCombination
Definition: EvtBBScalar.hh:96
static const double x[]
Definition: EvtBBScalar.hh:83
const EvtComplex amp_C_pseudoscalarPart(const EvtDiracSpinor &b1Pol, const EvtDiracSpinor &b2Pol, double t)
double baryon_fS(double t) const
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)
double _baryonMassSum
Definition: EvtBBScalar.hh:119
double B_pi_f1(double t) const
Baryons
Definition: EvtBBScalar.hh:50
void decay(EvtParticle *p) override
double baryon_gP(double t) const
double baryon_hA(double t) const
void setKnownBaryonTypes(const EvtId &baryon)
Definition: EvtBBScalar.cpp:83
void init() override
static const EvtComplex a1
Definition: EvtBBScalar.hh:76
std::string getName() override
Definition: EvtBBScalar.cpp:73
double G_p(double t) const
void initProbMax() override
EvtBBScalar * clone() override
Definition: EvtBBScalar.cpp:78
static const EvtComplex V_ts_star
Definition: EvtBBScalar.hh:78
static const EvtComplex I
Definition: EvtBBScalar.hh:73
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 const EvtComplex a4
Definition: EvtBBScalar.hh:79
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)
std::map< std::string, FormFactor > _f1Map
Definition: EvtBBScalar.hh:93
EvtComplex calcAmpliude(const EvtParticle *p, const unsigned int polState)