elegent is hosted by Hepforge, IPPP Durham
Elegent
CoulombInterference.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_coulomb_
23 #define _elegent_coulomb_
24 
25 #include "Model.h"
26 #include "Math.h"
27 
28 
29 namespace Elegent
30 {
31 
36 {
37  public:
39  enum CIMode
40  {
41  mPC,
42  mPH,
43  mWY,
44  mSWY,
45  mKL
46  } mode;
47 
48  std::string GetModeString() const;
49 
51  enum FFType
52  {
61  } ffType;
62 
64 
66 
67  double GetT()
68  { return T; }
69 
71  double tau;
72 
74  double T;
75 
77  double precision;
78 
79  unsigned long integ_workspace_size;
80  gsl_integration_workspace *integ_workspace, *integ_workspace2;
81 
83  void Print() const;
84 
85  protected:
87  static double A_integrand(double tt, double *par, const void *vobj);
88 
90  static double I_integrand(double phi, double *par, const void *vobj);
91 
93  static TComplex B_integrand(double tp, double *par, const void *vobj);
94 
95  public:
98  double A_term(double t) const;
99 
100  double I_integral(double t, double tp) const;
101 
104  TComplex B_term(double t) const;
105 
109  double C_term(double t) const;
110 
111  //-------------------- form factors --------------------
112 
113  public:
114  std::string GetFFName() const;
115 
117  double FF_dipole(double t) const;
118 
121  double FF_e(double t) const;
122 
125  double FF_m(double t) const;
126 
129  double FF_sq(double t) const;
130 
133  double FF_sq_prime(double t) const
134  {
135  double ep = 1E-5;
136  return (FF_sq(t + ep) - FF_sq(t)) / ep;
137  }
138 
139  //-------------------- interference phases --------------------
140 
144  TComplex Phi_WY(double t) const;
145 
147  TComplex Phi_SWY(double t) const;
148 
152  TComplex Psi_KL(double t) const;
153 
157  TComplex Phase(double t) const;
158 
159  //-------------------- amplitudes --------------------
160 
163  TComplex Amp_pure(double t) const;
164 
165  TComplex Amp_WY(double t) const;
166  TComplex Amp_SWY(double t) const;
167  TComplex Amp_KL(double t) const;
168 
170  TComplex Amp(double t) const;
171 
172  //-------------------- standard quantities --------------------
173 
176  TComplex R(double t) const;
177 
181  TComplex R_with_cutoff(double t, double cutoff) const;
182 
185  TComplex Z(double t) const;
186 
189  TComplex C(double t) const;
190 };
191 
192 extern CoulombInterference *coulomb;
193 
194 } // namespace
195 
196 #endif
Borkowski et al.: Nucl. Phys. B93 (1975)
Definition: CoulombInterference.h:56
static double I_integrand(double phi, double *par, const void *vobj)
the integrand of I(t, t') integral
Definition: CoulombInterference.cc:281
Definition: BHModel.h:28
TComplex Amp(double t) const
total Amplitude according to the choice in `mode'
Definition: CoulombInterference.cc:428
TComplex R_with_cutoff(double t, double cutoff) const
for |t| < |cutoff|: (|KL|^2 - |WY|^2) / |KL|^2, otherwise (|KL|^2 - |PH|^2) / |KL|^2.
Definition: CoulombInterference.cc:458
TComplex Phi_SWY(double t) const
simplified West-Yennie phase
Definition: CoulombInterference.cc:365
WY formula.
Definition: CoulombInterference.h:43
TComplex Amp_pure(double t) const
pure Coulomb amplitude (PC).
Definition: CoulombInterference.cc:247
TComplex Psi_KL(double t) const
Kundrat-Lokajicek phase (with alpha factor).
Definition: CoulombInterference.cc:383
Puckett et al.: arXiv 1008.0855v1 [default].
Definition: CoulombInterference.h:59
form factor = 1
Definition: CoulombInterference.h:53
double tau
the size of the region around t=t' which is cut off from integration, see B_term method ...
Definition: CoulombInterference.h:71
TComplex Phase(double t) const
interference phase WITH the alpha factor.
Definition: CoulombInterference.cc:392
Arrington et al.: Phys. Rev C76 (2007)
Definition: CoulombInterference.h:58
double C_term(double t) const
C: the correction for non-vanishing form factors at t_min.
Definition: CoulombInterference.cc:348
TComplex R(double t) const
ratio (|KL|^2 - |WY|^2) / |KL|^2.
Definition: CoulombInterference.cc:449
double T
the upper bound of the integration in A_term and B_term is |t|+T
Definition: CoulombInterference.h:74
Kelly: Phys. Rev. C70 (2004)
Definition: CoulombInterference.h:57
pure hadronic amplitude
Definition: CoulombInterference.h:42
Coulomb hadron interference for elastic scattering.
Definition: CoulombInterference.h:35
double precision
precision of the integration
Definition: CoulombInterference.h:77
static double A_integrand(double tt, double *par, const void *vobj)
the integrand of the A term
Definition: CoulombInterference.cc:262
only electric form-factor of Puckett et al.
Definition: CoulombInterference.h:60
TComplex C(double t) const
ratio (|KL|^2 - |PH|^2) / |PH|^2.
Definition: CoulombInterference.cc:477
TComplex Phi_WY(double t) const
full West-Yennie phase (with alpha factor).
Definition: CoulombInterference.cc:356
TComplex B_term(double t) const
B: .
Definition: CoulombInterference.cc:322
Hofstader et al.: Rev. Mod. Phys. 30 (1958)
Definition: CoulombInterference.h:55
CIMode
the mode of coulomb interference
Definition: CoulombInterference.h:39
(corrected) KL formula (includes the one of Cahn)
Definition: CoulombInterference.h:45
TComplex Z(double t) const
ratio (|KL|^2 - |PH|^2 - |PC|^2) / |KL|^2.
Definition: CoulombInterference.cc:467
dipole form factor, in G_eff, G_E and G_M (G_M(0) = 1)
Definition: CoulombInterference.h:54
FFType
form factor type
Definition: CoulombInterference.h:51
double A_term(double t) const
A: .
Definition: CoulombInterference.cc:272
pure electromagnetic amplitude (Born/OPE approximation) [default]
Definition: CoulombInterference.h:41
void Print() const
print the parameters
Definition: CoulombInterference.cc:56
double FF_e(double t) const
eletric form factor.
Definition: CoulombInterference.cc:129
double FF_m(double t) const
magnetic form factor.
Definition: CoulombInterference.cc:171
double FF_dipole(double t) const
dipole form factor
Definition: CoulombInterference.cc:121
double FF_sq_prime(double t) const
d/dt of the effective form factor square.
Definition: CoulombInterference.h:133
double FF_sq(double t) const
square of the effective form factor.
Definition: CoulombInterference.cc:214
simplified WY formula
Definition: CoulombInterference.h:44
static TComplex B_integrand(double tp, double *par, const void *vobj)
the integrand of the B term
Definition: CoulombInterference.cc:305