elegent is hosted by Hepforge, IPPP Durham
Elegent
PPPModel.h
1 /********************************************************************************
2 
3  Copyright 2013 Jan Kašpar
4 
5  This file is part of Elegent (http://elegent.hepforge.org/).
6 
7  Elegent 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  (at your option) any later version.
11 
12  Elegent 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 Elegent. If not, see <http://www.gnu.org/licenses/>.
19 
20 ********************************************************************************/
21 
22 #ifndef _elegent_ppp_model_
23 #define _elegent_ppp_model_
24 
25 #include "Model.h"
26 #include "Math.h"
27 
28 namespace Elegent
29 {
30 
37 class PPPModel : public Model
38 {
39  public:
40  struct Trajectory
41  {
42  double D, c, ap, r2, rho2;
43  TComplex gamma;
44  };
45 
48  {
49  v2P,
50  v3P
51  } variant;
52 
53  PPPModel();
54  ~PPPModel();
55 
56  void Configure(VariantType v);
57 
58  virtual void Init();
59 
60  virtual void Print() const;
61 
62  virtual TComplex Amp(double t) const;
63 
65  virtual TComplex Prf(double b) const;
66 
67  protected:
68  Trajectory pom1, pom2, pom3, oder, regf, rego;
69  double s0;
70  double precision, upper_bound;
71 
72  bool integ_workspace_initialized;
73  unsigned long integ_workspace_size;
74  gsl_integration_workspace *integ_workspace;
75 
76  static void SetTrajectory(Trajectory &t, double D, double c, double ap, double r2, double s0);
77 
78  static TComplex Delta(const Trajectory &, double t);
79 
81  virtual TComplex prf0(double b) const;
82 
83  static TComplex prf_J0(double b, double *par, const void *obj);
84 };
85 
86 } // namespace
87 
88 #endif
Definition: BHModel.h:28
Predazzi, Petrov and Prokudin model of p-p and p-anti p elastic scattering.
Definition: PPPModel.h:37
with 3 Pomerons
Definition: PPPModel.h:50
Definition: PPPModel.h:40
with 2 Pomerons
Definition: PPPModel.h:49
virtual void Print() const
prints model info
Definition: PPPModel.cc:128
VariantType
available variants
Definition: PPPModel.h:47
static TComplex Delta(const Trajectory &, double t)
Definition: PPPModel.cc:146
virtual TComplex Prf(double b) const
b in fm
Definition: PPPModel.cc:177
virtual TComplex Amp(double t) const
Amplitude in t-space.
Definition: PPPModel.cc:194
virtual void Init()
sets up model parameters and data members
Definition: PPPModel.cc:85
The base class for hadronic models of (anti)proton-proton elastic scattering.
Definition: Model.h:35
virtual TComplex prf0(double b) const
b in GeV^-1
Definition: PPPModel.cc:158