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"
34 ClassImp(AliGenRICHlib)
36 //---------------------------------------
38 //---------------------------------------
39 Int_t AliGenRICHlib::IpPiPlus(TRandom *)
45 Double_t AliGenRICHlib::PtPiPlusFlat( Double_t *, Double_t *)
47 //PiPlus FLAT pt-distribution
51 Double_t AliGenRICHlib::PtPiPlusExp( Double_t *x, Double_t *)
53 //PiPlus EXP pt-distribution
54 return x[0]*TMath::Exp(-x[0]/0.17);
57 Double_t AliGenRICHlib::YPiPlusFlat(Double_t *,Double_t *)
59 //PiPlus y-distribution
64 //---------------------------------------
66 //---------------------------------------
67 Int_t AliGenRICHlib::IpPiMinus(TRandom *)
73 Double_t AliGenRICHlib::PtPiMinusFlat( Double_t *, Double_t *)
75 // PiMinus FLAT pt-distribution
79 Double_t AliGenRICHlib::PtPiMinusExp( Double_t *x, Double_t *)
81 //PiMinus EXP pt-distribution
82 return x[0]*TMath::Exp(-x[0]/0.17);
85 Double_t AliGenRICHlib::YPiMinusFlat(Double_t *,Double_t *)
87 //PiMinus y-distribution
92 //--------------------------------------------
94 //--------------------------------------------
95 Int_t AliGenRICHlib::IpKPlus(TRandom *)
101 Double_t AliGenRICHlib::PtKPlusFlat( Double_t *, Double_t *)
103 // K+ FLAT pt-distribution
107 Double_t AliGenRICHlib::PtKPlusExp( Double_t *x, Double_t *)
109 // K+ EXP pt-distribution
110 return x[0]*TMath::Exp(-x[0]/0.17);
113 Double_t AliGenRICHlib::YKPlusFlat(Double_t *,Double_t *)
120 //-----------------------------------------------
122 //-----------------------------------------------
123 Int_t AliGenRICHlib::IpKMinus(TRandom *)
129 Double_t AliGenRICHlib::PtKMinusFlat( Double_t *, Double_t *)
131 // K- FLAT pt-distribution
135 Double_t AliGenRICHlib::PtKMinusExp( Double_t *x, Double_t *)
137 // K- EXP pt-distribution
138 return x[0]*TMath::Exp(-x[0]/0.17);
141 Double_t AliGenRICHlib::YKMinusFlat(Double_t *,Double_t *)
148 //-----------------------------------------------
150 //-----------------------------------------------
151 Int_t AliGenRICHlib::IpK0s(TRandom *)
157 Double_t AliGenRICHlib::PtK0sFlat( Double_t *, Double_t *)
159 // K0s FLAT pt-distribution
163 Double_t AliGenRICHlib::PtK0sExp( Double_t *x, Double_t *)
165 // K0s EXP pt-distribution
166 return x[0]*TMath::Exp(-x[0]/0.17);
169 Double_t AliGenRICHlib::YK0sFlat(Double_t *,Double_t *)
171 // K0s y-distribution
176 //---------------------------------------------
178 //---------------------------------------------
179 Int_t AliGenRICHlib::IpPhi(TRandom *)
185 Double_t AliGenRICHlib::PtPhiFlat( Double_t *, Double_t *)
187 // Phi FLAT pt-distribution
191 Double_t AliGenRICHlib::PtPhiExp( Double_t *x, Double_t *)
193 //phi EXP pt-distribution
194 return x[0]*TMath::Exp(-x[0]/0.17);
197 Double_t AliGenRICHlib::YPhiFlat(Double_t *,Double_t *)
204 //-------------------------------------------------------
206 //-------------------------------------------------------
207 Int_t AliGenRICHlib::IpProton(TRandom *)
213 Double_t AliGenRICHlib::PtProtonFlat( Double_t *, Double_t *)
215 // ProtonFLAT pt-distribution
220 Double_t AliGenRICHlib::PtProtonExp( Double_t *x, Double_t *)
222 //Proton EXP pt-distribution
223 return x[0]*TMath::Exp(-x[0]/0.17);
226 Double_t AliGenRICHlib::YProtonFlat(Double_t *,Double_t *)
228 //Proton y-distribution
233 //-------------------------------------------------------
235 //-------------------------------------------------------
236 Int_t AliGenRICHlib::IpProtonBar(TRandom *)
242 Double_t AliGenRICHlib::PtProtonBarFlat( Double_t *, Double_t *)
244 // ProtonBar FLAT pt-distribution
249 Double_t AliGenRICHlib::PtProtonBarExp( Double_t *x, Double_t *)
251 //ProtonBar EXP pt-distribution
252 return x[0]*TMath::Exp(-x[0]/0.17);
255 Double_t AliGenRICHlib::YProtonBarFlat(Double_t *,Double_t *)
257 //ProtonBar y-distribution
262 //-------------------------------------------------------
264 //-------------------------------------------------------
265 Int_t AliGenRICHlib::IpLambda(TRandom *)
271 Double_t AliGenRICHlib::PtLambdaFlat( Double_t *, Double_t *)
273 // Lambda FLAT pt-distribution
278 Double_t AliGenRICHlib::PtLambdaExp( Double_t *x, Double_t *)
280 //Lambda EXP pt-distribution
281 return x[0]*TMath::Exp(-x[0]/0.17);
284 Double_t AliGenRICHlib::YLambdaFlat(Double_t *,Double_t *)
286 //Lambda y-distribution
291 //-------------------------------------------------------
293 //-------------------------------------------------------
294 Int_t AliGenRICHlib::IpLambdaBar(TRandom *)
300 Double_t AliGenRICHlib::PtLambdaBarFlat( Double_t *, Double_t *)
302 // LambdaBar FLAT pt-distribution
307 Double_t AliGenRICHlib::PtLambdaBarExp( Double_t *x, Double_t *)
309 //LambdaBar EXP pt-distribution
310 return x[0]*TMath::Exp(-x[0]/0.17);
313 Double_t AliGenRICHlib::YLambdaBarFlat(Double_t *,Double_t *)
315 //LambdaBar y-distribution
323 typedef Double_t (*GenFunc) (Double_t*, Double_t*);
324 typedef Int_t (*GenFuncIp) (TRandom *);
326 GenFunc AliGenRICHlib::GetPt(Int_t iPID, const char * sForm) const
328 // Return pointer to Pt parameterisation
329 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
335 if (type=="FLAT") return PtPiPlusFlat;
336 else if(type=="EXP") return PtPiPlusExp;
338 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
342 if (type=="FLAT") return PtPiMinusFlat;
343 else if(type=="EXP") return PtPiMinusExp;
345 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
349 if (type=="FLAT") return PtKPlusFlat;
350 else if(type=="EXP") return PtKPlusExp;
352 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
356 if (type=="FLAT") return PtKMinusFlat;
357 else if(type=="EXP") return PtKMinusExp;
359 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
364 if (type=="FLAT") return PtK0sFlat;
365 else if(type=="EXP") return PtK0sExp;
367 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
372 if (type=="FLAT") return PtPhiFlat;
373 else if(type=="EXP") return PtPhiExp;
375 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
379 if (type=="FLAT") return PtProtonFlat;
380 else if(type=="EXP") return PtProtonExp;
382 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
386 if (type=="FLAT") return PtProtonBarFlat;
387 else if(type=="EXP") return PtProtonBarExp;
389 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
393 if (type=="FLAT") return PtLambdaFlat;
394 else if(type=="EXP") return PtLambdaExp;
396 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
400 if (type=="FLAT") return PtLambdaBarFlat;
401 else if(type=="EXP") return PtLambdaBarExp;
403 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
406 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
410 GenFunc AliGenRICHlib::GetY(Int_t iPID, const char *sForm) const
412 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
416 case kPiPlus: return YPiPlusFlat;
417 case kPiMinus: return YPiMinusFlat;
418 case kKPlus: return YKPlusFlat;
419 case kKMinus: return YKMinusFlat;
420 case kK0Short: return YK0sFlat;
421 case kPhi: return YPhiFlat;
422 case kProton: return YProtonFlat;
423 case kProtonBar: return YProtonBarFlat;
424 case kLambda0: return YLambdaFlat;
425 case kLambda0Bar: return YLambdaBarFlat;
427 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
432 GenFuncIp AliGenRICHlib::GetIp(Int_t iPID, const char *sForm) const
434 // Return pointer to particle type parameterisation
435 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm)); //////////
439 case kPiPlus: return IpPiPlus;
440 case kPiMinus: return IpPiMinus;
441 case kKPlus: return IpKPlus;
442 case kKMinus: return IpKMinus;
443 case kK0Short: return IpK0s;
444 case kPhi: return IpPhi;
445 case kProton: return IpProton;
446 case kProtonBar: return IpProtonBar;
447 case kLambda0: return IpLambda;
448 case kLambda0Bar: return IpLambdaBar;
450 default : AliFatal(Form("Unknown particle type: %i",iPID)) return 0;