Belle II Software  release-08-01-10
EvtBSemiTauonicHelicityAmplitudeCalculator.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #pragma once
9 
10 #include "EvtGenBase/EvtComplex.hh"
11 
12 namespace Belle2 {
29 
30  public:
31 
36 
57  EvtBSemiTauonicHelicityAmplitudeCalculator(const double rho12, const double rhoA12, const double ffR11, const double ffR21,
58  const double AS1, const double AR3,
59  const double bottomMass, const double charmMass,
60  const EvtComplex& CV1, const EvtComplex& CV2, const EvtComplex& CS1, const EvtComplex& CS2, const EvtComplex& CT,
61  const double parentMass, const double DMass, const double DstarMass);
62 
65 
74  EvtComplex helAmp(double mtau, int tauhel, int Dhel, double w, double costau) const;
75 
76  public:
77 
91  EvtComplex helAmp(const EvtComplex& CV1, const EvtComplex& CV2, const EvtComplex& CS1, const EvtComplex& CS2, const EvtComplex& CT,
92  double mtau, int tauhel, int Dhel, double w, double costau) const;
93 
102  double Lep(const double mtau, int tauhel, int whel, double q2, double costau) const; // Vector
103 
111  double Lep(const double mtau, int tauhel, double q2, double costau) const; // Scalar
112 
123  double Lep(const double mtau, int tauhel, int whel1, int whel2, double q2, double costau) const; // Tensor
124 
131  double HadV1(int Dhel, int whel, double w) const; // V-A
132 
139  double HadV2(int Dhel, int whel, double w) const; // V+A
140 
146  double HadS1(int Dhel, double w) const; // S+P
147 
153  double HadS2(int Dhel, double w) const; // S-P
154 
163  double HadT(int Dhel, int whel1, int whel2, double w) const; // Tensor
164 
174  double helampSM(double mtau, int tauhel, int Dhel, double w, double costau) const; // SM
175 
186  double helampV1(double mtau, int tauhel, int Dhel, double w, double costau) const; // V-A
187 
198  double helampV2(double mtau, int tauhel, int Dhel, double w, double costau) const; // V+A
199 
210  double helampS1(double mtau, int tauhel, int Dhel, double w, double costau) const; // S+P
211 
222  double helampS2(double mtau, int tauhel, int Dhel, double w, double costau) const; // S-P
223 
234  double helampT(double mtau, int tauhel, int Dhel, double w, double costau) const; // Tensor
235 
240  double eta(int whel) const {return (whel == 2) ? -1 : 1;}
241 
242 
244 
245  // Vector and axial-vector form factors in terms of CLN form factors
246 
248  double hp(double w) const;
249 
251  double hm(double w) const;
252 
254  double hA1(double w) const;
255 
257  double hV(double w) const;
258 
260  double hA2(double w) const;
261 
263  double hA3(double w) const;
264 
265  // Scalar form factors in terms of V and A form factors
266 
268  double hS(double w) const;
269 
271  double hP(double w) const;
272 
273  // Tensor form factors in terms of V and A form factors
274 
276  double hT(double w) const;
277 
279  double hT1(double w) const;
280 
282  double hT2(double w) const;
283 
285  double hT3(double w) const;
286 
291  double z(double w) const;
292 
297  double ffV1(double w) const;
298 
303  double ffS1(double w) const;
304 
309  double ffA1(double w) const;
310 
315  double ffR1(double w) const;
316 
321  double ffR2(double w) const;
322 
327  double ffR3(double w) const;
328 
333  double ffV11() const {return 1.;} // cancels in R(D)
334 
339  double ffA11() const {return 1.;} // cancels in R(Ds)
340 
345  double dS1(double w) const;
346 
351  double dR3(double w) const;
352 
356  double aS1() const {return getAS1();} // {return 1.;}
357 
361  double aR3() const {return getAR3();} // {return 1.;}
362 
367  double mD(int Dhel) const;
368 
373  double r(int Dhel) const {return mD(Dhel) / m_mB;} // meson mass ratio
374 
375 
378  double rq() const {return m_mCharm / m_mBottom;} // quark mass ratio
379 
385  double v(double mtau, double q2) const;
386 
392  double q2(int Dhel, double w) const;
393 
399  double qh2(int Dhel, double w) const;
400 
401  // range of q2 and w
402 
407  double q2min(double mtau) const {return mtau * mtau;}
408 
413  double q2max(int Dhel) const {return (m_mB - mD(Dhel)) * (m_mB - mD(Dhel));}
414 
420  double wfunc(int Dhel, double q2) const {return (1. + r(Dhel) * r(Dhel) - q2 / m_mB / m_mB) / 2. / r(Dhel);}
421 
425  double wmin() const {return 1.;};
426 
432  double wmax(double mtau, int Dhel) const {return wfunc(Dhel, q2min(mtau));}
433 
437  double getRho12() const {return m_rho12;}
438 
440  double getRhoA12() const {return m_rhoA12;}
441 
443  double getR11() const {return m_ffR11;}
444 
446  double getR21() const {return m_ffR21;}
447 
449  double getAS1() const {return m_aS1;}
450 
452  double getAR3() const {return m_aR3;}
453 
455  double getMB() const {return m_mB;}
456 
458  double getMD() const {return m_mD;}
459 
461  double getMDst() const {return m_mDst;}
462 
464  double getMBottom() const {return m_mBottom;}
465 
467  double getMCharm() const {return m_mCharm;}
468 
470  EvtComplex getCV1() const {return m_CV1;}
471 
473  EvtComplex getCV2() const {return m_CV2;}
474 
476  EvtComplex getCS1() const {return m_CS1;}
477 
479  EvtComplex getCS2() const {return m_CS2;}
480 
482  EvtComplex getCT() const {return m_CT;}
483 
485  void setRho12(double v) {m_rho12 = v;}
486 
488  void setRhoA12(double v) {m_rhoA12 = v;}
489 
491  void setR11(double v) {m_ffR11 = v;}
492 
494  void setR21(double v) {m_ffR21 = v;}
495 
497  void setAS1(double v) {m_aS1 = v;}
498 
500  void setAR3(double v) {m_aR3 = v;}
501 
503  void setMB(double m) {m_mB = m;}
504 
506  void setMD(double m) {m_mD = m;}
507 
509  void setMDst(double m) {m_mDst = m;}
510 
512  void setMBottom(double m) {m_mBottom = m;}
513 
515  void setMCharm(double m) {m_mCharm = m;}
516 
518  void setCV1(const EvtComplex& v) {m_CV1 = v;}
519 
521  void setCV2(const EvtComplex& v) {m_CV2 = v;}
522 
524  void setCS1(const EvtComplex& v) {m_CS1 = v;}
525 
527  void setCS2(const EvtComplex& v) {m_CS2 = v;}
528 
530  void setCT(const EvtComplex& v) {m_CT = v;}
531 
532  private:
533  // Parameters
534 
535  // physics constant <-- not affect distributions
536  //double hbar;
537  //double GF;
538  //double Vcb;
539 
541  double m_rho12;
542 
544  double m_rhoA12;
545 
547  double m_ffR11;
548 
550  double m_ffR21;
551 
553  double m_aS1;
554 
556  double m_aR3;
557 
559  double m_mB;
560 
562  double m_mD;
563 
565  double m_mDst;
566 
568  double m_mBottom;
569 
571  double m_mCharm;
572 
574  EvtComplex m_CV1;
575 
577  EvtComplex m_CV2;
578 
580  EvtComplex m_CS1;
581 
583  EvtComplex m_CS2;
584 
586  EvtComplex m_CT;
587 
593  bool chkDhel(int Dhel) const;
594 
598  bool chkwhel(int whel) const;
599 
603  bool chktauhel(int tauhel) const;
604 
608  //bool chkcostau(double costau) const;
609 
610  };
611 
613 } // Belle 2 Namespace
The class calculates the helicity amplitude of semi-tauonic B decays including new physics effects ba...
void setCV1(const EvtComplex &v)
Sets the Wilson coeffcient CV1.
double getAS1() const
Returns form factor 1/m_Q correction factor a_S1.
double m_mCharm
c quark mass (running mass at m_b scale), used for scalar form factor term )
EvtComplex getCS1() const
Returns the Wilson coeffcient CS1.
double getMDst() const
Returns the daughter vector (D*) meson mass.
void setCT(const EvtComplex &v)
Sets the Wilson coeffcient CT.
double m_mBottom
b quark mass (running mass at m_b scale), used for scalar form factor term
double aR3() const
HQET correction factor for the uncertainty of 1/m_Q correction.
void setAS1(double v)
Sets the form factor 1/m_Q correction parameter a_S1.
void setRhoA12(double v)
Sets the form factor parameter rho_A1^2.
double wmin() const
Minimum value of the velocity transfer variable w.
void setCV2(const EvtComplex &v)
Sets the Wilson coeffcient CV2.
void setCS2(const EvtComplex &v)
Sets the Wilson coeffcient CS2.
void setMDst(double m)
Sets the daughter vector (D) meson mass.
double rq() const
Ratio of the charm quark mass to the charm quark mass.
void setR11(double v)
Sets the form factor parameter R_1(1).
double ffV11() const
Form factor normalization factor for B->Dlnu.
double getRhoA12() const
Returns form factor parameter rho_A1^2.
EvtComplex getCV2() const
Returns the Wilson coeffcient CV2.
double wmax(double mtau, int Dhel) const
Maximum value of the velocity transfer variable w.
double ffA11() const
Form factor normalization factor for B->D*lnu.
void setR21(double v)
Sets the form factor parameter R_2(1).
double wfunc(int Dhel, double q2) const
Calculate the velocity transfer variable w.
void setCS1(const EvtComplex &v)
Sets the Wilson coeffcient CS1.
void setAR3(double v)
Sets the form factor 1/m_Q correction parameter a_R3.
void setMD(double m)
Sets the daughter scalar (D) meson mass.
double aS1() const
HQET correction factor for the uncertainty of 1/m_Q correction.
double r(int Dhel) const
Ratio of the daughter meson mass to the parent meson.
double getAR3() const
Returns form factor 1/m_Q correction factor a_R3.
EvtComplex getCV1() const
Returns the Wilson coeffcient CV1.
EvtComplex getCS2() const
Returns the Wilson coeffcient CS2.
void setRho12(double v)
Sets the form factor parameter rho_1^2.
double getMD() const
Returns the daughter scalar (D) meson mass.
double hV(double w) const
HQET D* axial vector form factor h_V(w).
double HadV2(int Dhel, int whel, double w) const
The function to calculate the Hadronic Amplitudes of right handed (V+A) type contribution.
double qh2(int Dhel, double w) const
Function to calculate the q^2 divided by the square of parent mass (m_B^2).
double hT1(double w) const
D* tensor form factor h_{T1}(w) in terms of axial vector form factors.
double hm(double w) const
HQET D vector form factor h_-(w).
bool chkwhel(int whel) const
Function to check if whel is in the valid range.
EvtComplex helAmp(double mtau, int tauhel, int Dhel, double w, double costau) const
The function calculates the helicity amplitude.
double dR3(double w) const
HQET correction factor for the scalar form factor for B->D*taunu.
double v(double mtau, double q2) const
Function to calculate the tau velocity.
double helampT(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of tensor type contribution.
double helampV1(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of left handed (V-A) contribution.
double Lep(const double mtau, int tauhel, int whel, double q2, double costau) const
The function to calculate the Leptonic Amplitudes for B->D*taunu decay of the vector type contributio...
double hA1(double w) const
HQET D* axial vector form factor h_{A1}(w).
double hS(double w) const
D scalar form factor h_S(w) in terms of vector form factors.
bool chktauhel(int tauhel) const
Function to check if tauhel is in the valid range.
double HadT(int Dhel, int whel1, int whel2, double w) const
The function to calculate the Hadronic Amplitudes of tensor type contribution.
double hT3(double w) const
D* tensor form factor h_{T3}(w).
double HadS1(int Dhel, double w) const
The function to calculate the Hadronic Amplitudes of scalar (S+P) type contribution.
double hT(double w) const
D tensor form factor h_T(w) in terms of vector form factors.
double helampS1(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of scalar (S+P) type contribution.
double hA2(double w) const
HQET D* axial vector form factor h_{A2}(w).
double helampSM(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of SM (left handed) contribution.
double hp(double w) const
HQET D vector form factor h_+(w).
double hP(double w) const
D* pseudo scalar form factor h_P(w) in terms of axial vector form factors.
double HadS2(int Dhel, double w) const
The function to calculate the Hadronic Amplitudes of scalar (S-P) type contribution.
double helampV2(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of right handed (V+A) contribution.
double hA3(double w) const
HQET D* axial vector form factor h_{A3}(w).
double helampS2(double mtau, int tauhel, int Dhel, double w, double costau) const
Helicity Amplitudes of scalar (S-P) type contribution.
double HadV1(int Dhel, int whel, double w) const
The function to calculate the Hadronic Amplitudes of left handed (V-A) type contribution.
double q2(int Dhel, double w) const
Function to calculate the q^2 of the decay (square of l+nu invariant mass).
double hT2(double w) const
D* tensor form factor h_{T2}(w).
double dS1(double w) const
HQET correction factor for the scalar form factor for B->Dtaunu.
Abstract base class for different kinds of events.