Belle II Software  release-08-01-10
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 
31 namespace Belle2 {
39 
40 
42 
44  {
45 
46  return "ETAPRIME_DALITZ";
47 
48  }
49 
50 
51  EvtDecayBase* EvtEtaPrimeDalitz::clone()
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:
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
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.
virtual ~EvtEtaPrimeDalitz()
Default destructor.
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.