Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVCSCROSSSECTIONUUMINUSPHIINTEGRATED_H
0002 #define DVCSCROSSSECTIONUUMINUSPHIINTEGRATED_H
0003 
0004 /**
0005  * @file DVCSCrossSectionUUMinusPhiIntegrated.h
0006  * @author Luca COLANERI (IPNO)
0007  * @date April 24, 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 "DVCSCrossSectionUUMinus.h"
0020 
0021 namespace PARTONS {
0022 
0023 /**
0024  * @class DVCSCrossSectionUUMinusPhiIntegrated
0025  * @brief Unpolarized cross-section for electro-production integrated over \f$\phi\f$.
0026  *
0027  * Unit: \f$\mathrm{nbarn}/\mathrm{GeV}^4\f$.
0028  */
0029 class DVCSCrossSectionUUMinusPhiIntegrated: public DVCSCrossSectionUUMinus,
0030         public MathIntegratorModule {
0031 
0032 public:
0033 
0034     /**
0035      * Unique ID to automatically register the class in the registry.
0036      */
0037     static const unsigned int classId;
0038 
0039     /**
0040      * Constructor.
0041      * @param className Name of class.
0042      */
0043     DVCSCrossSectionUUMinusPhiIntegrated(const std::string &className);
0044 
0045     /**
0046      * Destructor.
0047      */
0048     virtual ~DVCSCrossSectionUUMinusPhiIntegrated();
0049 
0050     virtual DVCSCrossSectionUUMinusPhiIntegrated* clone() const;
0051     virtual void configure(const ElemUtils::Parameters &parameters);
0052 
0053 protected:
0054 
0055     /**
0056      * Copy constructor.
0057      * @param other Object to be copied.
0058      */
0059     DVCSCrossSectionUUMinusPhiIntegrated(
0060             const DVCSCrossSectionUUMinusPhiIntegrated &other);
0061 
0062     virtual PhysicalType<double> computeObservable(
0063             const DVCSObservableKinematic& kinematic,
0064             const List<GPDType>& gpdType);
0065 
0066     /**
0067      * Functor to perform the integration.
0068      */
0069     NumA::FunctionType1D* m_pFunctionToIntegrateObservable;
0070 
0071     /**
0072      * Function to be integrated.
0073      */
0074     virtual double functionToIntegrateObservable(double x,
0075             std::vector<double> params);
0076 
0077     /**
0078      * Initialize functors.
0079      */
0080     void initFunctorsForIntegrations();
0081 };
0082 
0083 } /* namespace PARTONS */
0084 
0085 #endif /* DVCSCROSSSECTIONUUMINUSPHIINTEGRATED_H */