ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-------------------------------------------------------------------------
// 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]
//-------------------------------------------------------------------------

//Begin_Html
/*
<img src="picts/AliGeneratorClass.gif">
</pre>
<br clear=left>
<font size=+2 color=red>
<p>The responsible person for this module is
<a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
</font>
<pre>
*/
//End_Html
//                                                               //
///////////////////////////////////////////////////////////////////

#include <TArrayF.h>
#include <TF1.h>

#include "AliConst.h"
#include "AliGenEventHeader.h"
#include "AliGenPromptPhotons.h"
#include "AliLog.h"
#include "AliRun.h"

ClassImp(AliGenPromptPhotons)

TF1*    AliGenPromptPhotons::fgDataPt        = NULL;
TF1*    AliGenPromptPhotons::fgWSzA          = NULL;
TF1*    AliGenPromptPhotons::fgWSzB          = NULL;
TF1*    AliGenPromptPhotons::fgTA            = NULL;
TF1*    AliGenPromptPhotons::fgTB            = NULL;
TF1*    AliGenPromptPhotons::fgTAxTB         = NULL;
TF1*    AliGenPromptPhotons::fgTAB           = NULL;

//_____________________________________________________________________________
AliGenPromptPhotons::AliGenPromptPhotons()
    :AliGenerator(-1),
        fAProjectile(0.),
        fATarget(0.),
        fEnergyCMS(0.),
        fMinImpactParam(0.),
        fMaxImpactParam(0.)
{
    //
    // Default constructor
    //
    SetCutVertexZ();
    SetPtRange();
    SetYRange();
}

//_____________________________________________________________________________
AliGenPromptPhotons::AliGenPromptPhotons(Int_t npart)
    :AliGenerator(npart),
        fAProjectile(208),
        fATarget(208),
        fEnergyCMS(5500.),
        fMinImpactParam(0.),
        fMaxImpactParam(0.)
{
  // 
  // Standard constructor
  //

    fName="PromptPhotons";
    fTitle="Prompt photons from pp data fit + T_AB";

    SetCutVertexZ();
    SetPtRange();
    SetYRange();
}

//_____________________________________________________________________________
AliGenPromptPhotons::~AliGenPromptPhotons()
{
  //
  // Standard destructor
  //
    delete fgDataPt;
    delete fgWSzA;
    delete fgWSzB;
    delete fgTA;
    delete fgTB;
    delete fgTAxTB;
    delete fgTAB;
}

//_____________________________________________________________________________
void AliGenPromptPhotons::Init()
{
  // Initialisation 
  fgDataPt = new TF1("fgDataPt",FitData,fPtMin,fPtMax,1);
  fgDataPt->SetParameter(0,fEnergyCMS);

  const Double_t d=0.54;  // surface thickness (fm)
  const Double_t ra = 1.19*TMath::Power(fAProjectile,1./3.)-1.61/TMath::Power(fAProjectile,1./3.);
  const Double_t eps=0.01; // cut WS at ramax: WS(ramax)/WS(0)=eps
  const Double_t ramax=ra+d*TMath::Log((1.-eps+TMath::Exp(-ra/d))/eps);

  TF1 fWSforNormA("fWSforNormA",&WSforNorm,0,ramax,2);
  fWSforNormA.SetParameters(ra,d);
  fWSforNormA.SetParNames("RA","d");
  const Double_t ca=1./fWSforNormA.Integral(0.,ramax);

  const Double_t rb=1.19*TMath::Power(fATarget,1./3.)-1.61/TMath::Power(fATarget,1./3.);
  const Double_t rbmax=rb+d*TMath::Log((1.-eps+TMath::Exp(-rb/d))/eps);

  TF1 fWSforNormB("fWSforNormB",&WSforNorm,0,rbmax,2);
  fWSforNormB.SetParameters(rb,d);
  fWSforNormB.SetParNames("RB","d");
  const Double_t cb=1./fWSforNormB.Integral(0.,rbmax);

  fgWSzA = new TF1("fgWSzA",WSz,0.,ramax,4);
  fgWSzA->SetParameter(0,ra);
  fgWSzA->SetParameter(1,d);
  fgWSzA->SetParameter(2,ca);

  fgTA = new TF1("fgTA",TA,0.,ramax,1);
  fgTA->SetParameter(0,ramax);

  fgWSzB = new TF1("fgWSzB",WSz,0.,rbmax,4);
  fgWSzB->SetParameter(0,rb);
  fgWSzB->SetParameter(1,d);
  fgWSzB->SetParameter(2,cb);

  fgTB = new TF1("fgTB",TB,0.,TMath::Pi(),3);
  fgTB->SetParameter(0,rbmax);

  fgTAxTB = new TF1("fgTAxTB",TAxTB,0,ramax,2);
  fgTAxTB->SetParameter(0,rbmax);

  fgTAB = new TF1("fgTAB",TAB,0.,ramax+rbmax,2);
  fgTAB->SetParameter(0,ramax);
  fgTAB->SetParameter(1,rbmax);

}

