Back to home page

EIC code displayed by LXR

 
 

    


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

0001 
0002 /***********************************************************************
0003 * Copyright 1998-2021 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 EVTBCLFF_HH
0022 #define EVTBCLFF_HH
0023 
0024 #include "EvtGenBase/EvtSemiLeptonicFF.hh"
0025 
0026 #include <array>
0027 
0028 /**
0029  * BCL Form Factors.
0030  */
0031 class EvtBCLFF : public EvtSemiLeptonicFF {
0032   public:
0033     /** constructor */
0034     EvtBCLFF( int numarg, double* arglist );
0035 
0036     /**
0037    * Scalar FF's. Implementation follows arXiv:1509.06938v3.
0038    *
0039    * For the scalar FF, the arglist in the constructor should contain 8 expansion parameters:
0040    * b+_0, b+_1, b+_2, b+_3, b0_0, b0_1, b0_2, b0_3
0041    *
0042    * @param parent
0043    * @param daughter
0044    * @param t  Momentum transfer, also called q2. q2 = (p_B - p_M)^2
0045    * @param fpf  f_+(q2).
0046    * @param f0f  f_0(q2).
0047    */
0048     void getscalarff( EvtId parent, EvtId daughter, double t, double,
0049                       double* fpf, double* f0f ) override;
0050 
0051     /**
0052    * Vector FF's. Implementation follows arXiv:1503.05534v3.
0053    * It is assumed that each expansion has three terms (hardcoded). However, this can be easily expanded or
0054    * generalized. It is not done, because this way we can check if the number of arguments in the decay file is the
0055    * correct one.
0056    *
0057    * For the vector FF, the arglist in the constructor should contain 11 expansion parameters:
0058    * A0_1, A0_2, A1_0, A1_1, A1_2, A12_0, A12_1, A12_2, V_0, V_1, V_2
0059    * Nota bene: A0_0 is correlated to A12_0.
0060    *
0061    * @param parent
0062    * @param daughter
0063    * @param t  Momentum transfer, also called q2. q2 = (p_B - p_M)^2
0064    * @param a1f  A1(q2)
0065    * @param a2f  A2(q2)
0066    * @param vf  V(q2)
0067    * @param a0f  A0(q2)
0068    */
0069     void getvectorff( EvtId parent, EvtId daughter, double t, double, double* a1f,
0070                       double* a2f, double* vf, double* a0f ) override;
0071 
0072     /// Not Implemented
0073     void gettensorff( EvtId parent, EvtId daughter, double t, double,
0074                       double* hf, double* kf, double* bp, double* bm ) override;
0075 
0076     /// Not Implemented
0077     void getbaryonff( EvtId, EvtId, double, double, double*, double*, double*,
0078                       double* ) override;
0079 
0080     /// Not Implemented
0081     void getdiracff( EvtId, EvtId, double, double, double*, double*, double*,
0082                      double*, double*, double* ) override;
0083 
0084     /// Not Implemented
0085     void getraritaff( EvtId, EvtId, double, double, double*, double*, double*,
0086                       double*, double*, double*, double*, double* ) override;
0087 
0088   private:
0089     /// Total number of parameters passed to the model
0090     int m_numBCLFFCoefficients;
0091     /// Parameters passed to the model; BCL expansion coefficients
0092     std::array<double, 19> m_BCLFFCoefficients;
0093 
0094     /// Mass of the 0- resonance for the parametrization of the vector FF
0095     static constexpr double m_resonance0Minus{ 5.279 };    //  * Unit.GeV
0096     /// Mass of the 1- resonance for the parametrization of the vector FF
0097     static constexpr double m_resonance1Minus{ 5.325 };    //  * Unit.GeV
0098     /// Mass of the 1+ resonance for the parametrization of the vector FF
0099     static constexpr double m_resonance1Plus{ 5.724 };    //  * Unit.GeV
0100 };
0101 
0102 #endif