Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef GPD_SUBTRACTION_CONSTANT_KINEMATIC_H
0002 #define GPD_SUBTRACTION_CONSTANT_KINEMATIC_H
0003 
0004 /**
0005  * @file GPDSubtractionConstantKinematic.h
0006  * @author: Bryan BERTHOU (SPhN / CEA Saclay)
0007  * @date November 26, 2014
0008  * @version 1.0
0009  */
0010 
0011 #include <ElementaryUtils/parameters/GenericType.h>
0012 #include <ElementaryUtils/parameters/Parameters.h>
0013 #include <string>
0014 
0015 #include "../../utils/type/PhysicalType.h"
0016 #include "../../utils/type/PhysicalUnit.h"
0017 #include "../Kinematic.h"
0018 
0019 namespace ElemUtils {
0020 class Packet;
0021 } /* namespace ElemUtils */
0022 
0023 namespace PARTONS {
0024 
0025 /**
0026  * @class GPDSubtractionConstantKinematic
0027  *
0028  * @brief Class representing single GPD subtraction constant kinematics.
0029  *
0030  * This class represents a single GPD kinematics (t, \f$\mu_{F}^{2}\f$, \f$\mu_{F}^{2}\f$).
0031  */
0032 class GPDSubtractionConstantKinematic: public Kinematic {
0033 
0034 public:
0035 
0036     static const std::string GPD_SUBTRACTION_CONSTANT_KINEMATIC_CLASS_NAME; ///< Type of the kinematic in XML automation.
0037 
0038     /**
0039      * Parameter name to set variable \f$t\f$ via configuration methods.
0040      */
0041     static const std::string KINEMATIC_PARAMETER_NAME_T;
0042 
0043     /**
0044      * Parameter name to set variable \f$\mu_{F}^{2}\f$ via configuration methods.
0045      */
0046     static const std::string KINEMATIC_PARAMETER_NAME_MUF2;
0047 
0048     /**
0049      * Parameter name to set variable \f$\mu_{R}^{2}\f$ via configuration methods.
0050      */
0051     static const std::string KINEMATIC_PARAMETER_NAME_MUR2;
0052 
0053     /**
0054      * Parameter name to set unit of variable \f$t\f$ via configuration methods.
0055      */
0056     static const std::string KINEMATIC_PARAMETER_NAME_T_UNIT;
0057 
0058     /**
0059      * Parameter name to set unit of variable \f$\mu_{F}^{2}\f$ via configuration methods.
0060      */
0061     static const std::string KINEMATIC_PARAMETER_NAME_MUF2_UNIT;
0062 
0063     /**
0064      * Parameter name to set unit of variable \f$\mu_{R}^{2}\f$ via configuration methods.
0065      */
0066     static const std::string KINEMATIC_PARAMETER_NAME_MUR2_UNIT;
0067 
0068     /**
0069      * Default constructor.
0070      */
0071     GPDSubtractionConstantKinematic();
0072 
0073     /**
0074      * Assignment constructor.
0075      *
0076      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0077      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0078      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0079      */
0080     GPDSubtractionConstantKinematic(double t, double MuF2, double MuR2);
0081 
0082     /**
0083      * Assignment constructor.
0084      *
0085      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0086      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0087      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0088      */
0089     GPDSubtractionConstantKinematic(const PhysicalType<double> &t,
0090             const PhysicalType<double> &MuF2, const PhysicalType<double> &MuR2);
0091 
0092     /**
0093      * Assignment constructor.
0094      *
0095      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0096      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0097      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0098      */
0099     GPDSubtractionConstantKinematic(const ElemUtils::GenericType &t,
0100             const ElemUtils::GenericType &MuF2,
0101             const ElemUtils::GenericType &MuR2);
0102 
0103     /**
0104      * Copy constructor.
0105      * @param other Object to be copied.
0106      */
0107     GPDSubtractionConstantKinematic(
0108             const GPDSubtractionConstantKinematic &other);
0109 
0110     /**
0111      * Destructor.
0112      */
0113     virtual ~GPDSubtractionConstantKinematic();
0114 
0115     virtual void configure(const ElemUtils::Parameters &parameters);
0116     virtual std::string toString() const;
0117 
0118     /**
0119      * Serialize into given Packet.
0120      * @param packet Target Packet.
0121      */
0122     void serialize(ElemUtils::Packet &packet) const;
0123 
0124     /**
0125      * Retrieve data from given Packet.
0126      * @param packet Input Packet.
0127      */
0128     void unserialize(ElemUtils::Packet &packet);
0129 
0130     /**
0131      * Is equal operator. Checks if values of kinematic variables are the same.
0132      */
0133     bool operator ==(const GPDSubtractionConstantKinematic& other) const;
0134 
0135     /**
0136      * Is different operator. Checks of values of kinematic variables are different.
0137      */
0138     bool operator !=(const GPDSubtractionConstantKinematic& other) const;
0139 
0140     //********************************************************
0141     //*** SETTERS AND GETTERS ********************************
0142     //********************************************************
0143 
0144     /**
0145      * Get four-momentum transfer squared of hadron target.
0146      */
0147     const PhysicalType<double>& getT() const;
0148 
0149     /**
0150      * Set four-momentum transfer squared of hadron target.
0151      */
0152     void setT(const PhysicalType<double>& t);
0153 
0154     /**
0155      * Set four-momentum transfer squared of hadron target.
0156      */
0157     void setT(double t, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0158 
0159     /**
0160      * Get factorization scale squared.
0161      */
0162     const PhysicalType<double>& getMuF2() const;
0163 
0164     /**
0165      * Set factorization scale squared.
0166      */
0167     void setMuF2(const PhysicalType<double>& muF2);
0168 
0169     /**
0170      * Set factorization scale squared.
0171      */
0172     void setMuF2(double muF2, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0173 
0174     /**
0175      * Get renormalization scale squared.
0176      */
0177     const PhysicalType<double>& getMuR2() const;
0178 
0179     /**
0180      * Set renormalization scale squared.
0181      */
0182     void setMuR2(const PhysicalType<double>& muR2);
0183 
0184     /**
0185      * Set renormalization scale squared.
0186      */
0187     void setMuR2(double muR2, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0188 
0189 protected:
0190 
0191     virtual void updateHashSum() const;
0192 
0193 private:
0194 
0195     /**
0196      * Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0197      */
0198     PhysicalType<double> m_t;
0199 
0200     /**
0201      * Factorization scale squared (in \f$GeV^{2}\f$).
0202      */
0203     PhysicalType<double> m_MuF2;
0204 
0205     /**
0206      * Renormalization scale squared (in \f$GeV^{2}\f$).
0207      */
0208     PhysicalType<double> m_MuR2;
0209 };
0210 
0211 /**
0212  * Stream operator to serialize class into Packet. See also GPDType::serialize().
0213  */
0214 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0215         GPDSubtractionConstantKinematic& kinematic);
0216 
0217 /**
0218  * Stream operator to retrieve class from Packet. See also GPDType::unserialize().
0219  */
0220 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0221         GPDSubtractionConstantKinematic& kinematic);
0222 
0223 } /* namespace PARTONS */
0224 
0225 #endif /* GPD_SUBTRACTION_CONSTANT_KINEMATIC_H */