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.
EvtEtaLLPiPi.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 EVT_ETALLPIPI_HH
22 #define EVT_ETALLPIPI_HH
23 
24 #include "EvtGenBase/EvtConst.hh"
26 
27 #include <string>
28 
29 class EvtParticle;
30 
31 // eta' -> mu+ mu- pi+ pi- or e+ e- pi+ pi-
32 // From Zhang Zhen-Yu et al, Chinese Phys. C 36, p926, 2012
33 
34 class EvtEtaLLPiPi : public EvtDecayProb {
35  public:
36  EvtEtaLLPiPi() = default;
37 
38  void init() override;
39  void initProbMax() override;
40 
41  std::string getName() override;
42  EvtDecayBase* clone() override;
43 
44  void decay( EvtParticle* p ) override;
45 
46  private:
47  void updateMassPars( double mLep, double mPi );
48 
49  double rhoWidth( double s, double m ) const;
50 
51  double F0( double sLL, double sPiPi ) const;
52 
53  double lambda( double a, double b, double c ) const;
54 
55  double ampSquared( EvtParticle* p ) const;
56 
57  double m_alpha{ 1.0 / 137.0 };
58  double m_eSq{ 4.0 * EvtConst::pi * m_alpha };
59  double m_fPi{ 0.0924 };
60  double m_f8{ 1.3 * m_fPi };
61  double m_f0{ 1.04 * m_fPi };
62  double m_thetaMix{ 20.0 * EvtConst::pi / 180.0 };
63  double m_mixSq{ 0.0 };
64  double m_c1{ 1.0 };
65  double m_c2{ 0.0 };
66  double m_c3{ m_c1 - m_c2 }; // Eq 9
67  double m_par1{ 1.0 - ( 3.0 * ( m_c1 - m_c2 + m_c3 ) / 4.0 ) };
68  double m_parLL{ 3.0 * ( m_c1 - m_c2 - m_c3 ) / 4.0 };
69  double m_parPiPi{ 3.0 * m_c3 / 2.0 };
70  double m_rhoMass{ 0.775 }; // updated in init()
72  double m_rhoGamma{ 0.149 }; // updated in init()
73  double m_lepMass{ 0.106 }; // modified in updateMassPars()
75  double m_piMass{ 0.140 }; // modified in updateMassPars()
77  double m_4LepMassSq{ 4.0 * m_lepMassSq };
78  double m_4PiMassSq{ 4.0 * m_piMassSq };
79 };
80 
81 #endif
double m_piMass
Definition: EvtEtaLLPiPi.hh:75
double m_4PiMassSq
Definition: EvtEtaLLPiPi.hh:78
double rhoWidth(double s, double m) const
void decay(EvtParticle *p) override
void updateMassPars(double mLep, double mPi)
std::string getName() override
double m_rhoGamma
Definition: EvtEtaLLPiPi.hh:72
void init() override
void initProbMax() override
double m_4LepMassSq
Definition: EvtEtaLLPiPi.hh:77
double m_rhoMassSq
Definition: EvtEtaLLPiPi.hh:71
double m_mixSq
Definition: EvtEtaLLPiPi.hh:63
static const double pi
Definition: EvtConst.hh:26
double F0(double sLL, double sPiPi) const
double m_lepMassSq
Definition: EvtEtaLLPiPi.hh:74
double ampSquared(EvtParticle *p) const
double m_parLL
Definition: EvtEtaLLPiPi.hh:68
double m_lepMass
Definition: EvtEtaLLPiPi.hh:73
double m_thetaMix
Definition: EvtEtaLLPiPi.hh:62
double m_rhoMass
Definition: EvtEtaLLPiPi.hh:70
double m_parPiPi
Definition: EvtEtaLLPiPi.hh:69
double lambda(double a, double b, double c) const
EvtEtaLLPiPi()=default
double m_alpha
Definition: EvtEtaLLPiPi.hh:57
double m_piMassSq
Definition: EvtEtaLLPiPi.hh:76
EvtDecayBase * clone() override