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

//-------------------------------------------------------------------------
// author: Sergey Kiselev, ITEP, Moscow
// e-mail: Sergey.Kiselev@cern.ch
// tel.: 007 495 129 95 45
//-------------------------------------------------------------------------
// Generator of prompt photons for the reaction A+B, sqrt(S)
//
// main assumptions:
// 1. flat rapidity distribution
// 2. all existing p+p(pbar) data at y_{c.m.} can be described by the function
//           F(x_T) = (sqrt(s))^5 Ed^3sigma/d^3p, x_T = 2p_t/sqrt(s)
//           all data points cover the region x_T: 0.01 - 0.6
//    see Nucl.Phys.A783:577-582,2007, hep-ex/0609037
// 3. binary scaling: for A+B at the impact parameter b
//    Ed^3N^{AB}(b)/d^3p = Ed^3sigma^{pp}/d^3p A B T_{AB}(b),
//    T_{AB}(b) - nuclear overlapping fuction, calculated in the Glauber approach,
//                nuclear density is parametrized by a Woods-Saxon with nuclear radius
//                R_A = 1.19 A^{1/3} - 1.61 A^{-1/3} fm and surface thickness a=0.54 fm
// 4. nuclear effects (Cronin, shadowing, ...) are ignored
//
// input parameters:
//       fAProjectile, fATarget - number of nucleons in a nucleus A and B
//       fMinImpactParam - minimal impct parameter, fm
//       fMaxImpactParam - maximal impct parameter, fm
//       fEnergyCMS - sqrt(S) per nucleon pair, AGeV
//
//       fYMin - minimal rapidity of photons 
//       fYMax - maximal rapidity of photons
//       fPtMin - minimal p_t value of gamma, GeV/c
//       fPtMax - maximal p_t value of gamma, GeV/c
//-------------------------------------------------------------------------
// comparison with SPS and RHIC data, prediction for LHC can be found in
// arXiv:0811.2634 [nucl-th]
//-------------------------------------------------------------------------

class TF1;

#include "AliGenerator.h"

class AliGenPromptPhotons : public AliGenerator
{
 public:

  AliGenPromptPhotons();
  AliGenPromptPhotons(Int_t npart);
  virtual ~AliGenPromptPhotons();
  virtual void Generate();
  virtual void Init();
  virtual void SetPtRange(Float_t ptmin = 0.1, Float_t ptmax=10.);
  virtual void SetYRange(Float_t ymin = -1., Float_t ymax=1.);

// Setters
    virtual void SetAProjectile(Float_t a = 208) {fAProjectile = a;}
    virtual void SetATarget(Float_t a = 208)     {fATarget     = a;}
    virtual void SetEnergyCMS(Float_t energy = 5500.) {fEnergyCMS = energy;}
    virtual void SetImpactParameterRange(Float_t bmin = 0., Float_t bmax = 0.)
	{fMinImpactParam=bmin; fMaxImpactParam=bmax;}

 protected:
  Float_t fAProjectile;     // Projectile nucleus mass number
  Float_t fATarget;         // Target nucleus mass number
  Float_t fEnergyCMS;       // Center of mass energy
  Float_t fMinImpactParam;  // minimum impact parameter
  Float_t fMaxImpactParam;  // maximum impact parameter	
  
  static Double_t FitData      (const Double_t *xx, const Double_t *par);
  static Double_t WSforNorm    (const Double_t *xx, const Double_t *par);
  static Double_t WSz          (const Double_t *xx, const Double_t *par);
  static Double_t TA           (const Double_t *xx, const Double_t *par);
  static Double_t TB           (const Double_t *xx, const Double_t *par);
  static Double_t TAxTB        (const Double_t *xx, const Double_t *par);
  static Double_t TAB          (const Double_t *xx, const Double_t *par);

  static TF1 *fgDataPt;             // d^{2}#sigma^{pp}/(dp_t dy) from data fit 
  static TF1 *fgWSzA;               // Wood Saxon parameterisation for nucleus A 
  static TF1 *fgWSzB;               // Wood Saxon parameterisation for nucleus B 
  static TF1 *fgTA;                 // nuclear thickness function T_A(b) (1/fm**2) 
  static TF1 *fgTB;                 // nuclear thickness function T_B(phi)=T_B(sqtr(s**2+b**2-2*s*b*cos(phi))) 
  static TF1 *fgTAxTB;              // s * TA(s) * 2 * Integral(0,phiMax) TB(phi(s,b)) 
  static TF1 *fgTAB;                // overlap function T_AB(b) (1/fm**2) 
  
