]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVGEN/AliGenPythia.h
Most coding rule violations corrected
[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  public:
23     AliGenPythia();
24     AliGenPythia(Int_t npart);
25     virtual ~AliGenPythia();
26     virtual void    Generate();
27     virtual void    Init();
28     // select process type
29     virtual void    SetProcess(Process_t proc=charm) {fProcess=proc;}
30     // select structure function
31     virtual void    SetStrucFunc(StrucFunc_t func=GRV_HO) {fStrucFunc=func;}
32     // select pt of hard scattering 
33     virtual void    SetPtHard(Float_t ptmin=0, Float_t ptmax=1.e10)
34         {fPtHardMin=ptmin; fPtHardMax=ptmax; }
35     // set centre of mass energy
36     virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
37     // force decay type
38     virtual void    SetForceDecay(Decay_t decay=semimuonic) {fForceDecay=decay;}
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
44  protected:
45     Process_t   fProcess;       // Process type
46     StrucFunc_t fStrucFunc;     // Structure Function
47     Decay_t     fForceDecay;    // Decay channel  are forced
48     Float_t     fEnergyCMS;     // Centre of mass energy
49     Float_t     fKineBias;      // Bias from kinematic selection
50     Int_t       fTrials;        // Number of trials
51     TArrayI     fParentSelect;  // Parent particles to be selected 
52     TArrayI     fChildSelect;   // Decay products to be selected
53     Float_t     fXsection;      // Cross-section
54     AliPythia   *fPythia;       // Pythia 
55     Float_t     fPtHardMin;     // lower pT-hard cut 
56     Float_t     fPtHardMax;     // higher pT-hard cut
57
58  private:
59     // check if particle is selected as parent particle
60     Bool_t ParentSelected(Int_t ip);
61     // check if particle is selected as child particle
62     Bool_t ChildSelected(Int_t ip);
63     // all kinematic selection cuts go here 
64     Bool_t KinematicSelection(TParticle *particle);
65     // adjust the weight from kinematic cuts
66     void   AdjustWeights();
67
68     ClassDef(AliGenPythia,1)
69 };
70 #endif
71
72
73
74
75