Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVCSALTDVCSCOSPHIMPHISCOS1PHI_H
0002 #define DVCSALTDVCSCOSPHIMPHISCOS1PHI_H
0003 
0004 /**
0005  * @file DVCSAltDVCSCosPhiMPhisCos1Phi.h
0006  * @author Pawel Sznajder (NCBJ, Warsaw)
0007  * @date November 16, 2017
0008  * @version 1.0
0009  */
0010 
0011 #include <ElementaryUtils/parameters/Parameters.h>
0012 #include <string>
0013 #include <vector>
0014 
0015 #include "../../../../beans/gpd/GPDType.h"
0016 #include "../../../../beans/List.h"
0017 #include "../../../../utils/type/PhysicalType.h"
0018 #include "../../../MathIntegratorModule.h"
0019 #include "DVCSAltDVCSCosPhiMPhis.h"
0020 
0021 namespace PARTONS {
0022 
0023 /**
0024  * @class DVCSAltDVCSCosPhiMPhisCos1Phi
0025  *
0026  * @brief 1th Fourier moment of longitudinal beam transverse target asymmetry (DVCS part).
0027  *
0028  * Definition:<br>
0029  *
0030  * \f$ \displaystyle
0031  * A_{LT, DVCS}^{\cos\left(\phi-\phi_{S}\right)\cos\left(1\phi\right)}\left(x_{B}, t, Q^2\right) =
0032  * \frac{1}{\pi}
0033  * \int_{0}^{2\pi} \mathrm{d}\phi A_{LT, DVCS}^{\cos\left(\phi-\phi_{S}\right)}\left(x_{B}, t, Q^2, \phi\right) \cos\left(1\phi\right) \, ,
0034  * \f$
0035  *
0036  * where \f$A_{UT, DVCS}^{\cos\left(\phi-\phi_{S}\right)}\left(x_{B}, t, Q^2, \phi\right)\f$ is defined in DVCSAltDVCSCosPhiMPhis.
0037  */
0038 class DVCSAltDVCSCosPhiMPhisCos1Phi: public DVCSAltDVCSCosPhiMPhis,
0039         public MathIntegratorModule {
0040 
0041 public:
0042 
0043     /**
0044      * Unique ID to automatically register the class in the registry.
0045      */
0046     static const unsigned int classId;
0047 
0048     /**
0049      * Constructor.
0050      * @param className Name of class.
0051      */
0052     DVCSAltDVCSCosPhiMPhisCos1Phi(const std::string &className);
0053 
0054     /**
0055      * Destructor.
0056      */
0057     virtual ~DVCSAltDVCSCosPhiMPhisCos1Phi();
0058 
0059     virtual DVCSAltDVCSCosPhiMPhisCos1Phi* clone() const;
0060     virtual void configure(const ElemUtils::Parameters &parameters);
0061 
0062 protected:
0063 
0064     /**
0065      * Copy constructor.
0066      * @param other Object to be copied.
0067      */
0068     DVCSAltDVCSCosPhiMPhisCos1Phi(const DVCSAltDVCSCosPhiMPhisCos1Phi &other);
0069 
0070     virtual PhysicalType<double> computeObservable(
0071             const DVCSObservableKinematic& kinematic,
0072             const List<GPDType>& gpdType);
0073 
0074     /**
0075      * Functor to perform the integration.
0076      */
0077     NumA::FunctionType1D* m_pFunctionToIntegrateObservable;
0078 
0079     /**
0080      * Function to be integrated.
0081      */
0082     virtual double functionToIntegrateObservable(double x,
0083             std::vector<double> params);
0084 
0085     /**
0086      * Initialize functors.
0087      */
0088     void initFunctorsForIntegrations();
0089 };
0090 
0091 } /* namespace PARTONS */
0092 
0093 #endif /* DVCSALTDVCSCOSPHIMPHISCOS1PHI_H */