Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVCSAUTMINUSSINPHIMPHISCOS0PHI_H
0002 #define DVCSAUTMINUSSINPHIMPHISCOS0PHI_H
0003 
0004 /**
0005  * @file DVCSAutMinusSinPhiMPhisCos0Phi.h
0006  * @author Luca COLANERI (IPNO)
0007  * @date July 18, 2016
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 "DVCSAutMinusSinPhiMPhis.h"
0020 
0021 namespace PARTONS {
0022 class DVCSObservableKinematic;
0023 } /* namespace PARTONS */
0024 
0025 namespace PARTONS {
0026 
0027 /**
0028  * @class DVCSAutMinusSinPhiMPhisCos0Phi
0029  *
0030  * @brief 0th Fourier moment of transverse target asymmetry for negative beam charge.
0031  *
0032  * Definition:<br>
0033  *
0034  * \f$ \displaystyle
0035  * A_{UT}^{\sin\left(\phi-\phi_{S}\right)\cos\left(0\phi\right)}\left(x_{B}, t, Q^2\right) =
0036  * \frac{1}{2\pi}
0037  * \int_{0}^{2\pi} \mathrm{d}\phi A_{UT}^{\sin\left(\phi-\phi_{S}\right)}\left(x_{B}, t, Q^2, \phi\right) \cos\left(0\phi\right) \, ,
0038  * \f$
0039  *
0040  * where \f$A_{UT}^{\sin\left(\phi-\phi_{S}\right)}\left(x_{B}, t, Q^2, \phi\right)\f$ is defined in DVCSAutMinusSinPhiMPhis.
0041  */
0042 class DVCSAutMinusSinPhiMPhisCos0Phi: public DVCSAutMinusSinPhiMPhis,
0043         public MathIntegratorModule {
0044 
0045 public:
0046 
0047     /**
0048      * Unique ID to automatically register the class in the registry.
0049      */
0050     static const unsigned int classId;
0051 
0052     /**
0053      * Constructor.
0054      * @param className Name of class.
0055      */
0056     DVCSAutMinusSinPhiMPhisCos0Phi(const std::string &className);
0057 
0058     /**
0059      * Destructor.
0060      */
0061     virtual ~DVCSAutMinusSinPhiMPhisCos0Phi();
0062 
0063     virtual DVCSAutMinusSinPhiMPhisCos0Phi* clone() const;
0064     virtual void configure(const ElemUtils::Parameters &parameters);
0065 
0066 protected:
0067 
0068     /**
0069      * Copy constructor.
0070      * @param other Object to be copied.
0071      */
0072     DVCSAutMinusSinPhiMPhisCos0Phi(const DVCSAutMinusSinPhiMPhisCos0Phi &other);
0073 
0074     virtual PhysicalType<double> computeObservable(
0075             const DVCSObservableKinematic& kinematic,
0076             const List<GPDType>& gpdType);
0077 
0078     /**
0079      * Functor to perform the integration.
0080      */
0081     NumA::FunctionType1D* m_pFunctionToIntegrateObservable;
0082 
0083     /**
0084      * Function to be integrated.
0085      */
0086     virtual double functionToIntegrateObservable(double x,
0087             std::vector<double> params);
0088 
0089     /**
0090      * Initialize functors.
0091      */
0092     void initFunctorsForIntegrations();
0093 };
0094 
0095 } /* namespace PARTONS */
0096 
0097 #endif /* DVCSAUTMINUSSINPHIMPHISCOS0PHI_H */