Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef TCSR_H
0002 #define TCSR_H
0003 
0004 /**
0005  * @file TCSR.h
0006  * @author Pawel Sznajder (IPNO)
0007  * @date November 25, 2016
0008  * @version 1.0
0009  */
0010 
0011 #include <string>
0012 #include <vector>
0013 
0014 #include "../../../../beans/gpd/GPDType.h"
0015 #include "../../../../beans/List.h"
0016 #include "../../../../utils/type/PhysicalType.h"
0017 #include "../cross_section/TCSCrossSectionUUWeightedThetaIntegrated.h"
0018 
0019 namespace PARTONS {
0020 
0021 /**
0022  * @class TCSR
0023  * @brief Asymmetry R.
0024  *
0025  * Definition:<br>
0026  *
0027  * see Eq. (31) of Eur. Phys. J. C23 (2002) 675
0028  *
0029  * Unit: none.
0030  */
0031 class TCSR: public TCSCrossSectionUUWeightedThetaIntegrated {
0032 
0033 public:
0034 
0035     /**
0036      * Unique ID to automatically register the class in the registry.
0037      */
0038     static const unsigned int classId;
0039 
0040     /**
0041      * Constructor.
0042      * @param className Name of class.
0043      */
0044     TCSR(const std::string &className);
0045 
0046     /**
0047      * Destructor.
0048      */
0049     virtual ~TCSR();
0050 
0051     virtual TCSR* clone() const;
0052 
0053 protected:
0054 
0055     /**
0056      * Copy constructor.
0057      * @param other Object to be copied.
0058      */
0059     TCSR(const TCSR &other);
0060 
0061     virtual PhysicalType<double> computeObservable(
0062             const TCSObservableKinematic& kinematic,
0063             const List<GPDType>& gpdType);
0064 
0065     /**
0066      * Functor to perform the integration (numerator).
0067      */
0068     NumA::FunctionType1D* m_pFunctionToIntegrateObservablePhi1;
0069 
0070     /**
0071      * Functor to perform the integration (denominator).
0072      */
0073     NumA::FunctionType1D* m_pFunctionToIntegrateObservablePhi2;
0074 
0075     /**
0076      * Function to be integrated (numerator).
0077      */
0078     virtual double functionToIntegrateObservablePhi1(double x,
0079             std::vector<double> params);
0080 
0081     /**
0082      * Function to be integrated (denominator).
0083      */
0084     virtual double functionToIntegrateObservablePhi2(double x,
0085             std::vector<double> params);
0086 
0087     /**
0088      * Initialize functors.
0089      */
0090     virtual void initFunctorsForIntegrations();
0091 };
0092 
0093 } /* namespace PARTONS */
0094 
0095 #endif /* TCSR_H */