KaliVeda  1.13/01
Heavy-Ion Analysis Toolkit
KVWilckeReactionParameters.h
Go to the documentation of this file.
1 
4 #ifndef __KVWILCKEREACTIONPARAMETERS_H
5 #define __KVWILCKEREACTIONPARAMETERS_H
6 
7 #define THIRD (1./3.)
8 #include "KVNucleus.h"
9 #include "TF1.h"
10 #include "TH1.h"
11 #include "TPad.h"
12 #include <TF2.h>
13 
21  /* The following variables are exactly copied from pp. 395-400 of Wilcke et al. */
28 
48 
49  /* Numerical constants from W.D. Myers, Phys. Lett. B 30, 451 (1969) */
52  static Double_t J_Myers;
53  static Double_t K_Myers;
54  static Double_t L_Myers;
55  static Double_t M_Myers;
56  static Double_t Q_Myers;
59 
68 
69  void init();
70 
71 public:
73  KVWilckeReactionParameters(const KVNucleus& proj, const KVNucleus& targ);
75 
76  void SetEntranceChannel(const KVNucleus& proj, const KVNucleus& targ);
77 
78  static Double_t InteractionRadius(Int_t aproj, Int_t atarg)
79  {
81  return MatterHalfDensityRadius(atarg) + MatterHalfDensityRadius(aproj) + 4.49 -
82  (MatterHalfDensityRadius(atarg) + MatterHalfDensityRadius(aproj)) / 6.35;
83  }
84  static Double_t r0_Wilcke(Int_t aproj, Int_t atarg)
85  {
87  return InteractionRadius(aproj, atarg) / (pow(aproj, THIRD) + pow(atarg, THIRD));
88  }
90  {
92  return (1.28 * pow(A, THIRD) - 0.76 + 0.8 * pow(A, -THIRD));
93  }
95  {
98  return (SharpRadius(A) * (1. - pow(SharpRadius(A), -2.)));
99  }
100  static Double_t epsilon_bar_Myers(Int_t Z, Int_t A);
101  static Double_t delta_bar_Myers(Int_t Z, Int_t A);
103  {
105  return r0_Myers * pow(2.*Z / (1. - 3.*epsilon_bar_Myers(Z, A)) / (1. - delta_bar_Myers(Z, A)), THIRD);
106  }
107  static Double_t BSS_V0(Int_t zp, Int_t ap, Int_t zt, Int_t at)
108  {
114  Double_t v0 = pow((zp + zt), 2.) / pow(pow(ChargeRadius_Myers(zt, at), 3.) + pow(ChargeRadius_Myers(zp, ap), 3.), THIRD);
115  v0 -= (pow(zt, 2.) / ChargeRadius_Myers(zt, at) + pow(zp, 2.) / ChargeRadius_Myers(zp, ap));
116  v0 *= 3.*e2_Wilcke / 5.;
117  return v0;
118  }
120  {
122  if (*r >= RCTOTAL) {
123  return (ZP * ZT * e2_Wilcke / (*r));
124  }
125  if (*r == 0) return V0;
126  return (V0 - BSS_K * pow(*r, BSS_N));
127  }
129  {
133  static Double_t zeta1 = 1.2511;
134  static Double_t zeta0 = 2.54;
135  static Double_t Kprox = 0.0852;
136 
137  Double_t Phi;
138  Double_t zeta = *r - CP - CT;
139  Double_t dzeta = zeta - zeta0;
140  if (zeta <= zeta1) {
141  Phi = -0.5 * pow(dzeta, 2) - Kprox * pow(dzeta, 3);
142  }
143  else {
144  Phi = -3.437 * exp(-zeta / 0.75);
145  }
146  return PROXFACTOR * Phi;
147  }
149  {
151  return ProxPot(r, 0) + VC(r, 0);
152  }
154  {
158 
159  Double_t R = TMath::Max(0.1, x[0]);
160  Double_t Vcent = l[0] * (l[0] + 1.) * pow(KVNucleus::hbar, 2) / (2.*MU * mu_Wilcke * R * R);
161  return ProxPot(&x[0], 0) + VC(&x[0], 0) + Vcent;
162  }
164  {
167  return b * k(e_sur_a);
168  }
170  {
173  return l / k(e_sur_a);
174  }
176  {
179  return 10.*(TMath::Pi() / pow(k(e_sur_a), 2)) * pow(lmax + 0.5, 2);
180  }
182  {
186  return sqrt(sigma / (10.*(TMath::Pi() / pow(k(e_sur_a), 2)))) - 0.5;
187  }
189  {
192  return 10.*TMath::Pi() * pow(bmax, 2);
193  }
195  {
198  return sqrt(sigma / (10.*TMath::Pi()));
199  }
201  {
205  fCentPot->SetParameter(0, l);
206  return fCentPot;
207  }
208 
210  {
212  fCentPot->SetParameter(0, l);
213  return fCentPot;
214  }
216  {
217  return fBSS;
218  }
220  {
221  return fProx;
222  }
224  {
225  return fPotential;
226  }
228  {
231  return (0.1071 * Z * Z / pow(A, THIRD) + 22.3);
232  }
234  {
236  return ASYMMFISSIONTKE;
237  }
239  {
242  Double_t I = (A - 2.*Z) / (1.*A);
243  return 0.9517 * (1. - 1.7826 * I * I);
244  }
246  {
248  Double_t zpzt = zp * zt;
249  Double_t D;
250  if (zpzt < 500) {
251  D = 0.3117 * pow(zpzt, 0.2122);
252  }
253  else {
254  D = 1.096 + 1.391e-04 * zpzt;
255  }
256  return InteractionRadius(ap, at) - D;
257  }
259  Double_t Eta(Double_t e_sur_a) const
260  {
262  return 0.15746 * ZP * ZT / pow(e_sur_a, 0.5);
263  }
264  Double_t k(Double_t e_sur_a) const
265  {
267  return 0.2187 * AT * AP * pow(e_sur_a, 0.5) / (1.*AC);
268  }
270  {
272  Double_t krint = k(*x) * RINT;
273  Double_t eta = Eta(*x);
274  if (krint < 2.*eta) return TMath::Pi();
275  return 2.*asin(eta / (krint - eta));
276  }
278  {
280  Double_t QP = QuarterPointAngle(&e, 0);
281  return atan(sin(QP) / (cos(QP) + AP / (1.*AT)));
282  }
284  {
286  return AP * e * (AP * AP + 2.*AP * AT * cos(QuarterPointAngle(&e, 0)) + AT * AT) / (1.*AC * AC);
287  }
288 
290  {
291  return Eta(*x) / tan(QuarterPointAngle(x, 0) / 2.);
292  }
294  {
295  return fCMThetaQuart;
296  }
297  TF1* GetLmax() const
298  {
299  return fLmax;
300  }
302  {
305  }
306  Double_t ECM(Double_t e_sur_a) const
307  {
309  return MU * e_sur_a;
310  }
312  {
313  return fSigmaR;
314  }
315  Double_t SigmaFus(Double_t* e_sur_a, Double_t*) const
316  {
318  if (*e_sur_a <= 0) return 0.;
319  Double_t e = VRB / ECM(*e_sur_a);
320  Double_t S1 = (e > 1. ? 0. : GetCrossSectionFromMaxImpactParameter(RBARRIER) * (1. - e));
322  Double_t S = TMath::Min(S1, S2);
323  return S;
324  }
326  {
327  return fSigmaFus;
328  }
329  void DrawAllPotentials(Double_t l = 0) const
330  {
331  TF1* totpot;
332  if (l > 0) {
333  totpot = GetCentrifugalPotential(l);
334  totpot->SetTitle(Form("HIPOT l=%3.0f", l));
335  }
336  else totpot = GetTotalPotential();
337  totpot->SetNpx(1000);
340  totpot->SetLineColor(kBlack);
341  totpot->Draw();
343  GetBSSCoulombPotential()->Draw("same");
344  Double_t max = TMath::Max(GetBSSCoulombPotential()->GetMaximum() * 2., totpot->GetMinimum() * 10);
348  totpot->GetHistogram()->GetYaxis()->SetRangeUser(min, max);
349  ((TPad*)gPad)->BuildLegend();
350  }
351 
352  void Print() const;
356 
357  Double_t GetMu() const
358  {
360  return MU;
361  }
362  Int_t GetAP() const
363  {
364  return AP;
365  }
366  Int_t GetAT() const
367  {
368  return AT;
369  }
370  Int_t GetAC() const
371  {
372  return AC;
373  }
374  Double_t GetCP() const
375  {
376  return CP;
377  }
378  Double_t GetCT() const
379  {
380  return CT;
381  }
383  {
384  return RINT;
385  }
387 
388  ClassDef(KVWilckeReactionParameters, 1) //Reaction parameters for heavy-ion collisions (Wilcke et al)
389 };
390 
391 #endif
int Int_t
#define THIRD
ROOT::R::TRInterface & r
#define b(i)
#define S1(x)
#define e(i)
double Double_t
#define ClassDef(name, id)
kRed
kBlack
kBlue
double cos(double)
double pow(double, double)
double atan(double)
double tan(double)
double sin(double)
double asin(double)
double exp(double)
char * Form(const char *fmt,...)
#define gPad
Description of properties and kinematics of atomic nuclei.
Definition: KVNucleus.h:125
static Double_t hbar
hbar*c in MeV.fm
Definition: KVNucleus.h:172
Reaction parameters for heavy-ion collisions from systematics of Wilcke et al.
Double_t LCRIT
The maximum critical angular momentum for fusion.
Double_t QuarterPointAngle(Double_t *x, Double_t *) const
static Double_t SWaveFusionBarrierRadius(Int_t zp, Int_t ap, Int_t zt, Int_t at)
static Double_t L_Myers
density-symmetry coefficient
static Double_t InteractionRadius(Int_t aproj, Int_t atarg)
Double_t SigmaFus(Double_t *e_sur_a, Double_t *) const
Double_t Potential(Double_t *r, Double_t *)
Double_t Eta(Double_t e_sur_a) const
Double_t GetCrossSectionFromMaxAngularMomentum(Double_t e_sur_a, Double_t lmax) const
static Double_t e2_Wilcke
e**2 = 1.438 is value used by Wilcke et al.
Double_t ECM(Double_t e_sur_a) const
TF1 * fLmax
Grazing angular momentum.
static Double_t RLDCriticalAngularMomentum(Int_t z, Int_t a)
virtual ~KVWilckeReactionParameters()
Destructor.
static Double_t MatterHalfDensityRadius(Int_t A)
TF1 * fSigmaR
Reaction cross section.
Int_t NT
Neutron number of the projectile, target.
Double_t GetBassReactionCrossSection(Double_t e_sur_a)
Bass reaction cross-section [mb] for incident energy [MeV/nucleon].
TF1 * fPotential
total (nuclear+coulomb) potential for heavy-ions
Double_t ProjectileLabQP(Double_t e) const
static Double_t epsilon_bar_Myers(Int_t Z, Int_t A)
epsilon_bar, Eq.(7) in W.D. Myers, Phys. Lett. B 30, 451 (1969)
static Double_t M_Myers
symmetry anharmonicity coefficient
static Double_t NLDSurfaceTensionCoefficient(Int_t Z, Int_t A)
static Double_t SharpRadius(Int_t A)
Double_t FISSIONTKE
TKE for symmetric fission of combined system.
TF1 * fSigmaFus
Fusion cross section.
Double_t Lmax(Double_t *x, Double_t *) const
Double_t V0
BSS potential at r=0.
Double_t RBARRIER
Fusion barrier radius RB for s-waves.
Int_t AT
Mass number of the projectile, target.
TF1 * fCMThetaQuart
CM quarter point angle.
static Double_t r0_Myers
nuclear radius constant
Int_t ZT
Atomic number of the projectile, target.
Double_t GAMMA
Nuclear liquid drop surface-tension coefficient.
Double_t k(Double_t e_sur_a) const
Double_t VC_RINT
BSS Coulomb potential at Rint.
Double_t GetCrossSectionFromMaxImpactParameter(Double_t bmax) const
static Double_t J_Myers
symmetry energy coefficient
static Double_t r0_Wilcke(Int_t aproj, Int_t atarg)
void DrawAllPotentials(Double_t l=0) const
Double_t GetImpactParameterFromAngularMomentum(Double_t e_sur_a, Double_t l) const
Double_t SigmaR(Double_t *x, Double_t *) const
Double_t GetMaxAngularMomentumFromCrossSection(Double_t e_sur_a, Double_t sigma) const
static Double_t a2_Myers
surface energy coefficient
static Double_t mu_Wilcke
mu = 931.5 is value used by Wilcke et al.
static Double_t Q_Myers
effective surface stiffness
Double_t ProjectileLabEQP(Double_t e) const
TF1 * GetCentrifugalPotential(Double_t e_sur_a, Double_t b) const
Double_t ASYMMFISSIONTKE
TKE of completely relaxed events in strongly damped collisions.
Double_t CentrifugalPotential(Double_t *x, Double_t *l)
static Double_t ChargeRadius_Myers(Int_t Z, Int_t A)
static Double_t BSS_V0(Int_t zp, Int_t ap, Int_t zt, Int_t at)
TF1 * GetCentrifugalPotential(Double_t l) const
static Double_t a1_Myers
volume energy coefficient
void SetEntranceChannel(const KVNucleus &proj, const KVNucleus &targ)
(Re)set entrance channel to calculate
static Double_t delta_bar_Myers(Int_t Z, Int_t A)
delta_bar, Eq.(8) in W.D. Myers, Phys. Lett. B 30, 451 (1969)
static Double_t TKESymFiss(Int_t Z, Int_t A)
Double_t GetMaxImpactParameterFromCrossSection(Double_t sigma) const
Double_t PROXFACTOR
Proximity potential factor.
Double_t GetAngularMomentumFromImpactParameter(Double_t e_sur_a, Double_t b) const
Double_t ProxPot(Double_t *r, Double_t *)
Double_t VC(Double_t *r, Double_t *)
static Double_t K_Myers
compressibility coefficient
Double_t CT
Matter half-density radii.
static Double_t c1_Myers
Coulomb energy coefficient.
TF1 * fProx
Nuclear proximity potential for heavy-ions.
TF1 * fBSS
BSS Coulomb potential for heavy-ions.
Double_t VRB
The total conservative potential at r=RB for s-waves.
KVWilckeReactionParameters()
Default constructor.
virtual void SetLineColor(Color_t lcolor)
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
virtual Double_t GetMinimum(Double_t xmin=0, Double_t xmax=0, Double_t epsilon=1.E-10, Int_t maxiter=100, Bool_t logx=false) const
virtual TH1 * GetHistogram() const
virtual void SetTitle(const char *title="")
virtual void SetNpx(Int_t npx=100)
virtual void Draw(Option_t *option="")
virtual void SetParameter(const TString &name, Double_t value)
TAxis * GetYaxis()
VecExpr< UnaryOp< Sqrt< T >, SVector< T, D >, T >, T, D > sqrt(const SVector< T, D > &rhs)
const Double_t sigma
Double_t x[n]
#define I(x, y, z)
RooArgSet S(Args_t &&... args)
Double_t Min(Double_t a, Double_t b)
constexpr Double_t Pi()
constexpr Double_t R()
Double_t Max(Double_t a, Double_t b)
v0
auto * l