Belle II Software  release-05-01-25
EvtBSemiTauonic.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2013 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Koji Hara *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #include <stdlib.h>
12 #include "EvtGenBase/EvtParticle.hh"
13 #include "EvtGenBase/EvtPDL.hh"
14 
15 
16 #include <string>
17 
18 #include "framework/logging/Logger.h"
19 #include <generators/evtgen/EvtGenModelRegister.h>
20 #include "generators/evtgen/models/EvtBSemiTauonic.h"
21 #include "generators/evtgen/models/EvtBSemiTauonicHelicityAmplitudeCalculator.h"
22 #include "generators/evtgen/models/EvtBSemiTauonicVectorMesonAmplitude.h"
23 #include "generators/evtgen/models/EvtBSemiTauonicScalarMesonAmplitude.h"
24 
25 namespace Belle2 {
32  B2_EVTGEN_REGISTER_MODEL(EvtBSemiTauonic);
33 
34  EvtBSemiTauonic::EvtBSemiTauonic(): m_CalcHelAmp(0), m_CalcAmp(0) {}
35 
36  EvtBSemiTauonic::~EvtBSemiTauonic()
37  {
38  if (m_CalcHelAmp)delete m_CalcHelAmp;
39  if (m_CalcAmp)delete m_CalcAmp;
40  }
41 
42  std::string EvtBSemiTauonic::getName()
43  {
44  return "BSTD";
45  }
46 
47 
48 
49  EvtDecayBase* EvtBSemiTauonic::clone()
50  {
51  return new EvtBSemiTauonic;
52  }
53 
54 
55  void EvtBSemiTauonic::decay(EvtParticle* p)
56  {
57  p->initializePhaseSpace(getNDaug(), getDaugs());
58  m_CalcAmp->CalcAmp(p, _amp2, m_CalcHelAmp);
59  }
60 
61  void EvtBSemiTauonic::initProbMax()
62  {
63  EvtId parnum, mesnum, lnum, nunum;
64 
65  parnum = getParentId();
66  mesnum = getDaug(0);
67  lnum = getDaug(1);
68  nunum = getDaug(2);
69 
70  double maxprob = m_CalcAmp->CalcMaxProb(parnum, mesnum,
71  lnum, nunum,
72  m_CalcHelAmp);
73 
74  B2INFO("EvtBSemiTauonic::initProbMax()>> maxprob: " << maxprob);
75 
76  setProbMax(maxprob);
77  }
78 
79 
80  void EvtBSemiTauonic::init()
81  {
82  checkNDaug(3);
83 
84  //We expect the parent to be a scalar
85  //and the daughters to be X lepton neutrino
86  checkSpinParent(EvtSpinType::SCALAR);
87 
88  checkSpinDaughter(1, EvtSpinType::DIRAC);
89  checkSpinDaughter(2, EvtSpinType::NEUTRINO);
90 
91  EvtSpinType::spintype d1type = EvtPDL::getSpinType(getDaug(0));
92 
93  if (d1type == EvtSpinType::VECTOR) {
94  B2INFO("EvtBSemiTauonic::init()>> Initializing for decays to a vector type meson ");
95  checkNArg(16);
96  const double rhoa12 = getArg(0);
97  const double R11 = getArg(1);
98  const double R21 = getArg(2);
99  const double aR3 = getArg(3);
100 
101  const double rho12 = 0; // not used for D*taunu decays
102  const double aS1 = 0; // not used for D*taunu decays
103 
104  const double m_b = getArg(4);
105  const double m_c = getArg(5);
106 
107  EvtComplex Coeffs[5];
108  Coeffs[0] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
109  Coeffs[1] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
110  Coeffs[2] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
111  Coeffs[3] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
112  Coeffs[4] = EvtComplex(getArg(14) * cos(getArg(15)), getArg(14) * sin(getArg(15)));
113 
114  m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
115  Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
116  EvtPDL::getMeanMass(getParentId()),
117  -1, /*dummy for Dmass*/
118  EvtPDL::getMeanMass(getDaug(0)));
119  m_CalcAmp = new EvtBSemiTauonicVectorMesonAmplitude();
120  } else if (d1type == EvtSpinType::SCALAR) {
121  B2INFO("EvtBSemiTauonic::init()>> Initializing for decays to a scalar type meson ");
122  checkNArg(14);
123  const double rho12 = getArg(0);
124  const double aS1 = getArg(1);
125 
126  const double rhoa12 = 0; // not used for Dtaunu decays
127  const double R11 = 0; // not used for Dtaunu decays
128  const double R21 = 0; // not used for Dtaunu decays
129  const double aR3 = 0; // not used for Dtaunu decays
130 
131  const double m_b = getArg(2);
132  const double m_c = getArg(3);
133 
134  EvtComplex Coeffs[5];
135  Coeffs[0] = EvtComplex(getArg(4) * cos(getArg(5)), getArg(4) * sin(getArg(5)));
136  Coeffs[1] = EvtComplex(getArg(6) * cos(getArg(7)), getArg(6) * sin(getArg(7)));
137  Coeffs[2] = EvtComplex(getArg(8) * cos(getArg(9)), getArg(8) * sin(getArg(9)));
138  Coeffs[3] = EvtComplex(getArg(10) * cos(getArg(11)), getArg(10) * sin(getArg(11)));
139  Coeffs[4] = EvtComplex(getArg(12) * cos(getArg(13)), getArg(12) * sin(getArg(13)));
140 
141  m_CalcHelAmp = new EvtBSemiTauonicHelicityAmplitudeCalculator(rho12, rhoa12, R11, R21, aS1, aR3, m_b, m_c,
142  Coeffs[0], Coeffs[1], Coeffs[2], Coeffs[3], Coeffs[4],
143  EvtPDL::getMeanMass(getParentId()),
144  EvtPDL::getMeanMass(getDaug(0)),
145  -1 /*dummy for D*mass*/);
146  m_CalcAmp = new EvtBSemiTauonicScalarMesonAmplitude();
147  } else {
148  B2ERROR("BSemiTauonic model handles only scalar and vector meson daughters.");
149 // EvtGenReport(EVTGEN_ERROR, "EvtGen") << "BSemiTauonic model handles only scalar and vector meson daughters." << std::endl;
150  ::abort();
151  }
152  }
154 } // Belle 2 Namespace
Belle2::EvtBSemiTauonic::EvtBSemiTauonic
EvtBSemiTauonic()
The default constructor
Definition: EvtBSemiTauonic.cc:42
Belle2::EvtBSemiTauonic
The EvtGen model of semi-tauonic B decays including new physics effects based on [M.
Definition: EvtBSemiTauonic.h:40
Belle2::EvtBSemiTauonicVectorMesonAmplitude
The class calculates the spin dependent amplitudes of B->D*taunu decays for the BSemiTauonic model ba...
Definition: EvtBSemiTauonicVectorMesonAmplitude.h:29
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::EvtBSemiTauonicScalarMesonAmplitude
The class calculates the spin dependent amplitudes of B->Dtaunu decays for the BSemiTauonic model bas...
Definition: EvtBSemiTauonicScalarMesonAmplitude.h:29
Belle2::EvtBSemiTauonicHelicityAmplitudeCalculator
The class calculates the helicity amplitude of semi-tauonic B decays including new physics effects ba...
Definition: EvtBSemiTauonicHelicityAmplitudeCalculator.h:38