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.
EvtMassAmp.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_MASSAMP_HH
22 #define EVT_MASSAMP_HH
23 
25 #include "EvtGenBase/EvtPoint1D.hh"
28 
29 // Relativistic lineshape for a two-body decay of a resonance to two
30 // pseudoscalars. The mass dependence of the width and the vertex factors
31 // are included in the calculation.
32 
33 class EvtMassAmp : public EvtAmplitude<EvtPoint1D> {
34  public:
35  EvtMassAmp( const EvtPropBreitWignerRel& prop, const EvtTwoBodyVertex& vd );
36  EvtMassAmp( const EvtMassAmp& other );
38 
39  EvtComplex amplitude( const EvtPoint1D& p ) const override;
40 
41  EvtAmplitude<EvtPoint1D>* clone() const override
42  {
43  return new EvtMassAmp( *this );
44  }
45 
46  void setBirthVtx( const EvtTwoBodyVertex& vb )
47  {
48  _vb = std::make_unique<EvtTwoBodyVertex>( vb );
49  }
50 
51  void addBirthFact() { _useBirthFact = true; }
52  void addDeathFact() { _useDeathFact = true; }
53  void addBirthFactFF() { _useBirthFactFF = true; }
54  void addDeathFactFF() { _useDeathFactFF = true; }
55 
56  private:
59  std::unique_ptr<EvtTwoBodyVertex> _vb;
60 
65 };
66 
67 #endif
void setBirthVtx(const EvtTwoBodyVertex &vb)
Definition: EvtMassAmp.hh:46
EvtComplex amplitude(const EvtPoint1D &p) const override
Definition: EvtMassAmp.cpp:62
void addBirthFactFF()
Definition: EvtMassAmp.hh:53
std::unique_ptr< EvtTwoBodyVertex > _vb
Definition: EvtMassAmp.hh:59
bool _useDeathFactFF
Definition: EvtMassAmp.hh:64
EvtPropBreitWignerRel _prop
Definition: EvtMassAmp.hh:57
EvtMassAmp & operator=(const EvtMassAmp &other)
Definition: EvtMassAmp.cpp:49
EvtAmplitude< EvtPoint1D > * clone() const override
Definition: EvtMassAmp.hh:41
bool _useBirthFact
Definition: EvtMassAmp.hh:61
bool _useDeathFact
Definition: EvtMassAmp.hh:62
void addBirthFact()
Definition: EvtMassAmp.hh:51
EvtTwoBodyVertex _vd
Definition: EvtMassAmp.hh:58
void addDeathFactFF()
Definition: EvtMassAmp.hh:54
void addDeathFact()
Definition: EvtMassAmp.hh:52
bool _useBirthFactFF
Definition: EvtMassAmp.hh:63
Index other(Index i, Index j)
Definition: EvtCyclic3.cpp:156
EvtMassAmp(const EvtPropBreitWignerRel &prop, const EvtTwoBodyVertex &vd)
Definition: EvtMassAmp.cpp:25