Belle II Software  release-08-01-10
EvtEtaFullDalitz.cc
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #include <generators/evtgen/EvtGenModelRegister.h>
10 #include <stdlib.h>
11 #include "EvtGenBase/EvtParticle.hh"
12 #include "generators/evtgen/models/EvtEtaFullDalitz.h"
13 
14 namespace Belle2 {
22 
23 
25 
27  {
28 
29  return "ETA_FULLDALITZ";
30 
31  }
32 
33 
34  EvtDecayBase* EvtEtaFullDalitz::clone()
35  {
36 
37  return new EvtEtaFullDalitz;
38 
39  }
40 
42  {
43 
44  // check that there is are arguments
45  checkNArg(6);
46  checkNDaug(3);
47 
48 
49  checkSpinParent(EvtSpinType::SCALAR);
50 
51  checkSpinDaughter(0, EvtSpinType::SCALAR);
52  checkSpinDaughter(1, EvtSpinType::SCALAR);
53  checkSpinDaughter(2, EvtSpinType::SCALAR);
54  }
55 
56 
58  {
59 
60  setProbMax(2.5);
61 
62  }
63 
64  void EvtEtaFullDalitz::decay(EvtParticle* p)
65  {
66 
67  const double a = getArg(0);
68  const double b = getArg(1);
69  const double c = getArg(2);
70  const double d = getArg(3);
71  const double e = getArg(4);
72  const double f = getArg(5);
73 
74  p->initializePhaseSpace(getNDaug(), getDaugs());
75 
76  EvtVector4R mompip = p->getDaug(0)->getP4();
77  EvtVector4R mompim = p->getDaug(1)->getP4();
78  EvtVector4R mompi0 = p->getDaug(2)->getP4();
79 
80  double m_eta = p->mass();
81  double m_pip = p->getDaug(0)->mass();
82  double m_pi0 = p->getDaug(2)->mass();
83 
84  //Q value
85  double deltaM = m_eta - 2 * m_pip - m_pi0;
86 
87  //The decay amplitude comes from BESIII collab, Phys.Rev. D92 (2015) 012014
88 
89  //Kinetic energies T
90  double Tpip = (mompip.get(0) - m_pip);
91  double Tpim = (mompim.get(0) - m_pip);
92  double Tpi0 = (mompi0.get(0) - m_pip);
93 
94  //Dalitz variables
95  double X = sqrt(3.) * (Tpip - Tpim) / deltaM;
96  double Y = 3.*Tpi0 / deltaM - 1. ;
97 
98  double amp2 = 1. + a * Y + b * Y * Y + c * X + d * X * X + e * X * Y + f * Y * Y * Y;
99 
100  EvtComplex amp(sqrt(amp2), 0.0);
101 
102  vertex(amp);
103 
104  return ;
105 
106  }
107 
109 } // Belle 2 Namespace
Class for the simulation of the eta -> pi+pi-pi0 decay with an improved dalitz description.
EvtEtaFullDalitz()
Default Constructor.
void init()
Checks that the number of input parameters are correct:
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
EvtDecayBase * clone()
Makes a copy of the pointer to the class.
virtual ~EvtEtaFullDalitz()
Default Destructor.
void initProbMax()
Sets the Maximum probability for the PHSP reweight.
std::string getName()
Returns the model name: ETA_FULLDALITZ.
void decay(EvtParticle *p)
Function that implements the energy-dependent Dalitz.
B2_EVTGEN_REGISTER_MODEL(EvtB0toKsKK)
register the model in EvtGen
Abstract base class for different kinds of events.