//_____________________________________________________________________________
void AliGenPromptPhotons::Generate()
{
  //
  // Generate thermal photons of a event 
  //

    Float_t polar[3]= {0,0,0};
    Float_t origin[3];
    Float_t time;
    Float_t p[3];
    Float_t random[6];
    Int_t nt;

    for (Int_t j=0;j<3;j++) origin[j]=fOrigin[j];
    time = fTimeOrigin;
/*
    if(fVertexSmear==kPerEvent) {
      Vertex();
      for (j=0;j<3;j++) origin[j]=fVertex[j];
      time = fTime;
    }
*/
    TArrayF eventVertex;
    eventVertex.Set(3);
    eventVertex[0] = origin[0];
    eventVertex[1] = origin[1];
    eventVertex[2] = origin[2];
    Float_t eventTime = time;

    Int_t nGam;
    Float_t b,pt,rapidity,phi,ww;

    b=TMath::Sqrt(fMinImpactParam*fMinImpactParam+(fMaxImpactParam*fMaxImpactParam-fMinImpactParam*fMinImpactParam)*gRandom->Rndm());

    Double_t dsdyPP=fgDataPt->Integral(fPtMin,fPtMax); // pb, fm^2 = 1e10 pb
    ww=dsdyPP*1.0e-10*(fYMax-fYMin)*fAProjectile*fATarget*fgTAB->Eval(b);
    nGam=Int_t(ww);
    if(gRandom->Rndm() < (ww-(Float_t)nGam)) nGam++;

      if(nGam) {
        for(Int_t i=0; i<nGam; i++) {
          pt=fgDataPt->GetRandom();
          Rndm(random,2);
          rapidity=(fYMax-fYMin)*random[0]+fYMin;
          phi=2.*TMath::Pi()*random[1];
          p[0]=pt*TMath::Cos(phi);
          p[1]=pt*TMath::Sin(phi);
          p[2]=pt*TMath::SinH(rapidity);

	  if(fVertexSmear==kPerTrack) {
            Rndm(random,6);
	    for (Int_t j=0;j<3;j++) {
	      origin[j]=fOrigin[j]+fOsigma[j]*TMath::Cos(2*random[2*j]*TMath::Pi())*
	      TMath::Sqrt(-2*TMath::Log(random[2*j+1]));
	    }
	    Rndm(random,2);
	    time = fTimeOrigin + fOsigma[2]/TMath::Ccgs()*
	      TMath::Cos(2*random[0]*TMath::Pi())*
	      TMath::Sqrt(-2*TMath::Log(random[1]));
	  }

	  PushTrack(fTrackIt,-1,22,p,origin,polar,time,kPPrimary,nt,1.);
        }
      }

// Header
    AliGenEventHeader* header = new AliGenEventHeader("PromptPhotons");
// Event Vertex
    header->SetPrimaryVertex(eventVertex);
    header->SetInteractionTime(eventTime);			    
    header->SetNProduced(fNpart);
    gAlice->SetGenEventHeader(header);

}

void AliGenPromptPhotons::SetPtRange(Float_t ptmin, Float_t ptmax) {
    AliGenerator::SetPtRange(ptmin, ptmax);
}

void AliGenPromptPhotons::SetYRange(Float_t ymin, Float_t ymax) {
    AliGenerator::SetYRange(ymin, ymax);
}

