1 #ifndef MULTISCATTERINGMODEL_H
2 #define MULTISCATTERINGMODEL_H
20 double GetSigz(
double apz2,
double apz4) {
21 double ret = 3. / 2. * apz2 * apz2 - apz4 / 2.;
23 return TMath::Sqrt(apz2);
25 return TMath::Sqrt(apz2 - TMath::Sqrt(ret));
28 double GetQz(
double apz2,
double apz4) {
29 double ret = 3. / 2. * apz2 * apz2 - apz4 / 2.;
30 if (ret < 0.)
return 0.;
31 return TMath::Power(ret, 1. / 4.);
34 double fpt(
double pt,
double sigt) {
35 return pt / sigt / sigt * TMath::Exp(-pt * pt / 2. / sigt / sigt);
38 double fpz(
double pz,
double sigz,
double qz) {
39 return 1. / 2. / TMath::Sqrt(2. *
TMath::Pi()) / sigz
40 * (TMath::Exp(-(pz - qz) * (pz - qz) / 2. / sigz / sigz)
41 + TMath::Exp(-(pz + qz) * (pz + qz) / 2. / sigz / sigz));
44 double dndy(
double y,
double m,
double sigt,
double sigz,
double qz) {
46 for (
int i = 0;
i < 32;
i++) {
49 *
fpz(mt * TMath::SinH(
y), sigz, qz);
51 return ret * TMath::CosH(
y);
55 fypt(
double y,
double pt,
double m,
double sigt,
double sigz,
double qz) {
56 double mt = TMath::Sqrt(
m *
m + pt * pt);
57 return mt * TMath::CosH(
y) *
fpt(pt, sigt)
58 *
fpz(mt * TMath::SinH(
y), sigz, qz);