Dont't stream pointer to AliPythia instance.
[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 "AliGenerator.h"
10 #include "GenTypeDefs.h"
11 #include <TArrayI.h>    
12
13 class AliDecayer;
14 class AliPythia;
15 class TParticle;
16
17 class AliGenPythia : public AliGenerator
18 {
19  public:
20     AliGenPythia();
21     AliGenPythia(Int_t npart);
22     AliGenPythia(const AliGenPythia &Pythia);
23     virtual ~AliGenPythia();
24     virtual void    Generate();
25     virtual void    Init();
26     // select process type
27     virtual void    SetProcess(Process_t proc=charm) {fProcess=proc;}
28     // select structure function
29     virtual void    SetStrucFunc(StrucFunc_t func=GRV_HO) {fStrucFunc=func;}
30     // select pt of hard scattering 
31     virtual void    SetPtHard(Float_t ptmin=0, Float_t ptmax=1.e10)
32         {fPtHardMin=ptmin; fPtHardMax=ptmax; }
33     // set centre of mass energy
34     virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
35     // force decay type
36     virtual void    SetForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
37     // treat protons as inside nuclei
38     virtual void    SetNuclei(Int_t a1, Int_t a2);
39     // get cross section of process
40     virtual Float_t GetXsection() {return fXsection;}
41     // Check PDG code
42     virtual Int_t CheckPDGCode(Int_t pdgcode);
43     // Assignment Operator
44     AliGenPythia & operator=(const AliGenPythia & rhs);
45  protected:
46     Process_t   fProcess;       // Process type
47     StrucFunc_t fStrucFunc;     // Structure Function
48     Decay_t     fForceDecay;    // Decay channel  are forced
49     Float_t     fEnergyCMS;     // Centre of mass energy
50     Float_t     fKineBias;      // Bias from kinematic selection
51     Int_t       fTrials;        // Number of trials
52     TArrayI     fParentSelect;  // Parent particles to be selected 
53     TArrayI     fChildSelect;   // Decay products to be selected
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     
61     AliDecayer  *fDecayer;      // ! pointer to the decayer instance
62  private:
63     // check if particle is selected as parent particle
64     Bool_t ParentSelected(Int_t ip);
65     // check if particle is selected as child particle
66     Bool_t ChildSelected(Int_t ip);
67     // all kinematic selection cuts go here 
68     Bool_t KinematicSelection(TParticle *particle);
69     // adjust the weight from kinematic cuts
70     void   AdjustWeights();
71
72     ClassDef(AliGenPythia,1) // AliGenerator interface to Pythia
73 };
74 #endif
75
76
77
78
79