Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DDVCS_CFF_STANDARD_H
0002 #define DDVCS_CFF_STANDARD_H
0003 
0004 #include <complex>
0005 #include <string>
0006 #include <vector>
0007 
0008 #include "DDVCSConvolCoeffFunctionModule.h"
0009 
0010 namespace PARTONS {
0011 
0012 /**
0013  * @class DDVCSCFFTEST
0014  *
0015  * @brief Evaluation of DDVCS Compton form factors.
0016  *
0017  * The class implements standard way of evaluating DDVCS CFFs, which is limits are compatible with DVCS and TCS modules.
0018  * Only LO is available.
0019  */
0020 class DDVCSCFFStandard: public DDVCSConvolCoeffFunctionModule {
0021 
0022 public:
0023 
0024     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0025 
0026     /**
0027      * Constructor.
0028      */
0029     DDVCSCFFStandard(const std::string &className);
0030 
0031     virtual DDVCSCFFStandard* clone() const;
0032 
0033     /**
0034      * Destructor.
0035      */
0036     virtual ~DDVCSCFFStandard();
0037 
0038     virtual void resolveObjectDependencies();
0039 
0040 protected:
0041 
0042     /**
0043      * Copy constructor.
0044      */
0045     DDVCSCFFStandard(const DDVCSCFFStandard &other);
0046 
0047     virtual void initModule();
0048     virtual void isModuleWellConfigured();
0049 
0050     virtual std::complex<double> computeUnpolarized();
0051     virtual std::complex<double> computePolarized();
0052 
0053 private:
0054 
0055     /**
0056      * Convolution.
0057      */
0058     double convolutionUnpolarized(double x, std::vector<double> params);
0059 
0060     /**
0061      * Convolution.
0062      */
0063     double convolution(double x, std::vector<double> params);
0064     double convolutionNoSubtraction(double x, std::vector<double> params);
0065 
0066     NumA::FunctionType1D* m_pConvolution; ///< Functor to convolution().
0067     NumA::FunctionType1D* m_pConvolutionNoSubtraction; ///< Functor to
0068 
0069     /**
0070      * Compute GPD combination over quark flavors.
0071      */
0072     double computeSquareChargeAveragedGPD(
0073             const PartonDistribution &partonDistribution) const;
0074 
0075     /**
0076      * Initialize functors.
0077      */
0078     void initFunctorsForIntegrations();
0079 
0080     double m_partonDistributionRhoXiSummed; ///< GPD at (rho, xi)
0081 };
0082 
0083 } /* namespace PARTONS */
0084 
0085 #endif /* DDVCS_CFF_STANDARD_H */