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.2 2000/11/30 07:12:50 alibrary
19 Introducing new Rndm and QA classes
21 Revision 1.1 2000/06/15 08:48:43 morsch
22 AliGenGSIlib with parametersations for GSI physics simulation added (YF, MI)
24 Revision 1.7 2000/05/02 08:12:13 morsch
25 Coding rule violations corrected.
27 Revision 1.6 1999/09/29 09:24:14 fca
28 Introduction of the Copyright and cvs Log
32 // Implementation of AliGenLib
33 // using GSI specific parameterisations.
34 // So far for Upsilon resonances only.
35 // Different paramterisations of y and pt can be chosen.
36 // Responsible: Andres.Sandoval@cern.ch
41 #include "AliGenGSIlib.h"
44 ClassImp(AliGenGSIlib)
46 Bool_t AliGenGSIlib::fgDebug =kFALSE;
51 //____________________________________________________________
52 Double_t AliGenGSIlib::PtUpsilonRitman( Double_t *px, Double_t *dummy )
55 /* AliGenMUONlib parametrisation
56 const Double_t kpt0 = 5.3;
57 const Double_t kxn = 2.5;
60 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
61 return x/TMath::Power(pass1,kxn);
63 if (fgDebug) cout<<"Ritman Pt paramtrisation\n";
64 const Double_t kpt0 = 4.7;
65 const Double_t kxn = 3.5;
68 Double_t pass1 = 1.+((x*x)/(kpt0*kpt0));
69 return x/TMath::Power(pass1,kxn);
75 //____________________________________________________________
76 Double_t AliGenGSIlib::YUpsilonRitman(Double_t *py, Double_t *dummy)
81 /* original from AliGenMUON
82 const Double_t ky0 = 3.;
85 Double_t y=TMath::Abs(*py);
90 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
93 if (fgDebug) cout<<"Ritman Y paramtrisation\n";
94 return 0.003; //GSI parametrisation
96 // particle composition
98 Int_t AliGenGSIlib::IpUpsilonRitman(TRandom *)
101 if (fgDebug) cout<<"Ritman Ip paramtrisation\n";
106 Double_t AliGenGSIlib::PtUpsilonKarel( Double_t *px, Double_t *dummy )
110 if (fgDebug) cout<<"Karel Pt paramtrisation\n";
117 //____________________________________________________________
118 Double_t AliGenGSIlib::YUpsilonKarel(Double_t *py, Double_t *dummy)
123 if (fgDebug) cout<<"Karel Y paramtrisation\n";
124 return 0.003; //Karel parametrisation
127 // particle composition
130 Int_t AliGenGSIlib::IpUpsilonKarel(TRandom *)
134 if (fgDebug) cout<<"Karel Ip paramtrisation\n";
140 Double_t AliGenGSIlib::PtUpsilonMUON( Double_t *px, Double_t *dummy )
143 const Double_t kpt0 = 5.3;
144 const Double_t kxn = 2.5;
147 Double_t pass1 = 1.+(x/kpt0)*(x/kpt0);
148 return x/TMath::Power(pass1,kxn);
153 //____________________________________________________________
154 Double_t AliGenGSIlib::YUpsilonMUON(Double_t *py, Double_t *dummy)
157 const Double_t ky0 = 3.;
158 const Double_t kb=1.;
160 Double_t y=TMath::Abs(*py);
165 yu=kb*TMath::Exp(-(y-ky0)*(y-ky0)/2);
168 // particle composition
170 Int_t AliGenGSIlib::IpUpsilonMUON(TRandom *)
177 typedef Double_t (*GenFunc) (Double_t*, Double_t*);
179 typedef Int_t (*GenFuncIp) (TRandom *);
183 GenFunc AliGenGSIlib::GetPt(Param_t param, const char * tname)
185 // Return pointer to pT parameterisation
187 TString sname(tname);
195 if (sname=="RITMAN"){
196 func=PtUpsilonRitman;
205 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
208 printf("<AliGenGSIlib::GetPt> unknown parametrisation\n");
215 GenFunc AliGenGSIlib::GetY(Param_t param, const char * tname)
217 // Return pointer to y- parameterisation
219 TString sname(tname);
227 if (sname=="RITMAN"){
236 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
240 printf("<AliGenGSIlib::GetY> unknown parametrisation\n");
247 GenFuncIp AliGenGSIlib::GetIp(Param_t param, const char * tname)
249 // Return pointer to particle type parameterisation
251 TString sname(tname);
259 if (sname=="RITMAN"){
260 func=IpUpsilonRitman;
268 printf("<AliGenGSIlib::GetIP> unknown parametrisation\n");
272 printf("<AliGenGSIlib::GetIp> unknown parametrisation\n");