AliGenGSIlib with parametersations for GSI physics simulation added (YF, MI)
[u/mrichter/AliRoot.git] / EVGEN / AliGenGSIlib.cxx
CommitLineData
014616eb 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16/*
17$Log$
18Revision 1.7 2000/05/02 08:12:13 morsch
19Coding rule violations corrected.
20
21Revision 1.6 1999/09/29 09:24:14 fca
22Introduction of the Copyright and cvs Log
23
24*/
25
26#include "AliGenGSIlib.h"
27#include "AliRun.h"
28#include "iostream.h"
29
30ClassImp(AliGenGSIlib)
31
32 Bool_t AliGenGSIlib::fgDebug =kFALSE;
33// Upsilon
34//
35//
36// pt-distribution
37//____________________________________________________________
38Double_t AliGenGSIlib::PtUpsilonRitman( Double_t *px, Double_t *dummy )
39{
40 // Upsilon pT
41 /* AliGenMUONlib parametrisation
42 const Double_t kpt0 = 5.3;
43 const Double_t kxn = 2.5;
44 Double_t x=*px;
45 //
46 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
47 return x/TMath::Power(pass1,kxn);
48 */
49 if (fgDebug) cout<<"Ritman Pt paramtrisation\n";
50 const Double_t kpt0 = 4.7;
51 const Double_t kxn = 3.5;
52 Double_t x=*px;
53 //
54 Double_t pass1 = 1.+((x*x)/(kpt0*kpt0));
55 return x/TMath::Power(pass1,kxn);
56
57}
58//
59// y-distribution
60//
61//____________________________________________________________
62Double_t AliGenGSIlib::YUpsilonRitman(Double_t *py, Double_t *dummy)
63{
64
65 // Upsilon y
66
67/* original from AliGenMUON
68 const Double_t ky0 = 3.;
69 const Double_t kb=1.;
70 Double_t yu;
71 Double_t y=TMath::Abs(*py);
72 //
73 if (y < ky0)
74 yu=kb;
75 else
76 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
77 return yu;
78 */
79 if (fgDebug) cout<<"Ritman Y paramtrisation\n";
80 return 0.003; //GSI parametrisation
81}
82// particle composition
83//
84Int_t AliGenGSIlib::IpUpsilonRitman()
85{
86// y composition
87 if (fgDebug) cout<<"Ritman Ip paramtrisation\n";
88 return 553;
89}
90
91
92Double_t AliGenGSIlib::PtUpsilonKarel( Double_t *px, Double_t *dummy )
93{
94 // Upsilon pT
95 //to implement
96 if (fgDebug) cout<<"Karel Pt paramtrisation\n";
97
98 return 0.;
99}
100//
101// y-distribution
102//
103//____________________________________________________________
104Double_t AliGenGSIlib::YUpsilonKarel(Double_t *py, Double_t *dummy)
105{
106
107 // Upsilon y
108//to implement
109 if (fgDebug) cout<<"Karel Y paramtrisation\n";
110 return 0.003; //Karel parametrisation
111}
112
113// particle composition
114//
115
116Int_t AliGenGSIlib::IpUpsilonKarel()
117{
118 // y composition//
119 //to implement
120 if (fgDebug) cout<<"Karel Ip paramtrisation\n";
121 return 553;
122}
123
124
125
126Double_t AliGenGSIlib::PtUpsilonMUON( Double_t *px, Double_t *dummy )
127{
128// Upsilon pT
129 const Double_t kpt0 = 5.3;
130 const Double_t kxn = 2.5;
131 Double_t x=*px;
132 //
133 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
134 return x/TMath::Power(pass1,kxn);
135}
136//
137// y-distribution
138//
139//____________________________________________________________
140Double_t AliGenGSIlib::YUpsilonMUON(Double_t *py, Double_t *dummy)
141{
142// Upsilon y
143 const Double_t ky0 = 3.;
144 const Double_t kb=1.;
145 Double_t yu;
146 Double_t y=TMath::Abs(*py);
147 //
148 if (y < ky0)
149 yu=kb;
150 else
151 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
152 return yu;
153}
154// particle composition
155//
156Int_t AliGenGSIlib::IpUpsilonMUON()
157{
158// y composition
159 return 553;
160}
161
162
163typedef Double_t (*GenFunc) (Double_t*, Double_t*);
164
165typedef Int_t (*GenFuncIp) ();
166
167
168
169GenFunc AliGenGSIlib::GetPt(Param_t param, const char * tname)
170{
171// Return pointer to pT parameterisation
172 GenFunc func=0;
173 TString sname(tname);
174 switch (param)
175 {
176 case upsilon_p:
177 if (sname=="MUON"){
178 func= PtUpsilonMUON;
179 break;
180 }
181 if (sname=="RITMAN"){
182 func=PtUpsilonRitman;
183 break;
184 }
185 if (sname=="KAREL"){
186 func=PtUpsilonKarel;
187 break;
188 }
189 break;
190 func=0;
191 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
192 default:
193 func=0;
194 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
195 }
196 return func;
197}
198
199
200
201GenFunc AliGenGSIlib::GetY(Param_t param, const char * tname)
202{
203 // Return pointer to y- parameterisation
204 GenFunc func=0;
205 TString sname(tname);
206 switch (param)
207 {
208 case upsilon_p:
209 if (sname=="MUON"){
210 func= YUpsilonMUON;
211 break;
212 }
213 if (sname=="RITMAN"){
214 func=YUpsilonRitman;
215 break;
216 }
217 if (sname=="KAREL"){
218 func=YUpsilonKarel;
219 break;
220 }
221 func=0;
222 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
223 break;
224 default:
225 func=0;
226 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
227 }
228 return func;
229}
230
231
232
233GenFuncIp AliGenGSIlib::GetIp(Param_t param, const char * tname)
234{
235// Return pointer to particle type parameterisation
236 GenFuncIp func=0;
237 TString sname(tname);
238 switch (param)
239 {
240 case upsilon_p:
241 if (sname=="MUON"){
242 func=IpUpsilonMUON;
243 break;
244 }
245 if (sname=="RITMAN"){
246 func=IpUpsilonRitman;
247 break;
248 }
249 if (sname=="KAREL"){
250 func=IpUpsilonKarel;
251 break;
252 }
253 func=0;
254 printf("<AliGenGSIlib::GetIP> unknown parametrisation\n");
255 break;
256 default:
257 func=0;
258 printf("<AliGenGSIlib::GetIp> unknown parametrisation\n");
259 }
260 return func;
261}
262
263
264
265
266
267
268
269
270
271
272
273
274