Back to home page

EIC code displayed by LXR

 
 

    


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

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 EVTBTO3HCP_HH
0022 #define EVTBTO3HCP_HH
0023 
0024 #include "EvtGenBase/EvtDecayAmp.hh"
0025 #include "EvtGenBase/EvtVector4R.hh"
0026 
0027 class EvtParticle;
0028 
0029 class EvtBTo3hCP {
0030   public:
0031 
0032     void EvtKpipi( double alpha, double beta, int iset, EvtVector4R& p_K_plus,
0033                    EvtVector4R& p_pi_minus, EvtVector4R& p_gamma_1,
0034                    EvtVector4R& p_gamma_2, double& Real_B0, double& Imag_B0,
0035                    double& Real_B0bar, double& Imag_B0bar );
0036 
0037     void Evt3pi( double alpha, int iset, EvtVector4R& p_K_plus,
0038                  EvtVector4R& p_pi_minus, EvtVector4R& p_gamma_1,
0039                  EvtVector4R& p_gamma_2, double& Real_B0, double& Imag_B0,
0040                  double& Real_B0bar, double& Imag_B0bar );
0041 
0042     void Evt3piMPP( double alpha, int iset, EvtVector4R& p_p1,
0043                     EvtVector4R& p_p2, EvtVector4R& p_p3, double& Real_B0,
0044                     double& Imag_B0, double& Real_B0bar, double& Imag_B0bar );
0045 
0046     void Evt3piP00( double alpha, int iset, EvtVector4R& p_p1,
0047                     EvtVector4R& p_p1_gamma1, EvtVector4R& p_p1_gamma2,
0048                     EvtVector4R& p_p2_gamma1, EvtVector4R& p_p2_gamma2,
0049                     double& Real_B0, double& Imag_B0, double& Real_B0bar,
0050                     double& Imag_B0bar );
0051 
0052   private:
0053     void setConstants( double balpha, double bbeta );
0054     int computeKpipi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
0055                       double& real_B0, double& imag_B0, double& real_B0bar,
0056                       double& imag_B0bar, int set );
0057     int compute3pi( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
0058                     double& real_B0, double& imag_B0, double& real_B0bar,
0059                     double& imag_B0bar, int set );
0060     int compute3piMPP( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
0061                        double& real_B0, double& imag_B0, double& real_B0bar,
0062                        double& imag_B0bar, int set );
0063     int compute3piP00( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
0064                        double& real_B0, double& imag_B0, double& real_B0bar,
0065                        double& imag_B0bar, int set );
0066 
0067     // Modes are : 0 = Kpipi, 1 = 3pi, 2 = MPP, 3 = P00
0068     void firstStep( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3, int mode );
0069     void generateSqMasses_Kpipi( double& m12, double& m13, double& m23,
0070                                  double MB2, double m1sq, double m2sq,
0071                                  double m3sq );
0072     void generateSqMasses_3pi( double& m12, double& m13, double& m23, double MB2,
0073                                double m1sq, double m2sq, double m3sq );
0074     void generateSqMasses_3piMPP( double& m12, double& m13, double& m23,
0075                                   double MB2, double m1sq, double m2sq,
0076                                   double m3sq );
0077     void generateSqMasses_3piP00( double& m12, double& m13, double& m23,
0078                                   double MB2, double m1sq, double m2sq,
0079                                   double m3sq );
0080 
0081     void rotation( EvtVector4R& p, int newRot );
0082     void gammaGamma( EvtVector4R& p, EvtVector4R& pgamma1, EvtVector4R& pgamma2 );
0083     EvtComplex BreitWigner( EvtVector4R& p1, EvtVector4R& p2, EvtVector4R& p3,
0084                             int& ierr, double Mass = 0, double Width = 0 );
0085     EvtComplex EvtRBW( double s, double Am2, double Gam, double Am2Min );
0086     EvtComplex EvtCRhoF_W( double s );
0087     EvtComplex EvtcBW_KS( double s, double Am2, double Gam );
0088     EvtComplex EvtcBW_GS( double s, double Am2, double Gam );
0089     double d( double AmRho2 );
0090     double k( double s );
0091     double Evtfs( double s, double AmRho2, double GamRho );
0092     double h( double s );
0093     double dh_ds( double s );
0094 
0095     EvtComplex Mat_S1, Mat_S2, Mat_S3, Mat_S4, Mat_S5, Nat_S1, Nat_S2, Nat_S3,
0096         Nat_S4, Nat_S5, MatKstarp, MatKstar0, MatKrho, NatKstarp, NatKstar0,
0097         NatKrho;
0098     double alphaCP = 1.365;
0099     double betaCP = 0.362;
0100     double MA2 = 27.927981186; 
0101     double MB2 = 27.929242450; 
0102     double MC2 = 28.153482608;
0103     double pi = 3.141592653;
0104     double Mass_rho = 0.770;
0105     double Gam_rho = 0.150;
0106     double M_B = 5.2794;
0107     double M_pip = 0.13957;
0108     double M_pim = 0.13957;
0109     double M_pi0 = 0.134976;
0110     double M_Kp = 0.49368;
0111     double Mass_Kstarp = 0.8916;
0112     double Mass_Kstar0 = 0.8961;
0113     double Gam_Kstarp = 0.0498;
0114     double Gam_Kstar0 = 0.0505;
0115 
0116     double rotMatrix[3][3];
0117     double factor_max = 1;
0118 };
0119 
0120 #endif