Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVMPALLUMINUSCOS2PHI
0002 #define DVMPALLUMINUSCOS2PHI
0003 
0004 /**
0005  * @file DVMPAlluMinusCos2Phi.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 "DVMPAlluMinus.h"
0020 
0021 namespace PARTONS {
0022 class DVMPObservableKinematic;
0023 } /* namespace PARTONS */
0024 
0025 namespace PARTONS {
0026 
0027 /**
0028  * @class DVMPAlluMinusCos2Phi
0029  *
0030  * @brief 2nd Fourier moment of longitudinally polarized beam - target asymmetry for negative beam charge.
0031  */
0032 class DVMPAlluMinusCos2Phi: public DVMPAlluMinus, public MathIntegratorModule {
0033 
0034 public:
0035 
0036     /**
0037      * Unique ID to automatically register the class in the registry.
0038      */
0039     static const unsigned int classId;
0040 
0041     /**
0042      * Constructor.
0043      * @param className Name of class.
0044      */
0045     DVMPAlluMinusCos2Phi(const std::string &className);
0046 
0047     /**
0048      * Destructor.
0049      */
0050     virtual ~DVMPAlluMinusCos2Phi();
0051 
0052     virtual DVMPAlluMinusCos2Phi* clone() const;
0053     virtual void configure(const ElemUtils::Parameters &parameters);
0054 
0055 protected:
0056 
0057     /**
0058      * Copy constructor.
0059      * @param other Object to be copied.
0060      */
0061     DVMPAlluMinusCos2Phi(const DVMPAlluMinusCos2Phi &other);
0062 
0063     virtual PhysicalType<double> computeObservable(
0064             const DVMPObservableKinematic& kinematic,
0065             const List<GPDType>& gpdType);
0066 
0067     /**
0068      * Functor to perform the integration.
0069      */
0070     NumA::FunctionType1D* m_pFunctionToIntegrateObservable;
0071 
0072     /**
0073      * Function to be integrated.
0074      */
0075     virtual double functionToIntegrateObservable(double x,
0076             std::vector<double> params);
0077 
0078     /**
0079      * Initialize functors.
0080      */
0081     void initFunctorsForIntegrations();
0082 };
0083 
0084 } /* namespace PARTONS */
0085 
0086 #endif /* DVMPALLUMINUSCOS2PHI */