ROOT logo
#ifndef ALIGENGSILIB_H
#define ALIGENGSILIB_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

/////////////////////////////////////////////////////////////////////////////
//                                                                         //
// Implementation of AliGenLib for GSI simulations.                        //
// It is an extension of AliMUONLib providing the option for different     //
// parametrisations of pt, y for every particle type                       //
//                                                                         //
// Responsible: Andres.Sandoval@cern.ch                                    //
//                                                                         //
/////////////////////////////////////////////////////////////////////////////

#include "AliGenLib.h"
class TRandom;

class AliGenGSIlib :public AliGenLib {
 public:
    GenFunc   GetPt(Int_t param, const char * tname=0) const;
    GenFunc   GetY(Int_t param, const char * tname=0) const;
    GenFuncIp GetIp(Int_t param, const char * tname=0) const;    

    enum constants{kUpsilon, kJPsi, kCharm, kBeauty, kEta, kEtaprime, kOmega, kRho, kKaon, kPion, kPhi, kLambda, kBaryons};

 private:

    static Double_t PtScal(Double_t pt, Int_t np);

// Upsilon
    static Int_t    IpUpsilon(TRandom *ran);
// Upsilon RITMAN   
    static Double_t PtUpsilonRitman( const Double_t *px, const Double_t *dummy );
    static Double_t YUpsilonRitman(const Double_t *py, const Double_t *dummy);
// Upsilon FLAT   
    static Double_t PtUpsilonFlat( const Double_t *px, const Double_t *dummy );
    static Double_t YUpsilonFlat(const Double_t *py, const Double_t *dummy);
// Upsilon Karel
    static Double_t PtUpsilonKarel( const Double_t *px, const Double_t *dummy );
    static Double_t YUpsilonKarel(const Double_t *py, const Double_t *dummy);
// Upsilon MUONlib
    static Double_t PtUpsilonMUON( const Double_t *px, const Double_t *dummy );
    static Double_t YUpsilonMUON(const Double_t *py, const Double_t *dummy);


// JPsi 
    static Int_t    IpJpsi(TRandom *ran);
// JPsi FLAT   
    static Double_t PtJpsiFlat( const Double_t *px, const Double_t *dummy );
    static Double_t YJpsiFlat(const Double_t *py, const Double_t *dummy);
// JPsi from MUONlib
    static Double_t PtJpsiMUON( const Double_t *px, const Double_t *dummy );
    static Double_t YJpsiMUON(const Double_t *py, const Double_t *dummy);
// JPsi from Ritman
    static Double_t PtJpsiRitman( const Double_t *px, const Double_t *dummy );

    // JPsi from Sergei
    //    static Double_t PtJpsi( Double_t *px, Double_t *dummy );
    //    static Double_t YJpsi(Double_t *py, Double_t *dummy);
    //    static Int_t    IpJpsi(TRandom *ran);


// Charm 
    static Int_t IpCharm(TRandom *ran);
    static Double_t PtCharmFlat( const Double_t *px, const Double_t *dummy );
    static Double_t PtCharmMUON( const Double_t *px, const Double_t *dummy );
    static Double_t PtCharmGSI( const Double_t *px, const Double_t *dummy );
    static Double_t YCharm(const Double_t *py, const Double_t *dummy);


// Beauty
    static Int_t IpBeauty(TRandom *ran);
    static Double_t PtBeautyFlat( const Double_t *px, const Double_t *dummy );
    static Double_t PtBeautyMUON( const Double_t *px, const Double_t *dummy );
    static Double_t PtBeautyGSI( const Double_t *px, const Double_t *dummy );
    static Double_t YBeauty(const Double_t *py, const Double_t *dummy);


// Eta
    static Int_t IpEta(TRandom *ran);
    static Double_t PtEtaPHOS( const Double_t *px, const Double_t *dummy );
    static Double_t YEtaPHOS(const Double_t *py, const Double_t *dummy);


// Etaprime
    static Int_t IpEtaprime(TRandom *ran);
    static Double_t PtEtaprimePHOS( const Double_t *px, const Double_t *dummy );
    static Double_t YEtaprimePHOS(const Double_t *py, const Double_t *dummy);


// Omega
    static Int_t IpOmega(TRandom *ran);
    static Double_t PtOmega( const Double_t *px, const Double_t *dummy );
    static Double_t YOmega(const Double_t *py, const Double_t *dummy);


// Rho
   static Int_t IpRho(TRandom *ran);
   static Double_t PtRho( const Double_t *px, const Double_t *dummy );
   static Double_t YRho(const Double_t *py, const Double_t *dummy);



// Kaon
    static Int_t IpKaonPHOS(TRandom *ran);
    static Double_t PtKaonPHOS( const Double_t *px, const Double_t *dummy );
    static Double_t YKaonPHOS(const Double_t *py, const Double_t *dummy);


// Pion
    static Int_t IpPionPHOS(TRandom *ran);
    static Double_t PtPion( const Double_t *px, const Double_t *dummy );
    static Double_t YPion(const Double_t *py, const Double_t *dummy);


// Phi
    static Int_t IpPhi(TRandom *ran);
    static Double_t PtPhiPHOS( const Double_t *px, const Double_t *dummy );
    static Double_t YPhiPHOS(const Double_t *py, const Double_t *dummy);


// Lambda
    //    static Double_t PtLambda( Double_t *px, Double_t *dummy );
    //    static Double_t YLambda(Double_t *py, Double_t *dummy);
    //    static Int_t IpLambda(TRandom *ran);


// Baryons
    static Int_t IpBaryons(TRandom *ran);
    static Double_t PtBaryons( const Double_t *px, const Double_t *dummy );
    static Double_t YBaryons(const Double_t *py, const Double_t *dummy);



