Fixes needed by gfortran, it doesn't perform lazy evaluation (Piotr)
[u/mrichter/AliRoot.git] / EPOS / TEpos.h
CommitLineData
9ef1c2d9 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>
26class TObjArray;
27
28class TEpos : public TGenerator {
29
30
31public:
32
33 TEpos();
34
35 virtual ~TEpos();
36
37 virtual void Initialize();
38
39 virtual void GenerateEvent();
40
41 virtual Int_t ImportParticles(TClonesArray *particles, Option_t *option="");
42 virtual TObjArray* ImportParticles(Option_t *option="");
43
44 //Geters for event header
45
46 Float_t GetBimevt(); // bimevt ........ absolute value of impact parameter
47 Float_t GetPhievt(); // phievt ........ angle of impact parameter
48 Int_t GetKolevt(); // kolevt ........ number of collisions
49 Int_t GetKoievt(); // koievt ........ number of inelastic collisions
50 Float_t GetPmxevt(); // pmxevt ........ reference momentum
51 Float_t GetEgyevt(); // egyevt ........ pp cm energy (hadron) or string energy (lepton)
52 Int_t GetNpjevt(); // npjevt ........ number of primary projectile participants
53 Int_t GetNtgevt(); // ntgevt ........ number of primary target participants
54 Int_t GetNpnevt(); // npnevt ........ number of primary projectile neutron spectators
55 Int_t GetNppevt(); // nppevt ........ number of primary projectile proton spectators
56 Int_t GetNtnevt(); // ntnevt ........ number of primary target neutron spectators
57 Int_t GetNtpevt(); // ntpevt ........ number of primary target proton spectators
58 Int_t GetJpnevt(); // jpnevt ........ number of absolute projectile neutron spectators
59 Int_t GetJppevt(); // jppevt ........ number of absolute projectile proton spectators
60 Int_t GetJtnevt(); // jtnevt ........ number of absolute target neutron spectators
61 Int_t GetJtpevt(); // jtpevt ........ number of absolute target proton spectators
62 Float_t GetXbjevt(); // xbjevt ........ bjorken x for dis
63 Float_t GetQsqevt(); // qsqevt ........ q**2 for dis
64 Int_t GetNglevt(); // nglevt ........ number of collisions acc to Glauber
65 Float_t GetZppevt(); // zppevt ........ average Z-parton-proj
66 Float_t GetZptevt(); // zptevt ........ average Z-parton-targ
67
68 //Parameters for the generator:
69 void SetLaproj(Int_t laproj) { fLaproj = laproj; }
70 void SetMaproj(Int_t maproj) { fMaproj = maproj; }
71 void SetLatarg(Int_t latarg) { fLatarg = latarg; }
72 void SetMatarg(Int_t matarg) { fMatarg = matarg; }
73
74 void SetBminim(Float_t bminim) { fBminim = bminim; }
75 void SetBmaxim(Float_t bmaxim) { fBmaxim = bmaxim; }
76
77 void SetPhimin(Float_t phimin) { fPhimin = phimin; }
78 void SetPhimax(Float_t phimax) { fPhimax = phimax; }
79
80 void SetEcms(Float_t ecms) { fEcms = ecms; }
81 void SetSplitting(Bool_t splitting) { fSplitting = splitting; }
82
83 void AddNoDecay(Int_t nodecay);
84 void AddExtraInputLine(const char *);
85
86 Int_t GetLaproj() const { return fLaproj; }
87 Int_t GetMaproj() const { return fMaproj; }
88 Int_t GetLatarg() const { return fLatarg; }
89 Int_t GetMatarg() const { return fMatarg; }
90
91 Double_t GetBminim() const { return fBminim; }
92 Double_t GetBmaxim() const { return fBmaxim; }
93
94 Double_t GetPhimin() const { return fPhimin; }
95 Double_t GetPhimax() const { return fPhimax; }
96
97 Double_t GetEcms() const { return fEcms; }
98 Bool_t GetSplitting() const { return fSplitting; }
99
100protected:
101 virtual void GenerateInputFile();
102 virtual const char * GetInputFileName() const { return "/tmp/epos.input"; }
103
104 Int_t fLaproj; //atomic number of projectile
105 Int_t fMaproj; //mass number of projectile
106 Int_t fLatarg; //atomic number of target
107 Int_t fMatarg; //mass number of target
108 Float_t fBminim; //lower limit for impact parameter
109 Float_t fBmaxim; //upper limit for impact parameter
110 Float_t fPhimin; //lower limit for reaction plane angle
111 Float_t fPhimax; //upper limit for reaction plane angle
112 Float_t fEcms; //energy in CMS
113 Bool_t fSplitting; //consideration of parton splitting and fussion
114
115 std::vector<Int_t> fNoDecays; // list of user supplied ISAJET codes of particles that will not be decayed by the model
116 std::vector<const char * > fExtraInputLines; // list of user supplied lines to be added to EPOS input
117
118
119private:
120 ClassDef(TEpos,1) //Interface to EPOS Event Generator
121};
122
123#endif
124