Add const to SolenoidField() method for correct overwriting from the parent class
[u/mrichter/AliRoot.git] / EVGEN / AliGenGSIlib.h
1 #ifndef ALIGENGSILIB_H
2 #define ALIGENGSILIB_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 //                                                                         //
10 // Implementation of AliGenLib for GSI simulations.                        //
11 // It is an extension of AliMUONLib providing the option for different     //
12 // parametrisations of pt, y for every particle type                       //
13 //                                                                         //
14 // Responsible: Andres.Sandoval@cern.ch                                    //
15 //                                                                         //
16 /////////////////////////////////////////////////////////////////////////////
17
18 #include "AliGenLib.h"
19 class TRandom;
20
21 class AliGenGSIlib :public AliGenLib {
22  public:
23     enum constants{kUpsilon, kJPsi, kCharm, kBeauty, kEta, kEtaprime, kOmega, kRho, kKaon, kPion, kPhi, kLambda, kBaryons};
24
25     static Double_t PtScal(Double_t pt, Int_t np);
26
27 // Upsilon
28     static Int_t    IpUpsilon(TRandom *ran);
29 // Upsilon RITMAN   
30     static Double_t PtUpsilonRitman( Double_t *px, Double_t *dummy );
31     static Double_t YUpsilonRitman(Double_t *py, Double_t *dummy);
32 // Upsilon FLAT   
33     static Double_t PtUpsilonFlat( Double_t *px, Double_t *dummy );
34     static Double_t YUpsilonFlat(Double_t *py, Double_t *dummy);
35 // Upsilon Karel
36     static Double_t PtUpsilonKarel( Double_t *px, Double_t *dummy );
37     static Double_t YUpsilonKarel(Double_t *py, Double_t *dummy);
38 // Upsilon MUONlib
39     static Double_t PtUpsilonMUON( Double_t *px, Double_t *dummy );
40     static Double_t YUpsilonMUON(Double_t *py, Double_t *dummy);
41
42
43 // JPsi 
44     static Int_t    IpJpsi(TRandom *ran);
45 // JPsi FLAT   
46     static Double_t PtJpsiFlat( Double_t *px, Double_t *dummy );
47     static Double_t YJpsiFlat(Double_t *py, Double_t *dummy);
48 // JPsi from MUONlib
49     static Double_t PtJpsiMUON( Double_t *px, Double_t *dummy );
50     static Double_t YJpsiMUON(Double_t *py, Double_t *dummy);
51 // JPsi from Ritman
52     static Double_t PtJpsiRitman( Double_t *px, Double_t *dummy );
53
54     // JPsi from Sergei
55     //    static Double_t PtJpsi( Double_t *px, Double_t *dummy );
56     //    static Double_t YJpsi(Double_t *py, Double_t *dummy);
57     //    static Int_t    IpJpsi(TRandom *ran);
58
59
60 // Charm 
61     static Int_t IpCharm(TRandom *ran);
62     static Double_t PtCharmFlat( Double_t *px, Double_t *dummy );
63     static Double_t PtCharmMUON( Double_t *px, Double_t *dummy );
64     static Double_t PtCharmGSI( Double_t *px, Double_t *dummy );
65     static Double_t YCharm(Double_t *py, Double_t *dummy);
66
67
68 // Beauty
69     static Int_t IpBeauty(TRandom *ran);
70     static Double_t PtBeautyFlat( Double_t *px, Double_t *dummy );
71     static Double_t PtBeautyMUON( Double_t *px, Double_t *dummy );
72     static Double_t PtBeautyGSI( Double_t *px, Double_t *dummy );
73     static Double_t YBeauty(Double_t *py, Double_t *dummy);
74
75
76 // Eta
77     static Int_t IpEta(TRandom *ran);
78     static Double_t PtEtaPHOS( Double_t *px, Double_t *dummy );
79     static Double_t YEtaPHOS(Double_t *py, Double_t *dummy);
80
81
82 // Etaprime
83     static Int_t IpEtaprime(TRandom *ran);
84     static Double_t PtEtaprimePHOS( Double_t *px, Double_t *dummy );
85     static Double_t YEtaprimePHOS(Double_t *py, Double_t *dummy);
86
87
88 // Omega
89     static Int_t IpOmega(TRandom *ran);
90     static Double_t PtOmega( Double_t *px, Double_t *dummy );
91     static Double_t YOmega(Double_t *py, Double_t *dummy);
92
93
94 // Rho
95    static Int_t IpRho(TRandom *ran);
96    static Double_t PtRho( Double_t *px, Double_t *dummy );
97    static Double_t YRho(Double_t *py, Double_t *dummy);
98
99
100
101 // Kaon
102     static Int_t IpKaonPHOS(TRandom *ran);
103     static Double_t PtKaonPHOS( Double_t *px, Double_t *dummy );
104     static Double_t YKaonPHOS(Double_t *py, Double_t *dummy);
105
106
107 // Pion
108     static Int_t IpPionPHOS(TRandom *ran);
109     static Double_t PtPion( Double_t *px, Double_t *dummy );
110     static Double_t YPion(Double_t *py, Double_t *dummy);
111
112
113 // Phi
114     static Int_t IpPhi(TRandom *ran);
115     static Double_t PtPhiPHOS( Double_t *px, Double_t *dummy );
116     static Double_t YPhiPHOS(Double_t *py, Double_t *dummy);
117
118
119 // Lambda
120     //    static Double_t PtLambda( Double_t *px, Double_t *dummy );
121     //    static Double_t YLambda(Double_t *py, Double_t *dummy);
122     //    static Int_t IpLambda(TRandom *ran);
123
124
125 // Baryons
126     static Int_t IpBaryons(TRandom *ran);
127     static Double_t PtBaryons( Double_t *px, Double_t *dummy );
128     static Double_t YBaryons(Double_t *py, Double_t *dummy);
129
130
131     typedef Double_t (*GenFunc)  (Double_t *, Double_t *);
132     typedef Int_t    (*GenFuncIp)(TRandom *ran);
133     
134     GenFunc   GetPt(Int_t param, const char * tname=0) const;
135     GenFunc   GetY(Int_t param, const char * tname=0) const;
136     GenFuncIp GetIp(Int_t param, const char * tname=0) const;    
137
138   ClassDef(AliGenGSIlib,0)
139 };
140
141 #endif
142
143
144
145
146
147
148