 private:

  AliGenPromptPhotons(const AliGenPromptPhotons & PromptPhotons);
  AliGenPromptPhotons& operator = (const AliGenPromptPhotons & PromptPhotons) ;


  ClassDef(AliGenPromptPhotons, 1) // prompt photon generator
};
#endif
 AliGenPromptPhotons.h:1
 AliGenPromptPhotons.h:2
 AliGenPromptPhotons.h:3
 AliGenPromptPhotons.h:4
 AliGenPromptPhotons.h:5
 AliGenPromptPhotons.h:6
 AliGenPromptPhotons.h:7
 AliGenPromptPhotons.h:8
 AliGenPromptPhotons.h:9
 AliGenPromptPhotons.h:10
 AliGenPromptPhotons.h:11
 AliGenPromptPhotons.h:12
 AliGenPromptPhotons.h:13
 AliGenPromptPhotons.h:14
 AliGenPromptPhotons.h:15
 AliGenPromptPhotons.h:16
 AliGenPromptPhotons.h:17
 AliGenPromptPhotons.h:18
 AliGenPromptPhotons.h:19
 AliGenPromptPhotons.h:20
 AliGenPromptPhotons.h:21
 AliGenPromptPhotons.h:22
 AliGenPromptPhotons.h:23
 AliGenPromptPhotons.h:24
 AliGenPromptPhotons.h:25
 AliGenPromptPhotons.h:26
 AliGenPromptPhotons.h:27
 AliGenPromptPhotons.h:28
 AliGenPromptPhotons.h:29
 AliGenPromptPhotons.h:30
 AliGenPromptPhotons.h:31
 AliGenPromptPhotons.h:32
 AliGenPromptPhotons.h:33
 AliGenPromptPhotons.h:34
 AliGenPromptPhotons.h:35
 AliGenPromptPhotons.h:36
 AliGenPromptPhotons.h:37
 AliGenPromptPhotons.h:38
 AliGenPromptPhotons.h:39
 AliGenPromptPhotons.h:40
 AliGenPromptPhotons.h:41
 AliGenPromptPhotons.h:42
 AliGenPromptPhotons.h:43
 AliGenPromptPhotons.h:44
 AliGenPromptPhotons.h:45
 AliGenPromptPhotons.h:46
 AliGenPromptPhotons.h:47
 AliGenPromptPhotons.h:48
 AliGenPromptPhotons.h:49
 AliGenPromptPhotons.h:50
 AliGenPromptPhotons.h:51
 AliGenPromptPhotons.h:52
 AliGenPromptPhotons.h:53
 AliGenPromptPhotons.h:54
 AliGenPromptPhotons.h:55
 AliGenPromptPhotons.h:56
 AliGenPromptPhotons.h:57
 AliGenPromptPhotons.h:58
 AliGenPromptPhotons.h:59
 AliGenPromptPhotons.h:60
 AliGenPromptPhotons.h:61
 AliGenPromptPhotons.h:62
 AliGenPromptPhotons.h:63
 AliGenPromptPhotons.h:64
 AliGenPromptPhotons.h:65
 AliGenPromptPhotons.h:66
 AliGenPromptPhotons.h:67
 AliGenPromptPhotons.h:68
 AliGenPromptPhotons.h:69
 AliGenPromptPhotons.h:70
 AliGenPromptPhotons.h:71
 AliGenPromptPhotons.h:72
 AliGenPromptPhotons.h:73
 AliGenPromptPhotons.h:74
 AliGenPromptPhotons.h:75
 AliGenPromptPhotons.h:76
 AliGenPromptPhotons.h:77
 AliGenPromptPhotons.h:78
 AliGenPromptPhotons.h:79
 AliGenPromptPhotons.h:80
 AliGenPromptPhotons.h:81
 AliGenPromptPhotons.h:82
 AliGenPromptPhotons.h:83
 AliGenPromptPhotons.h:84
 AliGenPromptPhotons.h:85
 AliGenPromptPhotons.h:86
 AliGenPromptPhotons.h:87
 AliGenPromptPhotons.h:88
 AliGenPromptPhotons.h:89
 AliGenPromptPhotons.h:90
 AliGenPromptPhotons.h:91
 AliGenPromptPhotons.h:92
 AliGenPromptPhotons.h:93
 AliGenPromptPhotons.h:94
 AliGenPromptPhotons.h:95