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.                  *
 **************************************************************************/

/* $Id$ */

//////////////////////////////////////////////////////////////////////
//                                                                  //         //
//      Generator of spectator nucleons (either protons or neutrons)//
//        computes beam crossing and divergence and Fermi momentum  //
//                                                                  //
/////////////////////////////////////////////////////////////////////

#include <assert.h>

#include <TDatabasePDG.h>
#include <TLorentzVector.h>
#include <TMCProcess.h>
#include <TPDGCode.h>
#include <TRandom.h>
#include <TVector3.h>

#include "AliConst.h"
#include "AliGenZDC.h"
#include "AliRun.h"
#include "AliMC.h"
 
ClassImp(AliGenZDC)
 
//_____________________________________________________________________________
AliGenZDC::AliGenZDC()
   :AliGenerator(),
  fIpart(0),
  fCosx(0),  	
  fCosy(0),  	
  fCosz(0),  	
  fPseudoRapidity(0),		
  fFermiflag(0),	
  fBeamDiv(0),	
  fBeamCrossAngle(0),
  fBeamCrossPlane(0),
  fDebugOpt(0)
{
  //
  // Default constructor
  //
  for(Int_t i=0; i<201; i++){
    fProbintp[i]=0.;
    fProbintn[i]=0.;
    fPp[i]=0.;
  }
}

//_____________________________________________________________________________
AliGenZDC::AliGenZDC(Int_t npart)
   :AliGenerator(npart),
  fIpart(kNeutron),
  fCosx(0.),  	
  fCosy(0.),  	
  fCosz(1.),  	
  fPseudoRapidity(0.),		
  fFermiflag(1),	
  fBeamDiv(0.000032),	
  fBeamCrossAngle(0.0001),
  fBeamCrossPlane(2),
  fDebugOpt(0)
{
  //
  // Standard constructor
  //
  fName = "AliGenZDC";
  fTitle = "Generation of Test Particles for ZDCs";
  
  for(Int_t i=0; i<201; i++){
     fProbintp[i] = 0;
     fProbintn[i] = 0;
     fPp[i] = 0;
  }
}

//_____________________________________________________________________________
void AliGenZDC::Init()
{
  //Initialize Fermi momentum distributions for Pb-Pb
  //
  printf("\n\n		AliGenZDC initialization:\n");
  printf("   Particle: %d, Track cosines: x = %f, y = %f, z = %f \n", 
  	 fIpart,fCosx,fCosy,fCosz);
  printf("   Fermi flag = %d, Beam divergence = %f, Crossing angle "
         "= %f, Crossing plane = %d\n\n", fFermiflag, fBeamDiv, fBeamCrossAngle,
	 fBeamCrossPlane);

  FermiTwoGaussian(208.);
}  
  
