Changes to make code work for pp collisions.
[u/mrichter/AliRoot.git] / TDPMjet / AliGenDPMjet.h
1 #ifndef ALIGENDPMJET_H
2 #define ALIGENDPMJET_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // Generator using DPMJET as an external generator
7 // The main DPMJET options are accessable for the user through this interface.
8
9 #include "AliGenMC.h"
10 #include <TString.h>
11 #include <TArrayI.h>
12
13 class TDPMjet;
14 class TArrayI;
15 class TParticle;
16 class TClonesArray;
17 class TGraph;
18
19 class AliGenDPMjet : public AliGenMC
20 {
21
22  public:
23     AliGenDPMjet();
24     AliGenDPMjet(Int_t npart);
25     AliGenDPMjet(const AliGenDPMjet &Dpmjet);
26     virtual ~AliGenDPMjet(); 
27     virtual void    Generate();
28     virtual void    Init();
29
30     virtual void    SetBeamEnergy(Float_t energy=5400.) {fBeamEn=energy;}
31     virtual void    SetEnergyCMS(Float_t energy=5400.)   {fEnergyCMS=energy;}
32     virtual void    SetProjectile(Int_t a=208, Int_t z=82)
33                         {fAProjectile = a; fZProjectile = z;}    
34     virtual void    SetTarget(Int_t a=208, Int_t z=82)
35                         {fATarget = a; fZTarget = z;}    
36     virtual void    SetImpactParameterRange(Float_t bmin=0., Float_t bmax=16.)
37                         {fMinImpactParam=bmin; fMaxImpactParam=bmax;}
38     virtual void    SetCentral(Int_t icentr=-2) {fICentr = icentr;}
39     virtual void    KeepFullEvent();
40     virtual void    SetDecaysOff(Int_t flag=1)        {fDecaysOff  = 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    SetSpectators(Int_t spects=1)     {fSpectators = spects;}
45     virtual void    SetBoostLHC(Int_t flag=0)         {fLHC        = flag;}
46             
47     virtual Float_t GetEnergyCMS() {return fEnergyCMS;}
48     virtual void    GetProjectile(Int_t& a, Int_t& z)
49                         {a = fAProjectile; z = fZProjectile;}    
50     virtual void    GetTarget(Int_t& a, Int_t& z)
51                         {a = fATarget; z = fZTarget;}    
52     virtual void    GetImpactParameterRange(Float_t& bmin, Float_t& bmax)
53                         {bmin = fMinImpactParam; bmax = fMaxImpactParam;}
54     virtual Int_t   GetSpectators()        {return fSpectators;}
55     virtual Int_t   GetFlavor()            {return fFlavor;}
56
57     // Temporeaneo!?!
58     virtual void    SetGenImpPar(Float_t bValue) {fGenImpPar=bValue;}
59     virtual Float_t GetGenImpPar() {return fGenImpPar;}
60     
61     /*virtual void EvaluateCrossSections();
62     virtual void Boost();
63     virtual TGraph* CrossSection()     {return fDsigmaDb;}
64     virtual TGraph* BinaryCollisions() {return fDnDb;}
65     */
66
67     AliGenDPMjet &  operator=(const AliGenDPMjet & rhs);
68
69  protected:
70     Bool_t SelectFlavor(Int_t pid);
71     void   MakeHeader();
72
73  protected:
74
75     Int_t         fAProjectile;    // Projectile A
76     Int_t         fZProjectile;    // Projectile Z
77     Int_t         fATarget;        // Target A
78     Int_t         fZTarget;        // Target Z
79     Float_t       fBeamEn;         // beam energy
80     Float_t       fEnergyCMS;      // Centre of mass energy
81     Float_t       fMinImpactParam; // minimum impact parameter
82     Float_t       fMaxImpactParam; // maximum impact parameter  
83     Int_t         fICentr;         // Flag to force central production
84     Float_t       fCrossSec;       // Fraction of x-section
85     Int_t         fKeep;           // Flag to keep full event information
86     Int_t         fDecaysOff;      // Flag to turn off decays of pi0, K_s, D, Lambda, sigma
87     Int_t         fEvaluate;       // Evaluate total and partial cross-sections
88     Int_t         fSelectAll;      // Flag to write the full event
89     Int_t         fFlavor;         // Selected particle flavor 4: charm+beauty 5: beauty
90     Int_t         fTrials;         // Number of trials
91     TArrayI       fParentSelect;   // Parent particles to be selected 
92     TArrayI       fChildSelect;    // Decay products to be selected
93     Float_t       fXsection;       // Cross-section
94     Int_t         fSpectators;     // put spectators on stack
95     Int_t         fSpecn;          // Num. of spectator neutrons
96     Int_t         fSpecp;          // Num. of spectator protons
97     TDPMjet      *fDPMjet;         // DPMjet
98     TGraph*       fDsigmaDb;       // dSigma/db for the system
99     TGraph*       fDnDb;           // dNBinaryCollisions/db
100     TClonesArray *fParticles;      // Particle List
101     Int_t         fNoGammas;       // Don't write gammas if flag "on"
102     Int_t         fLHC;            // Assume LHC as lab frame
103     // Temporaneo!
104     Float_t       fGenImpPar;      // GeneratedImpactParameter
105     
106  private:
107     // adjust the weight from kinematic cuts
108     void   AdjustWeights();
109     // check seleted daughters
110     Bool_t DaughtersSelection(TParticle* iparticle);
111     // check if stable
112     Bool_t Stable(TParticle*  particle);
113     
114     ClassDef(AliGenDPMjet,1) // AliGenerator interface to DPMJET
115 };
116 #endif
117
118
119
120
121