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
EvtBCTFF.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
23#include "EvtGenBase/EvtId.hh"
24#include "EvtGenBase/EvtPDL.hh"
26
27#include <iostream>
28#include <math.h>
29#include <stdlib.h>
30#include <string>
31
32using namespace std;
33
34EvtBCTFF::EvtBCTFF( int idT, int fit )
35{
36 m_idTensor = idT;
37 m_whichfit = fit;
39 return;
40}
41
42void EvtBCTFF::getscalarff( EvtId, EvtId, double, double, double*, double* )
43{
44 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
45 << "Not implemented :getscalarff in EvtBCTFF.\n";
46 ::abort();
47}
48
49void EvtBCTFF::getvectorff( EvtId, EvtId, double, double, double*, double*,
50 double*, double* )
51{
52 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
53 << "Not implemented :getvectorff in EvtBCTFF.\n";
54 ::abort();
55}
56
57void EvtBCTFF::gettensorff( EvtId /*p*/, EvtId /*d*/, double t, double /*mass*/,
58 double* hf, double* kf, double* bpf, double* bmf )
59{
60 double q2 = t;
61
62 if ( m_whichfit == 0 ) {
63 *hf = 0;
64 *kf = 0;
65 *bpf = 0;
66 *bmf = 0;
67 return;
68 }
69
70 if ( m_idTensor == EvtPDL::getId( "chi_c2" ).getId() ) { // Bc -> chi_c1
71 if ( m_whichfit == 3 ) { // FF from Wang et al 10.1103/PhysRevD.79.114018
72 double ratio = q2 / ( m_MBc * m_MBc );
73
74 double hf_0 = 0.022;
75 double hf_c1 = 2.58;
76 double hf_c2 = 0.61;
77
78 double kf_0 = 1.27;
79 double kf_c1 = 1.61;
80 double kf_c2 = 0.24;
81
82 double bpf_0 = -0.011;
83 double bpf_c1 = 2.27;
84 double bpf_c2 = 0.46;
85
86 double bmf_0 = 0.020;
87 double bmf_c1 = 2.48;
88 double bmf_c2 = 0.56;
89
90 *hf = hf_0 * exp( hf_c1 * ratio + hf_c2 * ratio * ratio );
91 *kf = kf_0 * exp( kf_c1 * ratio + kf_c2 * ratio * ratio );
92 *bpf = bpf_0 * exp( bpf_c1 * ratio + bpf_c2 * ratio * ratio );
93 *bmf = bmf_0 * exp( bmf_c1 * ratio + bmf_c2 * ratio * ratio );
94 return;
95 } else {
96 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
97 << "Must choose 0 (a1f = 1) or 3 (Wang).\n";
98 ::abort();
99 }
100 } else {
101 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
102 << "chi_c2 is the only (pseudo)vector decay implemented in EvtBCTFF.\n";
103 ::abort();
104 }
105}
106
107void EvtBCTFF::getbaryonff( EvtId, EvtId, double, double, double*, double*,
108 double*, double* )
109{
110 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
111 << "Not implemented :getbaryonff in EvtBCTFF.\n";
112 ::abort();
113}
114
115void EvtBCTFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
116 double*, double*, double*, double* )
117{
118 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
119 << "Not implemented :getdiracff in EvtBCTFF.\n";
120 ::abort();
121}
122
123void EvtBCTFF::getraritaff( EvtId, EvtId, double, double, double*, double*,
124 double*, double*, double*, double*, double*, double* )
125{
126 EvtGenReport( EVTGEN_ERROR, "EvtGen" )
127 << "Not implemented :getraritaff in EvtBCTFF.\n";
128 ::abort();
129}
EvtComplex exp(const EvtComplex &c)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
Definition EvtBCTFF.cpp:115
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition EvtBCTFF.cpp:107
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition EvtBCTFF.cpp:57
int m_whichfit
Definition EvtBCTFF.hh:52
EvtBCTFF(int idV, int fit)
Definition EvtBCTFF.cpp:34
double m_MBc
Definition EvtBCTFF.hh:53
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
Definition EvtBCTFF.cpp:42
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition EvtBCTFF.cpp:123
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition EvtBCTFF.cpp:49
int m_idTensor
Definition EvtBCTFF.hh:52
Definition EvtId.hh:27
static double getMeanMass(EvtId i)
Definition EvtPDL.cpp:306
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283