#ifndef ALIPYTHIA_H
#define ALIPYTHIA_H
#include <TPythia6.h>
#include <AliRndm.h>
#include <AliStructFuncType.h>
#include "PythiaProcesses.h"
#include "AliOmegaDalitz.h"
#include "AliDecayerExodus.h"
class AliFastGlauber;
class AliQuenchingWeights;
class AliPythia : public TPythia6, public AliRndm
{
public:
virtual ~AliPythia(){;}
virtual Int_t CheckedLuComp(Int_t kf);
virtual void ProcInit
(Process_t process, Float_t energy, StrucFunc_t strucfunc, Int_t itune = -1);
virtual void SetNuclei(Int_t a1, Int_t a2, Int_t pdf);
virtual void SetCollisionSystem(TString projectile, TString target) { fProjectile = projectile; fTarget = target; }
virtual void PrintParticles();
virtual void ResetDecayTable();
virtual void SetDecayTable();
virtual void SetWeightPower(Double_t pow);
virtual void Pyevnw();
virtual void Pycell(Int_t& nclus);
virtual void Pyclus(Int_t& nclus);
virtual void Pyshow(Int_t ip1, Int_t ip2, Double_t qmax);
virtual void Pyshowq(Int_t ip1, Int_t ip2, Double_t qmax);
virtual void Pyrobo(Int_t imi, Int_t ima, Double_t the, Double_t phi, Double_t bex, Double_t bey, Double_t bez);
virtual void Pytune(Int_t itune);
virtual void Py2ent(Int_t idx, Int_t pdg1, Int_t pdg2, Double_t p);
virtual void InitQuenching(Float_t bmin, Float_t bmax, Float_t k, Int_t iECMethod, Float_t zmax = 0.97, Int_t ngmax = 30);
virtual void SetPyquenParameters(Double_t t0, Double_t tau0, Int_t nf, Int_t iengl, Int_t iangl);
virtual void Pyquen(Double_t a, Int_t ibf, Double_t b);
virtual void Qpygin0();
virtual void GetQuenchingParameters(Double_t& xp, Double_t& yp, Double_t z[4]);
static AliPythia* Instance();
virtual void Quench();
void DalitzDecays();
void PizeroDalitz();
void EtaDalitz();
void RhoDirect();
void OmegaDalitz();
void OmegaDirect();
void EtaprimeDalitz();
void PhiDalitz();
void PhiDirect();
void JPsiDirect();
AliPythia & operator=(const AliPythia & rhs);
void Copy(TObject&) const;
protected:
Process_t fProcess;
Float_t fEcms;
StrucFunc_t fStrucFunc;
TString fProjectile;
TString fTarget;
Int_t fDefMDCY[501];
Int_t fDefMDME[2001];
Double_t fZQuench[4];
Double_t fXJet;
Double_t fYJet;
Int_t fNGmax;
Float_t fZmax;
AliFastGlauber* fGlauber;
AliQuenchingWeights* fQuenchingWeights;
Int_t fItune;
AliOmegaDalitz fOmegaDalitz;
AliDecayerExodus fExodus;
static AliPythia* fgAliPythia;
private:
AliPythia();
AliPythia(const AliPythia& pythia);
void ConfigHeavyFlavor();
void AtlasTuning();
void AtlasTuningMC09();
ClassDef(AliPythia,1)
};
#endif