Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0002 #define DVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0003 
0004 /**
0005  * @file DVCSConvolCoeffFunctionKinematic.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 DVCSConvolCoeffFunctionKinematic
0024  *
0025  * @brief Class representing single CCF kinematics for DVCS process.
0026  *
0027  * This class represents a single CCF kinematics for DVCS process (xi, t, \f$Q^{2}\f$, \f$\mu_{F}^{2}\f$, \f$\mu_{F}^{2}\f$).
0028  */
0029 class DVCSConvolCoeffFunctionKinematic: public ConvolCoeffFunctionKinematic {
0030 
0031 public:
0032 
0033     static const std::string DVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_CLASS_NAME; ///< Type of the kinematic in XML automation.
0034 
0035     /**
0036      * Default constructor.
0037      */
0038     DVCSConvolCoeffFunctionKinematic();
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 MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0046      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0047      */
0048     DVCSConvolCoeffFunctionKinematic(double xi, double t, double Q2,
0049             double MuF2, double MuR2);
0050 
0051     /**
0052      * Assignment constructor.
0053      * @param xi Skewness variable.
0054      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0055      * @param Q2 Virtual-photon virtuality (in \f$GeV^{2}\f$).
0056      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0057      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0058      */
0059     DVCSConvolCoeffFunctionKinematic(const PhysicalType<double> &xi,
0060             const PhysicalType<double> &t, const PhysicalType<double> &Q2,
0061             const PhysicalType<double> &MuF2, const PhysicalType<double> &MuR2);
0062 
0063     /**
0064      * Assignment constructor.
0065      * @param xi Skewness variable.
0066      * @param t Four-momentum transfer squared of hadron target (in \f$GeV^{2}\f$).
0067      * @param Q2 Virtual-photon virtuality (in \f$GeV^{2}\f$).
0068      * @param MuF2 Factorization scale squared (in \f$GeV^{2}\f$).
0069      * @param MuR2 Renormalization scale squared (in \f$GeV^{2}\f$).
0070      */
0071     DVCSConvolCoeffFunctionKinematic(const ElemUtils::GenericType &xi,
0072             const ElemUtils::GenericType &t, const ElemUtils::GenericType &Q2,
0073             const ElemUtils::GenericType &MuF2,
0074             const ElemUtils::GenericType &MuR2);
0075 
0076     /**
0077      * Copy constructor.
0078      * @param other Object to be copied.
0079      */
0080     DVCSConvolCoeffFunctionKinematic(
0081             const DVCSConvolCoeffFunctionKinematic &other);
0082 
0083     /**
0084      * Destructor.
0085      */
0086     virtual ~DVCSConvolCoeffFunctionKinematic();
0087 
0088     virtual void configure(const ElemUtils::Parameters &parameters);
0089     virtual std::string toString() const;
0090 
0091     /**
0092      * Serialize into given Packet.
0093      * @param packet Target Packet.
0094      */
0095     void serialize(ElemUtils::Packet &packet) const;
0096 
0097     /**
0098      * Retrieve data from given Packet.
0099      * @param packet Input Packet.
0100      */
0101     void unserialize(ElemUtils::Packet &packet);
0102 
0103     /**
0104      * Serialize to std::vector<double>.
0105      */
0106     void serializeIntoStdVector(std::vector<double>& vec) const;
0107 
0108     /**
0109      * Unserialize from std::vector<double>.
0110      */
0111     void unserializeFromStdVector(std::vector<double>::const_iterator& it,
0112             const std::vector<double>::const_iterator& end);
0113 
0114     /**
0115      * Is equal operator. Checks if values of kinematic variables are the same.
0116      */
0117     bool operator ==(const DVCSConvolCoeffFunctionKinematic& other) const;
0118 
0119     /**
0120      * Is different operator. Checks of values of kinematic variables are different.
0121      */
0122     bool operator !=(const DVCSConvolCoeffFunctionKinematic& other) const;
0123 
0124     //********************************************************
0125     //*** SETTERS AND GETTERS ********************************
0126     //********************************************************
0127 
0128     /**
0129      * Get virtual-photon virtuality.
0130      */
0131     const PhysicalType<double>& getQ2() const;
0132 
0133     /**
0134      * Set virtual-photon virtuality.
0135      */
0136     void setQ2(const PhysicalType<double>& Q2);
0137 
0138     /**
0139      * Set virtual-photon virtuality.
0140      */
0141     void setQ2(double Q2, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0142 
0143 protected:
0144 
0145     virtual void updateHashSum() const;
0146 
0147 private:
0148 
0149     /**
0150      * Virtual-photon virtuality (in \f$GeV^{2}\f$).
0151      */
0152     PhysicalType<double> m_Q2;
0153 };
0154 
0155 /**
0156  * Stream operator to serialize class into Packet. See also GPDType::serialize().
0157  */
0158 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0159         DVCSConvolCoeffFunctionKinematic& kinematic);
0160 
0161 /**
0162  * Stream operator to retrieve class from Packet. See also GPDType::unserialize().
0163  */
0164 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0165         DVCSConvolCoeffFunctionKinematic& kinematic);
0166 
0167 } /* namespace PARTONS */
0168 
0169 #endif /* DVCS_CONVOL_COEFF_FUNCTION_KINEMATIC_H */