]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenPythia.h
fDebug becomes fgDebug according to rules.
[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 AliPythia;
14 class TParticle;
15
16 class AliGenPythia : public AliGenerator
17 {
18  public:
19     AliGenPythia();
20     AliGenPythia(Int_t npart);
21     AliGenPythia(const AliGenPythia &Pythia);
22     virtual ~AliGenPythia();
23     virtual void    Generate();
24     virtual void    Init();
25     // select process type
26     virtual void    SetProcess(Process_t proc=charm) {fProcess=proc;}
27     // select structure function
28     virtual void    SetStrucFunc(StrucFunc_t func=GRV_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     // force decay type
35     virtual void    SetForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
36     // get cross section of process
37     virtual Float_t GetXsection() {return fXsection;}
38     // Check PDG code
39     virtual Int_t CheckPDGCode(Int_t pdgcode);
40     // Assignment Operator
41     AliGenPythia & operator=(const AliGenPythia & rhs);
42  protected:
43     Process_t   fProcess;       // Process type
44     StrucFunc_t fStrucFunc;     // Structure Function
45     Decay_t     fForceDecay;    // Decay channel  are forced
46     Float_t     fEnergyCMS;     // Centre of mass energy
47     Float_t     fKineBias;      // Bias from kinematic selection
48     Int_t       fTrials;        // Number of trials
49     TArrayI     fParentSelect;  // Parent particles to be selected 
50     TArrayI     fChildSelect;   // Decay products to be selected
51     Float_t     fXsection;      // Cross-section
52     AliPythia   *fPythia;       // Pythia 
53     Float_t     fPtHardMin;     // lower pT-hard cut 
54     Float_t     fPtHardMax;     // higher pT-hard cut
55
56  private:
57     // check if particle is selected as parent particle
58     Bool_t ParentSelected(Int_t ip);
59     // check if particle is selected as child particle
60     Bool_t ChildSelected(Int_t ip);
61     // all kinematic selection cuts go here 
62     Bool_t KinematicSelection(TParticle *particle);
63     // adjust the weight from kinematic cuts
64     void   AdjustWeights();
65
66     ClassDef(AliGenPythia,1) // AliGenerator interface to Pythia
67 };
68 #endif
69
70
71
72
73