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
EvtAbsLineShape.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 EVTABSLINESHAPE_HH
22#define EVTABSLINESHAPE_HH
23
24#include "EvtGenBase/EvtId.hh"
26
27#include <vector>
28
30 public:
31 EvtAbsLineShape() = default;
32 EvtAbsLineShape( double mass, double width, double maxRange,
34 virtual ~EvtAbsLineShape() = default;
37
38 double getMass() { return m_mass; }
39 double getMassMin() { return m_massMin; }
40 double getMassMax() { return m_massMax; }
41 double getMaxRange() { return m_maxRange; }
42 double getWidth() { return m_width; }
44 virtual double rollMass();
45 virtual EvtAbsLineShape* clone();
46
47 void reSetMass( double mass ) { m_mass = mass; }
48 void reSetWidth( double width ) { m_width = width; }
49 void reSetMassMin( double mass ) { m_massMin = mass; }
50 void reSetMassMax( double mass ) { m_massMax = mass; }
51 virtual void reSetBlatt( double /*blatt*/ ){};
52 virtual void reSetBlattBirth( double /*blatt*/ ){};
53 void includeBirthFactor( bool yesno ) { m_includeBirthFact = yesno; }
54 void includeDecayFactor( bool yesno ) { m_includeDecayFact = yesno; }
55 void setPWForDecay( int spin, EvtId d1, EvtId d2 )
56 {
57 m_userSetPW.push_back( spin );
58 m_userSetPWD1.push_back( d1 );
59 m_userSetPWD2.push_back( d2 );
60 }
61 void setPWForBirthL( int spin, EvtId par, EvtId othD )
62 {
63 m_userSetBirthPW.push_back( spin );
64 m_userSetBirthOthD.push_back( othD );
65 m_userSetBirthPar.push_back( par );
66 }
67
68 virtual double getRandMass( EvtId* parId, int nDaug, EvtId* dauId,
69 EvtId* othDaugId, double maxMass,
70 double* dauMasses );
71 virtual double getMassProb( double mass, double massPar, int nDaug,
72 double* massDau );
73
74 protected:
77 double m_mass;
78 double m_massMin;
79 double m_massMax;
80 double m_width;
81 double m_maxRange;
82
83 // allow for special cases where the default method of picking the
84 //lowest allowed partial wave for a decay is not the right answer.
85 // string is "<spin> <daughter1> <daughter2>"
86 //new 9/12/2003 Lange
87 std::vector<EvtId> m_userSetPWD1, m_userSetPWD2;
88 std::vector<int> m_userSetPW;
89
90 // also do it for birth factors
92 std::vector<int> m_userSetBirthPW;
93
95};
96
97#endif
std::vector< int > m_userSetBirthPW
void reSetWidth(double width)
std::vector< EvtId > m_userSetBirthPar
virtual EvtAbsLineShape * clone()
std::vector< EvtId > m_userSetPWD2
virtual void reSetBlatt(double)
virtual double getMassProb(double mass, double massPar, int nDaug, double *massDau)
virtual void reSetBlattBirth(double)
void reSetMass(double mass)
EvtAbsLineShape()=default
std::vector< EvtId > m_userSetBirthOthD
void includeDecayFactor(bool yesno)
EvtSpinType::spintype getSpinType()
virtual ~EvtAbsLineShape()=default
EvtAbsLineShape & operator=(const EvtAbsLineShape &x)
virtual double getRandMass(EvtId *parId, int nDaug, EvtId *dauId, EvtId *othDaugId, double maxMass, double *dauMasses)
EvtSpinType::spintype m_spin
void setPWForBirthL(int spin, EvtId par, EvtId othD)
std::vector< int > m_userSetPW
void reSetMassMax(double mass)
virtual double rollMass()
std::vector< EvtId > m_userSetPWD1
void includeBirthFactor(bool yesno)
void setPWForDecay(int spin, EvtId d1, EvtId d2)
void reSetMassMin(double mass)
Definition EvtId.hh:27