//_____________________________________________________________________________
void AliGenZDC::Generate()
{
  //
  // Generate one trigger (n or p)
  //
  Int_t i;

  Double_t mass, pLab[3], fP0, fP[3], fBoostP[3], ddp[3]={0.,0.,0.}, dddp0, dddp[3]; 
  Float_t  fPTrack[3], ptot = fPMin;
  Int_t nt;
  
  if(fPseudoRapidity==0.){ 
    pLab[0] = ptot*fCosx;
    pLab[1] = ptot*fCosy;
    pLab[2] = ptot*fCosz;
  }
  else{
    Float_t scang = 2*TMath::ATan(TMath::Exp(-(fPseudoRapidity)));
    pLab[0] = -ptot*TMath::Sin(scang);
    pLab[1] = 0.;
    pLab[2] = ptot*TMath::Cos(scang);
  }
  for(i=0; i<=2; i++) fP[i] = pLab[i];  
  if(fDebugOpt == 1){
    printf("\n\n		Particle momentum before divergence and crossing\n");
    for(i=0; i<=2; i++)printf(" 	pLab[%d] = %f\n",i,pLab[i]);
  }
  
  // Beam divergence and crossing angle
  if(fBeamCrossAngle!=0.) {
    BeamDivCross(1, pLab);
    for(i=0; i<=2; i++) fP[i] = pLab[i];
  }
  if(fBeamDiv!=0.) {
    BeamDivCross(0, pLab);
    for(i=0; i<=2; i++) fP[i] = pLab[i];
  }

  // If required apply the Fermi momentum
  if(fFermiflag==1){
    if((fIpart==kProton) || (fIpart==kNeutron))
      ExtractFermi(fIpart, ddp);
    mass=TDatabasePDG::Instance()->GetParticle(fIpart)->Mass();
    fP0 = TMath::Sqrt(fP[0]*fP[0]+fP[1]*fP[1]+fP[2]*fP[2]+mass*mass);
    for(i=0; i<=2; i++) dddp[i] = ddp[i];
    dddp0 = TMath::Sqrt(dddp[0]*dddp[0]+dddp[1]*dddp[1]+dddp[2]*dddp[2]+mass*mass);
    
    TVector3 b(fP[0]/fP0, fP[1]/fP0, fP[2]/fP0);
    TLorentzVector pFermi(dddp[0], dddp[1], dddp[2], dddp0);

    pFermi.Boost(b);
    for(i=0; i<=2; i++){
       fBoostP[i] = pFermi[i];
       fP[i] = pFermi[i];
    }

  }
  
  for(i=0; i<=2; i++) fPTrack[i] = fP[i];
      
  Float_t polar[3] = {0,0,0};
  gAlice->GetMCApp()->PushTrack(fTrackIt,-1,fIpart,fPTrack,fOrigin.GetArray(),polar,0,
  		   kPPrimary,nt);
  // -----------------------------------------------------------------------
  if(fDebugOpt == 1){
    printf("\n\n		Track momentum:\n");
    printf("\n	 fPTrack = %f, %f, %f \n",fPTrack[0],fPTrack[1],fPTrack[2]);
  }
  else if(fDebugOpt == 2){
    FILE *file;
    if((file = fopen("SpectMomentum.dat","a")) == NULL){
      printf("Cannot open file  SpectMomentum.dat\n");
      return;
    }
    fprintf(file," %f \t %f \t %f \n",fPTrack[0],fPTrack[1],fPTrack[2]);
    fclose(file);
  }
    
}

//_____________________________________________________________________________
void AliGenZDC::FermiTwoGaussian(Float_t A)
{
//
// Momenta distributions according to the "double-gaussian"
// distribution (Ilinov) - equal for protons and neutrons
//

   Double_t sig1 = 0.113;
   Double_t sig2 = 0.250;
   Double_t alfa = 0.18*(TMath::Power((A/12.),(Float_t)1/3));
   Double_t xk = (2*k2PI)/((1.+alfa)*(TMath::Power(k2PI,1.5)));
   
   for(Int_t i=1; i<=200; i++){
      Double_t p = i*0.005;
      fPp[i] = p;
      Double_t e1 = (p*p)/(2.*sig1*sig1);
      Double_t e2 = (p*p)/(2.*sig2*sig2);
      Double_t f1 = TMath::Exp(-(e1));
      Double_t f2 = TMath::Exp(-(e2));
      Double_t probp = xk*p*p*(f1/(TMath::Power(sig1,3.))+
                      alfa*f2/(TMath::Power(sig2,3.)))*0.005;
      fProbintp[i] = fProbintp[i-1] + probp;
      fProbintn[i] = fProbintp[i];
   }
   if(fDebugOpt == 1){
     printf("\n\n		Initialization of Fermi momenta distribution \n");
     //for(Int_t i=0; i<=200; i++)
     //   printf(" fProbintp[%d] = %f, fProbintn[%d] = %f\n",i,fProbintp[i],i,fProbintn[i]);
   }
} 
//_____________________________________________________________________________
void AliGenZDC::ExtractFermi(Int_t id, Double_t *ddp)
{
//
// Compute Fermi momentum for spectator nucleons
//
  
  Int_t index=0;
  Float_t xx = gRandom->Rndm();
  assert ( id==kProton || id==kNeutron );
  if(id==kProton){
    for(Int_t i=1; i<=200; i++){
       if((xx>=fProbintp[i-1]) && (xx<fProbintp[i])) break;
       index = i;
    }
  }
  else {
    for(Int_t i=1; i<=200; i++){
       if((xx>=fProbintn[i-1]) && (xx<fProbintn[i])) break;
       index = i;
    }
  }
  Float_t pext = fPp[index]+0.001;
  Float_t phi = k2PI*(gRandom->Rndm());
  Float_t cost = (1.-2.*(gRandom->Rndm()));
  Float_t tet = TMath::ACos(cost);
  ddp[0] = pext*TMath::Sin(tet)*TMath::Cos(phi);
  ddp[1] = pext*TMath::Sin(tet)*TMath::Sin(phi);
  ddp[2] = pext*cost;

  if(fDebugOpt == 1){
    printf("\n\n		Extraction of Fermi momentum\n");
    printf("\n 	pxFermi = %f  pyFermi = %f  pzFermi = %f \n",ddp[0],ddp[1],ddp[2]); 
  }
}

