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
EvtBLLNuLAmp.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 EVTBLLNUL_AMP_HH
22#define EVTBLLNUL_AMP_HH
23
24#include "EvtGenBase/EvtAmp.hh"
26#include "EvtGenBase/EvtId.hh"
29
30#include <vector>
31
32class EvtParticle;
33
34// Description: Header file for the amplitude calculation for the "BLLNUL"
35// model which generates rare four-leptonic B-decays
36// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
37
39 public:
40 EvtBLLNuLAmp( double Vub = 4.09e-3 );
41 EvtBLLNuLAmp( double qSqMin, double kSqMin, bool symmetry,
42 double Vub = 4.09e-3 );
43
44 void CalcAmp( EvtParticle* parent, EvtAmp& amp ) const;
45 void setParameters( double qSqMin, double kSqMin, bool symmetry );
46
47 // Resonance poles
48 class ResPole final {
49 public:
50 ResPole( double mass, double width, double coupling );
51
52 EvtComplex propagator( double qSq, int numForm = 0 ) const;
53
54 double getMass() const { return m_m0; }
55 double getMassSq() const { return m_m0Sq; }
56 double getWidth() const { return m_w0; }
57 double getCoupling() const { return m_c; }
58
59 private:
60 double m_m0; // pole mass
61 double m_m0Sq;
62 double m_w0; // width
63 double m_c; // coupling constant
66 };
67
68 protected:
70 const double qSq, const double kSq,
71 const double MB, const int sign ) const;
72
73 std::vector<EvtComplex> getVMDTerms( double qSq, double kSq, double MB ) const;
74
75 EvtComplex getBStarTerm( double qSq, double kSq, double MB ) const;
76
77 double FF_B2Bstar( double qSq ) const;
78
79 double FF_V( double kSq ) const;
80
81 double FF_A1( double kSq ) const;
82
83 double FF_A2( double kSq ) const;
84
85 private:
86 // Kinematic cut-offs
87 double m_qSqMin;
88 double m_kSqMin;
89
90 // If we have identical charged lepton flavours
92
93 // B+, B- Ids
95
96 // Form factor constants
98 double m_fBu;
99
100 // Resonance poles
102
103 std::vector<EvtBLLNuLAmp::ResPole> m_resPoles;
105
106 // Complex number constants
108};
109
110inline void EvtBLLNuLAmp::setParameters( double qSqMin, double kSqMin,
111 bool symmetry )
112{
113 m_qSqMin = qSqMin;
114 m_kSqMin = kSqMin;
115 m_symmetry = symmetry;
116}
117
118#endif
ResPole(double mass, double width, double coupling)
double getMassSq() const
double getWidth() const
double getMass() const
EvtComplex propagator(double qSq, int numForm=0) const
double getCoupling() const
double FF_V(double kSq) const
std::vector< EvtComplex > getVMDTerms(double qSq, double kSq, double MB) const
EvtBLLNuLAmp::ResPole m_Bstar
EvtComplex m_zero
double m_coupling
EvtBLLNuLAmp::ResPole m_Upsilon
EvtTensor4C getHadronTensor(const EvtVector4R &q, const EvtVector4R &k, const double qSq, const double kSq, const double MB, const int sign) const
double FF_A1(double kSq) const
double FF_A2(double kSq) const
std::vector< EvtBLLNuLAmp::ResPole > m_resPoles
void CalcAmp(EvtParticle *parent, EvtAmp &amp) const
EvtBLLNuLAmp(double Vub=4.09e-3)
double FF_B2Bstar(double qSq) const
EvtComplex m_unitI
void setParameters(double qSqMin, double kSqMin, bool symmetry)
EvtComplex getBStarTerm(double qSq, double kSq, double MB) const
Definition EvtId.hh:27