- Some coded moved to AliGenMC
[u/mrichter/AliRoot.git] / EVGEN / AliGenPythia.h
1 #ifndef ALIGENPYTHIA_H
2 #define ALIGENPYTHIA_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8
9 #include "AliGenMC.h"
10 #include "AliPythia.h"
11
12 class AliPythia;
13 class TParticle;
14
15 class AliGenPythia : public AliGenMC
16 {
17  public:
18     AliGenPythia();
19     AliGenPythia(Int_t npart);
20     AliGenPythia(const AliGenPythia &Pythia);
21     virtual ~AliGenPythia();
22     virtual void    Generate();
23     virtual void    Init();
24     virtual void    SetEventListRange(Int_t eventFirst=-1, Int_t eventLast=-1);
25     // select process type
26     virtual void    SetProcess(Process_t proc = kPyCharm) {fProcess = proc;}
27     // select structure function
28     virtual void    SetStrucFunc(StrucFunc_t func = kGRV_HO) {fStrucFunc = func;}
29     // select pt of hard scattering 
30     virtual void    SetPtHard(Float_t ptmin = 0, Float_t ptmax = 1.e10)
31         {fPtHardMin = ptmin; fPtHardMax = ptmax; }
32     // set centre of mass energy
33     virtual void    SetEnergyCMS(Float_t energy = 5500) {fEnergyCMS = energy;}
34     // treat protons as inside nuclei
35     virtual void    SetNuclei(Int_t a1, Int_t a2);
36     // get cross section of process
37     virtual Float_t GetXsection() {return fXsection;}      
38     virtual void    FinishRun();
39     
40     // Assignment Operator
41     AliGenPythia & operator=(const AliGenPythia & rhs);
42  private:
43     Int_t  GenerateMB();
44     virtual void    MakeHeader();    
45  protected:
46     TClonesArray* fParticles;  // Particle  List
47     
48     Process_t   fProcess;       // Process type
49     StrucFunc_t fStrucFunc;     // Structure Function
50     Float_t     fEnergyCMS;     // Centre of mass energy
51     Float_t     fKineBias;      // Bias from kinematic selection
52     Int_t       fTrials;        // Number of trials
53     Int_t       fFlavorSelect;  // Heavy Flavor Selection
54     Float_t     fXsection;      // Cross-section
55     AliPythia   *fPythia;       //! Pythia 
56     Float_t     fPtHardMin;     // lower pT-hard cut 
57     Float_t     fPtHardMax;     // higher pT-hard cut
58     Int_t       fNucA1;         // mass number nucleus side 1
59     Int_t       fNucA2;         // mass number nucleus side 2
60     Bool_t      fFullEvent;     // Write Full event if true
61     AliDecayer  *fDecayer;      //! Pointer to the decayer instance
62     Int_t       fDebugEventFirst; // First event to debug
63     Int_t       fDebugEventLast;  // Last  event to debug
64  private:
65     // adjust the weight from kinematic cuts
66     void   AdjustWeights();
67
68     ClassDef(AliGenPythia,1) // AliGenerator interface to Pythia
69 };
70 #endif
71
72
73
74
75