Belle II Software  release-05-01-25
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 {
36  B2_EVTGEN_REGISTER_MODEL(EvtEtaPi0Dalitz);
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
Belle2::EvtEtaPi0Dalitz::initProbMax
void initProbMax()
Sets the Maximum probability for the PHSP reweight.
Definition: EvtEtaPi0Dalitz.cc:72
Belle2::EvtEtaPi0Dalitz::decay
void decay(EvtParticle *p)
Function that implements the energy-dependent Dalitz.
Definition: EvtEtaPi0Dalitz.cc:79
Belle2::EvtEtaPi0Dalitz::getName
std::string getName()
Returns the name of the model: ETA_PI0DALITZ.
Definition: EvtEtaPi0Dalitz.cc:41
Belle2::B2_EVTGEN_REGISTER_MODEL
B2_EVTGEN_REGISTER_MODEL(EvtB0toKsKK)
register the model in EvtGen
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::EvtEtaPi0Dalitz::init
void init()
Checks that the number of input parameters are correct:
Definition: EvtEtaPi0Dalitz.cc:56
Belle2::EvtEtaPi0Dalitz::EvtEtaPi0Dalitz
EvtEtaPi0Dalitz()
Default constructor.
Definition: EvtEtaPi0Dalitz.h:54
Belle2::EvtEtaPi0Dalitz::~EvtEtaPi0Dalitz
virtual ~EvtEtaPi0Dalitz()
Default destructor.
Definition: EvtEtaPi0Dalitz.cc:39
Belle2::EvtEtaPi0Dalitz::clone
EvtDecayBase * clone()
Makes a copy of the class object.
Definition: EvtEtaPi0Dalitz.cc:49