Belle II Software  release-08-01-10
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 
29 namespace 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:
double sqrt(double a)
sqrt for double
Definition: beamHelpers.h:28
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.
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.