File indexing completed on 2025-04-19 09:09:42
0001 #ifndef Analysis_Observables_Two_Particle_Observables_H
0002 #define Analysis_Observables_Two_Particle_Observables_H
0003
0004 #include "ATOOLS/Org/CXXFLAGS_PACKAGES.H"
0005 #include "AddOns/Analysis/Observables/Primitive_Observable_Base.H"
0006
0007 namespace ANALYSIS {
0008 class Two_Particle_Observable_Base : public Primitive_Observable_Base {
0009 protected:
0010 ATOOLS::Flavour m_flav1,m_flav2;
0011 void virtual Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0012 double weight, double ncount) = 0;
0013
0014 public:
0015 Two_Particle_Observable_Base(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0016 int type, double xmin, double xmax, int nbins,
0017 const std::string & listname,
0018 const std::string & name);
0019
0020
0021
0022 void virtual Evaluate(const ATOOLS::Particle_List & plist,
0023 double weight, double ncount);
0024 void virtual EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0025 double weight, double ncount);
0026 void EvaluateNLOcontrib(double weight, double ncount);
0027 void EvaluateNLOevt();
0028 };
0029
0030 class Two_Particle_Mass : public Two_Particle_Observable_Base {
0031 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0032 double weight, double ncount);
0033 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0034 double weight, double ncount);
0035 public:
0036 Two_Particle_Mass(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0037 int type, double xmin, double xmax, int nbins,
0038 const std::string & listname);
0039 Primitive_Observable_Base * Copy() const;
0040 };
0041
0042 class Two_Particle_PT : public Two_Particle_Observable_Base {
0043 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0044 double weight, double ncount);
0045 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0046 double weight, double ncount);
0047 public:
0048 Two_Particle_PT(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0049 int type, double xmin, double xmax, int nbins,
0050 const std::string & listname);
0051 Primitive_Observable_Base * Copy() const;
0052 };
0053
0054 class Two_Particle_ETW : public Two_Particle_Observable_Base {
0055 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0056 double weight, double ncount);
0057 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0058 double weight, double ncount);
0059 public:
0060 Two_Particle_ETW(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0061 int type, double xmin, double xmax, int nbins,
0062 const std::string & listname);
0063 Primitive_Observable_Base * Copy() const;
0064 };
0065
0066 class Two_Particle_Scalar_PT : public Two_Particle_Observable_Base {
0067 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0068 double weight, double ncount);
0069 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0070 double weight, double ncount);
0071 public:
0072 Two_Particle_Scalar_PT(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0073 int type, double xmin, double xmax, int nbins,
0074 const std::string & listname);
0075 Primitive_Observable_Base * Copy() const;
0076 };
0077
0078 class Two_Particle_Eta : public Two_Particle_Observable_Base {
0079 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0080 double weight, double ncount);
0081 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0082 double weight, double ncount);
0083 public:
0084 Two_Particle_Eta(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0085 int type, double xmin, double xmax, int nbins,
0086 const std::string & listname);
0087 Primitive_Observable_Base * Copy() const;
0088 };
0089
0090 class Two_Particle_DEta : public Two_Particle_Observable_Base {
0091 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0092 double weight, double ncount);
0093 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0094 double weight, double ncount);
0095 public:
0096 Two_Particle_DEta(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0097 int type, double xmin, double xmax, int nbins,
0098 const std::string & listname);
0099 Primitive_Observable_Base * Copy() const;
0100 };
0101
0102 class Two_Particle_Y : public Two_Particle_Observable_Base {
0103 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0104 double weight, double ncount);
0105 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0106 double weight, double ncount);
0107 public:
0108 Two_Particle_Y(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0109 int type, double xmin, double xmax, int nbins,
0110 const std::string & listname);
0111 Primitive_Observable_Base * Copy() const;
0112 };
0113
0114 class Two_Particle_DY : public Two_Particle_Observable_Base {
0115 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0116 double weight, double ncount);
0117 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0118 double weight, double ncount);
0119 public:
0120 Two_Particle_DY(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0121 int type, double xmin, double xmax, int nbins,
0122 const std::string & listname);
0123 Primitive_Observable_Base * Copy() const;
0124 };
0125
0126 class Two_Particle_Phi : public Two_Particle_Observable_Base {
0127 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0128 double weight, double ncount);
0129 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0130 double weight, double ncount);
0131 public:
0132 Two_Particle_Phi(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0133 int type, double xmin, double xmax, int nbins,
0134 const std::string & listname);
0135 Primitive_Observable_Base * Copy() const;
0136 };
0137
0138 class Two_Particle_DPhi : public Two_Particle_Observable_Base {
0139 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0140 double weight, double ncount);
0141 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0142 double weight, double ncount);
0143 public:
0144 Two_Particle_DPhi(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0145 int type, double xmin, double xmax, int nbins,
0146 const std::string & listname);
0147 Primitive_Observable_Base * Copy() const;
0148 };
0149
0150 class Two_Particle_Angle : public Two_Particle_Observable_Base {
0151 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0152 double weight, double ncount);
0153 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0154 double weight, double ncount);
0155 public:
0156 Two_Particle_Angle(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0157 int type, double xmin, double xmax, int nbins,
0158 const std::string & listname);
0159 Primitive_Observable_Base * Copy() const;
0160 };
0161
0162 class Two_Particle_DR : public Two_Particle_Observable_Base {
0163 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0164 double weight, double ncount);
0165 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0166 double weight, double ncount);
0167 public:
0168 Two_Particle_DR(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0169 int type, double xmin, double xmax, int nbins,
0170 const std::string & listname);
0171 Primitive_Observable_Base * Copy() const;
0172 };
0173
0174 class Two_Particle_CMS_Angle : public Two_Particle_Observable_Base {
0175 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0176 double weight, double ncount);
0177 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0178 double weight, double ncount);
0179 public:
0180 Two_Particle_CMS_Angle(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0181 int type, double xmin, double xmax, int nbins,
0182 const std::string & listname);
0183 Primitive_Observable_Base * Copy() const;
0184 };
0185
0186 class Two_Particle_Mass2 : public Two_Particle_Observable_Base {
0187 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0188 double weight, double ncount);
0189 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0190 double weight, double ncount);
0191 public:
0192 Two_Particle_Mass2(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0193 int type, double xmin, double xmax, int nbins,
0194 const std::string & listname);
0195 Primitive_Observable_Base * Copy() const;
0196 };
0197
0198 class Two_Particle_MT2 : public Two_Particle_Observable_Base {
0199 void Evaluate(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0200 double weight, double ncount);
0201 void EvaluateNLOcontrib(const ATOOLS::Vec4D & mom1, const ATOOLS::Vec4D & mom2,
0202 double weight, double ncount);
0203 public:
0204 Two_Particle_MT2(const ATOOLS::Flavour & flav1, const ATOOLS::Flavour & flav2,
0205 int type, double xmin, double xmax, int nbins,
0206 const std::string & listname);
0207 Primitive_Observable_Base * Copy() const;
0208 };
0209
0210 }
0211
0212 #endif