elegent is hosted by Hepforge, IPPP Durham
Elegent
BSWModel.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_bsw_model_
23 #define _elegent_bsw_model_
24 
25 #include "Model.h"
26 #include "Math.h"
27 
28 #include <vector>
29 
30 //#define DEBUG
31 
32 namespace Elegent
33 {
34 
44 class BSWModel : public Model
45 {
46  public:
48  struct Trajectory
49  {
51  double C, b, a, ap, signature;
52 
55  double sign;
56 
57  void Init(double _C, double _b, double _a, double _ap, double _signature)
58  {
59  C=_C; b=_b; a=_a; ap=_ap; signature = _signature;
60  sign = 0.;
61  }
62  };
63 
65  enum ModeType
66  {
68  mPom,
70  } mode;
71 
72  BSWModel();
73 
74  ~BSWModel();
75 
76  void Configure(ModeType _mode = mPomReg, bool _presampled = true);
77 
78  virtual void Init();
79 
80  virtual void Print() const;
81 
82  virtual TComplex Amp(double t) const;
83  virtual TComplex Prf(double b) const;
84 
85  public:
87  bool presampled;
88 
89  virtual void ForcePresampling(bool value)
90  {
91  presampled = value;
92  }
93 
95  double c, cp, a, f, m1, m2, asq, m1sq, m2sq;
96 
98  Trajectory A2, rho, omega;
99 
101  TComplex regge_fac;
102  signed int k_u;
103  signed int k_lnu;
104 
106  double upper_bound_t, precision_t;
107  double upper_bound_b, precision_b;
108 
109  bool integ_workspace_initialized;
110  unsigned long integ_workspace_size_b;
111  gsl_integration_workspace *integ_workspace_b;
112  unsigned long integ_workspace_size_t;
113  gsl_integration_workspace *integ_workspace_t;
114 
116  double Ft(double t) const;
117 
119  TComplex Rt(Trajectory tr, double t) const;
120 
122  TComplex R0t(double t) const;
123 
125  TComplex S0(double t) const;
126 
128  TComplex S00;
129 
131  TComplex Omega0t(double t) const;
132 
133  static TComplex Omega0t_J0(double t, double *par, const void *vobj);
134 
136  TComplex Omega0b(double b) const;
137 
139  TComplex prf0(double b) const;
140 
141  static TComplex prf0_J0(double b, double *par, const void *vobj);
142 
144  double data_db;
145 
147  unsigned int data_N;
148 
150  std::vector<double> data_re, data_im;
151 
152 #ifdef DEBUG
153  std::vector<double> data_b;
154 #endif
155 
157  void BuildSample(unsigned int samples);
158 
160  TComplex SampleEval(double b) const;
161 };
162 
163 } // namespace
164 
165 #endif
double data_db
the sampling-step size
Definition: BSWModel.h:144
a Regge trajectory
Definition: BSWModel.h:48
Trajectory A2
the 3 Regge trajectories
Definition: BSWModel.h:98
TComplex R0t(double t) const
the sum of allowed Regge trajctories (A2, rho, omega)
Definition: BSWModel.cc:175
TComplex Omega0b(double b) const
(s, b)
Definition: BSWModel.cc:250
std::vector< double > data_re
the sampled real and imaginary values of prf0(b)
Definition: BSWModel.h:150
double sign
Non-documented overall sign of the amplitude.
Definition: BSWModel.h:55
Definition: BHModel.h:28
TComplex Omega0t(double t) const
the Bessel transform of (s, b) in Eq. (2)
Definition: BSWModel.cc:220
void BuildSample(unsigned int samples)
samples the prf0 function
Definition: BSWModel.cc:298
double upper_bound_t
integration variables
Definition: BSWModel.h:106
virtual void Print() const
prints model info
Definition: BSWModel.cc:121
double C
the parameters from Eq. (7) in [3]
Definition: BSWModel.h:51
double c
the pomeron exchange parameters
Definition: BSWModel.h:95
TComplex S0(double t) const
S_0(s), Eq(3)
Definition: BSWModel.cc:185
only Reggeon contribution
Definition: BSWModel.h:69
bool presampled
flag whether the presampled mode is on
Definition: BSWModel.h:87
TComplex SampleEval(double b) const
interpolates (linearly) the sample at point b
Definition: BSWModel.cc:332
TComplex regge_fac
constants to resolve ambiguities in the source papers
Definition: BSWModel.h:101
virtual TComplex Prf(double b) const
Profile function (amplitude in b-space).
Definition: BSWModel.cc:267
double Ft(double t) const
F(t), Eq. (4)
Definition: BSWModel.cc:151
TComplex S00
S_0(0)
Definition: BSWModel.h:128
signed int k_u
u = -|u| exp(i * (2 k pi - pi))
Definition: BSWModel.h:102
unsigned int data_N
the number of sampled points
Definition: BSWModel.h:147
virtual void ForcePresampling(bool value)
Sets the presampling option, if available.
Definition: BSWModel.h:89
virtual void Init()
sets up model parameters and data members
Definition: BSWModel.cc:72
virtual TComplex Amp(double t) const
Amplitude in t-space.
Definition: BSWModel.cc:285
both Pomeron and Reggeon contributions
Definition: BSWModel.h:67
The base class for hadronic models of (anti)proton-proton elastic scattering.
Definition: Model.h:35
Bourelly, Soffer and Wu model of p-p and p-anti p elastic scattering.
Definition: BSWModel.h:44
signed int k_lnu
ln u = |ln u| exp(i * (al + 2 k_lnu pi)), al = atan2(Im ln u, Re ln u) in (-pi, +pi) ...
Definition: BSWModel.h:103
ModeType
available modes
Definition: BSWModel.h:65
TComplex prf0(double b) const
the profile function with b in GeV^-1
Definition: BSWModel.cc:260
only Pomeron contribution
Definition: BSWModel.h:68
TComplex Rt(Trajectory tr, double t) const
generic Regge trajectory amplitude, Eq. (7)
Definition: BSWModel.cc:160