1 //--------------------------------------------------------------------------
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.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 2003 Caltech
11 // Module: EvtGen/EvtBBScalar
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
17 // Modification history:
19 // Jan Strube March 24th, 2006 Module created
21 //------------------------------------------------------------------------
23 #ifndef EVTBBSCALAR_HH
24 #define EVTBBSCALAR_HH
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"
49 Lambda, Proton, Neutron, Sigma0, Sigma_minus, Xi0, Xi_minus, nBaryons
53 class EvtBBScalar : public EvtDecayAmp {
57 std::string getName();
58 EvtDecayBase* clone();
59 void decay(EvtParticle* p);
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;
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;
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;
87 // only consider F1+F2 here
88 std::bitset<nBaryons> _baryonCombination;
89 void setKnownBaryonTypes(const EvtId& baryon);
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 ;
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 ;
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 ;
109 // (mB1 - mB2)/(mq1 - mq1)
111 double _baryonMassSum;
112 double formFactorFit(double t, const std::vector<double>& params) const ;
114 static const EvtComplex const_B;
115 static const EvtComplex const_C;
117 amp_A(const EvtVector4R& p4B, const EvtVector4R& p4Scalar);
119 amp_B(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
120 , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
123 amp_B_vectorPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
124 , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
127 amp_B_axialPart(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
128 , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
131 amp_C(const EvtDiracParticle* baryon1, const EvtDiracSpinor& b1Pol
132 , const EvtDiracParticle* baryon2, const EvtDiracSpinor& b2Pol
135 amp_C_scalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
137 amp_C_pseudoscalarPart(const EvtDiracSpinor& b1Pol, const EvtDiracSpinor& b2Pol, double t);
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);