Back to home page

EIC code displayed by LXR

 
 

    


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

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