Back to home page

EIC code displayed by LXR

 
 

    


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

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 EVTRARELBTOLLLFF_HH
0022 #define EVTRARELBTOLLLFF_HH 1
0023 
0024 // Include files
0025 
0026 /** @class EvtRareLbToLllFF EvtRareLbToLllFF.hh EvtGenModels/EvtRareLbToLllFF.hh
0027  *
0028  *
0029  *  @author Thomas Blake
0030  *  @date   2013-11-26
0031  */
0032 
0033 #include "EvtGenBase/EvtIdSet.hh"
0034 #include "EvtGenBase/EvtParticle.hh"
0035 
0036 #include "EvtGenModels/EvtRareLbToLllFFBase.hh"
0037 
0038 #include <array>
0039 #include <map>
0040 #include <memory>
0041 #include <string>
0042 
0043 class EvtRareLbToLllFF : public EvtRareLbToLllFFBase {
0044   public:
0045     class FormFactorDependence final {
0046       public:
0047         FormFactorDependence();
0048 
0049         FormFactorDependence( const double al, const double ap );
0050 
0051         FormFactorDependence( const double a0, const double a2, const double a4,
0052                               const double al, const double ap );
0053 
0054         FormFactorDependence( const FormFactorDependence& other );
0055 
0056         FormFactorDependence* clone() const;
0057 
0058         void param( const double al, const double ap );
0059 
0060         void param( const double a0, const double a2, const double a4,
0061                     const double al, const double ap );
0062 
0063         double a0_;
0064         double a2_;
0065         double a4_;
0066         double al_;
0067         double ap_;
0068     };
0069 
0070     class FormFactorSet final {
0071       public:
0072         FormFactorSet();
0073 
0074         FormFactorSet( const FormFactorSet& other );
0075 
0076         EvtRareLbToLllFF::FormFactorDependence F1;
0077         EvtRareLbToLllFF::FormFactorDependence F2;
0078         EvtRareLbToLllFF::FormFactorDependence F3;
0079         EvtRareLbToLllFF::FormFactorDependence F4;
0080 
0081         EvtRareLbToLllFF::FormFactorDependence G1;
0082         EvtRareLbToLllFF::FormFactorDependence G2;
0083         EvtRareLbToLllFF::FormFactorDependence G3;
0084         EvtRareLbToLllFF::FormFactorDependence G4;
0085 
0086         EvtRareLbToLllFF::FormFactorDependence H1;
0087         EvtRareLbToLllFF::FormFactorDependence H2;
0088         EvtRareLbToLllFF::FormFactorDependence H3;
0089         EvtRareLbToLllFF::FormFactorDependence H4;
0090         EvtRareLbToLllFF::FormFactorDependence H5;
0091         EvtRareLbToLllFF::FormFactorDependence H6;
0092     };
0093 
0094     void init() override;
0095 
0096     void getFF( EvtParticle* parent, EvtParticle* lambda,
0097                 EvtRareLbToLllFFBase::FormFactors& FF ) override;
0098 
0099   private:
0100     double func( const double p, EvtRareLbToLllFF::FormFactorDependence& dep );
0101 
0102     std::array<std::unique_ptr<EvtRareLbToLllFF::FormFactorSet>, 2> FF_;
0103     std::map<int, EvtRareLbToLllFF::FormFactorSet*> FFMap_;
0104 
0105     void DiracFF( EvtParticle* parent, EvtParticle* lambda,
0106                   EvtRareLbToLllFF::FormFactorSet& FFset,
0107                   EvtRareLbToLllFF::FormFactors& FF );
0108 
0109     void RaritaSchwingerFF( EvtParticle* parent, EvtParticle* lambda,
0110                             EvtRareLbToLllFF::FormFactorSet& FFset,
0111                             EvtRareLbToLllFF::FormFactors& FF );
0112 };
0113 
0114 #endif    // EVTRARELBTOLLLFF_HH