Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:17:12

0001 //
0002 // APFEL++ 2017
0003 //
0004 // Author: Valerio Bertone: valerio.bertone@cern.ch
0005 //
0006 
0007 #pragma once
0008 
0009 #include "apfel/convolutionmap.h"
0010 
0011 namespace apfel
0012 {
0013   /**
0014    * @defgroup DISBases DIS convolution maps
0015    * Collection of derived classes from ConvolutionMap that implement
0016    * the convolution map for NC and CC DIS structure functions.
0017    * @ingroup ConvMap
0018    */
0019   ///@{
0020   /**
0021    * @brief The DISNCBasis class is a derived of ConvolutionMap
0022    * specialised for the computation of the NC DIS structure
0023    * functions.
0024    */
0025   class DISNCBasis: public ConvolutionMap
0026   {
0027   public:
0028     /**
0029      * @brief The map enumerators for the operands and the
0030      * distributions.
0031      */
0032     enum Operand: int {CNS, CS, CG};
0033     enum Object:  int {GLUON, SIGMA, VALENCE, T3, V3, T8, V8, T15, V15, T24, V24, T35, V35};
0034 
0035     /**
0036      * @name Constructors
0037      * List of constructors.
0038      */
0039     ///@{
0040     /**
0041      * @brief The DISNCBasis constructor for the k-th
0042      * component of the structure functions.
0043      * @param k: index that identifies the component of the structure function
0044      * @param fact: factor that multiplies the whole structure function
0045      */
0046     DISNCBasis(int const& k, double const& fact = 1);
0047 
0048     /**
0049      * @brief The DISNCBasis constructor for the total structure functions.
0050      * @param Ch: vector of the effective quark charges
0051      */
0052     DISNCBasis(std::vector<double> const& Ch);
0053     ///@}
0054   };
0055 
0056   /**
0057    * @brief The DISCCBasis class is a derived of ConvolutionMap
0058    * specialised for the computation of the CC DIS structure
0059    * functions.
0060    */
0061   class DISCCBasis: public ConvolutionMap
0062   {
0063   public:
0064     /**
0065      * @brief The map enumerators for the operands and the
0066      * distributions.
0067      */
0068     enum Operand: int {CNS, CS, CG};
0069     enum Object:  int {GLUON, SIGMA, VALENCE, T3, V3, T8, V8, T15, V15, T24, V24, T35, V35};
0070 
0071     /**
0072      * @brief Map between one single index and the CKM matrix
0073      * elements:
0074      *
0075      * 1 - Vud2
0076      * 2 - Vus2
0077      * 3 - Vub2
0078      * 4 - Vcd2
0079      * 5 - Vcs2
0080      * 6 - Vcb2
0081      * 7 - Vtd2
0082      * 8 - Vts2
0083      * 9 - Vtb2
0084      */
0085     std::map<int, std::pair<int, int>> Vij =
0086     {
0087       {1, {1, 1}}, {2, {1, 2}}, {3, {1, 3}},
0088       {4, {2, 1}}, {5, {2, 2}}, {6, {2, 3}},
0089       {7, {3, 1}}, {8, {3, 2}}, {9, {3, 3}}
0090     };
0091 
0092     /**
0093      * @name Constructors
0094      * List of constructors.
0095      */
0096     ///@{
0097     /**
0098      * @brief The DISCCBasis constructor for the (i,k)-th
0099      * component of the structure functions.
0100      * @param l: index that identifies the component of the structure function
0101      * @param Is3: switch to tell the constructure whether the structure function is F3 or not
0102      * @param fact: factor that multiplies the whole structure function
0103      */
0104     DISCCBasis(int const& l, bool const& Is3, double const& fact = 1);
0105 
0106     /**
0107      * @brief The DISCCBasis constructor for the total structure functions.
0108      * @param CKM: vector with the CKM matrix entries
0109      * @param Is3: switch to tell the constructure whether the structure function is F3 or not
0110      */
0111     DISCCBasis(std::vector<double> const& CKM, bool const& Is3);
0112     ///@}
0113   };
0114   ///@}
0115 }