Belle II Software development
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
14namespace Belle2 {
22
23
25
27 {
28
29 return "ETA_FULLDALITZ";
30
31 }
32
33
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:
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.
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
void decay(EvtParticle *p)
Function that implements the energy-dependent Dalitz.
Abstract base class for different kinds of events.