small update
[u/mrichter/AliRoot.git] / EVGEN / AliGenPromptPhotons.h
1 #ifndef ALIGENPROMPTPHOTONS_H
2 #define ALIGENPROMPTPHOTONS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 //-------------------------------------------------------------------------
7 // author: Sergey Kiselev, ITEP, Moscow
8 // e-mail: Sergey.Kiselev@cern.ch
9 // tel.: 007 495 129 95 45
10 //-------------------------------------------------------------------------
11 // Generator of prompt photons for the reaction A+B, sqrt(S)
12 //
13 // main assumptions:
14 // 1. flat rapidity distribution
15 // 2. all existing p+p(pbar) data at y_{c.m.} can be described by the function
16 //           F(x_T) = (sqrt(s))^5 Ed^3sigma/d^3p, x_T = 2p_t/sqrt(s)
17 //           all data points cover the region x_T: 0.01 - 0.6
18 //    see Nucl.Phys.A783:577-582,2007, hep-ex/0609037
19 // 3. binary scaling: for A+B at the impact parameter b
20 //    Ed^3N^{AB}(b)/d^3p = Ed^3sigma^{pp}/d^3p A B T_{AB}(b),
21 //    T_{AB}(b) - nuclear overlapping fuction, calculated in the Glauber approach,
22 //                nuclear density is parametrized by a Woods-Saxon with nuclear radius
23 //                R_A = 1.19 A^{1/3} - 1.61 A^{-1/3} fm and surface thickness a=0.54 fm
24 // 4. nuclear effects (Cronin, shadowing, ...) are ignored
25 //
26 // input parameters:
27 //       fAProjectile, fATarget - number of nucleons in a nucleus A and B
28 //       fMinImpactParam - minimal impct parameter, fm
29 //       fMaxImpactParam - maximal impct parameter, fm
30 //       fEnergyCMS - sqrt(S) per nucleon pair, AGeV
31 //
32 //       fYMin - minimal rapidity of photons 
33 //       fYMax - maximal rapidity of photons
34 //       fPtMin - minimal p_t value of gamma, GeV/c
35 //       fPtMax - maximal p_t value of gamma, GeV/c
36 //-------------------------------------------------------------------------
37 // comparison with SPS and RHIC data, prediction for LHC can be found in
38 // arXiv:0811.2634 [nucl-th]
39 //-------------------------------------------------------------------------
40
41 class TF1;
42
43 #include "AliGenerator.h"
44
45 class AliGenPromptPhotons : public AliGenerator
46 {
47  public:
48
49   AliGenPromptPhotons();
50   AliGenPromptPhotons(Int_t npart);
51   virtual ~AliGenPromptPhotons();
52   virtual void Generate();
53   virtual void Init();
54   virtual void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax=10.);
55   virtual void SetYRange(Float_t ymin = -1., Float_t ymax=1.);
56
57 // Setters
58     virtual void SetAProjectile(Float_t a = 208) {fAProjectile = a;}
59     virtual void SetATarget(Float_t a = 208)     {fATarget     = a;}
60     virtual void SetEnergyCMS(Float_t energy = 5500.) {fEnergyCMS = energy;}
61     virtual void SetImpactParameterRange(Float_t bmin = 0., Float_t bmax = 0.)
62         {fMinImpactParam=bmin; fMaxImpactParam=bmax;}
63
64  protected:
65   Float_t fAProjectile;     // Projectile nucleus mass number
66   Float_t fATarget;         // Target nucleus mass number
67   Float_t fEnergyCMS;       // Center of mass energy
68   Float_t fMinImpactParam;  // minimum impact parameter
69   Float_t fMaxImpactParam;  // maximum impact parameter 
70   
71   static Double_t FitData      (const Double_t *xx, const Double_t *par);
72   static Double_t WSforNorm    (const Double_t *xx, const Double_t *par);
73   static Double_t WSz          (const Double_t *xx, const Double_t *par);
74   static Double_t TA           (const Double_t *xx, const Double_t *par);
75   static Double_t TB           (const Double_t *xx, const Double_t *par);
76   static Double_t TAxTB        (const Double_t *xx, const Double_t *par);
77   static Double_t TAB          (const Double_t *xx, const Double_t *par);
78
79   static TF1 *fgDataPt;             // d^{2}#sigma^{pp}/(dp_t dy) from data fit 
80   static TF1 *fgWSzA;               // Wood Saxon parameterisation for nucleus A 
81   static TF1 *fgWSzB;               // Wood Saxon parameterisation for nucleus B 
82   static TF1 *fgTA;                 // nuclear thickness function T_A(b) (1/fm**2) 
83   static TF1 *fgTB;                 // nuclear thickness function T_B(phi)=T_B(sqtr(s**2+b**2-2*s*b*cos(phi))) 
84   static TF1 *fgTAxTB;              // s * TA(s) * 2 * Integral(0,phiMax) TB(phi(s,b)) 
85   static TF1 *fgTAB;                // overlap function T_AB(b) (1/fm**2) 
86   
87  private:
88
89   AliGenPromptPhotons(const AliGenPromptPhotons & PromptPhotons);
90   AliGenPromptPhotons& operator = (const AliGenPromptPhotons & PromptPhotons) ;
91
92
93   ClassDef(AliGenPromptPhotons, 1) // prompt photon generator
94 };
95 #endif