]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 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 | std::map<std::string, FormFactor> _f0Map; | |
85 | 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 | const double B_pi_f1(double t); | |
92 | const double B_pi_f0(double t); | |
93 | const double baryonF1F2(double t); | |
94 | const double G_p(double t); | |
95 | const double G_n(double t); | |
96 | ||
97 | const double baryon_gA(double t); | |
98 | const double baryon_hA(double t); | |
99 | const double baryon_gP(double t); | |
100 | const double baryon_fS(double t); | |
101 | ||
102 | const double D_A(double t); | |
103 | const double F_A(double t); | |
104 | const double D_P(double t); | |
105 | const double F_P(double t); | |
106 | const double D_S(double t); | |
107 | const double F_S(double t); | |
108 | ||
109 | // (mB1 - mB2)/(mq1 - mq1) | |
110 | double _massRatio; | |
111 | double _baryonMassSum; | |
112 | const double formFactorFit(double t, const std::vector<double>& params); | |
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 |