Belle II Software  release-05-01-25
EvtEtaFullDalitz.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2013 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Umberto Tamponi (tamponi@to.infn.it) *
7  * *
8  * Description: Routine to decay eta/eta' -> pi+ pi- pi0 *
9  * with a Dalitz parametrization up to the *
10  * cubic terms in Y *
11  * *
12  * Modification history: *
13  * - U.Tamponi October 9th 2016 Module created *
14  * *
15  * This software is provided "as is" without any warranty. *
16  **************************************************************************/
17 
18 #include <generators/evtgen/EvtGenModelRegister.h>
19 #include <stdlib.h>
20 #include "EvtGenBase/EvtParticle.hh"
21 #include "generators/evtgen/models/EvtEtaFullDalitz.h"
22 
23 namespace Belle2 {
30  B2_EVTGEN_REGISTER_MODEL(EvtEtaFullDalitz);
31 
32 
34 
35  std::string EvtEtaFullDalitz::getName()
36  {
37 
38  return "ETA_FULLDALITZ";
39 
40  }
41 
42 
43  EvtDecayBase* EvtEtaFullDalitz::clone()
44  {
45 
46  return new EvtEtaFullDalitz;
47 
48  }
49 
51  {
52 
53  // check that there is are arguments
54  checkNArg(6);
55  checkNDaug(3);
56 
57 
58  checkSpinParent(EvtSpinType::SCALAR);
59 
60  checkSpinDaughter(0, EvtSpinType::SCALAR);
61  checkSpinDaughter(1, EvtSpinType::SCALAR);
62  checkSpinDaughter(2, EvtSpinType::SCALAR);
63  }
64 
65 
67  {
68 
69  setProbMax(2.5);
70 
71  }
72 
73  void EvtEtaFullDalitz::decay(EvtParticle* p)
74  {
75 
76  const double a = getArg(0);
77  const double b = getArg(1);
78  const double c = getArg(2);
79  const double d = getArg(3);
80  const double e = getArg(4);
81  const double f = getArg(5);
82 
83  p->initializePhaseSpace(getNDaug(), getDaugs());
84 
85  EvtVector4R mompip = p->getDaug(0)->getP4();
86  EvtVector4R mompim = p->getDaug(1)->getP4();
87  EvtVector4R mompi0 = p->getDaug(2)->getP4();
88 
89  double m_eta = p->mass();
90  double m_pip = p->getDaug(0)->mass();
91  double m_pi0 = p->getDaug(2)->mass();
92 
93  //Q value
94  double deltaM = m_eta - 2 * m_pip - m_pi0;
95 
96  //The decay amplitude comes from BESIII collab, Phys.Rev. D92 (2015) 012014
97 
98  //Kinetic energies T
99  double Tpip = (mompip.get(0) - m_pip);
100  double Tpim = (mompim.get(0) - m_pip);
101  double Tpi0 = (mompi0.get(0) - m_pip);
102 
103  //Dalitz variables
104  double X = sqrt(3.) * (Tpip - Tpim) / deltaM;
105  double Y = 3.*Tpi0 / deltaM - 1. ;
106 
107  double amp2 = 1. + a * Y + b * Y * Y + c * X + d * X * X + e * X * Y + f * Y * Y * Y;
108 
109  EvtComplex amp(sqrt(amp2), 0.0);
110 
111  vertex(amp);
112 
113  return ;
114 
115  }
116 
118 } // Belle 2 Namespace
Belle2::EvtEtaFullDalitz::initProbMax
void initProbMax()
Sets the Maximum probability for the PHSP reweight.
Definition: EvtEtaFullDalitz.cc:81
Belle2::EvtEtaFullDalitz::EvtEtaFullDalitz
EvtEtaFullDalitz()
Default Constructor.
Definition: EvtEtaFullDalitz.h:55
Belle2::EvtEtaFullDalitz::decay
void decay(EvtParticle *p)
Function that implements the energy-dependent Dalitz.
Definition: EvtEtaFullDalitz.cc:88
Belle2::EvtEtaFullDalitz::getName
std::string getName()
Returns the model name: ETA_FULLDALITZ.
Definition: EvtEtaFullDalitz.cc:50
Belle2::EvtEtaFullDalitz::~EvtEtaFullDalitz
virtual ~EvtEtaFullDalitz()
Default Destructor.
Definition: EvtEtaFullDalitz.cc:48
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::EvtEtaFullDalitz::init
void init()
Checks that the number of input parameters are correct:
Definition: EvtEtaFullDalitz.cc:65
Belle2::EvtEtaFullDalitz::clone
EvtDecayBase * clone()
Makes a copy of the pointer to the class.
Definition: EvtEtaFullDalitz.cc:58