Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DDVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0002 #define DDVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0003 
0004 /**
0005  * @file DDVCSConvolCoeffFunctionKinematic.h
0006  * @author Bryan BERTHOU (SPhN / CEA Saclay)
0007  * @date July 22, 2015
0008  * @version 1.0
0009  */
0010 
0011 #include <ElementaryUtils/parameters/GenericType.h>
0012 #include <ElementaryUtils/parameters/Parameters.h>
0013 #include <string>
0014 #include <vector>
0015 
0016 #include "../../../utils/type/PhysicalType.h"
0017 #include "../../../utils/type/PhysicalUnit.h"
0018 #include "../ConvolCoeffFunctionKinematic.h"
0019 
0020 namespace PARTONS {
0021 
0022 /**
0023  * @class DDVCSConvolCoeffFunctionKinematic
0024  *
0025  * @brief Class representing single CCF kinematics for DDVCS process.
0026  *
0027  * This class represents a single CCF kinematics for DDVCS process (xi, t, \f$Q^{2}\f$, \f$Q'^{2}\f$, \f$\mu_{F}^{2}\f$, \f$\mu_{F}^{2}\f$).
0028  */
0029 class DDVCSConvolCoeffFunctionKinematic: public ConvolCoeffFunctionKinematic {
0030 
0031 public:
0032 
0033     static const std::string DDVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_CLASS_NAME; ///< Type of the kinematic in XML automation.
0034 
0035     /**
0036      * Default constructor.
0037      */
0038     DDVCSConvolCoeffFunctionKinematic();
0039 
0040     /**
0041      * Assignment constructor.
0042      * @param xi Skewness variable.
0043      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0044      * @param Q2 Virtual-photon virtuality (in \f$GeV^{2}\f$).
0045      * @param Q2Prim Outgoing virtual-photon virtuality (in \f$GeV^{2}\f$).
0046      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0047      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0048      */
0049     DDVCSConvolCoeffFunctionKinematic(double xi, double t, double Q2,
0050             double Q2Prim, double MuF2, double MuR2);
0051 
0052     /**
0053      * Assignment constructor.
0054      * @param xi Skewness variable.
0055      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0056      * @param Q2 Virtual-photon virtuality (in \f$GeV^{2}\f$).
0057      * @param Q2Prim Outgoing virtual-photon virtuality (in \f$GeV^{2}\f$).
0058      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0059      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0060      */
0061     DDVCSConvolCoeffFunctionKinematic(const PhysicalType<double> &xi,
0062             const PhysicalType<double> &t, const PhysicalType<double> &Q2,
0063             const PhysicalType<double> &Q2Prim,
0064             const PhysicalType<double> &MuF2, const PhysicalType<double> &MuR2);
0065 
0066     /**
0067      * Assignment constructor.
0068      * @param xi Skewness variable.
0069      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0070      * @param Q2 Virtual-photon virtuality (in \f$GeV^{2}\f$).
0071      * @param Q2Prim Outgoing virtual-photon virtuality (in \f$GeV^{2}\f$).
0072      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0073      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0074      */
0075     DDVCSConvolCoeffFunctionKinematic(const ElemUtils::GenericType &xi,
0076             const ElemUtils::GenericType &t, const ElemUtils::GenericType &Q2,
0077             const ElemUtils::GenericType &Q2Prim,
0078             const ElemUtils::GenericType &MuF2,
0079             const ElemUtils::GenericType &MuR2);
0080 
0081     /**
0082      * Copy constructor.
0083      * @param other Object to be copied.
0084      */
0085     DDVCSConvolCoeffFunctionKinematic(
0086             const DDVCSConvolCoeffFunctionKinematic &other);
0087 
0088     /**
0089      * Destructor.
0090      */
0091     virtual ~DDVCSConvolCoeffFunctionKinematic();
0092 
0093     virtual void configure(const ElemUtils::Parameters &parameters);
0094     virtual std::string toString() const;
0095 
0096     /**
0097      * Serialize into given Packet.
0098      * @param packet Target Packet.
0099      */
0100     void serialize(ElemUtils::Packet &packet) const;
0101 
0102     /**
0103      * Retrieve data from given Packet.
0104      * @param packet Input Packet.
0105      */
0106     void unserialize(ElemUtils::Packet &packet);
0107 
0108     /**
0109      * Serialize to std::vector<double>.
0110      */
0111     void serializeIntoStdVector(std::vector<double>& vec) const;
0112 
0113     /**
0114      * Unserialize from std::vector<double>.
0115      */
0116     void unserializeFromStdVector(std::vector<double>::const_iterator& it,
0117             const std::vector<double>::const_iterator& end);
0118 
0119     /**
0120      * Is equal operator. Checks if values of kinematic variables are the same.
0121      */
0122     bool operator ==(const DDVCSConvolCoeffFunctionKinematic& other) const;
0123 
0124     /**
0125      * Is different operator. Checks of values of kinematic variables are different.
0126      */
0127     bool operator !=(const DDVCSConvolCoeffFunctionKinematic& other) const;
0128 
0129     //********************************************************
0130     //*** SETTERS AND GETTERS ********************************
0131     //********************************************************
0132 
0133     const PhysicalType<double>& getQ2() const;
0134 
0135     /**
0136      * Set virtual-photon virtuality.
0137      */
0138     void setQ2(const PhysicalType<double>& Q2);
0139 
0140     /**
0141      * Set virtual-photon virtuality.
0142      */
0143     void setQ2(double Q2, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0144 
0145     /**
0146      * Get outgoing virtual-photon virtuality.
0147      */
0148     const PhysicalType<double>& getQ2Prim() const;
0149 
0150     /**
0151      * Set outgoing virtual-photon virtuality.
0152      */
0153     void setQ2Prim(const PhysicalType<double>& Q2Prim);
0154 
0155     /**
0156      * Set outgoing virtual-photon virtuality.
0157      */
0158     void setQ2Prim(double Q2Prim, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0159 
0160 protected:
0161 
0162     virtual void updateHashSum() const;
0163 
0164 private:
0165 
0166     /**
0167      * Virtual-photon virtuality (in \f$GeV^{2}\f$).
0168      */
0169     PhysicalType<double> m_Q2;
0170 
0171     /**
0172      * Outgoing virtual-photon virtuality (in \f$GeV^{2}\f$).
0173      */
0174     PhysicalType<double> m_Q2Prim;
0175 
0176 };
0177 
0178 /**
0179  * Stream operator to serialize class into Packet. See also GPDType::serialize().
0180  */
0181 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0182         DDVCSConvolCoeffFunctionKinematic& kinematic);
0183 
0184 /**
0185  * Stream operator to retrieve class from Packet. See also GPDType::unserialize().
0186  */
0187 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0188         DDVCSConvolCoeffFunctionKinematic& kinematic);
0189 
0190 } /* namespace PARTONS */
0191 
0192 #endif /* DDVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H */