File indexing completed on 2026-06-02 08:51:48
0001 #ifndef GAM2_PROCESS_MODULE_H
0002 #define GAM2_PROCESS_MODULE_H
0003
0004 #include <ElementaryUtils/parameters/Parameters.h>
0005 #include <NumA/linear_algebra/vector/Vector3D.h>
0006 #include <complex>
0007 #include <map>
0008 #include <string>
0009
0010 #include "../../../beans/automation/BaseObjectData.h"
0011 #include "../../../beans/convol_coeff_function/GAM2/GAM2ConvolCoeffFunctionKinematic.h"
0012 #include "../../../beans/convol_coeff_function/GAM2/GAM2ConvolCoeffFunctionResult.h"
0013 #include "../../../beans/gpd/GPDType.h"
0014 #include "../../../beans/List.h"
0015 #include "../../../beans/observable/GAM2/GAM2ObservableKinematic.h"
0016 #include "../../../beans/observable/GAM2/GAM2ObservableResult.h"
0017 #include "../../../beans/PolarizationType.h"
0018 #include "../../../utils/type/PhysicalType.h"
0019 #include "../ProcessModule.h"
0020
0021 namespace PARTONS {
0022 class GAM2ConvolCoeffFunctionModule;
0023 class GAM2ScalesModule;
0024 class GAM2XiConverterModule;
0025 }
0026
0027 namespace PARTONS {
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037 class GAM2ProcessModule: public ProcessModule<GAM2ObservableKinematic,
0038 GAM2ObservableResult> {
0039
0040 public:
0041
0042 static const std::string GAM2_PROCESS_MODULE_CLASS_NAME;
0043
0044
0045
0046
0047 virtual ~GAM2ProcessModule();
0048
0049 virtual GAM2ProcessModule* clone() const = 0;
0050 virtual std::string toString() const;
0051 virtual void resolveObjectDependencies();
0052 virtual void run();
0053 virtual void configure(const ElemUtils::Parameters ¶meters);
0054 virtual void prepareSubModules(
0055 const std::map<std::string, BaseObjectData>& subModulesData);
0056 virtual std::vector<double> test();
0057
0058 virtual List<GPDType> getListOfAvailableGPDTypeForComputation() const;
0059
0060
0061
0062
0063 virtual GAM2ObservableResult compute(PolarizationType::Type polG0,
0064 PolarizationType::Type polG1, PolarizationType::Type polG2,
0065 NumA::Vector3D targetPolarization,
0066 const GAM2ObservableKinematic& kinematic,
0067 const List<GPDType>& gpdType = List<GPDType>());
0068
0069
0070
0071
0072 virtual void resetPreviousKinematic();
0073
0074
0075
0076
0077 bool isPreviousCCFKinematicDifferent(
0078 const GAM2ConvolCoeffFunctionKinematic& kinematic) const;
0079
0080
0081
0082
0083
0084
0085 GAM2ScalesModule* getScaleModule() const;
0086
0087
0088
0089
0090 void setScaleModule(GAM2ScalesModule* pScaleModule);
0091
0092
0093
0094
0095 GAM2XiConverterModule* getXiConverterModule() const;
0096
0097
0098
0099
0100 void setXiConverterModule(GAM2XiConverterModule* pXiConverterModule);
0101
0102
0103
0104
0105 GAM2ConvolCoeffFunctionModule* getConvolCoeffFunctionModule() const;
0106
0107
0108
0109
0110 void setConvolCoeffFunctionModule(
0111 GAM2ConvolCoeffFunctionModule* pConvolCoeffFunctionModule);
0112
0113
0114
0115
0116
0117
0118 virtual PhysicalType<double> CrossSection();
0119
0120
0121
0122
0123 void setConvolCoeffFunction(const GAM2ConvolCoeffFunctionKinematic& kin, const GAM2ConvolCoeffFunctionResult& result);
0124
0125 protected:
0126
0127
0128
0129
0130 GAM2ProcessModule(const std::string &className);
0131
0132
0133
0134
0135
0136 GAM2ProcessModule(const GAM2ProcessModule& other);
0137
0138 virtual void setKinematics(const GAM2ObservableKinematic& kinematic);
0139 virtual void setExperimentalConditions(PolarizationType::Type polG0,
0140 PolarizationType::Type polG1, PolarizationType::Type polG2,
0141 NumA::Vector3D targetPolarization);
0142 virtual void initModule();
0143 virtual void isModuleWellConfigured();
0144
0145 double m_t;
0146 double m_uPrim;
0147 double m_Mgg2;
0148 double m_E;
0149 double m_phi;
0150
0151 double m_tmin;
0152 double m_xi;
0153
0154 PolarizationType::Type m_polG0;
0155 PolarizationType::Type m_polG1;
0156 PolarizationType::Type m_polG2;
0157 NumA::Vector3D m_targetPolarization;
0158
0159 GAM2ScalesModule* m_pScaleModule;
0160 GAM2XiConverterModule* m_pXiConverterModule;
0161 GAM2ConvolCoeffFunctionModule* m_pConvolCoeffFunctionModule;
0162
0163 GAM2ConvolCoeffFunctionResult m_dvcsConvolCoeffFunctionResult;
0164 GAM2ConvolCoeffFunctionKinematic m_lastCCFKinematics;
0165
0166
0167
0168
0169
0170
0171 void computeConvolCoeffFunction(const GAM2ObservableKinematic& kinematic,
0172 const List<GPDType> & gpdType = List<GPDType>());
0173
0174
0175
0176
0177
0178
0179 std::complex<double> getConvolCoeffFunctionValue(GPDType::Type gpdType);
0180 };
0181
0182 }
0183
0184 #endif