Correct GetWire check on even/odd fnWires
[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 //  Manager and hits classes for set:MUON version 0    //
10 /////////////////////////////////////////////////////////
11 #include "AliGenerator.h"
12 #include "TNamed.h"
13 #include "TF1.h"
14 #include "TArrayF.h"
15 #include "TTree.h"
16 #include "AliPythia.h"
17 #include "TArrayI.h"
18 #include "TParticle.h"
19
20 class AliGenPythia : public AliGenerator
21 {
22  protected:
23     Process_t   fProcess;
24     StrucFunc_t fStrucFunc;
25     Decay_t     fForceDecay;
26     Float_t     fEnergyCMS;
27     Float_t     fKineBias;
28     Int_t       fTrials;
29     TArrayI     fParentSelect;
30     TArrayI     fChildSelect;
31     Float_t     fXsection;
32     AliPythia   *fPythia;
33     Float_t     fPtHardMin;
34     Float_t     fPtHardMax;    
35
36  private:
37     // check if particle is selected as parent particle
38     Bool_t ParentSelected(Int_t ip);
39     // check if particle is selected as child particle
40     Bool_t ChildSelected(Int_t ip);
41     // all kinematic selection cuts go here 
42     Bool_t KinematicSelection(TParticle *particle);
43     // adjust the weight from kinematic cuts
44     void   AdjustWeights();
45  public:
46     AliGenPythia();
47     AliGenPythia(Int_t npart);
48     virtual ~AliGenPythia();
49     virtual void    Generate();
50     virtual void    Init();
51     // select process type
52     virtual void    SetProcess(Process_t proc=charm) {fProcess=proc;}
53     // select structure function
54     virtual void    SetStrucFunc(StrucFunc_t func=GRV_HO) {fStrucFunc=func;}
55     // select pt of hard scattering 
56     virtual void    SetPtHard(Float_t ptmin=0, Float_t ptmax=1.e10)
57         {fPtHardMin=ptmin; fPtHardMax=ptmax; }
58     // set centre of mass energy
59     virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
60     // force decay type
61     virtual void    ForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
62     // get cross section of process
63     virtual Float_t GetXsection() {return fXsection;}
64     // Check PDG code
65     virtual Int_t CheckPDGCode(Int_t pdgcode);
66
67     ClassDef(AliGenPythia,1)
68 };
69 #endif
70
71
72
73
74