/* $Id$ */
-#include <TPythia.h>
-#include "GenTypeDefs.h"
+#include <TPythia6.h>
+#include <AliRndm.h>
-class AliPythia:public TPythia
+typedef enum
+{kPyCharm, kPyBeauty, kPyCharmUnforced, kPyBeautyUnforced, kPyJpsi, kPyJpsiChi, kPyMb, kPyJets, kPyDirectGamma}
+Process_t;
+
+typedef enum
+{
+ kDO_Set_1=1006,
+ kGRV_LO=5005,
+ kGRV_HO=5006,
+ kMRS_D_minus=3031,
+ kMRS_D0=3030,
+ kMRS_G=3041,
+ kCTEQ_2pM=4024,
+ kCTEQ_4M=4034,
+ kMRST_cg_LO=3072,
+ kCTEQ_5L=4046,
+ kGRV_LO_98=5012
+}
+StrucFunc_t;
+
+class AliPythia : public TPythia6, public AliRndm
{
+
public:
- AliPythia();
virtual ~AliPythia(){;}
// convert to compressed code and print result (for debugging only)
virtual Int_t CheckedLuComp(Int_t kf);
- // entry to the corresponding lujet function
- virtual void Lu1Ent(int flag, int idpart,
- float mom, float theta,float phi);
- // Decay a Particle
- virtual void DecayParticle
- (Int_t idpart, Float_t mom, Float_t theta,Float_t phi);
- //
// Pythia initialisation for selected processes
virtual void ProcInit
(Process_t process, Float_t energy, StrucFunc_t strucfunc);
- //
- // Count decay products
- virtual Int_t CountProducts(Int_t channel, Int_t particle);
-
- //
- // Force decay modes
- //
- // select type and multiplicity of the decay product
- virtual void ForceParticleDecay(Int_t particle,Int_t product,Int_t mult);
- //
- // force a particular decy-type
- virtual void ForceDecay(Decay_t decay);
- // don't force any decay
- virtual void AllowAllDecays();
-
- //
- // Define heavy mesons to GEANT and make correspondance
- // GEANT - Pythia particle code
- virtual void DefineParticles();
- //
- // Convert from Pythia to Geant particle code
- virtual Int_t GetGeantCode(Int_t kf);
- //
- // Get sum of branching ratios for forced decays
- virtual Float_t GetBraPart(Int_t kf);
+ // treat protons as inside nuclei
+ virtual void SetNuclei(Int_t a1, Int_t a2);
+ // Print particle properties
+ virtual void PrintParticles();
+ virtual void ResetDecayTable();
+ virtual void SetDecayTable();
+ // return instance of the singleton
+ static AliPythia* Instance();
+
protected:
- Process_t fProcess; // Process type
- Decay_t fDecay; // Decay channel
- Float_t fEcms; // Centre of mass energy
- StrucFunc_t fStrucFunc; // Structure function
- Int_t fGPCode[501][2]; // Particle codes
- Float_t fBraPart[501]; // Branching ratios
- static Int_t fgInit; // Make sure that only one object of type
- // AliPythia is ceated
+ Process_t fProcess; // Process type
+ Float_t fEcms; // Centre of mass energy
+ StrucFunc_t fStrucFunc; // Structure function
+ Int_t fDefMDCY[501]; // ! Default decay switches per particle
+ Int_t fDefMDME[2000]; // ! Default decay switches per mode
+ static AliPythia* fgAliPythia; // Pointer to single instance
+ private:
+ AliPythia();
ClassDef(AliPythia,1) //ALICE UI to PYTHIA
};