Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-06-02 08:51:44

0001 #ifndef DVCS_CFF_HEAVY_QUARK_H
0002 #define DVCS_CFF_HEAVY_QUARK_H
0003 
0004 /**
0005  * @file DVCSCFFHeavyQuark.h
0006  * @author jakub
0007  * @date 11 February 2015
0008  * @version 1.0
0009  */
0010 
0011 #include <complex>
0012 #include <string>
0013 #include <vector>
0014 
0015 #include "DVCSCFFStandard.h"
0016 
0017 namespace PARTONS {
0018 
0019 /**
0020  * @class DVCSCFFHeavyQuark
0021  *
0022  * TODO: Add description.
0023  *
0024  * Available CFF types: H, E, Ht, Et.
0025  */
0026 class DVCSCFFHeavyQuark: public DVCSCFFStandard {
0027 public:
0028 
0029     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0030 
0031     /**
0032      * Constructor.
0033      *
0034      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0035      * @param className Name of last child class.
0036      */
0037     DVCSCFFHeavyQuark(const std::string &className);
0038 
0039     virtual DVCSCFFHeavyQuark* clone() const;
0040 
0041     /**
0042      * Default destructor.
0043      */
0044     virtual ~DVCSCFFHeavyQuark();
0045 
0046     virtual void resolveObjectDependencies();
0047 
0048 protected:
0049     /**
0050      * Copy constructor
0051      * @param other
0052      */
0053     DVCSCFFHeavyQuark(const DVCSCFFHeavyQuark &other);
0054 
0055 //    virtual void initModule();
0056 //    virtual void isModuleWellConfigured();
0057 
0058     virtual std::complex<double> computeUnpolarized();
0059     virtual std::complex<double> computePolarized();
0060 
0061 private:
0062     std::complex<double> m_betas;
0063     std::complex<double> m_rs;
0064     std::complex<double> m_betaq;
0065     std::complex<double> m_rq;
0066     std::complex<double> m_TF;
0067 
0068     std::complex<double> beta(double s, double mq);
0069     std::complex<double> r(double s, double mq);
0070 
0071     std::complex<double> MassiveKernelGluonNLOA(double x);
0072     std::complex<double> MassiveKernelGluonNLOV(double x);
0073     std::complex<double> computeIntegralsMassiveV();
0074     std::complex<double> computeIntegralsMassiveA();
0075     double ConvolReKernelGluonMassiveV(double x, std::vector<double> params);
0076     double ConvolImKernelGluonMassiveV(double x, std::vector<double> params);
0077     double ConvolReKernelGluonMassiveA(double x, std::vector<double> params);
0078     double ConvolImKernelGluonMassiveA(double x, std::vector<double> params);
0079 
0080     NumA::FunctionType1D* m_pConvolReKernelGluonMassiveV;
0081     NumA::FunctionType1D* m_pConvolImKernelGluonMassiveV;
0082     NumA::FunctionType1D* m_pConvolReKernelGluonMassiveA;
0083     NumA::FunctionType1D* m_pConvolImKernelGluonMassiveA;
0084 
0085     void initFunctorsForIntegrations(); ///< Initialize functors.
0086 };
0087 
0088 } /* namespace PARTONS */
0089 
0090 #endif /* DVCS_CFF_HEAVY_QUARK_H */