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.
EvtVubHybrid.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 EVTVUBHYBRID_HH
22 #define EVTVUBHYBRID_HH
23 
25 
27 
28 #include <memory>
29 #include <vector>
30 
31 class EvtParticle;
32 class RandGeneral;
33 
34 // Description:
35 // Class to generate inclusive B to X_u l nu decays.
36 // This class is based on EvtVub by Sven Menke with an update to
37 // generate the inclusive decays in such a way that the right
38 // mix of inclusive and exclusive decays is obtained:
39 // "Hybrid Model" by Dominique Fortin.
40 // NOTE:
41 // - A set of weights (for bins in the kinematic variables mX, q2, El)
42 // is read from DECAY.DEC. This set of weights must be consistent
43 // with the other parameters specified (excl. BF, non-res BF, mb, a).
44 // - If no binning/weights are specified in DECAY.DEC the hybrid
45 // reweighting is not activated
46 
48  public:
49  std::string getName() override;
50 
51  EvtDecayBase* clone() override;
52 
53  void initProbMax() override;
54 
55  void init() override;
56 
57  void decay( EvtParticle* p ) override;
58 
59  void readWeights( int startArg = 0 );
60 
61  double getWeight( double mX, double q2, double El );
62 
63  private:
64  double findPFermi();
65 
66  enum
67  {
70  };
71 
72  bool _noHybrid =
73  false; // _noHybrid will be set TRUE if the DECAY.DEC file has no binning or weights
74  bool _storeQplus =
75  true; // _storeQplus should alwasy be TRUE: writes out Fermi motion parameter
76 
77  double _mb = 4.62; // the b-quark pole mass in GeV (try 4.65 to 4.9)
78  double _a = 2.27; // Parameter for the Fermi Motion (1.29 is good)
79  double _alphas = 0.22; // Strong Coupling at m_b (around 0.24)
80  double _dGMax = 3.; // max dGamma*p2 value;
81  int _nbins = 0;
82  double _masscut = 0.28;
83  std::vector<double> _bins_mX;
84  std::vector<double> _bins_q2;
85  std::vector<double> _bins_El;
86  std::vector<double> _weights;
87  std::unique_ptr<EvtVubdGamma> _dGamma; // calculates the decay rate
88  std::vector<double> _pf;
89 };
90 
91 #endif
double getWeight(double mX, double q2, double El)
double _masscut
Definition: EvtVubHybrid.hh:82
void initProbMax() override
std::unique_ptr< EvtVubdGamma > _dGamma
Definition: EvtVubHybrid.hh:87
void decay(EvtParticle *p) override
double _alphas
Definition: EvtVubHybrid.hh:79
std::string getName() override
std::vector< double > _pf
Definition: EvtVubHybrid.hh:88
double findPFermi()
std::vector< double > _bins_mX
Definition: EvtVubHybrid.hh:83
void readWeights(int startArg=0)
std::vector< double > _weights
Definition: EvtVubHybrid.hh:86
std::vector< double > _bins_q2
Definition: EvtVubHybrid.hh:84
void init() override
std::vector< double > _bins_El
Definition: EvtVubHybrid.hh:85
EvtDecayBase * clone() override