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.
EvtDalitzResPdf.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_DALITZ_RES_PDF_HH
22 #define EVT_DALITZ_RES_PDF_HH
23 
24 #include "EvtGenBase/EvtCyclic3.hh"
26 #include "EvtGenBase/EvtPdf.hh"
27 
28 /*
29  * Pole compensating function for terms that exibit a resonant structure
30  * in one dimension only.
31  *
32  * f = 1 g*m0
33  * -- ------------------
34  * pi (q-q0)^2 + g^2m0^2
35  *
36  * m is the mass of the resonance, g is its width. The approximation works well for a narrow
37  * resonance. It is also readily integrable over the Dalitz plot coordinate to produce
38  *
39  * Int = 1/pi atan((q-q0)/(g*m0))
40  */
41 
42 class EvtDalitzResPdf : public EvtPdf<EvtDalitzPoint> {
43  public:
44  EvtDalitzResPdf( const EvtDalitzPlot& dp, double m0, double g0,
45  EvtCyclic3::Pair pairRes );
46 
47  EvtPdf<EvtDalitzPoint>* clone() const override
48  {
49  return new EvtDalitzResPdf( *this );
50  }
51 
53  EvtValError compute_integral( int N ) const override;
54  EvtDalitzPoint randomPoint() override;
55  double pdfMaxValue() const;
56 
57  protected:
58  double pdf( const EvtDalitzPoint& ) const override;
59 
60  private:
62  double _m0; // mass
63  double _g0; // width
64  EvtCyclic3::Pair _pair; // resonant pair
65 };
66 
67 #endif
double pdfMaxValue() const
EvtPdf< EvtDalitzPoint > * clone() const override
double pdf(const EvtDalitzPoint &) const override
EvtCyclic3::Pair _pair
virtual EvtValError compute_integral() const
Definition: EvtPdf.hh:113
EvtDalitzPlot _dp
Definition: EvtPdf.hh:72
EvtDalitzResPdf(const EvtDalitzPlot &dp, double m0, double g0, EvtCyclic3::Pair pairRes)
EvtDalitzPoint randomPoint() override