Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
FemtoWeightGeneratorKisiel.h
1/*
2 * FemtoWeightGeneratorKisiel.h
3 *
4 * Created on: 30 sie 2021
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9#ifndef HALFEMTO_ANALYSIS_FEMTO_WEIGHTS_HALFEMTOWEIGHTGENERATORKISIEL_H_
10#define HALFEMTO_ANALYSIS_FEMTO_WEIGHTS_HALFEMTOWEIGHTGENERATORKISIEL_H_
11
12#include "FemtoWeightGenerator.h"
13
17namespace Hal {
19 struct _dcomplex {
20 long double re;
21 long double im;
22 };
23 typedef struct _dcomplex dcomplex;
24
25 dcomplex fD0s;
26 dcomplex fF0s;
27 dcomplex fD0t;
28 dcomplex fF0t;
29 // double gamov[2000];
30 long double fPionac;
31 long double fOneoveracsq;
32 long double fTwopioverac;
33 long double fCoulqscpart;
34 int fTwospin;
35 int fWritegrps;
36 Int_t fPcount;
37 long double fEuler;
38 long double fF0;
39 long double fD0;
40 Double_t fRStarOutS, fRStarSideS, fRStarLongS, fRStarS;
41 dcomplex conj(const dcomplex& arg) const;
42 dcomplex mult(const dcomplex& arga, long double argb) const;
43 dcomplex mult(const dcomplex& arga, const dcomplex& argb) const;
44 long double modl2(dcomplex arg) const { return arg.re * arg.re + arg.im * arg.im; };
45 long double modl(dcomplex arg) const { return hypot(arg.re, arg.im); };
46 dcomplex invr(dcomplex arg) const {
47 dcomplex res;
48
49 res.re = arg.re / modl2(arg);
50 res.im = -arg.im / modl2(arg);
51
52 return res;
53 };
60 void GetFFsingle(dcomplex& ffp, int sign = 1) const;
67 void GetFFdouble(dcomplex& ffp, dcomplex& ffm) const;
75 dcomplex GetG(long double eta, long double rho, long double hfun) const;
76 long double Chiim(long double eta) const { return Gamow(1.0 / (eta * fPionac)) / (2.0 * eta); }
82 long double GetH(long double eta) const;
83 void Getfc(long double kstar, long double eta, long double hfun, dcomplex& fcs, dcomplex& fct) const; // TODO
84 void Bfunpfun(long double eta, long double rho, long double& bret, long double& pret) const;
85 double Funeh(double xarg, double rad, double alfa) const { return exp(-sqrt(xarg * xarg / (rad * rad) + alfa * alfa)); }
86 double Funex(double xarg, double rad) const { return exp(-xarg / rad); }
87 void InitializeGamow();
88 void PairKinematics(FemtoPair* pair);
89 double GetCoulomb();
90 double Gamow(double arg) const;
91 double GetQuantumCoulombStrong();
92 double GetCoulombStrong();
93 double GetQuantumStrong();
94 double GetStrong();
95 double GetQuantum();
100 double GetQuantumCoulomb();
101
102 public:
105 Double_t GenerateWeight(FemtoPair* pair);
106 virtual FemtoWeightGenerator* MakeCopy() const { return new FemtoWeightGeneratorKisiel(*this); };
107 FemtoWeightGeneratorKisiel& operator=(const FemtoWeightGeneratorKisiel& other) = default;
108 virtual Bool_t IsPairSupported(Femto::EPairType type) const;
109 virtual Package* Report() const;
111 ClassDef(FemtoWeightGeneratorKisiel, 1)
112 };
113} // namespace Hal
114
115#endif /* HALFEMTO_ANALYSIS_FEMTO_WEIGHTS_HALFEMTOWEIGHTGENERATORKISIEL_H_ */
virtual Bool_t IsPairSupported(Femto::EPairType type) const
virtual FemtoWeightGenerator * MakeCopy() const