1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 Revision 1.1 2000/09/08 15:37:58 morsch
19 pt and y-parameterisations for PMD physics simulation.
20 THIS VERSION IS JUST A TEMPLATE THE PT AND Y DISTRIBUTIONS HAVE TO BE CORRECTED !!!!.
24 #include "AliGenPMDlib.h"
28 ClassImp(AliGenPMDlib)
32 Double_t AliGenPMDlib::PtPi0(Double_t *px, Double_t *dummy)
35 // PT-PARAMETERIZATION CDF, PRL 61(88) 1819
36 // POWER LAW FOR PT > 500 MEV
37 // MT SCALING BELOW (T=160 MEV)
39 const Double_t kp0 = 1.3;
40 const Double_t kxn = 8.28;
41 const Double_t kxlim=0.5;
42 const Double_t kt=0.160;
43 const Double_t kxmpi=0.139;
45 Double_t y, y1, xmpi2, ynorm, a;
48 y1=TMath::Power(kp0/(kp0+kxlim),kxn);
50 ynorm=kb*(TMath::Exp(-sqrt(kxlim*kxlim+xmpi2)/kt));
53 y=a*TMath::Power(kp0/(kp0+x),kxn);
55 y=kb*TMath::Exp(-sqrt(x*x+xmpi2)/kt);
62 Double_t AliGenPMDlib::YPi0( Double_t *py, Double_t *dummy)
65 // y parametrisation for pi0
67 const Double_t ka1 = 4913.;
68 const Double_t ka2 = 1819.;
69 const Double_t keta1 = 0.22;
70 const Double_t keta2 = 3.66;
71 const Double_t kdeta1 = 1.47;
72 const Double_t kdeta2 = 1.51;
73 Double_t y=TMath::Abs(*py);
75 Double_t ex1 = (y-keta1)*(y-keta1)/(2*kdeta1*kdeta1);
76 Double_t ex2 = (y-keta2)*(y-keta2)/(2*kdeta2*kdeta2);
77 return ka1*TMath::Exp(-ex1)+ka2*TMath::Exp(-ex2);
80 // particle composition
82 Int_t AliGenPMDlib::IpPi0(TRandom *)
88 //____________________________________________________________
92 Double_t AliGenPMDlib::PtScal(Double_t pt, Int_t np)
94 // SCALING EN MASSE PAR RAPPORT A PTPI
95 // MASS PI,K,ETA,RHO,OMEGA,ETA',PHI
96 const Double_t khm[10] = {.13957,.493,.5488,.769,.7826,.958,1.02,0,0,0};
97 // VALUE MESON/PI AT 5 GEV
98 const Double_t kfmax[10]={1.,0.3,0.55,1.0,1.0,1.0,1.0,0,0,0};
100 Double_t f5=TMath::Power(((sqrt(100.018215)+2.)/(sqrt(100.+khm[np]*khm[np])+2.0)),12.3);
101 Double_t fmax2=f5/kfmax[np];
103 Double_t ptpion=100.*PtPi0(&pt, (Double_t*) 0);
104 Double_t fmtscal=TMath::Power(((sqrt(pt*pt+0.018215)+2.)/
105 (sqrt(pt*pt+khm[np]*khm[np])+2.0)),12.3)/ fmax2;
106 return fmtscal*ptpion;
112 //____________________________________________________________
114 Double_t AliGenPMDlib::PtEta( Double_t *px, Double_t *dummy)
117 return PtScal(*px,3);
121 //____________________________________________________________
122 Double_t AliGenPMDlib::YEta( Double_t *py, Double_t *dummy)
125 // y parametrisation for etas
127 const Double_t ka1 = 4913.;
128 const Double_t ka2 = 1819.;
129 const Double_t keta1 = 0.22;
130 const Double_t keta2 = 3.66;
131 const Double_t kdeta1 = 1.47;
132 const Double_t kdeta2 = 1.51;
133 Double_t y=TMath::Abs(*py);
135 Double_t ex1 = (y-keta1)*(y-keta1)/(2*kdeta1*kdeta1);
136 Double_t ex2 = (y-keta2)*(y-keta2)/(2*kdeta2*kdeta2);
137 return ka1*TMath::Exp(-ex1)+ka2*TMath::Exp(-ex2);
140 // particle composition
142 Int_t AliGenPMDlib::IpEta(TRandom *)
148 typedef Double_t (*GenFunc) (Double_t*, Double_t*);
149 GenFunc AliGenPMDlib::GetPt(Param_t param, const char* tname)
151 // Return pointer to pT parameterisation
163 printf("<AliGenPMDlib::GetPt> unknown parametrisation\n");
168 GenFunc AliGenPMDlib::GetY(Param_t param, const char* tname)
170 // Return pointer to y- parameterisation
182 printf("<AliGenPMDlib::GetY> unknown parametrisation\n");
187 typedef Int_t (*GenFuncIp) (TRandom *);
188 GenFuncIp AliGenPMDlib::GetIp(Param_t param, const char* tname)
190 // Return pointer to particle type parameterisation
201 printf("<AliGenPMDlib::GetIp> unknown parametrisation\n");