File indexing completed on 2026-08-06 09:20:04
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #ifndef EVTBBSCALAR_HH
0022 #define EVTBBSCALAR_HH
0023
0024 #include "EvtGenBase/EvtComplex.hh"
0025 #include "EvtGenBase/EvtConst.hh"
0026 #include "EvtGenBase/EvtDecayAmp.hh"
0027 #include "EvtGenBase/EvtDiracParticle.hh"
0028 #include "EvtGenBase/EvtId.hh"
0029 #include "EvtGenBase/EvtPDL.hh"
0030 #include "EvtGenBase/EvtParticle.hh"
0031 #include "EvtGenBase/EvtScalarParticle.hh"
0032 #include "EvtGenBase/EvtVector4C.hh"
0033
0034 #include <bitset>
0035 #include <map>
0036 #include <string>
0037 #include <vector>
0038
0039
0040
0041
0042
0043 struct FormFactor {
0044 double value;
0045 double sigma1;
0046 double sigma2;
0047 double mV;
0048 };
0049
0050 enum Baryons
0051 {
0052 Lambda,
0053 Proton,
0054 Neutron,
0055 Sigma0,
0056 Sigma_minus,
0057 Xi0,
0058 Xi_minus,
0059 nBaryons
0060 };
0061
0062 class EvtBBScalar : public EvtDecayAmp {
0063 public:
0064 EvtBBScalar();
0065 std::string getName() override;
0066 EvtBBScalar* clone() override;
0067 void decay( EvtParticle* p ) override;
0068 void init() override;
0069 void initProbMax() override;
0070
0071 private:
0072
0073 static const EvtComplex I;
0074 static const EvtComplex V_ub;
0075 static const EvtComplex V_us_star;
0076 static const EvtComplex a1;
0077 static const EvtComplex V_tb;
0078 static const EvtComplex V_ts_star;
0079 static const EvtComplex a4;
0080 static const EvtComplex a6;
0081
0082
0083 static const double x[];
0084 static const double y[];
0085
0086 static const double m_s;
0087 static const double m_u;
0088 static const double m_b;
0089
0090
0091 std::string _scalarType;
0092 mutable std::map<std::string, FormFactor> _f0Map;
0093 mutable std::map<std::string, FormFactor> _f1Map;
0094
0095
0096 std::bitset<nBaryons> _baryonCombination;
0097 void setKnownBaryonTypes( const EvtId& baryon );
0098
0099 double B_pi_f1( double t ) const;
0100 double B_pi_f0( double t ) const;
0101 double baryonF1F2( double t ) const;
0102 double G_p( double t ) const;
0103 double G_n( double t ) const;
0104
0105 double baryon_gA( double t ) const;
0106 double baryon_hA( double t ) const;
0107 double baryon_gP( double t ) const;
0108 double baryon_fS( double t ) const;
0109
0110 double D_A( double t ) const;
0111 double F_A( double t ) const;
0112 double D_P( double t ) const;
0113 double F_P( double t ) const;
0114 double D_S( double t ) const;
0115 double F_S( double t ) const;
0116
0117
0118 double _massRatio;
0119 double _baryonMassSum;
0120 double formFactorFit( double t, const std::vector<double>& params ) const;
0121
0122 static const EvtComplex const_B;
0123 static const EvtComplex const_C;
0124 const EvtVector4C amp_A( const EvtVector4R& p4B, const EvtVector4R& p4Scalar );
0125 const EvtComplex amp_B( const EvtDiracParticle* baryon1,
0126 const EvtDiracSpinor& b1Pol,
0127 const EvtDiracParticle* baryon2,
0128 const EvtDiracSpinor& b2Pol, int index );
0129 const EvtComplex amp_B_vectorPart( const EvtDiracParticle* baryon1,
0130 const EvtDiracSpinor& b1Pol,
0131 const EvtDiracParticle* baryon2,
0132 const EvtDiracSpinor& b2Pol, int index );
0133 const EvtComplex amp_B_axialPart( const EvtDiracParticle* baryon1,
0134 const EvtDiracSpinor& b1Pol,
0135 const EvtDiracParticle* baryon2,
0136 const EvtDiracSpinor& b2Pol, int index );
0137 const EvtComplex amp_C( const EvtDiracParticle* baryon1,
0138 const EvtDiracSpinor& b1Pol,
0139 const EvtDiracParticle* baryon2,
0140 const EvtDiracSpinor& b2Pol, int index );
0141 const EvtComplex amp_C_scalarPart( const EvtDiracSpinor& b1Pol,
0142 const EvtDiracSpinor& b2Pol, double t );
0143 const EvtComplex amp_C_pseudoscalarPart( const EvtDiracSpinor& b1Pol,
0144 const EvtDiracSpinor& b2Pol,
0145 double t );
0146
0147
0148 EvtComplex calcAmpliude( const EvtParticle* p, const unsigned int polState );
0149 };
0150
0151 #endif