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.
EvtIntegPdf1D.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/EvtMacros.hh"
24 #include "EvtGenBase/EvtPatches.hh"
25 
26 #include <assert.h>
27 
28 EvtIntegPdf1D::EvtIntegPdf1D( double min, double max ) :
29  EvtPdf<EvtPoint1D>(), _min( min ), _max( max )
30 {
31  assert( min <= max );
32 }
33 
35  EvtPdf<EvtPoint1D>( other ), _min( other._min ), _max( other._max )
36 {
37 }
38 
40 {
41  double x1 = pdfIntegral( _min );
42  double x2 = pdfIntegral( _max );
43  return EvtValError( x2 - x1, 0. );
44 }
45 
47 {
48  double itgmin = pdfIntegral( _min );
49  double itgmax = pdfIntegral( _max );
50  double itgrnd = EvtRandom::Flat( itgmin, itgmax );
51 
52  return EvtPoint1D( _min, _max, pdfIntegralInverse( itgrnd ) );
53 }
virtual double pdfIntegral(double x) const =0
EvtIntegPdf1D(double min, double max)
EvtPoint1D randomPoint() override
virtual double pdfIntegralInverse(double x) const =0
static double Flat()
Definition: EvtRandom.cpp:72
Definition: EvtPdf.hh:72
Index other(Index i, Index j)
Definition: EvtCyclic3.cpp:156
EvtValError compute_integral() const override