Line data Source code
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 0 : 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
|