EvtGen 2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
EvtManyDeltaFuncLineShape.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
24#include "EvtGenBase/EvtPDL.hh"
30
34
36 double maxRange,
38{
39 m_mass = mass;
40 m_width = width;
41 m_spin = sp;
42 m_maxRange = maxRange;
43
44 double maxdelta = width;
45
46 m_massMax = mass + maxdelta;
47 m_massMin = mass - maxdelta;
48
49 if ( m_massMin < 0. )
50 m_massMin = 0.;
51}
52
64
76
81
82double EvtManyDeltaFuncLineShape::getMassProb( double mass, double massPar,
83 int nDaug, double* massDau )
84{
85 double dTotMass = 0.;
86
87 int i;
88 for ( i = 0; i < nDaug; i++ ) {
89 dTotMass += massDau[i];
90 }
91 if ( ( mass < dTotMass ) )
92 return 0.;
93
94 if ( massPar > 0.0000000001 ) {
95 if ( mass > massPar )
96 return 0.;
97 }
98
99 return 1.;
100}
101
103 double, double* )
104{
105 int nDelta = int( ( m_massMax - m_massMin ) / m_width );
106 nDelta++;
107 double rand = EvtRandom::Flat( 0., float( nDelta ) );
108 int randI = int( rand );
109 return m_massMin + randI * m_width;
110}
EvtAbsLineShape()=default
EvtSpinType::spintype m_spin
Definition EvtId.hh:27
double getMassProb(double mass, double massPar, int nDaug, double *massDau) override
EvtManyDeltaFuncLineShape & operator=(const EvtManyDeltaFuncLineShape &x)
EvtAbsLineShape * clone() override
double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses) override
static double Flat()
Definition EvtRandom.cpp:95