Option to switch on/off boost and nucl. pdf
[u/mrichter/AliRoot.git] / PYTHIA6 / AliPythia6.h
1 #ifndef ALIPYTHIA6_H
2 #define ALIPYTHIA6_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id: AliPythia.h,v 1.22 2007/10/09 08:43:24 morsch Exp $ */
7
8 #include <TPythia6.h>
9 #include "AliPythiaBase.h"
10
11
12 class AliFastGlauber;
13 class AliQuenchingWeights;
14 class AliStack;
15
16 class AliPythia6 : public TPythia6, public AliPythiaBase
17 {
18
19  public:
20     virtual ~AliPythia6(){;}
21     virtual Int_t Version() {return (6);}
22     // convert to compressed code and print result (for debugging only)
23     virtual Int_t CheckedLuComp(Int_t kf);
24     // Pythia initialisation for selected processes
25     virtual void ProcInit
26       (Process_t process, Float_t energy, StrucFunc_t strucfunc, Int_t tune);
27     virtual void  GenerateEvent()   {Pyevnt();}
28     virtual void  GenerateMIEvent() {Pyevnw();}
29     virtual void  HadronizeEvent()  {Pyexec();}
30     virtual Int_t GetNumberOfParticles() {return GetN();}
31     virtual void  SetNumberOfParticles(Int_t i) {SetN(i);}
32     virtual void  EditEventList(Int_t i) {Pyedit(i);}
33     virtual void  PrintStatistics();
34     virtual void  EventListing();    
35     virtual Int_t GetParticles(TClonesArray *particles) {return ImportParticles(particles, "All");}
36     // Treat protons as inside nuclei
37     virtual void  SetNuclei(Int_t a1, Int_t a2);
38     // Set colliding nuclei ("p","n",...)
39     virtual void  SetCollisionSystem(TString projectile, TString target) { fProjectile = projectile; fTarget = target; }
40     // Print particle properties
41     virtual void PrintParticles();
42     // Reset the decay table
43     virtual void ResetDecayTable();
44     //
45     // Common Physics Configuration
46     virtual void SetPtHardRange(Float_t ptmin, Float_t ptmax);
47     virtual void SetYHardRange(Float_t ymin, Float_t ymax);
48     virtual void SetFragmentation(Int_t flag);
49     virtual void SetInitialAndFinalStateRadiation(Int_t flag1, Int_t flag2);
50     virtual void SetIntrinsicKt(Float_t kt);
51     virtual void SwitchHFOff();
52     virtual void SetPycellParameters(Float_t etamax, Int_t neta, Int_t nphi,
53                                      Float_t thresh, Float_t etseed, Float_t minet, Float_t r);
54     virtual void ModifiedSplitting();
55     virtual void SwitchHadronisationOff();
56     virtual void SwitchHadronisationOn();
57     //
58     // Common Getters
59     virtual void    GetXandQ(Float_t& x1, Float_t& x2, Float_t& q);
60     virtual Float_t GetXSection();
61     virtual Int_t   ProcessCode();
62     virtual Float_t GetPtHard();
63     //
64     //
65     virtual void SetDecayTable();
66     virtual void Pyevnw();
67     virtual void Pyjoin(Int_t& npart, Int_t* ipart);
68     virtual void Pycell(Int_t& nclus);
69     virtual void Pyclus(Int_t& nclus);
70     virtual void GetJet(Int_t i, Float_t& px, Float_t& py, Float_t& pz, Float_t& e);
71     virtual void LoadEvent(AliStack* stack, Int_t flag, Int_t reHadr);
72     virtual void Pyshow(Int_t ip1, Int_t ip2, Double_t qmax);
73     virtual void Pyshowq(Int_t ip1, Int_t ip2, Double_t qmax);
74
75     virtual void Pyrobo(Int_t imi, Int_t ima, Double_t the, Double_t phi, Double_t bex, Double_t bey, Double_t bez);
76     virtual void InitQuenching(Float_t bmin, Float_t bmax, Float_t k, Int_t iECMethod, Float_t zmax = 0.97, Int_t ngmax = 30);
77     virtual void SetPyquenParameters(Double_t t0, Double_t tau0, Int_t nf, Int_t iengl, Int_t iangl);
78     virtual void Pyquen(Double_t a, Int_t ibf, Double_t b);
79     virtual void Qpygin0();
80     virtual void GetQuenchingParameters(Double_t& xp, Double_t& yp, Double_t z[4]);
81     // return instance of the singleton
82     static  AliPythia6* Instance();
83     virtual void Quench();
84     // Assignment Operator
85     AliPythia6 & operator=(const AliPythia6 & rhs);
86     void Copy(TObject&) const;
87  protected:
88     Process_t             fProcess;           // Process type
89     Float_t               fEcms;              // Centre of mass energy
90     StrucFunc_t           fStrucFunc;         // Structure function
91     TString               fProjectile;        // Projectile
92     TString               fTarget;            // Target
93     Int_t                 fDefMDCY[501];      //  ! Default decay switches per particle
94     Int_t                 fDefMDME[2001];     //  ! Default decay switches per mode
95     Double_t              fZQuench[4];        //  ! Quenching fractions for this even
96     Double_t              fXJet;              //  ! Jet production point X
97     Double_t              fYJet;              //  ! Jet production point Y
98     Int_t                 fNGmax;             //    Maximum number of radiated gluons in quenching
99     Float_t               fZmax;              //    Maximum energy loss in quenching
100     AliFastGlauber*       fGlauber;           //  ! The Glauber model
101     AliQuenchingWeights*  fQuenchingWeights;  //  ! The Quenching Weights model
102     static AliPythia6*    fgAliPythia;        //  Pointer to single instance
103  private: 
104     AliPythia6();
105     AliPythia6(const AliPythia6& pythia);
106     void ConfigHeavyFlavor();
107     void AtlasTuning();
108     void AtlasTuningMC09();
109     ClassDef(AliPythia6,1) //ALICE UI to PYTHIA
110 };
111
112 #endif
113
114
115
116
117