//**********************************************************************************
Double_t AliGenPromptPhotons::FitData(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - p_t (GeV).
// par[0]=sqrt(s_NN) (GeV),
//
// output:
// d^{2}#sigma/(dp_t dy) (pb/GeV)
//---------------------------------------------------
//
// d^{2}#sigma/(dp_t dy) = (2 pi p_t) Ed^{3}#sigma/d^{3}p 
//
// data presentation: Nucl.Phys.A783:577-582,2007, hep-ex/0609037, fig.3
// F(x_t)=(#sqrt{s})^{5} Ed^{3}#sigma/d^{3}p
//---------------------------------------------------
// approximate tabulation of F(x_t)
  const Int_t nMax=4;
  const Double_t log10x[nMax]={ -2., -1., -0.6, -0.3};
  const Double_t log10F[nMax]={ 19., 13.,  9.8,   7.};

  const Double_t xT=2.*x[0]/par[0];
  const Double_t log10xT=TMath::Log10(xT);
  Int_t i=0;
  while(log10xT>log10x[i] && i<nMax) i++;
  if(i==0) i=1;
  if(i==nMax) i=nMax-1;
  const Double_t alpha=(log10F[i]-log10F[i-1])/(log10x[i]-log10x[i-1]);
  const Double_t beta=log10F[i-1]-alpha*log10x[i-1];

  return (TMath::TwoPi()*x[0])*TMath::Power(10.,alpha*log10xT+beta)/TMath::Power(par[0],5.);
}

//**********************************************************************************
Double_t AliGenPromptPhotons::WSforNorm(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - r (fm)
// par[0] - R (fm), radius
// par[1] - d (fm), surface thickness
//
// output: 
// 4 pi r**2 /(1+exp((r-R)/d))
//
// Wood Saxon (WS) C/(1+exp((r-RA)/d)) (nuclons/fm^3) 
// To get the normalization A = (Integral 4 pi r**2 dr WS):
// C = A / (Integral 4 pi r**2 dr 1/(1+exp((r-RA)/d)) )
// Thus me need 4 pi r**2 /(1+exp((r-RA)/d)) (1/fm)
//---------------------------------------------------
  const Double_t r=x[0];
  const Double_t bigR=par[0],d=par[1];

  return 4.*TMath::Pi()*r*r/(1.+TMath::Exp((r-bigR)/d));
}

//**********************************************************************************
Double_t AliGenPromptPhotons::WSz(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - z (fm)
// par[0] - R (fm), radius
// par[1] - d (fm), surface thickness
// par[2] - C (nucleons/fm**2), normalization factor 
// par[3] - b (fm), impact parameter
//
// output:
//  Wood Saxon Parameterisation
//  as a function of z for fixed b (1/fm^3)
//---------------------------------------------------
  const Double_t z=x[0];
  const Double_t bigR=par[0],d=par[1],C=par[2],b=par[3];

  return C/(1.+TMath::Exp((TMath::Sqrt(b*b+z*z)-bigR)/d));
}

//**********************************************************************************
Double_t AliGenPromptPhotons::TA(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - b (fm), impact parameter
// par[0] - RAMAX (fm), max. value of projectile radius
//
// output:
// nuclear thickness function T_A(b) (1/fm^2)
//---------------------------------------------------
  const Double_t b=x[0];
  const Double_t ramax=par[0];

  fgWSzA->SetParameter(3,b);

  return 2.*fgWSzA->Integral(0.,TMath::Sqrt(ramax*ramax-b*b));
}

//**********************************************************************************
Double_t AliGenPromptPhotons::TB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - phi (rad)
// par[0] - RBMAX (fm), max. value of target radius
// par[1] - b (fm), impact parameter
// par[2] - s (fm)
//
// output:
//  nuclear thickness function T_B(phi)=T_B(sqtr(s**2+b**2-2*s*b*cos(phi)))
//---------------------------------------------------
  const Double_t phi=x[0];
  const Double_t rbmax=par[0],b=par[1],s=par[2];

  const Double_t w=TMath::Sqrt(s*s+b*b-2.*s*b*TMath::Cos(phi));

  fgWSzB->SetParameter(3,w);

  return 2.*fgWSzB->Integral(0.,TMath::Sqrt(rbmax*rbmax-w*w));;
}

//**********************************************************************************
Double_t AliGenPromptPhotons::TAxTB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - s (fm)
// par[0] - RBMAX (fm), max. value of target radius
// par[1] - b (fm), impact parameter
//
// output:
//  s * TA(s) * 2 * Integral(0,phiMax) TB(phi(s,b))
//---------------------------------------------------
  const Double_t s  = x[0];
  const Double_t rbmax=par[0],b=par[1];

  if(s==0.) return 0.;

  fgTB->SetParameter(1,b);
  fgTB->SetParameter(2,s);

  Double_t phiMax;
  if(b<rbmax && s<(rbmax-b)) {
    phiMax=TMath::Pi();
  } else {
    phiMax=TMath::ACos((s*s+b*b-rbmax*rbmax)/(2.*s*b));
  }

  return s*fgTA->Eval(s)*2.*fgTB->Integral(0.,phiMax);
}

