|
|
|||
File indexing completed on 2026-06-02 08:51:48
0001 #ifndef DVCS_PROCESS_GV08_H 0002 #define DVCS_PROCESS_GV08_H 0003 0004 /** 0005 * @file DVCSProcessGV08.h 0006 * @author Hervé MOUTARDE (SPhN / CEA Saclay) 0007 * @version 1.0 0008 * 0009 * @date 25-09-2015 (Bryan BERTHOU) : refactoring 0010 */ 0011 0012 #include <NumA/linear_algebra/vector/Vector4D.h> 0013 #include <string> 0014 #include <vector> 0015 0016 #include "../../../utils/type/PhysicalType.h" 0017 #include "DVCSProcessModule.h" 0018 0019 namespace PARTONS { 0020 0021 /** 0022 * @class DVCSProcessGV08 0023 * 0024 * Module for the DVCS process using the unpublished Guichon-Vanderhaeghen set of formulas. 0025 */ 0026 class DVCSProcessGV08: public DVCSProcessModule { 0027 public: 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 DVCSProcessGV08(const std::string &className); 0037 /** 0038 * Default destructor. 0039 */ 0040 virtual ~DVCSProcessGV08(); 0041 0042 virtual DVCSProcessGV08* clone() const; 0043 0044 protected: 0045 /** 0046 * Copy constructor 0047 * 0048 * Use by the factory 0049 * 0050 * @param other 0051 */ 0052 DVCSProcessGV08(const DVCSProcessGV08& other); 0053 0054 virtual void initModule(); 0055 virtual void isModuleWellConfigured(); 0056 0057 // Cross sections 0058 virtual PhysicalType<double> CrossSectionBH(); 0059 virtual PhysicalType<double> CrossSectionVCS(); 0060 virtual PhysicalType<double> CrossSectionInterf(); 0061 0062 private: 0063 0064 double m_phaseSpace; ///< Phase-space factor. 0065 0066 double m_phiGV; ///< Angle between hadronic and leptonic planes (opposite sign of the phi angle of Trento). 0067 0068 // Store each power of Q 0069 // [0] = Q2 0070 // [1] = Q3 0071 // [2] = Q4 0072 // [3] = Q5 0073 std::vector<double> m_powerOfQ; 0074 0075 // Store each power of M 0076 // [0] = M2 0077 // [1] = M4 0078 // [2] = M6 0079 // [3] = M8 0080 std::vector<double> m_powerOfProtonMass; 0081 0082 // Variable used in the computation of Omega; 0083 double m_yGV; 0084 double m_xB2; ///< Square of @f$ x_B @f$. 0085 0086 double m_xBMin, m_xBMax; // Should be removed. xBMin already in DVCSModule and xBMax is wrong. 0087 0088 /*---------------------------------- Tests variables -----------------------------------*/ 0089 0090 // Printouts 0091 bool Validation; 0092 bool NoPrint; 0093 0094 /*---------------------------------------- Kinematics ----------------------------------*/ 0095 0096 // Frame dependent scalars 0097 //double m_E; // Beam energy 0098 double m_thetag; ///< Angle between real and virtual photons. 0099 double m_qpPerp; ///< Component (here x-axis) of the real photon 3-momentum orthogonal 0100 ///< to the virtual photon trajectory (here z-axis) in the 0101 ///< hadronic plane (here xz-plane). 0102 double m_Ur[100]; ///< Coefficients of the expansion of the interference cross section 0103 ///< wrt (combinations of) helicity amplitudes. 0104 double m_Omega; ///< (Function of) the linear polarization rate. 0105 0106 // Invariant scalars 0107 double m_s; ///< Mandelstam variable (square of the total incoming 4-momentum). 0108 double m_Q; ///< Photon virtual mass i.e.\ square root of Q2. 0109 0110 // 4-vectors defined in the CM frame : 0111 NumA::Vector4D m_qCM; ///< Virtual photon (propagates along z-axis). 4-vector defined in the CM frame. 0112 NumA::Vector4D m_pCM; ///< Incoming proton (propagates along z-axis). 4-vector defined in the CM frame. 0113 NumA::Vector4D m_qpCM; ///< Real photon (defines hadronic plane xz). 4-vector defined in the CM frame. 0114 NumA::Vector4D m_ppCM; ///< Outgoing proton. 4-vector defined in the CM frame. 0115 0116 /*------------------------ (Combinations of) helicity amplitudes -----------------------*/ 0117 0118 double Jem[4][3]; ///< Helicity amplitudes of the interference process assuming the 0119 ///< real photon has helicity +1. 0120 double RMvcs[4][3]; ///< Real part of the helicity amplitudes of the VCS process 0121 ///< assuming the real photon has helicity +1. 0122 double IMvcs[4][3]; ///< Imaginary part of the helicity amplitudes of the VCS process 0123 ///< assuming the real photon has helicity +1. 0124 0125 /*------------------ Expansion of cross sections for harmonic analysis -----------------*/ 0126 0127 // Bethe Heitler process 0128 double SigmaBHPol0[4]; ///< Coefficients for the unpolarized cross section of the Bethe-Heitler process. 0129 double SigmaBHPolX[2]; ///< Coefficients for the x-polarized cross section of the Bethe-Heitler process. 0130 double SigmaBHPolY; ///< Coefficient for the y-polarized cross section of the Bethe-Heitler process. 0131 double SigmaBHPolZ[2]; ///< Coefficients for the z-polarized cross section of the Bethe-Heitler process. 0132 0133 // Virtual Compton Scattering process 0134 0135 double SigmaVCSPol0[5]; ///< Coefficients for the unpolarized cross section of the Virtual Compton Scattering process. 0136 double SigmaVCSPolX[4]; ///< Coefficients for the x-polarized cross section of the Virtual Compton Scattering process. 0137 double SigmaVCSPolY[5]; ///< Coefficients for the y-polarized cross section of the Virtual Compton Scattering process. 0138 double SigmaVCSPolZ[4]; ///< Coefficients for the z-polarized cross section of the Virtual Compton Scattering process. 0139 0140 // Interference 0141 0142 double SigmaIPol0[8]; ///< Coefficients for the unpolarized cross section (interference term). 0143 double SigmaIPolX[8]; ///< Coefficients for the x-polarized cross section (interference term). 0144 double SigmaIPolY[8]; ///< Coefficients for the x-polarized cross section (interference term). 0145 double SigmaIPolZ[8]; ///< Coefficients for the x-polarized cross section (interference term). 0146 0147 /*-------------------------------------- Methods ---------------------------------------*/ 0148 0149 // Initialisations 0150 void MakeExactBHCrossSections(); ///< Fills the Jem and SigmaBHPol arrays. 0151 0152 void MakeExactVCSAndInterfCrossSections(); ///< Fills the Ur, SigmaVCSPol and SigmaIPol arrays. 0153 0154 double DdirectDcrossed(double phi); ///< Denominator of the Bethe Heitler cross section. 0155 0156 double SqrAmplBH(double beamHelicity, double beamCharge, 0157 NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of Bethe Heitler process. 0158 0159 double SqrAmplVCSAndInterf(double beamHelicity, double beamCharge, 0160 NumA::Vector3D targetPolarization); ///< Sum of the squared amplitude of VCS process and interference term. 0161 double SqrAmplVCS(double beamHelicity, double beamCharge, 0162 NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of VCS process. 0163 double SqrAmplInterf(double beamHelicity, double beamCharge, 0164 NumA::Vector3D targetPolarization); ///< Returns the interference term of the squared amplitude. 0165 0166 void MakeVCSHelicityAmplitudes(); 0167 0168 }; 0169 0170 } /* namespace PARTONS */ 0171 0172 #endif /* DVCS_PROCESS_GV08_H */ 0173
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|