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
EvtRareLbToLllFFGutsche.cpp
Go to the documentation of this file.
1
2/***********************************************************************
3* Copyright 1998-2022 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
24#include "EvtGenBase/EvtPDL.hh"
26
27//-----------------------------------------------------------------------------
28// Implementation file for class : EvtRareLbToLllFFGutsche
29//
30// 2014-10-21 : Michal Kreps
31//-----------------------------------------------------------------------------
32
33//=============================================================================
34// Standard constructor, initializes variables
35//=============================================================================
36
38{
39 m_Vconsts[0][0] = 0.107;
40 m_Vconsts[0][1] = 2.27;
41 m_Vconsts[0][2] = 1.367;
42 m_Vconsts[1][0] = 0.043;
43 m_Vconsts[1][1] = 2.411;
44 m_Vconsts[1][2] = 1.531;
45 m_Vconsts[2][0] = -0.003;
46 m_Vconsts[2][1] = 2.815;
47 m_Vconsts[2][2] = 2.041;
48
49 m_Aconsts[0][0] = 0.104;
50 m_Aconsts[0][1] = 2.232;
51 m_Aconsts[0][2] = 1.328;
52 m_Aconsts[1][0] = -0.003;
53 m_Aconsts[1][1] = 2.955;
54 m_Aconsts[1][2] = 3.620;
55 m_Aconsts[2][0] = -0.052;
56 m_Aconsts[2][1] = 2.437;
57 m_Aconsts[2][2] = 1.559;
58
59 m_TVconsts[0][0] = -0.043;
60 m_TVconsts[0][1] = 2.411;
61 m_TVconsts[0][2] = 1.531;
62 m_TVconsts[1][0] = -0.105;
63 m_TVconsts[1][1] = 2.27118;
64 m_TVconsts[1][2] = 1.36776;
65 m_TVconsts[2][0] = 0; // Not used anywhere
66 m_TVconsts[2][1] = 0;
67 m_TVconsts[2][2] = 0;
68
69 m_TAconsts[0][0] = 0.003;
70 m_TAconsts[0][1] = 2.955;
71 m_TAconsts[0][2] = 3.620;
72 m_TAconsts[1][0] = -0.105;
73 m_TAconsts[1][1] = 2.233;
74 m_TAconsts[1][2] = 1.328;
75 m_TAconsts[2][0] = 0; // Not used anywhere
76 m_TAconsts[2][1] = 0;
77 m_TAconsts[2][2] = 0;
78
79 EvtGenReport( EVTGEN_INFO, "EvtGen" )
80 << " EvtRareLbToLll is using form factors from arXiv:1301.3737 "
81 << std::endl;
82}
83
84//=============================================================================
85
87 const EvtParticle& lambda,
89{
90 // Find the FF information for this particle, start by setting all to zero
91 FF.areZero();
92
93 /*
94 if ( ! ( m_Parents.contains(parent->getId()) &&
95 m_Daughters.contains(lambda->getId()) ) )
96 {
97 EvtGenReport(EVTGEN_ERROR,"EvtGen") << " EvtRareLbToLllFFGutsche: Unknown mother and/or daughter. " << std::endl;
98 return;
99 }
100*/
101
102 const double m1 = parent.getP4().mass();
103 const double m2 = lambda.getP4().mass();
104 EvtVector4R p4parent;
105 p4parent.set( parent.mass(), 0, 0, 0 );
106 const double q2 = ( p4parent - lambda.getP4() ).mass2();
107 const double m21 = m2 / m1;
108 const double shat = q2 / m1 / m1;
109
110 double fV[3];
111 double fA[3];
112 for ( int i = 0; i <= 2; ++i ) {
113 fV[i] = formFactorParametrization( shat, m_Vconsts[i][0],
114 m_Vconsts[i][1], m_Vconsts[i][2] );
115 fA[i] = formFactorParametrization( shat, m_Aconsts[i][0],
116 m_Aconsts[i][1], m_Aconsts[i][2] );
117 }
118 double fTV[2];
119 double fTA[2];
120 for ( int i = 0; i <= 1; ++i ) {
121 fTV[i] = formFactorParametrization( shat, m_TVconsts[i][0],
122 m_TVconsts[i][1], m_TVconsts[i][2] );
123 fTA[i] = formFactorParametrization( shat, m_TAconsts[i][0],
124 m_TAconsts[i][1], m_TAconsts[i][2] );
125 }
126
127 // Both v^2==v'^2==1 by definition
128 FF.m_F[0] = fV[0] + fV[1] * ( 1 + m21 );
129 FF.m_F[1] = fV[2] - fV[1];
130 FF.m_F[2] = -m21 * ( fV[1] + fV[2] );
131
132 FF.m_G[0] = fA[0] - fA[1] * ( 1 - m21 );
133 FF.m_G[1] = fA[2] - fA[1];
134 FF.m_G[2] = -m21 * ( +fA[1] + fA[2] );
135
136 FF.m_FT[0] = fTV[1] * ( m1 + m2 ) + fTV[0] * ( q2 / m1 );
137 FF.m_FT[1] = +fTV[0] * ( m2 - m1 ) - fTV[1] * m1;
138 FF.m_FT[2] = m2 * ( fTV[0] - fTV[1] ) - fTV[0] * m21 * m2;
139
140 FF.m_GT[0] = -fTA[1] * ( m1 - m2 ) + fTA[0] * ( q2 / m1 );
141 FF.m_GT[1] = -fTA[1] * m1 + fTA[0] * ( m1 + m2 );
142 FF.m_GT[2] = -fTA[0] * m2 * m21 - m2 * ( fTA[0] + fTA[1] );
143
144 return;
145}
146
148 const double f0,
149 const double a,
150 const double b ) const
151{
152 return f0 / ( 1 - a * s + b * s * s );
153}
double lambda(double q, double m1, double m2)
Definition EvtFlatQ2.cpp:30
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_INFO
Definition EvtReport.hh:52
const EvtVector4R & getP4() const
double mass() const
double formFactorParametrization(const double s, const double f0, const double a, const double b) const
void getFF(const EvtParticle &parent, const EvtParticle &lambda, EvtRareLbToLllFFBase::FormFactors &FF) const override
double mass() const
void set(int i, double d)