#include <TPDGCode.h>
#include <TMath.h>
#include <TRandom.h>
#include <TString.h>
#include "AliGenHMPIDlib.h"
#include "AliLog.h"
ClassImp(AliGenHMPIDlib)
Int_t AliGenHMPIDlib::IpPiPlus(TRandom *)
{
return 211;
}
Double_t AliGenHMPIDlib::PtPiPlusFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtPiPlusExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YPiPlusFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpPiMinus(TRandom *)
{
return -211;
}
Double_t AliGenHMPIDlib::PtPiMinusFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtPiMinusExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YPiMinusFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpKPlus(TRandom *)
{
return 321;
}
Double_t AliGenHMPIDlib::PtKPlusFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtKPlusExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YKPlusFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpKMinus(TRandom *)
{
return -321;
}
Double_t AliGenHMPIDlib::PtKMinusFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtKMinusExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YKMinusFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpK0s(TRandom *)
{
return 310;
}
Double_t AliGenHMPIDlib::PtK0sFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtK0sExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YK0sFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpPhi(TRandom *)
{
return 333;
}
Double_t AliGenHMPIDlib::PtPhiFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtPhiExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YPhiFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpProton(TRandom *)
{
return 2122;
}
Double_t AliGenHMPIDlib::PtProtonFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtProtonExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YProtonFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpProtonBar(TRandom *)
{
return -2122;
}
Double_t AliGenHMPIDlib::PtProtonBarFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtProtonBarExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YProtonBarFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpLambda(TRandom *)
{
return 3122;
}
Double_t AliGenHMPIDlib::PtLambdaFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtLambdaExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YLambdaFlat(const Double_t *,const Double_t *)
{
return 1;
}
Int_t AliGenHMPIDlib::IpLambdaBar(TRandom *)
{
return -3122;
}
Double_t AliGenHMPIDlib::PtLambdaBarFlat( const Double_t *, const Double_t *)
{
return 1;
}
Double_t AliGenHMPIDlib::PtLambdaBarExp( const Double_t *x, const Double_t *)
{
return x[0]*TMath::Exp(-x[0]/0.17);
}
Double_t AliGenHMPIDlib::YLambdaBarFlat(const Double_t *,const Double_t *)
{
return 1;
}
typedef Double_t (*GenFunc) (const Double_t*, const Double_t*);
typedef Int_t (*GenFuncIp) (TRandom *);
GenFunc AliGenHMPIDlib::GetPt(Int_t iPID, const char * sForm) const
{
AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
TString type(sForm);
switch(iPID) {
case kPiPlus:
if (type=="FLAT") return PtPiPlusFlat;
else if(type=="EXP") return PtPiPlusExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kPiMinus:
if (type=="FLAT") return PtPiMinusFlat;
else if(type=="EXP") return PtPiMinusExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kKPlus:
if (type=="FLAT") return PtKPlusFlat;
else if(type=="EXP") return PtKPlusExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kKMinus:
if (type=="FLAT") return PtKMinusFlat;
else if(type=="EXP") return PtKMinusExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kK0Short:
if (type=="FLAT") return PtK0sFlat;
else if(type=="EXP") return PtK0sExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kPhi:
if (type=="FLAT") return PtPhiFlat;
else if(type=="EXP") return PtPhiExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kProton:
if (type=="FLAT") return PtProtonFlat;
else if(type=="EXP") return PtProtonExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kProtonBar:
if (type=="FLAT") return PtProtonBarFlat;
else if(type=="EXP") return PtProtonBarExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kLambda0:
if (type=="FLAT") return PtLambdaFlat;
else if(type=="EXP") return PtLambdaExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
case kLambda0Bar:
if (type=="FLAT") return PtLambdaBarFlat;
else if(type=="EXP") return PtLambdaBarExp;
else {
AliFatal(Form("Unknown Pt distribution form: %s",sForm)); return 0;
}
default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
}
}
GenFunc AliGenHMPIDlib::GetY(Int_t iPID, const char *sForm) const
{
AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
switch (iPID) {
case kPiPlus: return YPiPlusFlat;
case kPiMinus: return YPiMinusFlat;
case kKPlus: return YKPlusFlat;
case kKMinus: return YKMinusFlat;
case kK0Short: return YK0sFlat;
case kPhi: return YPhiFlat;
case kProton: return YProtonFlat;
case kProtonBar: return YProtonBarFlat;
case kLambda0: return YLambdaFlat;
case kLambda0Bar: return YLambdaBarFlat;
default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
}
}
GenFuncIp AliGenHMPIDlib::GetIp(Int_t iPID, const char *sForm) const
{
AliDebug(1,Form("PID: %i, form: %s",iPID,sForm));
switch (iPID){
case kPiPlus: return IpPiPlus;
case kPiMinus: return IpPiMinus;
case kKPlus: return IpKPlus;
case kKMinus: return IpKMinus;
case kK0Short: return IpK0s;
case kPhi: return IpPhi;
case kProton: return IpProton;
case kProtonBar: return IpProtonBar;
case kLambda0: return IpLambda;
case kLambda0Bar: return IpLambdaBar;
default : AliFatal(Form("Unknown particle type: %i",iPID)); return 0;
}
}