File indexing completed on 2026-08-06 09:20:05
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #ifndef EVTBLLNUL_AMP_HH
0022 #define EVTBLLNUL_AMP_HH
0023
0024 #include "EvtGenBase/EvtAmp.hh"
0025 #include "EvtGenBase/EvtComplex.hh"
0026 #include "EvtGenBase/EvtId.hh"
0027 #include "EvtGenBase/EvtTensor4C.hh"
0028 #include "EvtGenBase/EvtVector4R.hh"
0029
0030 #include <vector>
0031
0032 class EvtParticle;
0033
0034
0035
0036
0037
0038 class EvtBLLNuLAmp {
0039 public:
0040 EvtBLLNuLAmp( double Vub = 4.09e-3 );
0041 EvtBLLNuLAmp( double qSqMin, double kSqMin, bool symmetry,
0042 double Vub = 4.09e-3 );
0043
0044 void CalcAmp( EvtParticle* parent, EvtAmp& amp ) const;
0045 void setParameters( double qSqMin, double kSqMin, bool symmetry );
0046
0047
0048 class ResPole final {
0049 public:
0050 ResPole( double mass, double width, double coupling );
0051
0052 EvtComplex propagator( double qSq, int numForm = 0 ) const;
0053
0054 double getMass() const { return m0_; }
0055 double getMassSq() const { return m0Sq_; }
0056 double getWidth() const { return w0_; }
0057 double getCoupling() const { return c_; }
0058
0059 private:
0060 double m0_;
0061 double m0Sq_;
0062 double w0_;
0063 double c_;
0064 EvtComplex I_;
0065 EvtComplex Imw_;
0066 };
0067
0068 protected:
0069 EvtTensor4C getHadronTensor( const EvtVector4R& q, const EvtVector4R& k,
0070 const double qSq, const double kSq,
0071 const double MB, const int sign ) const;
0072
0073 std::vector<EvtComplex> getVMDTerms( double qSq, double kSq, double MB ) const;
0074
0075 EvtComplex getBStarTerm( double qSq, double kSq, double MB ) const;
0076
0077 double FF_B2Bstar( double qSq ) const;
0078
0079 double FF_V( double kSq ) const;
0080
0081 double FF_A1( double kSq ) const;
0082
0083 double FF_A2( double kSq ) const;
0084
0085 private:
0086
0087 double qSqMin_;
0088 double kSqMin_;
0089
0090
0091 bool symmetry_;
0092
0093
0094 EvtId BpId_, BnId_;
0095
0096
0097 double coupling_, sqrt2_;
0098 double fBu_;
0099
0100
0101 EvtBLLNuLAmp::ResPole Bstar_, Upsilon_;
0102
0103 std::vector<EvtBLLNuLAmp::ResPole> resPoles_;
0104 int nPoles_;
0105
0106
0107 EvtComplex zero_, unitI_;
0108 };
0109
0110 inline void EvtBLLNuLAmp::setParameters( double qSqMin, double kSqMin,
0111 bool symmetry )
0112 {
0113 qSqMin_ = qSqMin;
0114 kSqMin_ = kSqMin;
0115 symmetry_ = symmetry;
0116 }
0117
0118 #endif