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.3 2000/12/21 16:24:06 morsch
19 Coding convention clean-up
21 Revision 1.2 2000/11/30 07:12:50 alibrary
22 Introducing new Rndm and QA classes
24 Revision 1.1 2000/06/15 08:48:43 morsch
25 AliGenGSIlib with parametersations for GSI physics simulation added (YF, MI)
27 Revision 1.7 2000/05/02 08:12:13 morsch
28 Coding rule violations corrected.
30 Revision 1.6 1999/09/29 09:24:14 fca
31 Introduction of the Copyright and cvs Log
35 // Implementation of AliGenLib
36 // using GSI specific parameterisations.
37 // So far for Upsilon resonances only.
38 // Different paramterisations of y and pt can be chosen.
39 // Responsible: Andres.Sandoval@cern.ch
44 #include "AliGenGSIlib.h"
47 ClassImp(AliGenGSIlib)
49 Bool_t AliGenGSIlib::fgDebug =kFALSE;
54 //____________________________________________________________
55 Double_t AliGenGSIlib::PtUpsilonRitman( Double_t *px, Double_t *dummy )
58 /* AliGenMUONlib parametrisation
59 const Double_t kpt0 = 5.3;
60 const Double_t kxn = 2.5;
63 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
64 return x/TMath::Power(pass1,kxn);
66 if (fgDebug) cout<<"Ritman Pt paramtrisation\n";
67 const Double_t kpt0 = 4.7;
68 const Double_t kxn = 3.5;
71 Double_t pass1 = 1.+((x*x)/(kpt0*kpt0));
72 return x/TMath::Power(pass1,kxn);
78 //____________________________________________________________
79 Double_t AliGenGSIlib::YUpsilonRitman(Double_t *py, Double_t *dummy)
84 /* original from AliGenMUON
85 const Double_t ky0 = 3.;
88 Double_t y=TMath::Abs(*py);
93 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
96 if (fgDebug) cout<<"Ritman Y paramtrisation\n";
97 return 0.003; //GSI parametrisation
99 // particle composition
101 Int_t AliGenGSIlib::IpUpsilonRitman(TRandom *)
104 if (fgDebug) cout<<"Ritman Ip paramtrisation\n";
109 Double_t AliGenGSIlib::PtUpsilonKarel( Double_t *px, Double_t *dummy )
113 if (fgDebug) cout<<"Karel Pt paramtrisation\n";
120 //____________________________________________________________
121 Double_t AliGenGSIlib::YUpsilonKarel(Double_t *py, Double_t *dummy)
126 if (fgDebug) cout<<"Karel Y paramtrisation\n";
127 return 0.003; //Karel parametrisation
130 // particle composition
133 Int_t AliGenGSIlib::IpUpsilonKarel(TRandom *)
137 if (fgDebug) cout<<"Karel Ip paramtrisation\n";
143 Double_t AliGenGSIlib::PtUpsilonMUON( Double_t *px, Double_t *dummy )
146 const Double_t kpt0 = 5.3;
147 const Double_t kxn = 2.5;
150 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
151 return x/TMath::Power(pass1,kxn);
156 //____________________________________________________________
157 Double_t AliGenGSIlib::YUpsilonMUON(Double_t *py, Double_t *dummy)
160 const Double_t ky0 = 3.;
161 const Double_t kb=1.;
163 Double_t y=TMath::Abs(*py);
168 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
171 // particle composition
173 Int_t AliGenGSIlib::IpUpsilonMUON(TRandom *)
180 typedef Double_t (*GenFunc) (Double_t*, Double_t*);
182 typedef Int_t (*GenFuncIp) (TRandom *);
186 GenFunc AliGenGSIlib::GetPt(Int_t param, const char * tname)
188 // Return pointer to pT parameterisation
190 TString sname(tname);
198 if (sname=="RITMAN"){
199 func=PtUpsilonRitman;
208 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
211 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
218 GenFunc AliGenGSIlib::GetY(Int_t param, const char * tname)
220 // Return pointer to y- parameterisation
222 TString sname(tname);
230 if (sname=="RITMAN"){
239 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
243 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
250 GenFuncIp AliGenGSIlib::GetIp(Int_t param, const char * tname)
252 // Return pointer to particle type parameterisation
254 TString sname(tname);
262 if (sname=="RITMAN"){
263 func=IpUpsilonRitman;
271 printf("<AliGenGSIlib::GetIP> unknown parametrisation\n");
275 printf("<AliGenGSIlib::GetIp> unknown parametrisation\n");