23 DeutC =
new double[13];
24 DeutD =
new double[13];
25 DeutM2 =
new double[13];
39 }
else if (Target ==
"HE3") {
43 }
else if (Target ==
"ALPHA") {
47 }
else if (Target ==
"7LI") {
51 }
else if (Target ==
"12C") {
55 }
else if (Target ==
"40CA" || Target ==
"93NB" || Target ==
"208PB") {
59 }
else if (target_mass > 0.5*(
makeStaticData()->GetParticleMass(
"40Ca")
61 Warning(
"SetTargetMaterial",
"Target Material %s not found, assuming 40Ca",
65 }
else if (target_mass > 0.5*(
makeStaticData()->GetParticleMass(
"7Li")
67 Warning(
"SetTargetMaterial",
"Target Material %s not found, assuming 12C",
71 }
else if (target_mass > 0.5*(
makeStaticData()->GetParticleMass(
"7Li")
73 Warning(
"SetTargetMaterial",
"Target Material %s not found, assuming 7Li",
79 Error(
"SetTargetMaterial",
"Target Material not found");
103 Double_t
p = x/MeV2GeV;
105 return FermiDisD(&
p, NULL);
107 return FermiDis3He(&
p, NULL);
109 return FermiDis4He(&
p, NULL);
111 return FermiDis7Li(&
p, NULL);
113 return FermiDis12C(&
p, NULL);
115 return FermiDis40Ca(&
p, NULL);
121double PFermiDistributions::FermiDisD(
double *x,
double *)
const {
123 const double pi = 3.1415927;
124 const double hbar = 0.197463569747999998;
127 for (
int j=0; j<13; j++) {
128 par0 += DeutC[j]/(x[0]*x[0]/(hbar*hbar) + DeutM2[j]);
129 par1 += DeutD[j]/(x[0]*x[0]/(hbar*hbar) + DeutM2[j]);
131 par0 = TMath::Sqrt(2./
pi)*par0;
132 par1 = TMath::Sqrt(2./
pi)*par1;
133 Double_t mom = (par0*par0+par1*par1)*x[0]*x[0]/(hbar*hbar);
139double PFermiDistributions::FermiDis3He(
double *x,
double *)
const {
141 const double pi = 3.1415927;
142 const double a = 7.09078;
143 const double b = 5.38753;
144 const double c = 9.90202;
145 const double d = 0.779408;
147 Double_t par0 = (4./TMath::Sqrt(
pi))*TMath::Power(a,3./2.);
148 Double_t par1 = x[0]*x[0]*25./(1.E6);
149 Double_t mom =
d*par0*par1*(TMath::Exp(-par1*a) +
c*TMath::Exp(-TMath::Sqrt(par1)*b));
155double PFermiDistributions::FermiDis4He(
double *x,
double *)
const {
157 const double hbar = 0.197463569747999998;
158 const double a = 0.7352;
159 const double b = 0.05511;
161 Double_t par0 = TMath::Exp(-x[0]*x[0]/(hbar*hbar*a));
162 Double_t mom = x[0]*x[0]/(hbar*hbar*b)*par0;
168double PFermiDistributions::FermiDis7Li(
double *x,
double *)
const {
170 const double a = 1.2e-4;
171 const double b = 6.87e-3;
172 const double c = 110.;
174 Double_t par0 = x[0]*x[0]*a;
175 Double_t par1 = (1. + b*x[0]);
176 Double_t
par2 = x[0]/
c;
177 Double_t mom = par0*par1*TMath::Exp(-
par2*
par2);
183double PFermiDistributions::FermiDis12C(
double *x,
double *)
const {
185 const double pi = 3.1415927;
186 const double a = 1/0.416;
187 const double b = 1/0.23;
188 const double c = 0.04;
190 Double_t par0 = (4./TMath::Sqrt(
pi))*TMath::Power(a,3./2.);
191 Double_t par1 = x[0]*x[0]*25./(1.E6);
192 Double_t mom = par0*par1*(TMath::Exp(-par1*a) +
c*TMath::Exp(-TMath::Sqrt(par1)*b));
198double PFermiDistributions::FermiDis40Ca(
double *x,
double *)
const {
200 const double pi = 3.1415927;
201 const double a = 1/0.42;
202 const double b = 1/0.23;
203 const double c = 0.04;
205 Double_t par0 = (4./TMath::Sqrt(
pi))*TMath::Power(a,3./2.);
206 Double_t par1 = x[0]*x[0]*25./(1.E6);
207 Double_t mom = par0*par1*(TMath::Exp(-par1*a) +
c*TMath::Exp(-TMath::Sqrt(par1)*b));
213void PFermiDistributions::SetDeuteronValues( ) {
215 const double alpha = 0.23162461;
216 const double mZero = 1.;
217 double cj[13]={ 0.88688076E0,
230 double dj[13]={ 0.23135193E-1,
254 for (
int j=0; j<13; j++) {
255 mj[j] = alpha + j*mZero;
256 mj2[j] = mj[j]*mj[j];
260 for (
int i=0; i<12; i++)
261 cj[12] = cj[12] - cj[i];
263 for (
int k=0; k<5; k++) {
264 rtmp = dj[k*2]/mj2[k*2] + dj[k*2+1]/mj2[k*2+1];
266 rtmp = dj[k*2] + dj[k*2+1];
268 rtmp = dj[k*2]*mj2[k*2] + dj[k*2+1]*mj2[k*2+1];
276 for (
int l=0;
l<3;
l++) {
277 dj[
n2] = -mj2[
n1]*mj2[
n]*sum1 + (mj2[
n1]+mj2[
n])*sum2 - sum3;
278 dj[
n2] = dj[
n2] * mj2[
n2]/(mj2[
n]-mj2[
n2])/(mj2[
n1]-mj2[
n2]);
286 for (
int j=0; j<13; j++) {
ClassImp(PFermiDistributions)
#define NUCLEAR_FERMI_40CA
#define NUCLEAR_FERMI_12C
#define NUCLEAR_FERMI_3HE
#define NUCLEAR_FERMI_7LI
#define NUCLEAR_FERMI_4HE
PStaticData * makeStaticData()
virtual Double_t EvalPar(const Double_t *x, const Double_t *params)
PDistribution * Clone(const char *delme=NULL) const
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
double GetParticleMass(const int &id)