Belle II Software development
EvtEtaPrimeDalitz.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: EvtEtaFullDalitz.cc
12//
13// Description: Routine to decay eta' -> pi+ pi- eta
14// with a Dalitz parametrization up to the
15// quadratic terms
16//
17//
18// Developer: Umberto Tamponi (tamponi@to.infn.it)
19//
20// Modification history:
21//
22// U.Tamponi October 9th 2016 Module created
23//
24//------------------------------------------------------------------------
25//
26#include <generators/evtgen/EvtGenModelRegister.h>
27#include "EvtGenBase/EvtParticle.hh"
28#include "generators/evtgen/models/EvtEtaPrimeDalitz.h"
29#include <string>
30
31namespace Belle2 {
39
40
42
44 {
45
46 return "ETAPRIME_DALITZ";
47
48 }
49
50
52 {
53
54 return new EvtEtaPrimeDalitz;
55
56 }
57
59 {
60
61 // check that there is are arguments
62 checkNArg(4);
63 checkNDaug(3);
64
65
66 checkSpinParent(EvtSpinType::SCALAR);
67
68 checkSpinDaughter(0, EvtSpinType::SCALAR);
69 checkSpinDaughter(1, EvtSpinType::SCALAR);
70 checkSpinDaughter(2, EvtSpinType::SCALAR);
71 }
72
73
75 {
76
77 setProbMax(2.5);
78
79 }
80
81 void EvtEtaPrimeDalitz::decay(EvtParticle* p)
82 {
83
84 const double a = getArg(0);
85 const double b = getArg(1);
86 const double c = getArg(2);
87 const double d = getArg(3);
88
89 p->initializePhaseSpace(getNDaug(), getDaugs());
90
91 EvtVector4R mompip = p->getDaug(0)->getP4();
92 EvtVector4R mompim = p->getDaug(1)->getP4();
93 EvtVector4R mometa = p->getDaug(2)->getP4();
94
95 double m_etaprime = p->mass();
96 double m_eta = p->getDaug(2)->mass();
97 double m_pi = p->getDaug(1)->mass();
98
99 //Q value
100 double deltaM = m_etaprime - 2 * m_pi - m_eta;
101
102 //The decay amplitude comes from BESIII collab, Phys.Rev. D92 (2015) 012014
103
104 //Kinetic energies T
105 double Tpip = (mompip.get(0) - m_pi);
106 double Tpim = (mompim.get(0) - m_pi);
107 double Teta = (mometa.get(0) - m_eta);
108
109 //Dalitz variables
110 double X = sqrt(3.) * (Tpip - Tpim) / deltaM;
111 double Y = ((m_eta + 2 * m_pi) / m_pi) * Teta / deltaM - 1. ;
112
113 double amp2 = 1. + a * Y + b * Y * Y + c * X + d * X * X;
114
115 EvtComplex amp(sqrt(amp2), 0.0);
116
117 vertex(amp);
118
119 return ;
120
121 }
122
124} // Belle 2 Namespace
Class for the simulation of the eta' -> pi+ pi- eta and pi0 pi0 eta decays.
EvtEtaPrimeDalitz()
Default constructor.
void init()
Checks that the number of input parameters are correct:
EvtDecayBase * clone()
Returns a copy of the class object.
void initProbMax()
Sets the Maximum probability for the PHSP reweight.
std::string getName()
Returns the model name: ETAPRIME_DALITZ.
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
virtual ~EvtEtaPrimeDalitz()
Default destructor.
void decay(EvtParticle *p)
Function that implements the energy-dependent Dalitz.
Abstract base class for different kinds of events.