666c5764d54d0e90b15c365c6fbf5a231f794ec9
[u/mrichter/AliRoot.git] / EVGEN / AliGenHijing.h
1 #ifndef ALIGENHIJING_H
2 #define ALIGENHIJING_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 <THijing.h>
12 #include <TArrayI.h>
13
14 class TArrayI;
15 class TParticle;
16
17 class AliGenHijing : public AliGenerator
18 {
19     enum {kNoTrigger, kHardProcesses, kDirectPhotons};
20
21  public:
22     AliGenHijing();
23     AliGenHijing(Int_t npart);
24     AliGenHijing(const AliGenHijing &Hijing);
25     virtual ~AliGenHijing();
26     virtual void    Generate();
27     virtual void    Init();
28     // set centre of mass energy
29     virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
30     virtual void    SetReferenceFrame(char* frame="CMS     ") {fFrame=frame;}
31     virtual void    SetProjectile(char* proj="A       ", Int_t a=208, Int_t z=97)
32         {fProjectile = proj;
33         fAProjectile = a;
34         fZProjectile = z;}    
35     virtual void    SetTarget(char* tar="A       ", Int_t a=208, Int_t z=97)
36         {fTarget = tar;
37         fATarget = a;
38         fZTarget =z;}    
39     virtual void    SetImpactParameterRange(Float_t bmin = 0, Float_t bmax =15.)
40         { fMinImpactParam=bmin;
41         fMaxImpactParam=bmax;
42         }
43     virtual void    KeepFullEvent();
44     virtual void    SetJetQuenching(Int_t flag=1)     {fQuench    = flag;}
45     virtual void    SetShadowing(Int_t flag=1)        {fShadowing = flag;}
46     virtual void    SetDecaysOff(Int_t flag=1)        {fDecaysOff = flag;}
47     virtual void    SetTrigger(Int_t flag=kNoTrigger) {fTrigger   = flag;}
48     virtual void    SetFlavor(Int_t flag=0)           {fFlavor    = flag;}    
49     virtual void    SetEvaluate(Int_t flag=0)         {fEvaluate  = flag;}
50     virtual void    SetSelectAll(Int_t flag=0)        {fSelectAll = flag;}    
51     AliGenHijing &  operator=(const AliGenHijing & rhs);
52 // Physics Routines         
53     virtual void EvaluateCrossSections();
54     
55  protected:
56     Bool_t SelectFlavor(Int_t pid);
57  protected:
58     char       *fFrame;         // Reference frame 
59     char       *fProjectile;    // Projectile
60     char       *fTarget;        // Target
61     Int_t       fAProjectile;   // Projectile A
62     Int_t       fZProjectile;   // Projectile Z
63     Int_t       fATarget;       // Target A
64     Int_t       fZTarget;       // Target Z
65     Float_t     fMinImpactParam; // minimum impact parameter
66     Float_t     fMaxImpactParam; // maximum impact parameter    
67     Int_t       fKeep;          // Flag to keep full event information
68     Int_t       fQuench;        // Flag to switch on jet quenching
69     Int_t       fShadowing;     // Flag to switch on voclear effects on parton distribution function
70     Int_t       fDecaysOff;     // Flag to turn off decays of pi0, K_s, D, Lambda, sigma
71     Int_t       fTrigger;       // Trigger type
72     Int_t       fEvaluate;      // Evaluate total and partial cross-sections
73     Int_t       fSelectAll;     // Flag to write the full event
74     Int_t       fFlavor;        // Selected particle flavor 4: charm+beauty 5: beauty
75     Decay_t     fForceDecay;    // Decay channel  are forced
76     Float_t     fEnergyCMS;     // Centre of mass energy
77     Float_t     fKineBias;      // Bias from kinematic selection
78     Int_t       fTrials;        // Number of trials
79     TArrayI     fParentSelect;  // Parent particles to be selected 
80     TArrayI     fChildSelect;   // Decay products to be selected
81     Float_t     fXsection;      // Cross-section
82     THijing    *fHijing;        // Hijing
83     Float_t     fPtHardMin;     // lower pT-hard cut 
84     Float_t     fPtHardMax;     // higher pT-hard cut
85
86  private:
87     // check if particle is selected as parent particle
88     Bool_t ParentSelected(Int_t ip);
89     // check if particle is selected as child particle
90     Bool_t ChildSelected(Int_t ip);
91     // all kinematic selection cuts go here 
92     Bool_t KinematicSelection(TParticle *particle);
93     // adjust the weight from kinematic cuts
94     void   AdjustWeights();
95     // check seleted daughters
96     Bool_t DaughtersSelection(TParticle* iparticle, TClonesArray* particles);
97     ClassDef(AliGenHijing,1) // AliGenerator interface to Hijing
98 };
99 #endif
100
101
102
103
104