Update master to aliroot
[u/mrichter/AliRoot.git] / EPOS / TEpos.h
1 //
2 //###################################################################
3 //#        EPOS 1.67     K. WERNER, T. PIEROG, S. PORTEBOEUF.       #
4 //#                      Contact: werner@subatech.in2p3.fr          #
5 //###################################################################
6 //
7 // TEpos.h
8 // 
9 // Wraper class for interfacing EPOS model, derived from ROOT's TGenerator.
10 // It generates temporary input file for the model, providing user with
11 // ability to add his/hers own lines to the input.
12 // Output is read directly from common blocks.
13 //
14 //      Author: Piotr Ostrowski, postrow@if.pw.edu.pl
15 //
16
17
18 #ifndef TEPOS_H
19 #define TEPOS_H
20
21 #ifndef ROOT_TGenerator
22 #include "TGenerator.h"
23 #endif
24
25 #include <vector>
26 class TObjArray;
27 class AliGenEposIsajetToPdgConverter;
28
29 class TEpos : public TGenerator {
30
31
32 public:
33
34    TEpos();
35    TEpos(const TEpos& rhs);
36    TEpos& operator=(const TEpos& rhs);
37
38    virtual            ~TEpos();
39
40    virtual void        Initialize();
41
42    virtual void        GenerateEvent();
43
44    virtual Int_t       ImportParticles(TClonesArray *particles, Option_t *option="");
45    virtual TObjArray*  ImportParticles(Option_t *option="");
46
47    //Geters for event header
48
49    Float_t GetBimevt() const; //   bimevt ........ absolute value of impact parameter
50    Float_t GetPhievt() const; //   phievt ........ angle of impact parameter
51    Int_t GetKolevt() const;   //   kolevt ........ number of collisions
52    Int_t GetKoievt() const;   //   koievt ........ number of inelastic collisions
53    Float_t GetPmxevt() const; //   pmxevt ........ reference momentum
54    Float_t GetEgyevt() const; //   egyevt ........ pp cm energy (hadron) or string energy (lepton)
55    Int_t GetNpjevt() const;   //   npjevt ........ number of primary projectile participants
56    Int_t GetNtgevt() const;   //   ntgevt ........ number of primary target participants
57    Int_t GetNpnevt() const;   //   npnevt ........ number of primary projectile neutron spectators
58    Int_t GetNppevt() const;   //   nppevt ........ number of primary projectile proton spectators
59    Int_t GetNtnevt() const;   //   ntnevt ........ number of primary target neutron spectators
60    Int_t GetNtpevt() const;   //   ntpevt ........ number of primary target proton spectators
61    Int_t GetJpnevt() const;   //   jpnevt ........ number of absolute projectile neutron spectators
62    Int_t GetJppevt() const;   //   jppevt ........ number of absolute projectile proton spectators
63    Int_t GetJtnevt() const;   //   jtnevt ........ number of absolute target neutron spectators
64    Int_t GetJtpevt() const;   //   jtpevt ........ number of absolute target proton spectators
65    Float_t GetXbjevt() const; //   xbjevt ........ bjorken x for dis
66    Float_t GetQsqevt() const; //   qsqevt ........ q**2 for dis
67    Int_t GetNglevt() const;   //   nglevt ........ number of collisions acc to  Glauber
68    Float_t GetZppevt() const; //   zppevt ........ average Z-parton-proj
69    Float_t GetZptevt() const; //   zptevt ........ average Z-parton-targ
70
71    //Parameters for the generator:
72    void SetLaproj(Int_t laproj) { fLaproj = laproj; }
73    void SetMaproj(Int_t maproj) { fMaproj = maproj; }
74    void SetLatarg(Int_t latarg) { fLatarg = latarg; }
75    void SetMatarg(Int_t matarg) { fMatarg = matarg; }
76
77    void SetBminim(Float_t bminim) { fBminim = bminim; }
78    void SetBmaxim(Float_t bmaxim) { fBmaxim = bmaxim; }
79
80    void SetPhimin(Float_t phimin) { fPhimin = phimin; }
81    void SetPhimax(Float_t phimax) { fPhimax = phimax; }
82
83    void SetEcms(Float_t ecms) { fEcms = ecms; }
84    void SetSplitting(Bool_t splitting) { fSplitting = splitting; }
85
86    void AddNoDecay(Int_t nodecay);
87    void AddExtraInputLine(const char *line);
88
89    Int_t GetLaproj() const { return fLaproj; }
90    Int_t GetMaproj() const { return fMaproj; }
91    Int_t GetLatarg() const { return fLatarg; }
92    Int_t GetMatarg() const { return fMatarg; }
93
94    Double_t GetBminim() const { return fBminim; }
95    Double_t GetBmaxim() const { return fBmaxim; }
96
97    Double_t GetPhimin() const { return fPhimin; }
98    Double_t GetPhimax() const { return fPhimax; }
99
100    Double_t GetEcms() const { return fEcms; }
101    Bool_t GetSplitting() const { return fSplitting; }
102
103 protected:
104    virtual void GenerateInputFile();
105    virtual const char * GetInputFileName() const { return "./epos.input"; }
106
107    Int_t fLaproj;       //atomic number of projectile
108    Int_t fMaproj;       //mass number of projectile
109    Int_t fLatarg;       //atomic number of target
110    Int_t fMatarg;       //mass number of target
111    Float_t fBminim;     //lower limit for impact parameter
112    Float_t fBmaxim;     //upper limit for impact parameter
113    Float_t fPhimin;     //lower limit for reaction plane angle
114    Float_t fPhimax;     //upper limit for reaction plane angle
115    Float_t fEcms;       //energy in CMS 
116    Bool_t fSplitting;   //consideration of parton splitting and fussion
117
118    std::vector<Int_t> fNoDecays;                // list of user supplied ISAJET codes of particles that will not be decayed by the model
119    std::vector<const char * > fExtraInputLines; // list of user supplied lines to be added to EPOS input
120
121
122 private:
123    AliGenEposIsajetToPdgConverter* fIdConverter;// PDG helper object
124    ClassDef(TEpos,1)  //Interface to EPOS Event Generator
125 };
126
127 #endif
128