StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EvtBBScalar.hh
1 //--------------------------------------------------------------------------
2 //
3 // Environment:
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
7 //
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 2003 Caltech
10 //
11 // Module: EvtGen/EvtBBScalar
12 //
13 // Description:Implementation of the decay B- -> lambda p_bar pi according to
14 // hep-ph/0204185, hep-ph/0211240
15 // This model is intended to be applicable to all decays of the type B-> baryon baryon scalar
16 //
17 // Modification history:
18 //
19 // Jan Strube March 24th, 2006 Module created
20 //
21 //------------------------------------------------------------------------
22 
23 #ifndef EVTBBSCALAR_HH
24 #define EVTBBSCALAR_HH
25 
26 #include "EvtGenBase/EvtDecayAmp.hh"
27 #include "EvtGenBase/EvtPDL.hh"
28 #include "EvtGenBase/EvtComplex.hh"
29 #include "EvtGenBase/EvtParticle.hh"
30 #include "EvtGenBase/EvtScalarParticle.hh"
31 #include "EvtGenBase/EvtDiracParticle.hh"
32 #include "EvtGenBase/EvtConst.hh"
33 #include "EvtGenBase/EvtId.hh"
34 #include "EvtGenBase/EvtVector4C.hh"
35 
36 #include <map>
37 #include <string>
38 #include <vector>
39 #include <bitset>
40 
41 struct FormFactor {
42  double value;
43  double sigma1;
44  double sigma2;
45  double mV;
46 };
47 
48 enum Baryons {
49  Lambda, Proton, Neutron, Sigma0, Sigma_minus, Xi0, Xi_minus, nBaryons
50 };
51 
52 
53 class EvtBBScalar : public EvtDecayAmp {
54 
55 public:
56  EvtBBScalar();
57  std::string getName();
58  EvtDecayBase* clone();
59  void decay(EvtParticle* p);
60  void init();
61  void initProbMax();
62 
63 private:
64  // used values of constants
65  static const EvtComplex I;
66  static const EvtComplex V_ub;
67  static const EvtComplex V_us_star;
68  static const EvtComplex a1;
69  static const EvtComplex V_tb;
70  static const EvtComplex V_ts_star;
71  static const EvtComplex a4;
72  static const EvtComplex a6;
73 
74  // used parameters in the calculation of the magnetic form factors
75  static const double x[];
76  static const double y[];
77  // quark masses as used in the model
78  static const double m_s;
79  static const double m_u;
80  static const double m_b;
81 
82  // used to choose the right value for the form factor depending on the type of scalar
83  std::string _scalarType;
84  mutable std::map<std::string, FormFactor> _f0Map;
85  mutable std::map<std::string, FormFactor> _f1Map;
86 
87  // only consider F1+F2 here
88  std::bitset<nBaryons> _baryonCombination;
89  void setKnownBaryonTypes(const EvtId& baryon);
90 
91  double B_pi_f1(double t) const ;
92  double B_pi_f0(double t) const ;
93  double baryonF1F2(double t) const ;
94  double G_p(double t) const ;
95  double G_n(double t) const ;
96 
97  double baryon_gA(double t) const;
98  double baryon_hA(double t) const;
99  double baryon_gP(double t) const ;
100  double baryon_fS(double t) const ;
101 
102  double D_A(double t) const ;
103  double F_A(double t) const ;
104  double D_P(double t) const ;
105  double F_P(double t) const ;
106  double D_S(double t) const ;
107  double F_S(double t) const ;
108 
109  // (mB1 - mB2)/(mq1 - mq1)
110  double _massRatio;
111  double _baryonMassSum;
112  double formFactorFit(double t, const std::vector<double>& params) const ;
113 
114  static const EvtComplex const_B;
115  static const EvtComplex const_C;
116  const EvtVector4C
117  amp_A(const EvtVector4R& p4B, const EvtVector4R& p4Scalar);
118  const EvtComplex
119  amp_B(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
120  , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
121  , int index);
122  const EvtComplex
123  amp_B_vectorPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
124  , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
125  , int index);
126  const EvtComplex
127  amp_B_axialPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
128  , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
129  , int index);
130  const EvtComplex
131  amp_C(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
132  , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
133  , int index);
134  const EvtComplex
135  amp_C_scalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
136  const EvtComplex
137  amp_C_pseudoscalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
138 
139  // initialize phasespace and calculate the amplitude for one (i=0,1) state of the photon
140  EvtComplex calcAmpliude(const EvtParticle* p, const unsigned int polState);
141 };
142 
143 #endif
Definition: EvtId.hh:27