// ---------------------------------------------------------------------------------
Double_t AliGenPromptPhotons::TAB(const Double_t* x, const Double_t* par) {
//---------------------------------------------------
// input:
// x[0] - b (fm), impact parameter
// par[0] - RAMAX (fm), max. value of projectile radius
// par[1] - RAMAX (fm), max. value of target radius
//
// output:
// overlap function TAB(b) (1/fm**2)
//---------------------------------------------------
  const Double_t b=x[0];
  const Double_t ramax=par[0],rbmax=par[1];

  Double_t sMin=0.,sMax=ramax;
  if(b>rbmax) sMin=b-rbmax;
  if(b<(ramax-rbmax)) sMax=b+rbmax;

  fgTAxTB->SetParameter(1,b);

  return fgTAxTB->Integral(sMin,sMax);
}
 AliGenPromptPhotons.cxx:1
 AliGenPromptPhotons.cxx:2
 AliGenPromptPhotons.cxx:3
 AliGenPromptPhotons.cxx:4
 AliGenPromptPhotons.cxx:5
 AliGenPromptPhotons.cxx:6
 AliGenPromptPhotons.cxx:7
 AliGenPromptPhotons.cxx:8
 AliGenPromptPhotons.cxx:9
 AliGenPromptPhotons.cxx:10
 AliGenPromptPhotons.cxx:11
 AliGenPromptPhotons.cxx:12
 AliGenPromptPhotons.cxx:13
 AliGenPromptPhotons.cxx:14
 AliGenPromptPhotons.cxx:15
 AliGenPromptPhotons.cxx:16
 AliGenPromptPhotons.cxx:17
 AliGenPromptPhotons.cxx:18
 AliGenPromptPhotons.cxx:19
 AliGenPromptPhotons.cxx:20
 AliGenPromptPhotons.cxx:21
 AliGenPromptPhotons.cxx:22
 AliGenPromptPhotons.cxx:23
 AliGenPromptPhotons.cxx:24
 AliGenPromptPhotons.cxx:25
 AliGenPromptPhotons.cxx:26
 AliGenPromptPhotons.cxx:27
 AliGenPromptPhotons.cxx:28
 AliGenPromptPhotons.cxx:29
 AliGenPromptPhotons.cxx:30
 AliGenPromptPhotons.cxx:31
 AliGenPromptPhotons.cxx:32
 AliGenPromptPhotons.cxx:33
 AliGenPromptPhotons.cxx:34
 AliGenPromptPhotons.cxx:35
 AliGenPromptPhotons.cxx:36
 AliGenPromptPhotons.cxx:37
 AliGenPromptPhotons.cxx:38
 AliGenPromptPhotons.cxx:39
 AliGenPromptPhotons.cxx:40
 AliGenPromptPhotons.cxx:41
 AliGenPromptPhotons.cxx:42
 AliGenPromptPhotons.cxx:43
 AliGenPromptPhotons.cxx:44
 AliGenPromptPhotons.cxx:45
 AliGenPromptPhotons.cxx:46
 AliGenPromptPhotons.cxx:47
 AliGenPromptPhotons.cxx:48
 AliGenPromptPhotons.cxx:49
 AliGenPromptPhotons.cxx:50
 AliGenPromptPhotons.cxx:51
 AliGenPromptPhotons.cxx:52
 AliGenPromptPhotons.cxx:53
 AliGenPromptPhotons.cxx:54
 AliGenPromptPhotons.cxx:55
 AliGenPromptPhotons.cxx:56
 AliGenPromptPhotons.cxx:57
 AliGenPromptPhotons.cxx:58
 AliGenPromptPhotons.cxx:59
 AliGenPromptPhotons.cxx:60
 AliGenPromptPhotons.cxx:61
 AliGenPromptPhotons.cxx:62
 AliGenPromptPhotons.cxx:63
 AliGenPromptPhotons.cxx:64
 AliGenPromptPhotons.cxx:65
 AliGenPromptPhotons.cxx:66
 AliGenPromptPhotons.cxx:67
 AliGenPromptPhotons.cxx:68
 AliGenPromptPhotons.cxx:69
 AliGenPromptPhotons.cxx:70
 AliGenPromptPhotons.cxx:71
 AliGenPromptPhotons.cxx:72
 AliGenPromptPhotons.cxx:73
 AliGenPromptPhotons.cxx:74
 AliGenPromptPhotons.cxx:75
 AliGenPromptPhotons.cxx:76
 AliGenPromptPhotons.cxx:77
 AliGenPromptPhotons.cxx:78
 AliGenPromptPhotons.cxx:79
 AliGenPromptPhotons.cxx:80
 AliGenPromptPhotons.cxx:81
 AliGenPromptPhotons.cxx:82
 AliGenPromptPhotons.cxx:83
 AliGenPromptPhotons.cxx:84
 AliGenPromptPhotons.cxx:85
 AliGenPromptPhotons.cxx:86
 AliGenPromptPhotons.cxx:87
 AliGenPromptPhotons.cxx:88
 AliGenPromptPhotons.cxx:89
 AliGenPromptPhotons.cxx:90
 AliGenPromptPhotons.cxx:91
 AliGenPromptPhotons.cxx:92
 AliGenPromptPhotons.cxx:93
 AliGenPromptPhotons.cxx:94
 AliGenPromptPhotons.cxx:95
 AliGenPromptPhotons.cxx:96
 AliGenPromptPhotons.cxx:97
 AliGenPromptPhotons.cxx:98
 AliGenPromptPhotons.cxx:99
 AliGenPromptPhotons.cxx:100
 AliGenPromptPhotons.cxx:101
 AliGenPromptPhotons.cxx:102
 AliGenPromptPhotons.cxx:103
 AliGenPromptPhotons.cxx:104
 AliGenPromptPhotons.cxx:105
 AliGenPromptPhotons.cxx:106
 AliGenPromptPhotons.cxx:107
 AliGenPromptPhotons.cxx:108
 AliGenPromptPhotons.cxx:109
 AliGenPromptPhotons.cxx:110
 AliGenPromptPhotons.cxx:111
 AliGenPromptPhotons.cxx:112
 AliGenPromptPhotons.cxx:113
 AliGenPromptPhotons.cxx:114
 AliGenPromptPhotons.cxx:115
 AliGenPromptPhotons.cxx:116
 AliGenPromptPhotons.cxx:117
 AliGenPromptPhotons.cxx:118
 AliGenPromptPhotons.cxx:119
 AliGenPromptPhotons.cxx:120
 AliGenPromptPhotons.cxx:121
 AliGenPromptPhotons.cxx:122
 AliGenPromptPhotons.cxx:123
 AliGenPromptPhotons.cxx:124
 AliGenPromptPhotons.cxx:125
 AliGenPromptPhotons.cxx:126
 AliGenPromptPhotons.cxx:127
 AliGenPromptPhotons.cxx:128
 AliGenPromptPhotons.cxx:129
 AliGenPromptPhotons.cxx:130
 AliGenPromptPhotons.cxx:131
 AliGenPromptPhotons.cxx:132
 AliGenPromptPhotons.cxx:133
 AliGenPromptPhotons.cxx:134
 AliGenPromptPhotons.cxx:135
 AliGenPromptPhotons.cxx:136
 AliGenPromptPhotons.cxx:137
 AliGenPromptPhotons.cxx:138
 AliGenPromptPhotons.cxx:139
 AliGenPromptPhotons.cxx:140
 AliGenPromptPhotons.cxx:141
 AliGenPromptPhotons.cxx:142
 AliGenPromptPhotons.cxx:143
 AliGenPromptPhotons.cxx:144
 AliGenPromptPhotons.cxx:145
 AliGenPromptPhotons.cxx:146
 AliGenPromptPhotons.cxx:147
 AliGenPromptPhotons.cxx:148
 AliGenPromptPhotons.cxx:149
 AliGenPromptPhotons.cxx:150
 AliGenPromptPhotons.cxx:151
 AliGenPromptPhotons.cxx:152
 AliGenPromptPhotons.cxx:153
 AliGenPromptPhotons.cxx:154
 AliGenPromptPhotons.cxx:155
 AliGenPromptPhotons.cxx:156
 AliGenPromptPhotons.cxx:157
 AliGenPromptPhotons.cxx:158
 AliGenPromptPhotons.cxx:159
 AliGenPromptPhotons.cxx:160
 AliGenPromptPhotons.cxx:161
 AliGenPromptPhotons.cxx:162
 AliGenPromptPhotons.cxx:163
 AliGenPromptPhotons.cxx:164
 AliGenPromptPhotons.cxx:165
 AliGenPromptPhotons.cxx:166
 AliGenPromptPhotons.cxx:167
 AliGenPromptPhotons.cxx:168
 AliGenPromptPhotons.cxx:169
 AliGenPromptPhotons.cxx:170
 AliGenPromptPhotons.cxx:171
 AliGenPromptPhotons.cxx:172
 AliGenPromptPhotons.cxx:173
 AliGenPromptPhotons.cxx:174
 AliGenPromptPhotons.cxx:175
 AliGenPromptPhotons.cxx:176
 AliGenPromptPhotons.cxx:177
 AliGenPromptPhotons.cxx:178
 AliGenPromptPhotons.cxx:179
 AliGenPromptPhotons.cxx:180
 AliGenPromptPhotons.cxx:181
 AliGenPromptPhotons.cxx:182
 AliGenPromptPhotons.cxx:183
 AliGenPromptPhotons.cxx:184
 AliGenPromptPhotons.cxx:185
 AliGenPromptPhotons.cxx:186
 AliGenPromptPhotons.cxx:187
 AliGenPromptPhotons.cxx:188
 AliGenPromptPhotons.cxx:189
 AliGenPromptPhotons.cxx:190
 AliGenPromptPhotons.cxx:191
 AliGenPromptPhotons.cxx:192
 AliGenPromptPhotons.cxx:193
 AliGenPromptPhotons.cxx:194
 AliGenPromptPhotons.cxx:195
 AliGenPromptPhotons.cxx:196
 AliGenPromptPhotons.cxx:197
 AliGenPromptPhotons.cxx:198
 AliGenPromptPhotons.cxx:199
 AliGenPromptPhotons.cxx:200
 AliGenPromptPhotons.cxx:201
 AliGenPromptPhotons.cxx:202
 AliGenPromptPhotons.cxx:203
 AliGenPromptPhotons.cxx:204
 AliGenPromptPhotons.cxx:205
 AliGenPromptPhotons.cxx:206
 AliGenPromptPhotons.cxx:207
 AliGenPromptPhotons.cxx:208
 AliGenPromptPhotons.cxx:209
 AliGenPromptPhotons.cxx:210
 AliGenPromptPhotons.cxx:211
 AliGenPromptPhotons.cxx:212
 AliGenPromptPhotons.cxx:213
 AliGenPromptPhotons.cxx:214
 AliGenPromptPhotons.cxx:215
 AliGenPromptPhotons.cxx:216
 AliGenPromptPhotons.cxx:217
 AliGenPromptPhotons.cxx:218
 AliGenPromptPhotons.cxx:219
 AliGenPromptPhotons.cxx:220
 AliGenPromptPhotons.cxx:221
 AliGenPromptPhotons.cxx:222
 AliGenPromptPhotons.cxx:223
 AliGenPromptPhotons.cxx:224
 AliGenPromptPhotons.cxx:225
 AliGenPromptPhotons.cxx:226
 AliGenPromptPhotons.cxx:227
 AliGenPromptPhotons.cxx:228
 AliGenPromptPhotons.cxx:229
 AliGenPromptPhotons.cxx:230
 AliGenPromptPhotons.cxx:231
 AliGenPromptPhotons.cxx:232
 AliGenPromptPhotons.cxx:233
 AliGenPromptPhotons.cxx:234
 AliGenPromptPhotons.cxx:235
 AliGenPromptPhotons.cxx:236
 AliGenPromptPhotons.cxx:237
 AliGenPromptPhotons.cxx:238
 AliGenPromptPhotons.cxx:239
 AliGenPromptPhotons.cxx:240
 AliGenPromptPhotons.cxx:241
 AliGenPromptPhotons.cxx:242
 AliGenPromptPhotons.cxx:243
 AliGenPromptPhotons.cxx:244
 AliGenPromptPhotons.cxx:245
 AliGenPromptPhotons.cxx:246
 AliGenPromptPhotons.cxx:247
 AliGenPromptPhotons.cxx:248
 AliGenPromptPhotons.cxx:249
 AliGenPromptPhotons.cxx:250
 AliGenPromptPhotons.cxx:251
 AliGenPromptPhotons.cxx:252
 AliGenPromptPhotons.cxx:253
 AliGenPromptPhotons.cxx:254
 AliGenPromptPhotons.cxx:255
 AliGenPromptPhotons.cxx:256
 AliGenPromptPhotons.cxx:257
 AliGenPromptPhotons.cxx:258
 AliGenPromptPhotons.cxx:259
 AliGenPromptPhotons.cxx:260
 AliGenPromptPhotons.cxx:261
 AliGenPromptPhotons.cxx:262
 AliGenPromptPhotons.cxx:263
 AliGenPromptPhotons.cxx:264
 AliGenPromptPhotons.cxx:265
 AliGenPromptPhotons.cxx:266
 AliGenPromptPhotons.cxx:267
 AliGenPromptPhotons.cxx:268
 AliGenPromptPhotons.cxx:269
 AliGenPromptPhotons.cxx:270
 AliGenPromptPhotons.cxx:271
 AliGenPromptPhotons.cxx:272
 AliGenPromptPhotons.cxx:273
 AliGenPromptPhotons.cxx:274
 AliGenPromptPhotons.cxx:275
 AliGenPromptPhotons.cxx:276
 AliGenPromptPhotons.cxx:277
 AliGenPromptPhotons.cxx:278
 AliGenPromptPhotons.cxx:279
 AliGenPromptPhotons.cxx:280
 AliGenPromptPhotons.cxx:281
 AliGenPromptPhotons.cxx:282
 AliGenPromptPhotons.cxx:283
 AliGenPromptPhotons.cxx:284
 AliGenPromptPhotons.cxx:285
 AliGenPromptPhotons.cxx:286
 AliGenPromptPhotons.cxx:287
 AliGenPromptPhotons.cxx:288
 AliGenPromptPhotons.cxx:289
 AliGenPromptPhotons.cxx:290
 AliGenPromptPhotons.cxx:291
 AliGenPromptPhotons.cxx:292
 AliGenPromptPhotons.cxx:293
 AliGenPromptPhotons.cxx:294
 AliGenPromptPhotons.cxx:295
 AliGenPromptPhotons.cxx:296
 AliGenPromptPhotons.cxx:297
 AliGenPromptPhotons.cxx:298
 AliGenPromptPhotons.cxx:299
 AliGenPromptPhotons.cxx:300
 AliGenPromptPhotons.cxx:301
 AliGenPromptPhotons.cxx:302
 AliGenPromptPhotons.cxx:303
 AliGenPromptPhotons.cxx:304
 AliGenPromptPhotons.cxx:305
 AliGenPromptPhotons.cxx:306
 AliGenPromptPhotons.cxx:307
 AliGenPromptPhotons.cxx:308
 AliGenPromptPhotons.cxx:309
 AliGenPromptPhotons.cxx:310
 AliGenPromptPhotons.cxx:311
 AliGenPromptPhotons.cxx:312
 AliGenPromptPhotons.cxx:313
 AliGenPromptPhotons.cxx:314
 AliGenPromptPhotons.cxx:315
 AliGenPromptPhotons.cxx:316
 AliGenPromptPhotons.cxx:317
 AliGenPromptPhotons.cxx:318
 AliGenPromptPhotons.cxx:319
 AliGenPromptPhotons.cxx:320
 AliGenPromptPhotons.cxx:321
 AliGenPromptPhotons.cxx:322
 AliGenPromptPhotons.cxx:323
 AliGenPromptPhotons.cxx:324
 AliGenPromptPhotons.cxx:325
 AliGenPromptPhotons.cxx:326
 AliGenPromptPhotons.cxx:327
 AliGenPromptPhotons.cxx:328
 AliGenPromptPhotons.cxx:329
 AliGenPromptPhotons.cxx:330
 AliGenPromptPhotons.cxx:331
 AliGenPromptPhotons.cxx:332
 AliGenPromptPhotons.cxx:333
 AliGenPromptPhotons.cxx:334
 AliGenPromptPhotons.cxx:335
 AliGenPromptPhotons.cxx:336
 AliGenPromptPhotons.cxx:337
 AliGenPromptPhotons.cxx:338
 AliGenPromptPhotons.cxx:339
 AliGenPromptPhotons.cxx:340
 AliGenPromptPhotons.cxx:341
 AliGenPromptPhotons.cxx:342
 AliGenPromptPhotons.cxx:343
 AliGenPromptPhotons.cxx:344
 AliGenPromptPhotons.cxx:345
 AliGenPromptPhotons.cxx:346
 AliGenPromptPhotons.cxx:347
 AliGenPromptPhotons.cxx:348
 AliGenPromptPhotons.cxx:349
 AliGenPromptPhotons.cxx:350
 AliGenPromptPhotons.cxx:351
 AliGenPromptPhotons.cxx:352
 AliGenPromptPhotons.cxx:353
 AliGenPromptPhotons.cxx:354
 AliGenPromptPhotons.cxx:355
 AliGenPromptPhotons.cxx:356
 AliGenPromptPhotons.cxx:357
 AliGenPromptPhotons.cxx:358
 AliGenPromptPhotons.cxx:359
 AliGenPromptPhotons.cxx:360
 AliGenPromptPhotons.cxx:361
 AliGenPromptPhotons.cxx:362
 AliGenPromptPhotons.cxx:363
 AliGenPromptPhotons.cxx:364
 AliGenPromptPhotons.cxx:365
 AliGenPromptPhotons.cxx:366
 AliGenPromptPhotons.cxx:367
 AliGenPromptPhotons.cxx:368
 AliGenPromptPhotons.cxx:369
 AliGenPromptPhotons.cxx:370
 AliGenPromptPhotons.cxx:371
 AliGenPromptPhotons.cxx:372
 AliGenPromptPhotons.cxx:373
 AliGenPromptPhotons.cxx:374
 AliGenPromptPhotons.cxx:375
 AliGenPromptPhotons.cxx:376
 AliGenPromptPhotons.cxx:377
 AliGenPromptPhotons.cxx:378
 AliGenPromptPhotons.cxx:379
 AliGenPromptPhotons.cxx:380
 AliGenPromptPhotons.cxx:381
 AliGenPromptPhotons.cxx:382
 AliGenPromptPhotons.cxx:383
 AliGenPromptPhotons.cxx:384
 AliGenPromptPhotons.cxx:385
 AliGenPromptPhotons.cxx:386
 AliGenPromptPhotons.cxx:387
 AliGenPromptPhotons.cxx:388
 AliGenPromptPhotons.cxx:389
 AliGenPromptPhotons.cxx:390
 AliGenPromptPhotons.cxx:391
 AliGenPromptPhotons.cxx:392
 AliGenPromptPhotons.cxx:393
 AliGenPromptPhotons.cxx:394
 AliGenPromptPhotons.cxx:395
 AliGenPromptPhotons.cxx:396
 AliGenPromptPhotons.cxx:397
 AliGenPromptPhotons.cxx:398
 AliGenPromptPhotons.cxx:399
 AliGenPromptPhotons.cxx:400
 AliGenPromptPhotons.cxx:401
 AliGenPromptPhotons.cxx:402
 AliGenPromptPhotons.cxx:403
 AliGenPromptPhotons.cxx:404
 AliGenPromptPhotons.cxx:405
 AliGenPromptPhotons.cxx:406
 AliGenPromptPhotons.cxx:407
 AliGenPromptPhotons.cxx:408
 AliGenPromptPhotons.cxx:409
 AliGenPromptPhotons.cxx:410
 AliGenPromptPhotons.cxx:411
 AliGenPromptPhotons.cxx:412
 AliGenPromptPhotons.cxx:413
 AliGenPromptPhotons.cxx:414
 AliGenPromptPhotons.cxx:415
 AliGenPromptPhotons.cxx:416
 AliGenPromptPhotons.cxx:417
 AliGenPromptPhotons.cxx:418
 AliGenPromptPhotons.cxx:419
 AliGenPromptPhotons.cxx:420
 AliGenPromptPhotons.cxx:421
 AliGenPromptPhotons.cxx:422
 AliGenPromptPhotons.cxx:423
 AliGenPromptPhotons.cxx:424
 AliGenPromptPhotons.cxx:425
 AliGenPromptPhotons.cxx:426
 AliGenPromptPhotons.cxx:427
 AliGenPromptPhotons.cxx:428
 AliGenPromptPhotons.cxx:429
 AliGenPromptPhotons.cxx:430
 AliGenPromptPhotons.cxx:431
 AliGenPromptPhotons.cxx:432
 AliGenPromptPhotons.cxx:433
 AliGenPromptPhotons.cxx:434
 AliGenPromptPhotons.cxx:435
 AliGenPromptPhotons.cxx:436
 AliGenPromptPhotons.cxx:437