Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-04-19 09:10:04

0001 #ifndef HADRONS_ME_Library_PseudoScalar_Decay_MEs_H
0002 #define HADRONS_ME_Library_PseudoScalar_Decay_MEs_H
0003 
0004 #include "HADRONS++/ME_Library/HD_ME_Base.H"
0005 #include "ATOOLS/Math/MyComplex.H"
0006 
0007 namespace HADRONS {
0008   class P_PP : public HD_ME_Base {
0009     Complex m_global;
0010   public:
0011     P_PP(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0012       HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0013     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0014     void SetModelParameters(GeneralModel);
0015   };
0016 
0017   class P_LNu : public HD_ME_Base {
0018     Complex m_global;
0019   public:
0020     P_LNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0021       HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0022     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0023     void SetModelParameters(GeneralModel);
0024   };
0025 
0026   class P_PV : public HD_ME_Base {
0027     int     m_npol;
0028     Complex m_global;
0029   public:
0030     P_PV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0031       HD_ME_Base(flavs,n,indices,name), m_npol(3), m_global(Complex(0.,0.)) {};
0032     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0033     void SetModelParameters(GeneralModel);
0034   };
0035 
0036   class P_VV : public HD_ME_Base {
0037     int     m_npol1,m_npol2;
0038     Complex m_global;
0039   public:
0040     P_VV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0041       HD_ME_Base(flavs,n,indices,name), m_npol1(3), m_npol2(3), m_global(Complex(0.,0.)) {};
0042     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0043     void SetModelParameters(GeneralModel);
0044   };
0045 
0046   class S_VV : public HD_ME_Base {
0047     int     m_npol1,m_npol2;
0048     Complex m_global;
0049   public:
0050     S_VV(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0051       HD_ME_Base(flavs,n,indices,name), m_npol1(3), m_npol2(3), m_global(Complex(0.,0.)) {};
0052     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0053     void SetModelParameters(GeneralModel);
0054   };
0055 
0056   class P_PT : public HD_ME_Base {
0057     Complex m_global;
0058   public:
0059     P_PT(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0060       HD_ME_Base(flavs,n,indices,name), m_global(Complex(0.,0.)) {};
0061     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0062     void SetModelParameters(GeneralModel);
0063   };
0064 
0065   class P_PPP : public HD_ME_Base {
0066     int     m_ff;
0067     double  m_g,m_h,m_j,m_k,m_f;
0068     Complex m_global;
0069     double  Formfactor(const ATOOLS::Vec4D *);
0070   public:
0071     P_PPP(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0072       HD_ME_Base(flavs,n,indices,name), 
0073       m_ff(0), m_g(0.), m_h(0.), m_j(0.), m_k(0.), m_f(0.),
0074       m_global(Complex(0.,0.)) {};
0075     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0076     void SetModelParameters(GeneralModel);
0077   };
0078 
0079   class P_VFF : public HD_ME_Base {
0080     int     m_npol;
0081     bool    m_VDM;
0082     double  m_VDM_mass, m_VDM_width;
0083     Complex m_global;
0084   public:
0085     P_VFF(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0086       HD_ME_Base(flavs,n,indices,name), 
0087       m_npol(3), m_VDM(false), m_VDM_mass(0.), m_VDM_width(0.), m_global(Complex(0.,0.)) {};
0088     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0089     void SetModelParameters(GeneralModel);
0090   };
0091 
0092   class P_PLNu : public HD_ME_Base {
0093     int     m_ff;
0094     double  m_Norm,m_fP,m_aplus0,m_aplus1,m_azero0,m_azero1,m_masssqr_diff;
0095     Complex m_global;
0096 
0097     double fplus(const double,const double,const double);
0098     double fzero(const double,const double,const double);
0099   public:
0100     P_PLNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0101       HD_ME_Base(flavs,n,indices,name), m_ff(0),m_fP(1.),m_Norm(1.),
0102       m_aplus0(0.),m_aplus1(0.),m_azero0(0.),m_azero1(0.),m_masssqr_diff(0.),
0103       m_global(Complex(0.,0.)) {};
0104     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0105     void SetModelParameters(GeneralModel);
0106   };
0107 
0108   class P_PPLNu : public HD_ME_Base {
0109     int     m_ff;
0110     double  m_fP,m_f1_0,m_lambda1,m_f2_0,m_lambda2,m_g_0,m_kappa;
0111     Complex m_global;
0112 
0113     double f1(const double,const double,const double);
0114     double f2(const double,const double,const double);
0115     double g(const double,const double,const double);
0116   public:
0117     P_PPLNu(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0118       HD_ME_Base(flavs,n,indices,name), m_ff(0),m_fP(1.),
0119       m_f1_0(1.),m_lambda1(0.),m_f2_0(1.),m_lambda2(0.),m_g_0(1.),m_kappa(0.),
0120       m_global(Complex(0.,0.)) {};
0121     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0122     void SetModelParameters(GeneralModel);
0123   };
0124 
0125   class P_FFFF : public HD_ME_Base {
0126     bool m_exchange;
0127     Complex m_global;
0128   public:
0129     P_FFFF(ATOOLS::Flavour * flavs,int n,int* indices,std::string name) :
0130       HD_ME_Base(flavs,n,indices,name), m_exchange(false), m_global(Complex(0.,0.)) {};
0131     void Calculate(const ATOOLS::Vec4D_Vector& momenta, bool anti=false);
0132     void SetModelParameters(GeneralModel);
0133   };
0134 
0135   /*!
0136     \class P_PP
0137     \brief For decays \f$P(S)\to P_1P_2\f$, \f$P(S)\to S_1S_2\f$
0138 
0139     \f[
0140     {\cal M} = g\\exp(i\\phi)
0141     \f]
0142   */
0143   /*!
0144     \class P_LNu
0145     \brief For decays \f$P\to \ell\bar\nu_l\f$
0146 
0147     \f[
0148     {\cal M} = \frac{G_F}{\sqrt{2}} f_Pm_P V_{\rm CKM}
0149     \bar u_\ell(1-\gamma_5)u_{\bar\nu}
0150     \f]
0151   */
0152   /*!
0153     \class P_PV
0154     \brief For decays \f$P\to P'V\f$ and \f$S\to S'V\f$.
0155 
0156     \f[
0157     {\cal M} = g\epsilon^\mu_V(p_P+p_{P'})_\mu
0158     \f]
0159   */
0160   /*!
0161     \class P_VV
0162     \brief For decays \f$P\to VV'\f$
0163 
0164     \f[
0165     {\cal M} = g\epsilon_{\mu\nu\rho\sigma}
0166     p^\mu_V\epsilon^\nu_V p^\rho_{V'}\epsilon^\sigma_{V'}
0167     \f]
0168   */
0169   /*!
0170     \class S_VV
0171     \brief For decays \f$S\to VV'\f$
0172 
0173     \f[
0174     {\cal M} = g\epsilon^\mu_V\epsilon_{\mu, V'}
0175     \f]
0176   */
0177   /*!
0178     \class P_PT
0179     \brief For decays \f$P\to P'T\f$
0180 
0181     \f[
0182     {\cal M} = g\epsilon^{\mu\nu}_Tp_{\mu, P}p_{\nu, P'}
0183     \f]
0184   */
0185   /*!
0186     \class P_VFF
0187     \brief For decays \f$P\to V\ell\bar\ell\f$
0188 
0189     \f[
0190     {\cal M} = \frac{g}{q^2_{\ell\bar\ell}}
0191     \epsilon_{\mu\nu\rho\sigma}p^\mu_V\epsilon^\nu_Vq^\rho_{\ell\bar\ell}
0192     (\bar u_\ell\gamma^\sigma u_{\bar\ell})
0193     \f]
0194 
0195     In case we want to do a VDM model, the propagator term \f$1/q^2\f$ should be replaced 
0196     with \f$-(m_{VDM}^2-i\Gamma_{VDM}m_{VDM})/(q^2-m_{VDM}^2+i\Gamma_{VDM}m_{VDM})\f$.
0197   */
0198   /*!
0199     \class P_PLNu
0200     \brief For decays \f$P\to P'\ell\bar\nu_l\f$
0201 
0202     \f[
0203     {\cal M} = \frac{G_F}{\sqrt{2}}N_{PP'}
0204     \left(f_+(q_{\ell\nu}^2)(p+p')_\mu+f_-(q_{\ell\nu}^2)(p-p')_\mu\right)
0205     \bar u_\ell\gamma^\mu(1-\gamma_5)u_{\bar\nu}
0206     \f]\,,
0207     where the form factors are given through the expansion
0208     \f[\begin{align}
0209     f_+(p^2,{p'}^2,q^2) &= a_+^0 + a_+^1\frac{q^2}{f_{P'}^2}\nonumber \\
0210     f_-(p^2,{p'}^2,q^2) &= a_-^0 + a_-^1\frac{p^2-{p'}^2}{f_{P'}^2}\,.
0211     \end{align}\f]
0212     By default, these values are set to \f$a_+^0 = -1\f$ and \f$a_-^0=a_-^1=a_+^1=0\f$.
0213   */
0214   /*!
0215     \class P_FFFF
0216     \brief For decays \f$P\to \ell\bar\ell\ell'\bar\ell'\f$
0217 
0218     \f[
0219     {\cal M} = \frac{g}{q^2_{\ell\bar\ell}q^2_{\ell'\bar\ell'}}
0220     \epsilon_{\mu\nu\rho\sigma}
0221     (\bar u_\ell\gamma^\mu u_{\bar\ell})q^\nu_{\ell\bar\ell}
0222     (\bar u_\ell'\gamma^\rho u_{\bar\ell'})q^\sigma_{\ell'\bar\ell'}
0223     \f]
0224 
0225     In case we want to do a VDM model, the propagator terms \f$1/q^2\f$ should
0226     be replaced with \f$-(m_{VDM}^2-i\Gamma_{VDM}m_{VDM})/
0227     (q^2-m_{VDM}^2+i\Gamma_{VDM}m_{VDM})\f$.  Also, exchange diagrams for 
0228     four identical leptons should be considered.
0229   */
0230   
0231 
0232 };
0233 
0234 #endif