Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-06 09:20:06

0001 
0002 /***********************************************************************
0003 * Copyright 1998-2020 CERN for the benefit of the EvtGen authors       *
0004 *                                                                      *
0005 * This file is part of EvtGen.                                         *
0006 *                                                                      *
0007 * EvtGen is free software: you can redistribute it and/or modify       *
0008 * it under the terms of the GNU General Public License as published by *
0009 * the Free Software Foundation, either version 3 of the License, or    *
0010 * (at your option) any later version.                                  *
0011 *                                                                      *
0012 * EvtGen is distributed in the hope that it will be useful,            *
0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
0015 * GNU General Public License for more details.                         *
0016 *                                                                      *
0017 * You should have received a copy of the GNU General Public License    *
0018 * along with EvtGen.  If not, see <https://www.gnu.org/licenses/>.     *
0019 ***********************************************************************/
0020 
0021 #ifndef EVTDTOKPIENU_HH
0022 #define EVTDTOKPIENU_HH
0023 
0024 #include "EvtGenBase/EvtComplex.hh"
0025 #include "EvtGenBase/EvtDecayProb.hh"
0026 #include "EvtGenBase/EvtVector4R.hh"
0027 
0028 #include <array>
0029 
0030 class EvtParticle;
0031 
0032 class EvtDToKpienu : public EvtDecayProb {
0033   public:
0034     std::string getName() override;
0035     EvtDecayBase* clone() override;
0036 
0037     void init() override;
0038     void initProbMax() override;
0039     void decay( EvtParticle* p ) override;
0040 
0041   private:
0042     void KinVGen( const EvtVector4R& vp4_K, const EvtVector4R& vp4_Pi,
0043                   const EvtVector4R& vp4_Lep, const EvtVector4R& vp4_Nu,
0044                   const int charm, double& m2, double& q2, double& cosV,
0045                   double& cosL, double& chi ) const;
0046     double calPDF( const double m2, const double q2, const double cosV,
0047                    const double cosL, const double chi ) const;
0048     void ResonanceP( const double m, const double q, const double mV,
0049                      const double mA, const double V_0, const double A1_0,
0050                      const double A2_0, const double m0, const double width0,
0051                      const double rBW, double& amplitude, double& delta,
0052                      EvtComplex& F11, EvtComplex& F21, EvtComplex& F31 ) const;
0053     void NRS( const double m, const double q, const double rS, const double rS1,
0054               const double a_delta, const double b_delta, const double mA,
0055               const double m0, const double width0, double& amplitude,
0056               double& delta, EvtComplex& F10 ) const;
0057     void ResonanceD( const double m, const double q, const double mV,
0058                      const double mA, const double TV_0, const double T1_0,
0059                      const double T2_0, const double m0, const double width0,
0060                      const double rBW, double& amplitude, double& delta,
0061                      EvtComplex& F12, EvtComplex& F22, EvtComplex& F32 ) const;
0062     double getPStar( const double m, const double m1, const double m2 ) const;
0063     double getF1( const double m, const double m0, const double m_c1,
0064                   const double m_c2, const double rBW ) const;
0065     double getF2( const double m, const double m0, const double m_c1,
0066                   const double m_c2, const double rBW ) const;
0067     double getWidth0( const double m, const double m0, const double m_c1,
0068                       const double m_c2, const double width0 ) const;
0069     double getWidth1( const double m, const double m0, const double m_c1,
0070                       const double m_c2, const double width0,
0071                       const double rBW ) const;
0072     double getWidth2( const double m, const double m0, const double m_c1,
0073                       const double m_c2, const double width0,
0074                       const double rBW ) const;
0075     EvtComplex getCoef( const double rho, const double phi ) const;
0076 
0077     int nAmps;
0078     std::array<int, 5> type;
0079 
0080     double rS;
0081     double rS1;
0082     double a_delta;
0083     double b_delta;
0084     double m0_1430_S;
0085     double width0_1430_S;
0086 
0087     double mV;
0088     double mA;
0089     double V_0;
0090     double A1_0;
0091     double A2_0;
0092     double m0;
0093     double width0;
0094     double rBW;
0095     double rho;
0096     double phi;
0097     double m0_1410;
0098     double width0_1410;
0099     double rho_1410;
0100     double phi_1410;
0101     double TV_0;
0102     double T1_0;
0103     double T2_0;
0104     double m0_1430;
0105     double width0_1430;
0106     double rho_1430;
0107     double phi_1430;
0108 
0109     double mD;
0110     double mPi;
0111     double mK;
0112     double Pi;
0113     double root2;
0114     double root2d3;
0115     double root1d2;
0116     double root3d2;
0117 };
0118 
0119 #endif