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.
EvtPto3PAmp.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_PTO3P_AMP_HH
22 #define EVT_PTO3P_AMP_HH
23 
24 #include "EvtGenBase/EvtCyclic3.hh"
26 
27 #include <vector>
28 using std::vector;
33 
34 class EvtComplex;
35 class EvtBlattWeisskopf;
36 
37 class EvtPto3PAmp : public EvtAmplitude<EvtDalitzPoint> {
38  public:
39  // Numerator type
40  enum NumType
41  {
42  NBW = 0,
44  RBW_KUEHN = 2,
45  RBW_CLEO = 3,
59  };
60 
63  const EvtPropagator& prop, NumType typeN );
64 
65  EvtPto3PAmp( const EvtPto3PAmp& other );
66 
67  ~EvtPto3PAmp();
68 
70  {
71  return new EvtPto3PAmp( *this );
72  }
73 
74  EvtComplex amplitude( const EvtDalitzPoint& p ) const override;
75  EvtComplex numerator( const EvtDalitzPoint& p ) const;
76  double angDep( const EvtDalitzPoint& p ) const;
77 
78  void set_fd( double R );
79  void set_fb( double R );
80 
81  void setmin( double min ) { _min = min; }
82  void setmax( double max ) { _max = max; }
83 
84  virtual EvtComplex evalPropagator( double m ) const
85  {
86  return _prop->evaluate( m );
87  }
88 
89  private:
90  // Pairing indices:
91 
93  EvtCyclic3::Pair _pairRes; // resonance
94 
95  // Spin
96 
98 
99  // Numerator type
100 
102 
103  // _Owned_ pointer to propagator factor
104 
106  double _g0; // nominal width
107  double _min; //min and max values on which
108  double _max; //the resonance is defined
109 
110  // Vertices
111 
114 };
115 
116 #endif
EvtPto3PAmp(EvtDalitzPlot dp, EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes, EvtSpinType::spintype spin, const EvtPropagator &prop, NumType typeN)
void setmax(double max)
Definition: EvtPto3PAmp.hh:82
EvtCyclic3::Pair _pairRes
Definition: EvtPto3PAmp.hh:93
EvtComplex evaluate(const T &p) const
Definition: EvtAmplitude.hh:40
virtual EvtComplex evalPropagator(double m) const
Definition: EvtPto3PAmp.hh:84
void set_fd(double R)
Definition: EvtPto3PAmp.cpp:77
EvtSpinType::spintype _spin
Definition: EvtPto3PAmp.hh:97
NumType _typeN
Definition: EvtPto3PAmp.hh:101
EvtPropagator * _prop
Definition: EvtPto3PAmp.hh:105
EvtTwoBodyVertex _vd
Definition: EvtPto3PAmp.hh:113
double angDep(const EvtDalitzPoint &p) const
EvtAmplitude< EvtDalitzPoint > * clone() const override
Definition: EvtPto3PAmp.hh:69
EvtCyclic3::Pair _pairAng
Definition: EvtPto3PAmp.hh:92
void setmin(double min)
Definition: EvtPto3PAmp.hh:81
void set_fb(double R)
Definition: EvtPto3PAmp.cpp:82
EvtTwoBodyVertex _vb
Definition: EvtPto3PAmp.hh:112
Index other(Index i, Index j)
Definition: EvtCyclic3.cpp:156
EvtComplex numerator(const EvtDalitzPoint &p) const
EvtComplex amplitude(const EvtDalitzPoint &p) const override
Definition: EvtPto3PAmp.cpp:87