EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
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
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
43class EvtBBScalar : public EvtDecayAmp {
44 public:
46 std::string getName() const override;
47 EvtBBScalar* clone() const override;
48 void decay( EvtParticle* p ) override;
49 void init() override;
50 void initProbMax() override;
51
52 private:
53 struct FormFactor {
54 double m_value;
55 double m_sigma1;
56 double m_sigma2;
57 double m_mV;
58 };
59
71
72 // used values of constants
73 static const EvtComplex m_I;
74 static const EvtComplex m_V_ub;
75 static const EvtComplex m_V_us_star;
76 static const EvtComplex m_a1;
77 static const EvtComplex m_V_tb;
78 static const EvtComplex m_V_ts_star;
79 static const EvtComplex m_a4;
80 static const EvtComplex m_a6;
81
82 // used parameters in the calculation of the magnetic form factors
83 static const double m_x[];
84 static const double m_y[];
85 // quark masses as used in the model
86 static const double m_ms;
87 static const double m_mu;
88 static const double m_mb;
89
90 // used to choose the right m_value for the form factor depending on the type of scalar
91 std::string m_scalarType;
92 mutable std::map<std::string, FormFactor> m_f0Map;
93 mutable std::map<std::string, FormFactor> m_f1Map;
94
95 // only consider F1+F2 here
96 std::bitset<nBaryons> m_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)
120 double formFactorFit( double t, const std::vector<double>& params ) const;
121
122 static const EvtComplex m_const_B;
123 static const EvtComplex m_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 B_pi_f0(double t) const
std::map< std::string, FormFactor > m_f1Map
double G_n(double t) const
double baryon_hA(double t) const
static const EvtComplex m_V_tb
EvtComplex calcAmpliude(const EvtParticle *p, const unsigned int polState)
static const double m_mb
void initProbMax() override
static const EvtComplex m_const_C
void decay(EvtParticle *p) override
const EvtComplex amp_C_pseudoscalarPart(const EvtDiracSpinor &b1Pol, const EvtDiracSpinor &b2Pol, double t)
static const double m_y[]
double m_massRatio
double F_S(double t) const
static const EvtComplex m_a4
static const EvtComplex m_V_us_star
const EvtComplex amp_C_scalarPart(const EvtDiracSpinor &b1Pol, const EvtDiracSpinor &b2Pol, double t)
double baryon_fS(double t) const
std::bitset< nBaryons > m_baryonCombination
EvtBBScalar * clone() const override
static const double m_x[]
const EvtComplex amp_C(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
void setKnownBaryonTypes(const EvtId &baryon)
static const EvtComplex m_a6
const EvtComplex amp_B_vectorPart(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
static const EvtComplex m_a1
double D_A(double t) const
static const EvtComplex m_V_ub
static const EvtComplex m_I
double baryonF1F2(double t) const
double G_p(double t) const
static const double m_mu
double F_A(double t) const
static const double m_ms
void init() override
const EvtComplex amp_B(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
double m_baryonMassSum
std::string getName() const override
static const EvtComplex m_V_ts_star
double F_P(double t) const
const EvtComplex amp_B_axialPart(const EvtDiracParticle *baryon1, const EvtDiracSpinor &b1Pol, const EvtDiracParticle *baryon2, const EvtDiracSpinor &b2Pol, int index)
const EvtVector4C amp_A(const EvtVector4R &p4B, const EvtVector4R &p4Scalar)
double formFactorFit(double t, const std::vector< double > &params) const
double B_pi_f1(double t) const
double D_S(double t) const
double baryon_gP(double t) const
std::string m_scalarType
static const EvtComplex m_const_B
double baryon_gA(double t) const
double D_P(double t) const
std::map< std::string, FormFactor > m_f0Map
Definition EvtId.hh:27