//_____________________________________________________________________________
void AliGenZDC::BeamDivCross(Int_t icross, Double_t *pLab)
{
  // Applying beam divergence and crossing angle
  //
  Double_t tetpart, fipart, tetdiv=0, fidiv=0, angleSum[2], tetsum, fisum;
  Double_t rvec;

  Double_t pmq = 0.;
  Int_t i;
  for(i=0; i<=2; i++) pmq = pmq+pLab[i]*pLab[i];
  Double_t pmod = TMath::Sqrt(pmq);

  if(icross==0){      // ##### Beam divergence
    rvec = gRandom->Gaus(0.0,1.0);
    tetdiv = fBeamDiv * TMath::Abs(rvec);
    fidiv = (gRandom->Rndm())*k2PI;
  }
  else if(icross==1){ // ##### Crossing angle
    if(fBeamCrossPlane==0){
      tetdiv = 0.;
      fidiv = 0.;
    }
    else if(fBeamCrossPlane==1){     // Horizontal crossing plane
      tetdiv = fBeamCrossAngle;
      fidiv = 0.;
    }
    else if(fBeamCrossPlane==2){     // Vertical crossing plane
      tetdiv = fBeamCrossAngle;
      fidiv = k2PI/4.;
    }
  }

  tetpart = TMath::ATan2(TMath::Sqrt(pLab[0]*pLab[0]+pLab[1]*pLab[1]),pLab[2]);
  if(pLab[1]!=0. || pLab[0]!=0.) fipart = TMath::ATan2(pLab[1],pLab[0]);
  else fipart = 0.;
  if(fipart<0.) {fipart = fipart+k2PI;}
  tetdiv = tetdiv*kRaddeg;
  fidiv = fidiv*kRaddeg;
  tetpart = tetpart*kRaddeg;
  fipart = fipart*kRaddeg;
  AddAngle(tetpart,fipart,tetdiv,fidiv,angleSum);
  tetsum = angleSum[0];
  fisum  = angleSum[1];
  tetsum = tetsum*kDegrad;
  fisum = fisum*kDegrad;
  pLab[0] = pmod*TMath::Sin(tetsum)*TMath::Cos(fisum);
  pLab[1] = pmod*TMath::Sin(tetsum)*TMath::Sin(fisum);
  pLab[2] = pmod*TMath::Cos(tetsum);
  if(fDebugOpt == 1){
    if(icross==0) printf("\n\n		Beam divergence \n");
    else  	  printf("\n\n		Beam crossing \n");
    for(i=0; i<=2; i++)printf(" 	pLab[%d] = %f\n",i,pLab[i]);
  }
}
  
