Belle II Software development
EvtEtaPi0Dalitz.cc
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package for the BelleII
5// collaboration. If you use all or part of it, please give an
6// appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtEtaPi0Dalitz.cc
12//
13// Description: Routine to decay eta/eta' -> pi0 pi0 pi0
14//
15// Developer: Umberto Tamponi (tamponi@to.infn.it)
16//
17// Modification history:
18//
19// U.Tamponi October 6th 2016 Module created
20//
21//------------------------------------------------------------------------
22//
23#include <generators/evtgen/EvtGenModelRegister.h>
24#include "EvtGenBase/EvtParticle.hh"
25#include "EvtGenBase/EvtPDL.hh"
26#include "generators/evtgen/models/EvtEtaPi0Dalitz.h"
27#include <string>
28
29namespace Belle2 {
37
38
40
42 {
43
44 return "ETA_PI0DALITZ";
45
46 }
47
48
49 EvtDecayBase* EvtEtaPi0Dalitz::clone()
50 {
51
52 return new EvtEtaPi0Dalitz;
53
54 }
55
57 {
58
59 // check that there is 1 argument
60 checkNArg(1);
61 checkNDaug(3);
62
63
64 checkSpinParent(EvtSpinType::SCALAR);
65
66 checkSpinDaughter(0, EvtSpinType::SCALAR);
67 checkSpinDaughter(1, EvtSpinType::SCALAR);
68 checkSpinDaughter(2, EvtSpinType::SCALAR);
69 }
70
71
73 {
74
75 setProbMax(2.5);
76
77 }
78
79 void EvtEtaPi0Dalitz::decay(EvtParticle* p)
80 {
81
82 const double alpha = getArg(0);
83
84 p->initializePhaseSpace(getNDaug(), getDaugs());
85
86 EvtVector4R mompi0_0 = p->getDaug(0)->getP4();
87 EvtVector4R mompi0_1 = p->getDaug(1)->getP4();
88 EvtVector4R mompi0_2 = p->getDaug(2)->getP4();
89
90 double m_eta = p->mass();
91 double m_pi0 = p->getDaug(0)->mass();
92 double deltaM = m_eta - 3 * m_pi0;
93
94 //The decay amplitude comes from KLOE collab., Phys.Lett. B694 (2011) 16-21
95 double z0 = (3 * mompi0_0.get(0) - m_eta) / deltaM;
96 double z1 = (3 * mompi0_1.get(0) - m_eta) / deltaM;
97 double z2 = (3 * mompi0_2.get(0) - m_eta) / deltaM;
98
99 double z = (2. / 3.) * (z0 * z0 + z1 * z1 + z2 * z2) ;
100
101 double Amp2 = 1.0 + alpha * 2.0 * z;
102 if (Amp2 < 0)
103 Amp2 = 0;
104
105 EvtComplex amp(sqrt(Amp2), 0.);
106
107 vertex(amp);
108
109 return ;
110
111 }
112
114} // Belle 2 Namespace
Class for the simulation of the eta -> 3pi0 and eta'->3pi0 decays.
EvtEtaPi0Dalitz()
Default constructor.
void init()
Checks that the number of input parameters are correct:
virtual ~EvtEtaPi0Dalitz()
Default destructor.
EvtDecayBase * clone()
Makes a copy of the class object.
void initProbMax()
Sets the Maximum probability for the PHSP reweight.
std::string getName()
Returns the name of the model: ETA_PI0DALITZ.
#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.