cepgen is hosted by Hepforge, IPPP Durham
CepGen 1.2.5
Central exclusive processes event generator
Loading...
Searching...
No Matches
NachtmannAmplitudes.h
Go to the documentation of this file.
1/*
2 * CepGen: a central exclusive processes event generator
3 * Copyright (C) 2013-2021 Laurent Forthomme
4 * 2017-2019 Wolfgang Schaefer
5 * 2019 Marta Luszczak
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 */
20
21#ifndef CepGen_Physics_NachtmannAmplitudes_h
22#define CepGen_Physics_NachtmannAmplitudes_h
23
24#include <complex>
25
27
28namespace cepgen {
29 class ParametersList;
32 class NachtmannAmplitudes : public SteeredObject<NachtmannAmplitudes> {
33 public:
34 explicit NachtmannAmplitudes(const ParametersList&);
35
37 enum class Mode { SM, W, Wbar, phiW, phiWbar, phiB, phiBbar, WB, WbarB };
38 friend std::ostream& operator<<(std::ostream&, const Mode&);
39 const Mode& mode() const { return mode_; }
40
42 class Kinematics {
43 public:
44 Kinematics(double mw2, double shat, double that, double uhat);
45 bool operator!=(const Kinematics&) const;
46 friend std::ostream& operator<<(std::ostream&, const Kinematics&);
47 static Kinematics fromScosTheta(double shat, double cos_theta, double mw2);
48
49 // base variables
50 const double shat{0.}, that{0.}, uhat{0.};
51
52 private:
53 void setCosTheta(double cos_theta);
55 const double mw2_{0.};
56
57 public:
58 // all derived variables
59 const double shat2{0.};
60 const double beta2{0.}, beta{0.};
61 const double inv_gamma2{0.}, gamma2{0.}, gamma{0.}, inv_gamma{0.};
62 double cos_theta{0.}, cos_theta2{0.}, sin_theta2{0.}, sin_theta{0.};
63 double invA{0.};
64 };
65
67 std::complex<double> operator()(const Kinematics&, short lam1, short lam2, short lam3, short lam4) const;
68
70
71 private:
72 const Mode mode_;
74 const struct EFTParameters : SteeredObject<EFTParameters> {
75 explicit EFTParameters(const ParametersList&);
76 const double s1, mH;
77 double c1() const { return sqrt(1. - s1 * s1); }
78 static ParametersDescription description();
79 } eft_ext_;
81 struct Helicities {
82 short lam1;
83 short lam2;
84 short lam3;
85 short lam4;
86 };
87 const double G_EM_SQ;
88 const double G_EM;
89
91 std::complex<double> amplitudeSM(const Kinematics&, const Helicities&) const;
92 std::complex<double> amplitudeW(const Kinematics&, const Helicities&) const;
93 std::complex<double> amplitudeWbar(const Kinematics&, const Helicities&) const;
94 std::complex<double> amplitudephiW(const Kinematics&, const Helicities&) const;
95 std::complex<double> amplitudeWB(const Kinematics&, const Helicities&) const;
96 std::complex<double> amplitudeWbarB(const Kinematics&, const Helicities&) const;
97 };
98} // namespace cepgen
99
100#endif
List of kinematic constraints to apply on the process phase space.
Definition Kinematics.h:27
Helper container to handle all kinematics variables computation once.
static Kinematics fromScosTheta(double shat, double cos_theta, double mw2)
friend std::ostream & operator<<(std::ostream &, const Kinematics &)
bool operator!=(const Kinematics &) const
Amplitudes computational tool, as developed by Nachtmann et al. .
Mode
Model giving an amplitude for the two-photon WW production.
friend std::ostream & operator<<(std::ostream &, const Mode &)
std::complex< double > operator()(const Kinematics &, short lam1, short lam2, short lam3, short lam4) const
Compute the amplitude for a given kinematics and a given set of helicity components.
static ParametersDescription description()
A description object for parameters collection.
Base user-steerable object.
Common namespace for this Monte Carlo generator.