Back to home page

EIC code displayed by LXR

 
 

    


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

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