  ClassDef(AliGenGSIlib,0)
};

#endif







 AliGenGSIlib.h:1
 AliGenGSIlib.h:2
 AliGenGSIlib.h:3
 AliGenGSIlib.h:4
 AliGenGSIlib.h:5
 AliGenGSIlib.h:6
 AliGenGSIlib.h:7
 AliGenGSIlib.h:8
 AliGenGSIlib.h:9
 AliGenGSIlib.h:10
 AliGenGSIlib.h:11
 AliGenGSIlib.h:12
 AliGenGSIlib.h:13
 AliGenGSIlib.h:14
 AliGenGSIlib.h:15
 AliGenGSIlib.h:16
 AliGenGSIlib.h:17
 AliGenGSIlib.h:18
 AliGenGSIlib.h:19
 AliGenGSIlib.h:20
 AliGenGSIlib.h:21
 AliGenGSIlib.h:22
 AliGenGSIlib.h:23
 AliGenGSIlib.h:24
 AliGenGSIlib.h:25
 AliGenGSIlib.h:26
 AliGenGSIlib.h:27
 AliGenGSIlib.h:28
 AliGenGSIlib.h:29
 AliGenGSIlib.h:30
 AliGenGSIlib.h:31
 AliGenGSIlib.h:32
 AliGenGSIlib.h:33
 AliGenGSIlib.h:34
 AliGenGSIlib.h:35
 AliGenGSIlib.h:36
 AliGenGSIlib.h:37
 AliGenGSIlib.h:38
 AliGenGSIlib.h:39
 AliGenGSIlib.h:40
 AliGenGSIlib.h:41
 AliGenGSIlib.h:42
 AliGenGSIlib.h:43
 AliGenGSIlib.h:44
 AliGenGSIlib.h:45
 AliGenGSIlib.h:46
 AliGenGSIlib.h:47
 AliGenGSIlib.h:48
 AliGenGSIlib.h:49
 AliGenGSIlib.h:50
 AliGenGSIlib.h:51
 AliGenGSIlib.h:52
 AliGenGSIlib.h:53
 AliGenGSIlib.h:54
 AliGenGSIlib.h:55
 AliGenGSIlib.h:56
 AliGenGSIlib.h:57
 AliGenGSIlib.h:58
 AliGenGSIlib.h:59
 AliGenGSIlib.h:60
 AliGenGSIlib.h:61
 AliGenGSIlib.h:62
 AliGenGSIlib.h:63
 AliGenGSIlib.h:64
 AliGenGSIlib.h:65
 AliGenGSIlib.h:66
 AliGenGSIlib.h:67
 AliGenGSIlib.h:68
 AliGenGSIlib.h:69
 AliGenGSIlib.h:70
 AliGenGSIlib.h:71
 AliGenGSIlib.h:72
 AliGenGSIlib.h:73
 AliGenGSIlib.h:74
 AliGenGSIlib.h:75
 AliGenGSIlib.h:76
 AliGenGSIlib.h:77
 AliGenGSIlib.h:78
 AliGenGSIlib.h:79
 AliGenGSIlib.h:80
 AliGenGSIlib.h:81
 AliGenGSIlib.h:82
 AliGenGSIlib.h:83
 AliGenGSIlib.h:84
 AliGenGSIlib.h:85
 AliGenGSIlib.h:86
 AliGenGSIlib.h:87
 AliGenGSIlib.h:88
 AliGenGSIlib.h:89
 AliGenGSIlib.h:90
 AliGenGSIlib.h:91
 AliGenGSIlib.h:92
 AliGenGSIlib.h:93
 AliGenGSIlib.h:94
 AliGenGSIlib.h:95
 AliGenGSIlib.h:96
 AliGenGSIlib.h:97
 AliGenGSIlib.h:98
 AliGenGSIlib.h:99
 AliGenGSIlib.h:100
 AliGenGSIlib.h:101
 AliGenGSIlib.h:102
 AliGenGSIlib.h:103
 AliGenGSIlib.h:104
 AliGenGSIlib.h:105
 AliGenGSIlib.h:106
 AliGenGSIlib.h:107
 AliGenGSIlib.h:108
 AliGenGSIlib.h:109
 AliGenGSIlib.h:110
 AliGenGSIlib.h:111
 AliGenGSIlib.h:112
 AliGenGSIlib.h:113
 AliGenGSIlib.h:114
 AliGenGSIlib.h:115
 AliGenGSIlib.h:116
 AliGenGSIlib.h:117
 AliGenGSIlib.h:118
 AliGenGSIlib.h:119
 AliGenGSIlib.h:120
 AliGenGSIlib.h:121
 AliGenGSIlib.h:122
 AliGenGSIlib.h:123
 AliGenGSIlib.h:124
 AliGenGSIlib.h:125
 AliGenGSIlib.h:126
 AliGenGSIlib.h:127
 AliGenGSIlib.h:128
 AliGenGSIlib.h:129
 AliGenGSIlib.h:130
 AliGenGSIlib.h:131
 AliGenGSIlib.h:132
 AliGenGSIlib.h:133
 AliGenGSIlib.h:134
 AliGenGSIlib.h:135
 AliGenGSIlib.h:136
 AliGenGSIlib.h:137
 AliGenGSIlib.h:138
 AliGenGSIlib.h:139
 AliGenGSIlib.h:140
 AliGenGSIlib.h:141
 AliGenGSIlib.h:142
 AliGenGSIlib.h:143
 AliGenGSIlib.h:144
 AliGenGSIlib.h:145
 AliGenGSIlib.h:146
 AliGenGSIlib.h:147
 AliGenGSIlib.h:148