]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TAmpt/TAmpt/AliGenAmpt.h
Update master to aliroot
[u/mrichter/AliRoot.git] / TAmpt / TAmpt / AliGenAmpt.h
1 #ifndef ALIGENAMPT_H
2 #define ALIGENAMPT_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 #include "AliGenMC.h"
9 #include <TString.h>
10
11 class TAmpt;
12 class TParticle;
13 class TClonesArray;
14 class TGraph;
15 class AliGenHijingEventHeader;
16
17 class AliGenAmpt : public AliGenMC
18 {
19   enum {kNoTrigger, kHardProcesses, kDirectPhotons};
20
21   public:
22     AliGenAmpt();
23     AliGenAmpt(Int_t npart);
24     virtual ~AliGenAmpt();
25
26     virtual void    SetDecay(Bool_t b)                {fDecay = b;}
27     virtual TAmpt  *Ampt() { return fAmpt; }
28     virtual void    Generate();
29     virtual void    Init();
30     virtual void    SetSeed(UInt_t seed);
31     virtual void    SetEnergyCMS(Float_t energy=5500) {fEnergyCMS=energy;}
32     virtual void    SetReferenceFrame(TString frame="CMS")
33         {fFrame=frame;}
34     virtual void    SetImpactParameterRange(Float_t bmin = 0, Float_t bmax = 15.)
35         {fMinImpactParam=bmin; fMaxImpactParam=bmax;}
36     virtual void    KeepFullEvent()                   {fKeep      =1;     }
37     virtual void    SetJetQuenching(Int_t flag=1)     {fQuench     = flag;}
38     virtual void    SetShadowing(Int_t flag=1)        {fShadowing  = flag;}
39     virtual void    SetDecaysOff(Int_t flag=1)        {fDecaysOff  = flag;}
40     virtual void    SetTrigger(Int_t flag=kNoTrigger) {fTrigger    = flag;}
41     virtual void    SetFlavor(Int_t flag=0)           {fFlavor     = flag;}
42     virtual void    SetEvaluate(Int_t flag=0)         {fEvaluate   = flag;}
43     virtual void    SetSelectAll(Int_t flag=0)        {fSelectAll  = flag;}
44     virtual void    SetRadiation(Int_t flag=3)        {fRadiation  = flag;}    
45     virtual void    SetSpectators(Int_t spects=1)     {fSpectators = spects;}
46     virtual void    SetDecayer(AliDecayer *decayer)   {fDecayer = decayer;}
47     virtual void    SetPtHardMin(Float_t ptmin)       {fPtHardMin  = ptmin;}
48     virtual void    SetPtHardMax(Float_t ptmax)       {fPtHardMax  = ptmax;}
49     virtual void    SetPtJet(Float_t ptmin)           {fPtMinJet   = ptmin;}
50     virtual void    SetSimpleJets(Int_t flag=0)       {fSimpleJet  = flag;}
51     virtual void    SetNoGammas(Int_t flag=0)         {fNoGammas   = flag;}
52     virtual void    SetJetEtaRange(Float_t etamin = -20., Float_t etamax = 20.)
53         {fEtaMinJet = etamin; fEtaMaxJet = etamax;}
54     virtual void    SetJetPhiRange(Float_t phimin = -180., Float_t phimax = 180.)
55         {fPhiMinJet = TMath::Pi()*phimin/180.; fPhiMaxJet = TMath::Pi()*phimax/180.;}
56     virtual void    SetBoostLHC(Int_t flag = 0)       {fLHC        = flag;}
57     virtual void    SetRandomPz(Bool_t flag = 0)      {fRandomPz   = flag;}
58     virtual void    SwitchOffHeavyQuarks(Bool_t flag = kTRUE) {fNoHeavyQuarks = flag;}
59     virtual void    SetIsoft(Int_t i)                         {fIsoft = i;  }
60     virtual void    SetNtMax(Int_t max)                       {fNtMax = max;}
61     virtual void    SetIpop(Int_t pop)                        {fIpop  = pop;}
62     virtual void    SetXmu(Float_t m)                         {fXmu   = m;  }
63     virtual void    SetAlpha(Float_t alpha)                   {fAlpha = alpha;            }
64     virtual void    SetStringFrag(Float_t a, Float_t b)       {fStringA = a; fStringB = b;}
65             
66     // Getters
67     virtual TString GetReferenceFrame()  const {return fFrame;}
68     virtual void    GetImpactParameterRange(Float_t& bmin, Float_t& bmax) const
69         {bmin = fMinImpactParam; bmax = fMaxImpactParam;}
70     virtual Int_t   GetJetQuenching()                    const {return fQuench;}
71     virtual Int_t   GetShadowing()                       const {return fShadowing;}
72     virtual Int_t   GetTrigger()                         const {return fTrigger;}
73     virtual Int_t   GetFlavor()                          const {return fFlavor;}
74     virtual Int_t   GetRadiation()                       const {return fRadiation;}    
75     virtual Int_t   GetSpectators()                      const {return fSpectators;}
76     virtual Float_t GetPtHardMin()                       const {return fPtHardMin;}
77     virtual Float_t GetPtHardMax()                       const {return fPtHardMax;}
78     virtual Float_t GetPtJet()                           const {return fPtMinJet;}
79     virtual void    GetJetEtaRange(Float_t& etamin, Float_t& etamax)      const 
80         {etamin = fEtaMinJet; etamax = fEtaMaxJet;}
81     virtual void    GetJetPhiRange(Float_t& phimin, Float_t& phimax)      const
82         {phimin = fPhiMinJet*180./TMath::Pi(); phimax = fPhiMaxJet*180./TMath::Pi();}
83     const TClonesArray *GetParticles() const { return &fParticles; }
84
85     // Physics Routines
86     virtual Bool_t  ProvidesCollisionGeometry() const {return kTRUE;}
87     virtual void    EvaluateCrossSections();
88     virtual TGraph* CrossSection()     {return fDsigmaDb;}
89     virtual TGraph* BinaryCollisions() {return fDnDb;}
90     virtual Bool_t  CheckTrigger();
91     virtual Bool_t  IsThisAKnownParticle(TParticle *thisGuy);
92     virtual void    SetRandomReactionPlane(Bool_t on=kTRUE){fRotating=on;};
93
94   protected:
95     Bool_t      SelectFlavor(Int_t pid);
96     void        MakeHeader();
97
98     AliDecayer              *fDecayer;
99     TString                  fFrame;           // Reference frame 
100     Float_t                  fMinImpactParam;  // minimum impact parameter
101     Float_t                  fMaxImpactParam;  // maximum impact parameter      
102     Int_t                    fKeep;            // Flag to keep full event information
103     Int_t                    fQuench;          // Flag to switch on jet quenching
104     Int_t                    fShadowing;       // Flag to switch on nuclear effects on parton distribution function
105     Int_t                    fDecaysOff;       // Flag to turn off decays of pi0, K_s, D, Lambda, sigma
106     Int_t                    fTrigger;         // Trigger type
107     Int_t                    fEvaluate;        // Evaluate total and partial cross-sections
108     Int_t                    fSelectAll;       // Flag to write the full event
109     Int_t                    fFlavor;          // Selected particle flavor 4: charm+beauty 5: beauty
110     Float_t                  fKineBias;        // Bias from kinematic selection
111     Int_t                    fTrials;          // Number of trials
112     Float_t                  fXsection;        // Cross-section
113     TAmpt                   *fAmpt;            //!Ampt
114     Float_t                  fPtHardMin;       // lower pT-hard cut 
115     Float_t                  fPtHardMax;       // higher pT-hard cut
116     Int_t                    fSpectators;      // put spectators on stack
117     TGraph*                  fDsigmaDb;        // dSigma/db for the system
118     TGraph*                  fDnDb;            // dNBinaryCollisions/db
119     Float_t                  fPtMinJet;        // Minimum Pt of triggered Jet
120     Float_t                  fEtaMinJet;       // Minimum eta of triggered Jet
121     Float_t                  fEtaMaxJet;       // Maximum eta of triggered Jet
122     Float_t                  fPhiMinJet;       // At least one of triggered Jets must be in this
123     Float_t                  fPhiMaxJet;       // phi range
124     Int_t                    fRadiation;       // Flag to switch on/off initial and final state radiation
125     Int_t                    fSimpleJet;       // Flag to produce simple tiggered jet topology
126     Int_t                    fNoGammas;        // Don't write gammas if flag "on"
127     Int_t                    fProjectileSpecn; // Num. of spectator neutrons from projectile nucleus
128     Int_t                    fProjectileSpecp; // Num. of spectator protons from projectile nucleus
129     Int_t                    fTargetSpecn;     // Num. of spectator neutrons from target nucleus
130     Int_t                    fTargetSpecp;     // Num. of spectator protons from target nucleus
131     Int_t                    fLHC;             // Assume LHC as lab frame
132     Bool_t                   fRandomPz;        // Randomise sign of pz event by event
133     Bool_t                   fNoHeavyQuarks;   // If true no heavy quarks are produced
134     Int_t                    fIsoft;           // ISOFT (D=1): select Default AMPT or String Melting
135     Int_t                    fNtMax;           // NTMAX: number of timesteps (D=150)
136     Int_t                    fIpop;            // (D=1,yes;0,no) flag for popcorn mechanism(netbaryon stopping)
137     Float_t                  fXmu;             // parton screening mass in fm^(-1) (D=3.2264d0)
138     Float_t                  fAlpha;           // alpha running (fixed) coupling
139     Float_t                  fStringA;         // string frag parameter A
140     Float_t                  fStringB;         // string frag parameter B
141     Float_t                  fEventTime;       // The event time
142     AliGenHijingEventHeader *fHeader;          // header
143     Bool_t                   fDecay;           // decay "long-lived" particles
144     Bool_t                   fRotating;        // Random reaction plane on/off
145  
146
147   private:
148     AliGenAmpt(const AliGenAmpt &Ampt);
149     AliGenAmpt &  operator=(const AliGenAmpt & rhs);
150
151     // adjust the weight from kinematic cuts
152     void   AdjustWeights();
153     // check seleted daughters
154     Bool_t DaughtersSelection(TParticle* iparticle);
155     // check if stable
156     Bool_t Stable(TParticle*  particle) const;
157
158     ClassDef(AliGenAmpt, 4) // AliGenerator interface to Ampt
159 };
160 #endif