Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVCS_CFF_DISPERSION_RELATION_H
0002 #define DVCS_CFF_DISPERSION_RELATION_H
0003 
0004 /**
0005  * @file DVCSCFFDispersionRelation.h
0006  * @author Pawel Sznajder (IPNO)
0007  * @date Oct 17, 2016
0008  * @version 1.0
0009  */
0010 
0011 #include <ElementaryUtils/parameters/Parameters.h>
0012 #include <complex>
0013 #include <map>
0014 #include <string>
0015 #include <vector>
0016 
0017 #include "../../../beans/automation/BaseObjectData.h"
0018 #include "DVCSConvolCoeffFunctionModule.h"
0019 
0020 namespace NumA {
0021 class FunctionType1D;
0022 } /* namespace NumA */
0023 namespace PARTONS {
0024 class GPDSubtractionConstantModule;
0025 } /* namespace PARTONS */
0026 
0027 namespace PARTONS {
0028 
0029 /**
0030  * @class DVCSCFFDispersionRelation
0031  *
0032  * @brief Dispersion relation DVCS/CFF model.
0033  *
0034  * Dispersion relation DVCS/CFF model. Need to be configured with GPDSubtractionConstantModule object provided. The sign of subtraction constant is -/+ for GPDs H/E.
0035  */
0036 class DVCSCFFDispersionRelation: public DVCSConvolCoeffFunctionModule {
0037 
0038 public:
0039 
0040     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0041 
0042     /**
0043      * Constructor.
0044      *
0045      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0046      * @param className Name of last child class.
0047      */
0048     DVCSCFFDispersionRelation(const std::string &className);
0049 
0050     /**
0051      * Destructor.
0052      */
0053     virtual ~DVCSCFFDispersionRelation();
0054 
0055     virtual DVCSCFFDispersionRelation* clone() const;
0056     virtual void resolveObjectDependencies();
0057     virtual void configure(const ElemUtils::Parameters &parameters);
0058     virtual void prepareSubModules(
0059             const std::map<std::string, BaseObjectData>& subModulesData);
0060 
0061     /**
0062      * Get subtraction constant module.
0063      */
0064     GPDSubtractionConstantModule* getSubtractionConstantModule() const;
0065 
0066     /**
0067      * Set subtraction constant module.
0068      * @param subtractionConstantModule Subtraction constant module to be set.
0069      */
0070     void setSubtractionConstantModule(
0071             GPDSubtractionConstantModule* subtractionConstantModule);
0072 
0073 protected:
0074 
0075     /** Copy constructor.
0076      * @param other Object to be copied.
0077      */
0078     DVCSCFFDispersionRelation(const DVCSCFFDispersionRelation &other);
0079 
0080     virtual void initModule();
0081     virtual void isModuleWellConfigured();
0082 
0083 private:
0084 
0085     virtual std::complex<double> computeUnpolarized();
0086     virtual std::complex<double> computePolarized();
0087 
0088     /**
0089      * Sum for quark singlet combinations weighted by squares of charges.
0090      * @param xi GPD xi variable.
0091      */
0092     double computeSquareChargeAveragedGPD(double xi);
0093 
0094     /**
0095      * Dispersion relation integral function for 1/(x - xi) part.
0096      * @param xi GPD xi variable.
0097      * @param par Additional parameters (not used here).
0098      */
0099     double dispersionRelationIntegralPartDiagonalA(double xi,
0100             std::vector<double> par);
0101 
0102     /**
0103      * Dispersion relation integral function for 1/(x + xi) part.
0104      * @param xi GPD xi variable.
0105      * @param par Additional parameters (not used here).
0106      */
0107     double dispersionRelationIntegralPartDiagonalB(double xi,
0108             std::vector<double> par);
0109 
0110     /**
0111      * Initialize functors.
0112      */
0113     void initFunctorsForIntegrations();
0114 
0115     NumA::FunctionType1D* m_p_int_dispersionRelationIntegralPartDiagonalA; ///< functor related to dispersionRelationIntegralPartDiagonalA() function
0116     NumA::FunctionType1D* m_p_int_dispersionRelationIntegralPartDiagonalB; ///< functor related to dispersionRelationIntegralPartDiagonalB() function
0117 
0118     GPDSubtractionConstantModule* m_pSubtractionConstantModule; ///< Subtraction constant module.
0119 };
0120 
0121 } /* namespace PARTONS */
0122 
0123 #endif /* DVCS_CFF_DISPERSION_RELATION_H */