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>
33 #include "AliGenHMPIDlib.h"
36 ClassImp(AliGenHMPIDlib)
38 //---------------------------------------
40 //---------------------------------------
41 Int_t AliGenHMPIDlib::IpPiPlus(TRandom *)
47 Double_t AliGenHMPIDlib::PtPiPlusFlat( const Double_t *, const Double_t *)
49 //PiPlus FLAT pt-distribution
53 Double_t AliGenHMPIDlib::PtPiPlusExp( const Double_t *x, const Double_t *)
55 //PiPlus EXP pt-distribution
56 return x[0]*TMath::Exp(-x[0]/0.17);
59 Double_t AliGenHMPIDlib::YPiPlusFlat(const Double_t *,const Double_t *)
61 //PiPlus y-distribution
66 //---------------------------------------
68 //---------------------------------------
69 Int_t AliGenHMPIDlib::IpPiMinus(TRandom *)
75 Double_t AliGenHMPIDlib::PtPiMinusFlat( const Double_t *, const Double_t *)
77 // PiMinus FLAT pt-distribution
81 Double_t AliGenHMPIDlib::PtPiMinusExp( const Double_t *x, const Double_t *)
83 //PiMinus EXP pt-distribution
84 return x[0]*TMath::Exp(-x[0]/0.17);
87 Double_t AliGenHMPIDlib::YPiMinusFlat(const Double_t *,const Double_t *)
89 //PiMinus y-distribution
94 //--------------------------------------------
96 //--------------------------------------------
97 Int_t AliGenHMPIDlib::IpKPlus(TRandom *)
103 Double_t AliGenHMPIDlib::PtKPlusFlat( const Double_t *, const Double_t *)
105 // K+ FLAT pt-distribution
109 Double_t AliGenHMPIDlib::PtKPlusExp( const Double_t *x, const Double_t *)
111 // K+ EXP pt-distribution
112 return x[0]*TMath::Exp(-x[0]/0.17);
115 Double_t AliGenHMPIDlib::YKPlusFlat(const Double_t *,const Double_t *)
122 //-----------------------------------------------
124 //-----------------------------------------------
125 Int_t AliGenHMPIDlib::IpKMinus(TRandom *)
131 Double_t AliGenHMPIDlib::PtKMinusFlat( const Double_t *, const Double_t *)
133 // K- FLAT pt-distribution
137 Double_t AliGenHMPIDlib::PtKMinusExp( const Double_t *x, const Double_t *)
139 // K- EXP pt-distribution
140 return x[0]*TMath::Exp(-x[0]/0.17);
143 Double_t AliGenHMPIDlib::YKMinusFlat(const Double_t *,const Double_t *)
150 //-----------------------------------------------
152 //-----------------------------------------------
153 Int_t AliGenHMPIDlib::IpK0s(TRandom *)
159 Double_t AliGenHMPIDlib::PtK0sFlat( const Double_t *, const Double_t *)
161 // K0s FLAT pt-distribution
165 Double_t AliGenHMPIDlib::PtK0sExp( const Double_t *x, const Double_t *)
167 // K0s EXP pt-distribution
168 return x[0]*TMath::Exp(-x[0]/0.17);
171 Double_t AliGenHMPIDlib::YK0sFlat(const Double_t *,const Double_t *)
173 // K0s y-distribution
178 //---------------------------------------------
180 //---------------------------------------------
181 Int_t AliGenHMPIDlib::IpPhi(TRandom *)
187 Double_t AliGenHMPIDlib::PtPhiFlat( const Double_t *, const Double_t *)
189 // Phi FLAT pt-distribution
193 Double_t AliGenHMPIDlib::PtPhiExp( const Double_t *x, const Double_t *)
195 //phi EXP pt-distribution
196 return x[0]*TMath::Exp(-x[0]/0.17);
199 Double_t AliGenHMPIDlib::YPhiFlat(const Double_t *,const Double_t *)
206 //-------------------------------------------------------
208 //-------------------------------------------------------
209 Int_t AliGenHMPIDlib::IpProton(TRandom *)
215 Double_t AliGenHMPIDlib::PtProtonFlat( const Double_t *, const Double_t *)
217 // ProtonFLAT pt-distribution
222 Double_t AliGenHMPIDlib::PtProtonExp( const Double_t *x, const Double_t *)
224 //Proton EXP pt-distribution
225 return x[0]*TMath::Exp(-x[0]/0.17);
228 Double_t AliGenHMPIDlib::YProtonFlat(const Double_t *,const Double_t *)
230 //Proton y-distribution
235 //-------------------------------------------------------
237 //-------------------------------------------------------
238 Int_t AliGenHMPIDlib::IpProtonBar(TRandom *)
244 Double_t AliGenHMPIDlib::PtProtonBarFlat( const Double_t *, const Double_t *)
246 // ProtonBar FLAT pt-distribution
251 Double_t AliGenHMPIDlib::PtProtonBarExp( const Double_t *x, const Double_t *)
253 //ProtonBar EXP pt-distribution
254 return x[0]*TMath::Exp(-x[0]/0.17);
257 Double_t AliGenHMPIDlib::YProtonBarFlat(const Double_t *,const Double_t *)
259 //ProtonBar y-distribution
264 //-------------------------------------------------------
266 //-------------------------------------------------------
267 Int_t AliGenHMPIDlib::IpLambda(TRandom *)
273 Double_t AliGenHMPIDlib::PtLambdaFlat( const Double_t *, const Double_t *)
275 // Lambda FLAT pt-distribution
280 Double_t AliGenHMPIDlib::PtLambdaExp( const Double_t *x, const Double_t *)
282 //Lambda EXP pt-distribution
283 return x[0]*TMath::Exp(-x[0]/0.17);
286 Double_t AliGenHMPIDlib::YLambdaFlat(const Double_t *,const Double_t *)
288 //Lambda y-distribution
293 //-------------------------------------------------------
295 //-------------------------------------------------------
296 Int_t AliGenHMPIDlib::IpLambdaBar(TRandom *)
302 Double_t AliGenHMPIDlib::PtLambdaBarFlat( const Double_t *, const Double_t *)
304 // LambdaBar FLAT pt-distribution
309 Double_t AliGenHMPIDlib::PtLambdaBarExp( const Double_t *x, const Double_t *)
311 //LambdaBar EXP pt-distribution
312 return x[0]*TMath::Exp(-x[0]/0.17);
315 Double_t AliGenHMPIDlib::YLambdaBarFlat(const Double_t *,const Double_t *)
317 //LambdaBar y-distribution
325 typedef Double_t (*GenFunc) (const Double_t*, const Double_t*);
326 typedef Int_t (*GenFuncIp) (TRandom *);
328 GenFunc AliGenHMPIDlib::GetPt(Int_t iPID, const char * sForm) const
330 // Return pointer to Pt parameterisation
331 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
337 if (type=="FLAT") return PtPiPlusFlat;
338 else if(type=="EXP") return PtPiPlusExp;
340 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
344 if (type=="FLAT") return PtPiMinusFlat;
345 else if(type=="EXP") return PtPiMinusExp;
347 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
351 if (type=="FLAT") return PtKPlusFlat;
352 else if(type=="EXP") return PtKPlusExp;
354 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
358 if (type=="FLAT") return PtKMinusFlat;
359 else if(type=="EXP") return PtKMinusExp;
361 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
366 if (type=="FLAT") return PtK0sFlat;
367 else if(type=="EXP") return PtK0sExp;
369 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
374 if (type=="FLAT") return PtPhiFlat;
375 else if(type=="EXP") return PtPhiExp;
377 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
381 if (type=="FLAT") return PtProtonFlat;
382 else if(type=="EXP") return PtProtonExp;
384 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
388 if (type=="FLAT") return PtProtonBarFlat;
389 else if(type=="EXP") return PtProtonBarExp;
391 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
395 if (type=="FLAT") return PtLambdaFlat;
396 else if(type=="EXP") return PtLambdaExp;
398 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
402 if (type=="FLAT") return PtLambdaBarFlat;
403 else if(type=="EXP") return PtLambdaBarExp;
405 AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
408 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
412 GenFunc AliGenHMPIDlib::GetY(Int_t iPID, const char *sForm) const
414 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
418 case kPiPlus: return YPiPlusFlat;
419 case kPiMinus: return YPiMinusFlat;
420 case kKPlus: return YKPlusFlat;
421 case kKMinus: return YKMinusFlat;
422 case kK0Short: return YK0sFlat;
423 case kPhi: return YPhiFlat;
424 case kProton: return YProtonFlat;
425 case kProtonBar: return YProtonBarFlat;
426 case kLambda0: return YLambdaFlat;
427 case kLambda0Bar: return YLambdaBarFlat;
429 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
434 GenFuncIp AliGenHMPIDlib::GetIp(Int_t iPID, const char *sForm) const
436 // Return pointer to particle type parameterisation
437 AliDebug(1,Form("PID: %i, form: %s",iPID,sForm)); //////////
441 case kPiPlus: return IpPiPlus;
442 case kPiMinus: return IpPiMinus;
443 case kKPlus: return IpKPlus;
444 case kKMinus: return IpKMinus;
445 case kK0Short: return IpK0s;
446 case kPhi: return IpPhi;
447 case kProton: return IpProton;
448 case kProtonBar: return IpProtonBar;
449 case kLambda0: return IpLambda;
450 case kLambda0Bar: return IpLambdaBar;
452 default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;