Back to home page

EIC code displayed by LXR

 
 

    


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

0001 #ifndef DVMP_PROCESS_GK06_H
0002 #define DVMP_PROCESS_GK06_H
0003 
0004 /**
0005  * @file DVMPProcessGK06.h
0006  * @author Kemal Tezgin
0007  * @date October 21, 2019
0008  * @version 1.0
0009  */
0010 
0011 #include <complex>
0012 #include <string>
0013 
0014 #include "../../../utils/type/PhysicalType.h"
0015 #include "DVMPProcessModule.h"
0016 
0017 namespace PARTONS {
0018 
0019 /**
0020  * @class DVMPProcessGK06
0021  *
0022  * TODO
0023  */
0024 class DVMPProcessGK06: public DVMPProcessModule {
0025 
0026 public:
0027 
0028     static const unsigned int classId; ///< Unique ID to automatically register the class in the registry.
0029 
0030     /**
0031      * Constructor.
0032      * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details.
0033      *
0034      * @param className name of child class.
0035      */
0036     DVMPProcessGK06(const std::string &className);
0037 
0038     /**
0039      * Default destructor.
0040      */
0041     virtual ~DVMPProcessGK06();
0042     virtual DVMPProcessGK06* clone() const;
0043 
0044 protected:
0045 
0046     /** Copy constructor.
0047      @param other Object to be copied.
0048      */
0049     DVMPProcessGK06(const DVMPProcessGK06& other);
0050 
0051     virtual void initModule();
0052     virtual void isModuleWellConfigured();
0053 
0054     virtual PhysicalType<double> CrossSection();
0055 
0056 private:
0057 
0058     double CrossSectionL(); ///< Partial cross-section L.
0059     double CrossSectionT(); ///< Partial cross-section T.
0060     double CrossSectionLT(); ///< Partial cross-section LT.
0061     double CrossSectionTT(); ///< Partial cross-section TT.
0062 
0063     double AsymmetryAUUcosphi(); ///< cos(\phi) moment of AUU.
0064     double AsymmetryAUUcos2phi(); ///< cos(2\phi) moment of AUU.
0065 
0066     double AsymmetryAULsinphi(); ///< sin(\phi) moment of AUL.
0067     double AsymmetryAULsin2phi(); ///< sin(2\phi) moment of AUL.
0068     double AsymmetryAULsin3phi(); ///< sin(3\phi) moment of AUL.
0069 
0070     double AsymmetryALUsinphi(); ///< sin_\phi moment of ALU.
0071 
0072     double AsymmetryALLconst(); ///< constant term in ALL.
0073     double AsymmetryALLcosphi(); ///< cos(\phi) moment of ALL.
0074     double AsymmetryALLcos2phi(); ///< cos(2\phi) moment of ALL.
0075 
0076     double poleResidue(); ///< The residue of the pole in Pi+ production
0077 
0078     double poleAmplitude0p0p(); ///< Computation of the pion pole amplitude M_{0+0+}.
0079     double poleAmplitude0m0p(); ///< Computation of the pion pole amplitude M_{0-0+}.
0080     double poleAmplitude0mpp(); ///< Computation of the pion pole amplitude M_{0-++}.
0081     double poleAmplitude0ppp(); ///< Computation of the pion pole amplitude M_{0+++}.
0082     double poleAmplitude0pmp(); ///< Computation of the pion pole amplitude M_{0+-+}.
0083     double poleAmplitude0mmp(); ///< Computation of the pion pole amplitude M_{0--+}.
0084 
0085     std::complex<double> Amplitude0p0p(); ///< Computation of the amplitude M_{0+0+}.
0086     std::complex<double> Amplitude0m0p(); ///< Computation of the amplitude M_{0-0+}.
0087     std::complex<double> Amplitude0mpp(); ///< Computation of the amplitude M_{0-++}.
0088     std::complex<double> Amplitude0ppp(); ///< Computation of the amplitude M_{0+++}.
0089     std::complex<double> Amplitude0pmp(); ///< Computation of the amplitude M_{0+-+}.
0090     std::complex<double> Amplitude0mmp(); ///< Computation of the amplitude M_{0--+}.
0091 
0092     double m_W2; ///< W^2 variable.
0093     double m_gamma; ///< gamma variable.
0094     double m_eps; ///< epsilon variable.
0095     double m_xi; ///< xi variable.
0096     double m_tminGK; ///< tMin a la GK.
0097 
0098     double lambdaFunction(double a, double b, double c) const; ///< Mandalstam function.
0099 };
0100 
0101 } /* namespace PARTONS */
0102 
0103 #endif /* DVMP_PROCESS_GK06_H */