//_____________________________________________________________________________
void  AliGenZDC::AddAngle(Double_t theta1, Double_t phi1, Double_t theta2,
  	       Double_t phi2, Double_t *angleSum)
{ 
  // Calculating the sum of 2 angles
  Double_t temp, conv, cx, cy, cz, ct1, st1, ct2, st2, cp1, sp1, cp2, sp2;
  Double_t rtetsum, tetsum, fisum;
  
  temp = -1.;
  conv = 180./TMath::ACos(temp);
  
  ct1 = TMath::Cos(theta1/conv);
  st1 = TMath::Sin(theta1/conv);
  cp1 = TMath::Cos(phi1/conv);
  sp1 = TMath::Sin(phi1/conv);
  ct2 = TMath::Cos(theta2/conv);
  st2 = TMath::Sin(theta2/conv);
  cp2 = TMath::Cos(phi2/conv);
  sp2 = TMath::Sin(phi2/conv);
  cx = ct1*cp1*st2*cp2+st1*cp1*ct2-sp1*st2*sp2;
  cy = ct1*sp1*st2*cp2+st1*sp1*ct2+cp1*st2*sp2;
  cz = ct1*ct2-st1*st2*cp2;
  
  rtetsum = TMath::ACos(cz);
  tetsum = conv*rtetsum;
  if(tetsum==0. || tetsum==180.){
    fisum = 0.;
    return;
  }
  temp = cx/TMath::Sin(rtetsum);
  if(temp>1.) temp=1.;
  if(temp<-1.) temp=-1.;
  fisum = conv*TMath::ACos(temp);
  if(cy<0) {fisum = 360.-fisum;}
  angleSum[0] = tetsum;
  angleSum[1] = fisum;
}  

 AliGenZDC.cxx:1
 AliGenZDC.cxx:2
 AliGenZDC.cxx:3
 AliGenZDC.cxx:4
 AliGenZDC.cxx:5
 AliGenZDC.cxx:6
 AliGenZDC.cxx:7
 AliGenZDC.cxx:8
 AliGenZDC.cxx:9
 AliGenZDC.cxx:10
 AliGenZDC.cxx:11
 AliGenZDC.cxx:12
 AliGenZDC.cxx:13
 AliGenZDC.cxx:14
 AliGenZDC.cxx:15
 AliGenZDC.cxx:16
 AliGenZDC.cxx:17
 AliGenZDC.cxx:18
 AliGenZDC.cxx:19
 AliGenZDC.cxx:20
 AliGenZDC.cxx:21
 AliGenZDC.cxx:22
 AliGenZDC.cxx:23
 AliGenZDC.cxx:24
 AliGenZDC.cxx:25
 AliGenZDC.cxx:26
 AliGenZDC.cxx:27
 AliGenZDC.cxx:28
 AliGenZDC.cxx:29
 AliGenZDC.cxx:30
 AliGenZDC.cxx:31
 AliGenZDC.cxx:32
 AliGenZDC.cxx:33
 AliGenZDC.cxx:34
 AliGenZDC.cxx:35
 AliGenZDC.cxx:36
 AliGenZDC.cxx:37
 AliGenZDC.cxx:38
 AliGenZDC.cxx:39
 AliGenZDC.cxx:40
 AliGenZDC.cxx:41
 AliGenZDC.cxx:42
 AliGenZDC.cxx:43
 AliGenZDC.cxx:44
 AliGenZDC.cxx:45
 AliGenZDC.cxx:46
 AliGenZDC.cxx:47
 AliGenZDC.cxx:48
 AliGenZDC.cxx:49
 AliGenZDC.cxx:50
 AliGenZDC.cxx:51
 AliGenZDC.cxx:52
 AliGenZDC.cxx:53
 AliGenZDC.cxx:54
 AliGenZDC.cxx:55
 AliGenZDC.cxx:56
 AliGenZDC.cxx:57
 AliGenZDC.cxx:58
 AliGenZDC.cxx:59
 AliGenZDC.cxx:60
 AliGenZDC.cxx:61
 AliGenZDC.cxx:62
 AliGenZDC.cxx:63
 AliGenZDC.cxx:64
 AliGenZDC.cxx:65
 AliGenZDC.cxx:66
 AliGenZDC.cxx:67
 AliGenZDC.cxx:68
 AliGenZDC.cxx:69
 AliGenZDC.cxx:70
 AliGenZDC.cxx:71
 AliGenZDC.cxx:72
 AliGenZDC.cxx:73
 AliGenZDC.cxx:74
 AliGenZDC.cxx:75
 AliGenZDC.cxx:76
 AliGenZDC.cxx:77
 AliGenZDC.cxx:78
 AliGenZDC.cxx:79
 AliGenZDC.cxx:80
 AliGenZDC.cxx:81
 AliGenZDC.cxx:82
 AliGenZDC.cxx:83
 AliGenZDC.cxx:84
 AliGenZDC.cxx:85
 AliGenZDC.cxx:86
 AliGenZDC.cxx:87
 AliGenZDC.cxx:88
 AliGenZDC.cxx:89
 AliGenZDC.cxx:90
 AliGenZDC.cxx:91
 AliGenZDC.cxx:92
 AliGenZDC.cxx:93
 AliGenZDC.cxx:94
 AliGenZDC.cxx:95
 AliGenZDC.cxx:96
 AliGenZDC.cxx:97
 AliGenZDC.cxx:98
 AliGenZDC.cxx:99
 AliGenZDC.cxx:100
 AliGenZDC.cxx:101
 AliGenZDC.cxx:102
 AliGenZDC.cxx:103
 AliGenZDC.cxx:104
 AliGenZDC.cxx:105
 AliGenZDC.cxx:106
 AliGenZDC.cxx:107
 AliGenZDC.cxx:108
 AliGenZDC.cxx:109
 AliGenZDC.cxx:110
 AliGenZDC.cxx:111
 AliGenZDC.cxx:112
 AliGenZDC.cxx:113
 AliGenZDC.cxx:114
 AliGenZDC.cxx:115
 AliGenZDC.cxx:116
 AliGenZDC.cxx:117
 AliGenZDC.cxx:118
 AliGenZDC.cxx:119
 AliGenZDC.cxx:120
 AliGenZDC.cxx:121
 AliGenZDC.cxx:122
 AliGenZDC.cxx:123
 AliGenZDC.cxx:124
 AliGenZDC.cxx:125
 AliGenZDC.cxx:126
 AliGenZDC.cxx:127
 AliGenZDC.cxx:128
 AliGenZDC.cxx:129
 AliGenZDC.cxx:130
 AliGenZDC.cxx:131
 AliGenZDC.cxx:132
 AliGenZDC.cxx:133
 AliGenZDC.cxx:134
 AliGenZDC.cxx:135
 AliGenZDC.cxx:136
 AliGenZDC.cxx:137
 AliGenZDC.cxx:138
 AliGenZDC.cxx:139
 AliGenZDC.cxx:140
 AliGenZDC.cxx:141
 AliGenZDC.cxx:142
 AliGenZDC.cxx:143
 AliGenZDC.cxx:144
 AliGenZDC.cxx:145
 AliGenZDC.cxx:146
 AliGenZDC.cxx:147
 AliGenZDC.cxx:148
 AliGenZDC.cxx:149
 AliGenZDC.cxx:150
 AliGenZDC.cxx:151
 AliGenZDC.cxx:152
 AliGenZDC.cxx:153
 AliGenZDC.cxx:154
 AliGenZDC.cxx:155
 AliGenZDC.cxx:156
 AliGenZDC.cxx:157
 AliGenZDC.cxx:158
 AliGenZDC.cxx:159
 AliGenZDC.cxx:160
 AliGenZDC.cxx:161
 AliGenZDC.cxx:162
 AliGenZDC.cxx:163
 AliGenZDC.cxx:164
 AliGenZDC.cxx:165
 AliGenZDC.cxx:166
 AliGenZDC.cxx:167
 AliGenZDC.cxx:168
 AliGenZDC.cxx:169
 AliGenZDC.cxx:170
 AliGenZDC.cxx:171
 AliGenZDC.cxx:172
 AliGenZDC.cxx:173
 AliGenZDC.cxx:174
 AliGenZDC.cxx:175
 AliGenZDC.cxx:176
 AliGenZDC.cxx:177
 AliGenZDC.cxx:178
 AliGenZDC.cxx:179
 AliGenZDC.cxx:180
 AliGenZDC.cxx:181
 AliGenZDC.cxx:182
 AliGenZDC.cxx:183
 AliGenZDC.cxx:184
 AliGenZDC.cxx:185
 AliGenZDC.cxx:186
 AliGenZDC.cxx:187
 AliGenZDC.cxx:188
 AliGenZDC.cxx:189
 AliGenZDC.cxx:190
 AliGenZDC.cxx:191
 AliGenZDC.cxx:192
 AliGenZDC.cxx:193
 AliGenZDC.cxx:194
 AliGenZDC.cxx:195
 AliGenZDC.cxx:196
 AliGenZDC.cxx:197
 AliGenZDC.cxx:198
 AliGenZDC.cxx:199
 AliGenZDC.cxx:200
 AliGenZDC.cxx:201
 AliGenZDC.cxx:202
 AliGenZDC.cxx:203
 AliGenZDC.cxx:204
 AliGenZDC.cxx:205
 AliGenZDC.cxx:206
 AliGenZDC.cxx:207
 AliGenZDC.cxx:208
 AliGenZDC.cxx:209
 AliGenZDC.cxx:210
 AliGenZDC.cxx:211
 AliGenZDC.cxx:212
 AliGenZDC.cxx:213
 AliGenZDC.cxx:214
 AliGenZDC.cxx:215
 AliGenZDC.cxx:216
 AliGenZDC.cxx:217
 AliGenZDC.cxx:218
 AliGenZDC.cxx:219
 AliGenZDC.cxx:220
 AliGenZDC.cxx:221
 AliGenZDC.cxx:222
 AliGenZDC.cxx:223
 AliGenZDC.cxx:224
 AliGenZDC.cxx:225
 AliGenZDC.cxx:226
 AliGenZDC.cxx:227
 AliGenZDC.cxx:228
 AliGenZDC.cxx:229
 AliGenZDC.cxx:230
 AliGenZDC.cxx:231
 AliGenZDC.cxx:232
 AliGenZDC.cxx:233
 AliGenZDC.cxx:234
 AliGenZDC.cxx:235
 AliGenZDC.cxx:236
 AliGenZDC.cxx:237
 AliGenZDC.cxx:238
 AliGenZDC.cxx:239
 AliGenZDC.cxx:240
 AliGenZDC.cxx:241
 AliGenZDC.cxx:242
 AliGenZDC.cxx:243
 AliGenZDC.cxx:244
 AliGenZDC.cxx:245
 AliGenZDC.cxx:246
 AliGenZDC.cxx:247
 AliGenZDC.cxx:248
 AliGenZDC.cxx:249
 AliGenZDC.cxx:250
 AliGenZDC.cxx:251
 AliGenZDC.cxx:252
 AliGenZDC.cxx:253
 AliGenZDC.cxx:254
 AliGenZDC.cxx:255
 AliGenZDC.cxx:256
 AliGenZDC.cxx:257
 AliGenZDC.cxx:258
 AliGenZDC.cxx:259
 AliGenZDC.cxx:260
 AliGenZDC.cxx:261
 AliGenZDC.cxx:262
 AliGenZDC.cxx:263
 AliGenZDC.cxx:264
 AliGenZDC.cxx:265
 AliGenZDC.cxx:266
 AliGenZDC.cxx:267
 AliGenZDC.cxx:268
 AliGenZDC.cxx:269
 AliGenZDC.cxx:270
 AliGenZDC.cxx:271
 AliGenZDC.cxx:272
 AliGenZDC.cxx:273
 AliGenZDC.cxx:274
 AliGenZDC.cxx:275
 AliGenZDC.cxx:276
 AliGenZDC.cxx:277
 AliGenZDC.cxx:278
 AliGenZDC.cxx:279
 AliGenZDC.cxx:280
 AliGenZDC.cxx:281
 AliGenZDC.cxx:282
 AliGenZDC.cxx:283
 AliGenZDC.cxx:284
 AliGenZDC.cxx:285
 AliGenZDC.cxx:286
 AliGenZDC.cxx:287
 AliGenZDC.cxx:288
 AliGenZDC.cxx:289
 AliGenZDC.cxx:290
 AliGenZDC.cxx:291
 AliGenZDC.cxx:292
 AliGenZDC.cxx:293
 AliGenZDC.cxx:294
 AliGenZDC.cxx:295
 AliGenZDC.cxx:296
 AliGenZDC.cxx:297
 AliGenZDC.cxx:298
 AliGenZDC.cxx:299
 AliGenZDC.cxx:300
 AliGenZDC.cxx:301
 AliGenZDC.cxx:302
 AliGenZDC.cxx:303
 AliGenZDC.cxx:304
 AliGenZDC.cxx:305
 AliGenZDC.cxx:306
 AliGenZDC.cxx:307
 AliGenZDC.cxx:308
 AliGenZDC.cxx:309
 AliGenZDC.cxx:310
 AliGenZDC.cxx:311
 AliGenZDC.cxx:312
 AliGenZDC.cxx:313
 AliGenZDC.cxx:314
 AliGenZDC.cxx:315
 AliGenZDC.cxx:316
 AliGenZDC.cxx:317
 AliGenZDC.cxx:318
 AliGenZDC.cxx:319
 AliGenZDC.cxx:320
 AliGenZDC.cxx:321
 AliGenZDC.cxx:322
 AliGenZDC.cxx:323
 AliGenZDC.cxx:324
 AliGenZDC.cxx:325
 AliGenZDC.cxx:326
 AliGenZDC.cxx:327
 AliGenZDC.cxx:328
 AliGenZDC.cxx:329
 AliGenZDC.cxx:330
 AliGenZDC.cxx:331
 AliGenZDC.cxx:332
 AliGenZDC.cxx:333
 AliGenZDC.cxx:334
 AliGenZDC.cxx:335
 AliGenZDC.cxx:336
 AliGenZDC.cxx:337
 AliGenZDC.cxx:338
 AliGenZDC.cxx:339
 AliGenZDC.cxx:340
 AliGenZDC.cxx:341
 AliGenZDC.cxx:342
 AliGenZDC.cxx:343
 AliGenZDC.cxx:344
 AliGenZDC.cxx:345
 AliGenZDC.cxx:346
 AliGenZDC.cxx:347
 AliGenZDC.cxx:348