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.
EvtD0mixDalitz.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 __EVTD0MIXDALITZ_HH__
22 #define __EVTD0MIXDALITZ_HH__
23 
24 #include "EvtGenBase/EvtComplex.hh"
25 #include "EvtGenBase/EvtCyclic3.hh"
29 #include "EvtGenBase/EvtId.hh"
30 #include "EvtGenBase/EvtPDL.hh"
32 
33 // Description:
34 // The D0mixDalitz model, with many resonances and mixing implemented.
35 
36 class EvtD0mixDalitz : public EvtDecayAmp {
37  private:
38  int _d1;
39  int _d2;
40  int _d3;
41 
42  // Mixing parameters.
43  double _x;
44  double _y;
45 
46  // q/p CP violation in the mixing.
48 
49  // Checker of the decay mode.
50  bool _isKsPiPi;
52 
53  // Useful constants.
57 
60 
62  static const EvtDalitzReso::NumType& _GS;
64 
65  static const EvtCyclic3::Pair& _AB;
66  static const EvtCyclic3::Pair& _AC;
67  static const EvtCyclic3::Pair& _BC;
68 
69  // Values to be read or computed based on values in the evt.pdl file.
70  // IDs of the relevant particles.
81 
82  // Masses of the relevant particles.
83  double _mD0;
84  double _mKs;
85  double _mPi;
86  double _mK;
87 
88  // Life time and decay rate.
89  double _ctau;
90  double _gamma;
91 
92  // Some useful integrals over the Dalitz plot.
95 
96  void readPDGValues();
97  EvtComplex dalitzKsPiPi( const EvtDalitzPoint& point );
98  EvtComplex dalitzKsKK( const EvtDalitzPoint& point );
99 
100  // Time evolution functions for hamiltonian eigenstates.
101  // Negative exponential part removed.
102  EvtComplex h1( const double& ct ) const;
103  EvtComplex h2( const double& ct ) const;
104 
105  void reportInvalidAndExit() const
106  {
107  EvtGenReport( EVTGEN_ERROR, "EvtD0mixDalitz" )
108  << "EvtD0mixDalitz: Invalid mode." << std::endl;
109  exit( 1 );
110  }
111 
112  public:
114  _d1( 0 ),
115  _d2( 0 ),
116  _d3( 0 ),
117  _x( 0. ),
118  _y( 0. ),
119  _qp( 1. ),
120  _isKsPiPi( false ),
121  _isRBWmodel( true )
122  {
123  }
124 
125  // One-line inline functions.
126  std::string getName() override { return "D0MIXDALITZ"; }
127  EvtDecayBase* clone() override { return new EvtD0mixDalitz; }
128  void initProbMax() override { setProbMax( 5200. ); }
129 
130  void init() override;
131  void decay( EvtParticle* p ) override;
132 };
133 
134 #endif
static const EvtCyclic3::Pair & _BC
EvtComplex _iChi2
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
static const EvtDalitzReso::NumType & _GS
static const EvtSpinType::spintype & _SCALAR
EvtComplex dalitzKsKK(const EvtDalitzPoint &point)
static const EvtSpinType::spintype & _VECTOR
void decay(EvtParticle *p) override
void init() override
void setProbMax(double prbmx)
EvtComplex h1(const double &ct) const
Definition: EvtId.hh:27
static const EvtDalitzReso::CouplingType & _EtaPic
EvtComplex _iChi
void initProbMax() override
EvtComplex h2(const double &ct) const
static const EvtCyclic3::Pair & _AC
EvtDecayBase * clone() override
static const EvtDalitzReso::CouplingType & _PicPicKK
static const EvtDalitzReso::NumType & _RBW
EvtComplex dalitzKsPiPi(const EvtDalitzPoint &point)
std::string getName() override
EvtComplex _qp
void reportInvalidAndExit() const
static const EvtCyclic3::Pair & _AB
static const EvtSpinType::spintype & _TENSOR
static const EvtDalitzReso::NumType & _KMAT