Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DDVCSALUPHIL_H
0002 #define DDVCSALUPHIL_H
0003 
0004 /**
0005  * @file DDVCSAluPhiL.h
0006  * @author Victor Martinez-Fernandez (NCBJ)
0007  * @date 2023
0008  * @version 1.0
0009  */
0010 
0011 #include <string>
0012 
0013 #include "../../../../beans/gpd/GPDType.h"
0014 #include "../../../../beans/List.h"
0015 #include "../../../../utils/type/PhysicalType.h"
0016 #include "../DDVCSObservable.h"
0017 
0018 namespace PARTONS {
0019 
0020 /**
0021  * @class DDVCSAluPhiL
0022  * @brief Longitudinally polarized beam asymmetry for negative beam charge. ALL subprocesses considered: DDVCS + BH + Interference.
0023  * @brief Asymmetry is left as a function of angle \phi^{\rm BDP}_\ell, azymuthal lepton angle as it is defined in BDP2001 paper.
0024  *
0025  * Definition:<br>
0026  *
0027  * \f$ \displaystyle
0028  * A_{LU}\left(  \right) =
0029  * TODO FORMULA \, ,
0030  * \f$
0031  *
0032  * where
0033  * \f$\sigma^{b_{h} b_{c}}\f$ is a single photon production cross-section (DDVCS, BH and Interference) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$.
0034  */
0035 class DDVCSAluPhiL: public DDVCSObservable {
0036 
0037 public:
0038 
0039     /**
0040      * Unique ID to automatically register the class in the registry.
0041      */
0042     static const unsigned int classId;
0043 
0044     /**
0045      * Function for the integration.
0046      */
0047     static double DDVCSAluPhiLFunction(double* kin, size_t dim, void* par);
0048 
0049     /**
0050      * Constructor.
0051      * @param className Name of class.
0052      */
0053     DDVCSAluPhiL(const std::string &className);
0054 
0055     /**
0056      * Destructor.
0057      */
0058     virtual ~DDVCSAluPhiL();
0059 
0060     virtual DDVCSAluPhiL* clone() const;
0061 
0062 protected:
0063 
0064     /**
0065      * Copy constructor.
0066      * @param other Object to be copied.
0067      */
0068 
0069     DDVCSAluPhiL(const DDVCSAluPhiL &other);
0070 
0071     virtual PhysicalType<double> computeObservable(
0072             const DDVCSObservableKinematic& kinematic,
0073             const List<GPDType>& gpdType);
0074 };
0075 
0076 struct DDVCSAluPhiLParameters {
0077 
0078     DDVCSAluPhiL* m_pDDVCSAluPhiL; ///< Pointer to DDVCSAluPhiL.
0079     double m_xB, m_t, m_Q2, m_Q2Prim, m_E, m_phiL, signAux;
0080     List<GPDType> m_gpdType; ///< GPD types.
0081 };
0082 
0083 } /* namespace PARTONS */
0084 
0085 #endif /* DDVCSALUPHIL_H */