File indexing completed on 2026-06-02 08:51:42
0001 #ifndef GAM2_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0002 #define GAM2_CONVOL_COEFF_FUNCTION_KINEMATIC_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <ElementaryUtils/parameters/GenericType.h>
0012 #include <ElementaryUtils/parameters/Parameters.h>
0013 #include <string>
0014 #include <vector>
0015
0016 #include "../../../utils/type/PhysicalType.h"
0017 #include "../../../utils/type/PhysicalUnit.h"
0018 #include "../../PolarizationType.h"
0019 #include "../ConvolCoeffFunctionKinematic.h"
0020
0021 namespace PARTONS {
0022
0023
0024
0025
0026
0027
0028
0029
0030 class GAM2ConvolCoeffFunctionKinematic: public ConvolCoeffFunctionKinematic {
0031
0032 public:
0033
0034 static const std::string GAM2_CONVOL_COEFF_FUNCTION_KINEMATIC_CLASS_NAME;
0035
0036
0037
0038
0039 GAM2ConvolCoeffFunctionKinematic();
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054 GAM2ConvolCoeffFunctionKinematic(double xi, double t, double uPrim,
0055 double Mgg2, double MuF2, double MuR2, PolarizationType::Type polG0,
0056 PolarizationType::Type polG1, PolarizationType::Type polG2,
0057 double phi);
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072 GAM2ConvolCoeffFunctionKinematic(const PhysicalType<double> &xi,
0073 const PhysicalType<double> &t, const PhysicalType<double> &uPrim,
0074 const PhysicalType<double> &Mgg2, const PhysicalType<double> &MuF2,
0075 const PhysicalType<double> &MuR2, PolarizationType::Type polG0,
0076 PolarizationType::Type polG1, PolarizationType::Type polG2,
0077 const PhysicalType<double> &phi);
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092 GAM2ConvolCoeffFunctionKinematic(const ElemUtils::GenericType &xi,
0093 const ElemUtils::GenericType &t,
0094 const ElemUtils::GenericType &uPrim,
0095 const ElemUtils::GenericType &Mgg2,
0096 const ElemUtils::GenericType &MuF2,
0097 const ElemUtils::GenericType &MuR2, PolarizationType::Type polG0,
0098 PolarizationType::Type polG1, PolarizationType::Type polG2,
0099 const ElemUtils::GenericType &phi);
0100
0101
0102
0103
0104
0105 GAM2ConvolCoeffFunctionKinematic(
0106 const GAM2ConvolCoeffFunctionKinematic &other);
0107
0108
0109
0110
0111 virtual ~GAM2ConvolCoeffFunctionKinematic();
0112
0113 virtual void configure(const ElemUtils::Parameters ¶meters);
0114 virtual std::string toString() const;
0115
0116
0117
0118
0119
0120 void serialize(ElemUtils::Packet &packet) const;
0121
0122
0123
0124
0125
0126 void unserialize(ElemUtils::Packet &packet);
0127
0128
0129
0130
0131 void serializeIntoStdVector(std::vector<double>& vec) const;
0132
0133
0134
0135
0136 void unserializeFromStdVector(std::vector<double>::const_iterator& it,
0137 const std::vector<double>::const_iterator& end);
0138
0139
0140
0141
0142 bool operator ==(const GAM2ConvolCoeffFunctionKinematic& other) const;
0143
0144
0145
0146
0147 bool operator !=(const GAM2ConvolCoeffFunctionKinematic& other) const;
0148
0149
0150
0151
0152
0153
0154
0155
0156 const PhysicalType<double>& getUPrim() const;
0157
0158
0159
0160
0161 void setUPrim(const PhysicalType<double>& uPrim);
0162
0163
0164
0165
0166 void setUPrim(double uPrim, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0167
0168
0169
0170
0171 const PhysicalType<double>& getMgg2() const;
0172
0173
0174
0175
0176 void setMgg2(const PhysicalType<double>& Mgg2);
0177
0178
0179
0180
0181 void setMgg2(double Mgg2, PhysicalUnit::Type unit = PhysicalUnit::GEV2);
0182
0183
0184
0185
0186 PolarizationType::Type getPolG0() const;
0187
0188
0189
0190
0191 void setPolG0(PolarizationType::Type polG0);
0192
0193
0194
0195
0196 PolarizationType::Type getPolG1() const;
0197
0198
0199
0200
0201 void setPolG1(PolarizationType::Type polG1);
0202
0203
0204
0205
0206 PolarizationType::Type getPolG2() const;
0207
0208
0209
0210
0211 void setPolG2(PolarizationType::Type polG2);
0212
0213
0214
0215
0216 const PhysicalType<double>& getPhi() const;
0217
0218
0219
0220
0221 void setPhi(const PhysicalType<double>& Phi);
0222
0223
0224
0225
0226 void setPhi(double Phi, PhysicalUnit::Type unit = PhysicalUnit::RAD);
0227
0228 protected:
0229
0230 virtual void updateHashSum() const;
0231
0232 private:
0233
0234
0235
0236
0237 PhysicalType<double> m_uPrim;
0238
0239
0240
0241
0242 PhysicalType<double> m_Mgg2;
0243
0244 PolarizationType::Type m_polG0;
0245 PolarizationType::Type m_polG1;
0246 PolarizationType::Type m_polG2;
0247
0248
0249
0250
0251 PhysicalType<double> m_phi;
0252 };
0253
0254
0255
0256
0257 ElemUtils::Packet& operator <<(ElemUtils::Packet& packet,
0258 GAM2ConvolCoeffFunctionKinematic& kinematic);
0259
0260
0261
0262
0263 ElemUtils::Packet& operator >>(ElemUtils::Packet& packet,
0264 GAM2ConvolCoeffFunctionKinematic& kinematic);
0265
0266 }
0267
0268 #endif