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 // Library class for particle pt and y distributions used for
20 // To be used with AliGenParam.
21 // The following particle typed can be simulated:
24 // Author: Annalisa Mastroserio <Annalisa.Mastroserio@ba.infn.it>
31 #include "AliGenRICHlib.h"
33 ClassImp(AliGenRICHlib)
35 //---------------------------------------
37 //---------------------------------------
38 Int_t AliGenRICHlib::IpPiPlus(TRandom *)
44 Double_t AliGenRICHlib::PtPiPlusFlat( Double_t *, Double_t *)
46 //PiPlus FLAT pt-distribution
50 Double_t AliGenRICHlib::PtPiPlusExp( Double_t *x, Double_t *)
52 //PiPlus EXP pt-distribution
53 return x[0]*TMath::Exp(-x[0]/0.17);
56 Double_t AliGenRICHlib::YPiPlusFlat(Double_t *,Double_t *)
58 //PiPlus y-distribution
63 //---------------------------------------
65 //---------------------------------------
66 Int_t AliGenRICHlib::IpPiMinus(TRandom *)
72 Double_t AliGenRICHlib::PtPiMinusFlat( Double_t *, Double_t *)
74 // PiMinus FLAT pt-distribution
78 Double_t AliGenRICHlib::PtPiMinusExp( Double_t *x, Double_t *)
80 //PiMinus EXP pt-distribution
81 return x[0]*TMath::Exp(-x[0]/0.17);
84 Double_t AliGenRICHlib::YPiMinusFlat(Double_t *,Double_t *)
86 //PiMinus y-distribution
91 //--------------------------------------------
93 //--------------------------------------------
94 Int_t AliGenRICHlib::IpKPlus(TRandom *)
100 Double_t AliGenRICHlib::PtKPlusFlat( Double_t *, Double_t *)
102 // K+ FLAT pt-distribution
106 Double_t AliGenRICHlib::PtKPlusExp( Double_t *x, Double_t *)
108 // K+ EXP pt-distribution
109 return x[0]*TMath::Exp(-x[0]/0.17);
112 Double_t AliGenRICHlib::YKPlusFlat(Double_t *,Double_t *)
119 //-----------------------------------------------
121 //-----------------------------------------------
122 Int_t AliGenRICHlib::IpKMinus(TRandom *)
128 Double_t AliGenRICHlib::PtKMinusFlat( Double_t *, Double_t *)
130 // K- FLAT pt-distribution
134 Double_t AliGenRICHlib::PtKMinusExp( Double_t *x, Double_t *)
136 // K- EXP pt-distribution
137 return x[0]*TMath::Exp(-x[0]/0.17);
140 Double_t AliGenRICHlib::YKMinusFlat(Double_t *,Double_t *)
147 //-----------------------------------------------
149 //-----------------------------------------------
150 Int_t AliGenRICHlib::IpK0s(TRandom *)
156 Double_t AliGenRICHlib::PtK0sFlat( Double_t *, Double_t *)
158 // K0s FLAT pt-distribution
162 Double_t AliGenRICHlib::PtK0sExp( Double_t *x, Double_t *)
164 // K0s EXP pt-distribution
165 return x[0]*TMath::Exp(-x[0]/0.17);
168 Double_t AliGenRICHlib::YK0sFlat(Double_t *,Double_t *)
170 // K0s y-distribution
175 //---------------------------------------------
177 //---------------------------------------------
178 Int_t AliGenRICHlib::IpPhi(TRandom *)
184 Double_t AliGenRICHlib::PtPhiFlat( Double_t *, Double_t *)
186 // Phi FLAT pt-distribution
190 Double_t AliGenRICHlib::PtPhiExp( Double_t *x, Double_t *)
192 //phi EXP pt-distribution
193 return x[0]*TMath::Exp(-x[0]/0.17);
196 Double_t AliGenRICHlib::YPhiFlat(Double_t *,Double_t *)
203 //-------------------------------------------------------
205 //-------------------------------------------------------
206 Int_t AliGenRICHlib::IpProton(TRandom *)
212 Double_t AliGenRICHlib::PtProtonFlat( Double_t *, Double_t *)
214 // ProtonFLAT pt-distribution
219 Double_t AliGenRICHlib::PtProtonExp( Double_t *x, Double_t *)
221 //Proton EXP pt-distribution
222 return x[0]*TMath::Exp(-x[0]/0.17);
225 Double_t AliGenRICHlib::YProtonFlat(Double_t *,Double_t *)
227 //Proton y-distribution
232 //-------------------------------------------------------
234 //-------------------------------------------------------
235 Int_t AliGenRICHlib::IpProtonBar(TRandom *)
241 Double_t AliGenRICHlib::PtProtonBarFlat( Double_t *, Double_t *)
243 // ProtonBar FLAT pt-distribution
248 Double_t AliGenRICHlib::PtProtonBarExp( Double_t *x, Double_t *)
250 //ProtonBar EXP pt-distribution
251 return x[0]*TMath::Exp(-x[0]/0.17);
254 Double_t AliGenRICHlib::YProtonBarFlat(Double_t *,Double_t *)
256 //ProtonBar y-distribution
261 //-------------------------------------------------------
263 //-------------------------------------------------------
264 Int_t AliGenRICHlib::IpLambda(TRandom *)
270 Double_t AliGenRICHlib::PtLambdaFlat( Double_t *, Double_t *)
272 // Lambda FLAT pt-distribution
277 Double_t AliGenRICHlib::PtLambdaExp( Double_t *x, Double_t *)
279 //Lambda EXP pt-distribution
280 return x[0]*TMath::Exp(-x[0]/0.17);
283 Double_t AliGenRICHlib::YLambdaFlat(Double_t *,Double_t *)
285 //Lambda y-distribution
290 //-------------------------------------------------------
292 //-------------------------------------------------------
293 Int_t AliGenRICHlib::IpLambdaBar(TRandom *)
299 Double_t AliGenRICHlib::PtLambdaBarFlat( Double_t *, Double_t *)
301 // LambdaBar FLAT pt-distribution
306 Double_t AliGenRICHlib::PtLambdaBarExp( Double_t *x, Double_t *)
308 //LambdaBar EXP pt-distribution
309 return x[0]*TMath::Exp(-x[0]/0.17);
312 Double_t AliGenRICHlib::YLambdaBarFlat(Double_t *,Double_t *)
314 //LambdaBar y-distribution
322 typedef Double_t (*GenFunc) (Double_t*, Double_t*);
323 typedef Int_t (*GenFuncIp) (TRandom *);
325 GenFunc AliGenRICHlib::GetPt(Int_t iPID, const char * sForm) const
327 // Return pointer to Pt parameterisation
328 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
334 if (type=="FLAT") return PtPiPlusFlat;
335 else if(type=="EXP") return PtPiPlusExp;
337 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
341 if (type=="FLAT") return PtPiMinusFlat;
342 else if(type=="EXP") return PtPiMinusExp;
344 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
348 if (type=="FLAT") return PtKPlusFlat;
349 else if(type=="EXP") return PtKPlusExp;
351 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
355 if (type=="FLAT") return PtKMinusFlat;
356 else if(type=="EXP") return PtKMinusExp;
358 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
363 if (type=="FLAT") return PtK0sFlat;
364 else if(type=="EXP") return PtK0sExp;
366 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
371 if (type=="FLAT") return PtPhiFlat;
372 else if(type=="EXP") return PtPhiExp;
374 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
378 if (type=="FLAT") return PtProtonFlat;
379 else if(type=="EXP") return PtProtonExp;
381 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
385 if (type=="FLAT") return PtProtonBarFlat;
386 else if(type=="EXP") return PtProtonBarExp;
388 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
392 if (type=="FLAT") return PtLambdaFlat;
393 else if(type=="EXP") return PtLambdaExp;
395 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
399 if (type=="FLAT") return PtLambdaBarFlat;
400 else if(type=="EXP") return PtLambdaBarExp;
402 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
405 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
409 GenFunc AliGenRICHlib::GetY(Int_t iPID, const char *sForm) const
411 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
415 case kPiPlus: return YPiPlusFlat;
416 case kPiMinus: return YPiMinusFlat;
417 case kKPlus: return YKPlusFlat;
418 case kKMinus: return YKMinusFlat;
419 case kK0Short: return YK0sFlat;
420 case kPhi: return YPhiFlat;
421 case kProton: return YProtonFlat;
422 case kProtonBar: return YProtonBarFlat;
423 case kLambda0: return YLambdaFlat;
424 case kLambda0Bar: return YLambdaBarFlat;
426 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
431 GenFuncIp AliGenRICHlib::GetIp(Int_t iPID, const char *sForm) const
433 // Return pointer to particle type parameterisation
434 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm)); //////////
438 case kPiPlus: return IpPiPlus;
439 case kPiMinus: return IpPiMinus;
440 case kKPlus: return IpKPlus;
441 case kKMinus: return IpKMinus;
442 case kK0Short: return IpK0s;
443 case kPhi: return IpPhi;
444 case kProton: return IpProton;
445 case kProtonBar: return IpProtonBar;
446 case kLambda0: return IpLambda;
447 case kLambda0Bar: return IpLambdaBar;
449 default : AliFatal(Form("Unknown particle type: %i",iPID)) return 0;