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

//====================================================================================================================================================
//
//      Parametric generator of primary pions and kaons
//
//      Contact author: antonio.uras@cern.ch
//
//====================================================================================================================================================

#include "TPDGCode.h"

#include "AliConst.h"
#include "AliRun.h"
#include "AliGenEventHeader.h"
#include "TDatabasePDG.h"
#include "AliPDG.h"
#include "TFile.h"
#include "TROOT.h"
#include "AliGenParamPionsKaons.h"

ClassImp(AliGenParamPionsKaons)

//====================================================================================================================================================

AliGenParamPionsKaons::AliGenParamPionsKaons():
  AliGenerator(), 
  fGeneratePion(kTRUE),
  fGenerateKaon(kTRUE),
  fPtVsRapidityPrimaryPosPions(0x0),
  fPtVsRapidityPrimaryNegPions(0x0),
  fPtVsRapidityPrimaryPosKaons(0x0),
  fPtVsRapidityPrimaryNegKaons(0x0),
  fHistPdgCode(0x0) {

  // Default constructor

}

//====================================================================================================================================================

AliGenParamPionsKaons::AliGenParamPionsKaons(Int_t nPart, Char_t *inputFile):
  AliGenerator(nPart),
  fGeneratePion(kTRUE),
  fGenerateKaon(kTRUE),
  fPtVsRapidityPrimaryPosPions(0x0),
  fPtVsRapidityPrimaryNegPions(0x0),
  fPtVsRapidityPrimaryPosKaons(0x0),
  fPtVsRapidityPrimaryNegKaons(0x0),
  fHistPdgCode(0x0) {

  // Standard constructor

  fName  = "ParamPionsKaons";
  fTitle = "Parametric pions and kaons generator";

  LoadInputHistos(inputFile);

}

//====================================================================================================================================================

void AliGenParamPionsKaons::Generate() {

  // Generate one trigger
  
  Double_t polar[3]= {0,0,0};

  Double_t origin[3];
  Double_t p[3];

  Double_t mass=0., pt=0., rap=0., mom=0., energy=0, mt=0., phi=0., time=0.;
  Int_t nt;
  Int_t pdgCode;

  for (Int_t j=0; j<3; j++) origin[j] = fOrigin[j];
  time = fTimeOrigin;
  if (fVertexSmear==kPerEvent) {
    Vertex();
    for (Int_t j=0; j<3; j++) origin[j] = fVertex[j];
    time = fTime;
  }

  Int_t nPartGenerated = 0;

  while (nPartGenerated<fNpart) {

    pdgCode = TMath::Nint(fHistPdgCode->GetRandom());
    if (TMath::Abs(pdgCode)==321 && !fGenerateKaon) continue;
    if (TMath::Abs(pdgCode)==211 && !fGeneratePion) continue;
	
    mass = TDatabasePDG::Instance()->GetParticle(pdgCode)->Mass();

    switch (pdgCode) {
    case 211:
      fPtVsRapidityPrimaryPosPions->GetRandom2(pt, rap);
      break;
    case -211:
      fPtVsRapidityPrimaryNegPions->GetRandom2(pt, rap);
      break;
    case 321:
      fPtVsRapidityPrimaryPosKaons->GetRandom2(pt, rap);
      break;
    case -321:
      fPtVsRapidityPrimaryNegKaons->GetRandom2(pt, rap);
      break;
    }

    mt = TMath::Sqrt(mass*mass + pt*pt);
    energy = mt * TMath::CosH(rap);
    mom = TMath::Sqrt(energy*energy - mass*mass);
    
    if (TestBit(kYRange))        if (rap<fYMin || rap>fYMax) continue;
    if (TestBit(kMomentumRange)) if (mom<fPMin || rap>fPMax) continue;
    if (TestBit(kPtRange))       if (pt<fPtMin || pt>fPtMax) continue;

    phi = fPhiMin + gRandom->Rndm()*(fPhiMax-fPhiMin);
    p[0] = pt*TMath::Cos(phi);
    p[1] = pt*TMath::Sin(phi);
    p[2] = mt*TMath::SinH(rap);
    
    PushTrack(1, -1, Int_t(pdgCode), 
	      p[0],p[1],p[2],energy, 
	      origin[0],origin[1],origin[2],Double_t(time), 
	      polar[0],polar[1],polar[2], 
	      kPPrimary, nt, 1., 1);

    nPartGenerated++;

  }
  
  AliGenEventHeader* header = new AliGenEventHeader("ParamPionsKaons");
  header->SetPrimaryVertex(fVertex);
  header->SetNProduced(fNpart);
  header->SetInteractionTime(fTime);
  
  // Passes header either to the container or to gAlice
  if (fContainer) {
    fContainer->AddHeader(header);
  } 
  else {
    gAlice->SetGenEventHeader(header);	
  }

}

//====================================================================================================================================================

void AliGenParamPionsKaons::Init() {
  
  // Initialisation, check consistency of selected ranges
  if (TestBit(kPtRange) && TestBit(kMomentumRange)) 
    Fatal("Init","You should not set the momentum range and the pt range at the same time!\n");
  if ((!TestBit(kPtRange)) && (!TestBit(kMomentumRange))) 
    Fatal("Init","You should set either the momentum or the pt range!\n");
  if ((TestBit(kYRange) && TestBit(kThetaRange)) || (TestBit(kYRange) && TestBit(kEtaRange)) || (TestBit(kEtaRange) && TestBit(kThetaRange)))
    Fatal("Init","You should only set the range of one of these variables: y, eta or theta\n");
  if ((!TestBit(kYRange)) && (!TestBit(kEtaRange)) && (!TestBit(kThetaRange)))
    Fatal("Init","You should set the range of one of these variables: y, eta or theta\n");
  
  AliPDG::AddParticlesToPdgDataBase();
  
}

//====================================================================================================================================================

void AliGenParamPionsKaons::LoadInputHistos(Char_t *inputFile) {

  TFile *fileIn = new TFile(inputFile);

  TH2D *myPtVsRapidityPrimaryPosPions = (TH2D*) fileIn->Get("fPtVsRapidityPrimaryPosPions");
  TH2D *myPtVsRapidityPrimaryNegPions = (TH2D*) fileIn->Get("fPtVsRapidityPrimaryNegPions");
  TH2D *myPtVsRapidityPrimaryPosKaons = (TH2D*) fileIn->Get("fPtVsRapidityPrimaryPosKaons");
  TH2D *myPtVsRapidityPrimaryNegKaons = (TH2D*) fileIn->Get("fPtVsRapidityPrimaryNegKaons");
  TH1D *myHistPdgCode                 = (TH1D*) fileIn->Get("fHistPdgCode");

  myPtVsRapidityPrimaryPosPions -> SetName("myPtVsRapidityPrimaryPosPions");
  myPtVsRapidityPrimaryNegPions -> SetName("myPtVsRapidityPrimaryNegPions");
  myPtVsRapidityPrimaryPosKaons -> SetName("myPtVsRapidityPrimaryPosKaons");
  myPtVsRapidityPrimaryNegKaons -> SetName("myPtVsRapidityPrimaryNegKaons");
  myHistPdgCode                 -> SetName("myHistPdgCode");

  fPtVsRapidityPrimaryPosPions = new TH2D("fPtVsRapidityPrimaryPosPions","",
					  myPtVsRapidityPrimaryPosPions->GetXaxis()->GetNbins(),
					  myPtVsRapidityPrimaryPosPions->GetXaxis()->GetXmin(),
					  myPtVsRapidityPrimaryPosPions->GetXaxis()->GetXmax(),
					  myPtVsRapidityPrimaryPosPions->GetYaxis()->GetNbins(),
					  myPtVsRapidityPrimaryPosPions->GetYaxis()->GetXmin(),
					  myPtVsRapidityPrimaryPosPions->GetYaxis()->GetXmax());
  for (Int_t iBinX=0; iBinX<myPtVsRapidityPrimaryPosPions->GetXaxis()->GetNbins(); iBinX++) {
    for (Int_t iBinY=0; iBinY<myPtVsRapidityPrimaryPosPions->GetYaxis()->GetNbins(); iBinY++) {
      fPtVsRapidityPrimaryPosPions->SetBinContent(iBinX+1, iBinY+1, myPtVsRapidityPrimaryPosPions->GetBinContent(iBinX+1,iBinY+1));
    }
  }
					  
  fPtVsRapidityPrimaryNegPions = new TH2D("fPtVsRapidityPrimaryNegPions","",
					  myPtVsRapidityPrimaryNegPions->GetXaxis()->GetNbins(),
					  myPtVsRapidityPrimaryNegPions->GetXaxis()->GetXmin(),
					  myPtVsRapidityPrimaryNegPions->GetXaxis()->GetXmax(),
					  myPtVsRapidityPrimaryNegPions->GetYaxis()->GetNbins(),
					  myPtVsRapidityPrimaryNegPions->GetYaxis()->GetXmin(),
					  myPtVsRapidityPrimaryNegPions->GetYaxis()->GetXmax());
  for (Int_t iBinX=0; iBinX<myPtVsRapidityPrimaryNegPions->GetXaxis()->GetNbins(); iBinX++) {
    for (Int_t iBinY=0; iBinY<myPtVsRapidityPrimaryNegPions->GetYaxis()->GetNbins(); iBinY++) {
      fPtVsRapidityPrimaryNegPions->SetBinContent(iBinX+1, iBinY+1, myPtVsRapidityPrimaryNegPions->GetBinContent(iBinX+1,iBinY+1));
    }
  }
					  
  fPtVsRapidityPrimaryPosKaons = new TH2D("fPtVsRapidityPrimaryPosKaons","",
					  myPtVsRapidityPrimaryPosKaons->GetXaxis()->GetNbins(),
					  myPtVsRapidityPrimaryPosKaons->GetXaxis()->GetXmin(),
					  myPtVsRapidityPrimaryPosKaons->GetXaxis()->GetXmax(),
					  myPtVsRapidityPrimaryPosKaons->GetYaxis()->GetNbins(),
					  myPtVsRapidityPrimaryPosKaons->GetYaxis()->GetXmin(),
					  myPtVsRapidityPrimaryPosKaons->GetYaxis()->GetXmax());
  for (Int_t iBinX=0; iBinX<myPtVsRapidityPrimaryPosKaons->GetXaxis()->GetNbins(); iBinX++) {
    for (Int_t iBinY=0; iBinY<myPtVsRapidityPrimaryPosKaons->GetYaxis()->GetNbins(); iBinY++) {
      fPtVsRapidityPrimaryPosKaons->SetBinContent(iBinX+1, iBinY+1, myPtVsRapidityPrimaryPosKaons->GetBinContent(iBinX+1,iBinY+1));
    }
  }
					  
  fPtVsRapidityPrimaryNegKaons = new TH2D("fPtVsRapidityPrimaryNegKaons","",
					  myPtVsRapidityPrimaryNegKaons->GetXaxis()->GetNbins(),
					  myPtVsRapidityPrimaryNegKaons->GetXaxis()->GetXmin(),
					  myPtVsRapidityPrimaryNegKaons->GetXaxis()->GetXmax(),
					  myPtVsRapidityPrimaryNegKaons->GetYaxis()->GetNbins(),
					  myPtVsRapidityPrimaryNegKaons->GetYaxis()->GetXmin(),
					  myPtVsRapidityPrimaryNegKaons->GetYaxis()->GetXmax());
  for (Int_t iBinX=0; iBinX<myPtVsRapidityPrimaryNegKaons->GetXaxis()->GetNbins(); iBinX++) {
    for (Int_t iBinY=0; iBinY<myPtVsRapidityPrimaryNegKaons->GetYaxis()->GetNbins(); iBinY++) {
      fPtVsRapidityPrimaryNegKaons->SetBinContent(iBinX+1, iBinY+1, myPtVsRapidityPrimaryNegKaons->GetBinContent(iBinX+1,iBinY+1));
    }
  }
					  
  fHistPdgCode = new TH1D("fHistPdgCode","",
			  myHistPdgCode->GetXaxis()->GetNbins(),
			  myHistPdgCode->GetXaxis()->GetXmin(),
			  myHistPdgCode->GetXaxis()->GetXmax());
  for (Int_t iBinX=0; iBinX<myHistPdgCode->GetXaxis()->GetNbins(); iBinX++) {
    fHistPdgCode->SetBinContent(iBinX+1, myHistPdgCode->GetBinContent(iBinX+1));
  }

//   fHistPdgCode = new TH1D("fHistPdgCode", "fHistPdgCode", 10, 0., 10);
//   fHistPdgCode -> Fill(3.);

}

//====================================================================================================================================================
 AliGenParamPionsKaons.cxx:1
 AliGenParamPionsKaons.cxx:2
 AliGenParamPionsKaons.cxx:3
 AliGenParamPionsKaons.cxx:4
 AliGenParamPionsKaons.cxx:5
 AliGenParamPionsKaons.cxx:6
 AliGenParamPionsKaons.cxx:7
 AliGenParamPionsKaons.cxx:8
 AliGenParamPionsKaons.cxx:9
 AliGenParamPionsKaons.cxx:10
 AliGenParamPionsKaons.cxx:11
 AliGenParamPionsKaons.cxx:12
 AliGenParamPionsKaons.cxx:13
 AliGenParamPionsKaons.cxx:14
 AliGenParamPionsKaons.cxx:15
 AliGenParamPionsKaons.cxx:16
 AliGenParamPionsKaons.cxx:17
 AliGenParamPionsKaons.cxx:18
 AliGenParamPionsKaons.cxx:19
 AliGenParamPionsKaons.cxx:20
 AliGenParamPionsKaons.cxx:21
 AliGenParamPionsKaons.cxx:22
 AliGenParamPionsKaons.cxx:23
 AliGenParamPionsKaons.cxx:24
 AliGenParamPionsKaons.cxx:25
 AliGenParamPionsKaons.cxx:26
 AliGenParamPionsKaons.cxx:27
 AliGenParamPionsKaons.cxx:28
 AliGenParamPionsKaons.cxx:29
 AliGenParamPionsKaons.cxx:30
 AliGenParamPionsKaons.cxx:31
 AliGenParamPionsKaons.cxx:32
 AliGenParamPionsKaons.cxx:33
 AliGenParamPionsKaons.cxx:34
 AliGenParamPionsKaons.cxx:35
 AliGenParamPionsKaons.cxx:36
 AliGenParamPionsKaons.cxx:37
 AliGenParamPionsKaons.cxx:38
 AliGenParamPionsKaons.cxx:39
 AliGenParamPionsKaons.cxx:40
 AliGenParamPionsKaons.cxx:41
 AliGenParamPionsKaons.cxx:42
 AliGenParamPionsKaons.cxx:43
 AliGenParamPionsKaons.cxx:44
 AliGenParamPionsKaons.cxx:45
 AliGenParamPionsKaons.cxx:46
 AliGenParamPionsKaons.cxx:47
 AliGenParamPionsKaons.cxx:48
 AliGenParamPionsKaons.cxx:49
 AliGenParamPionsKaons.cxx:50
 AliGenParamPionsKaons.cxx:51
 AliGenParamPionsKaons.cxx:52
 AliGenParamPionsKaons.cxx:53
 AliGenParamPionsKaons.cxx:54
 AliGenParamPionsKaons.cxx:55
 AliGenParamPionsKaons.cxx:56
 AliGenParamPionsKaons.cxx:57
 AliGenParamPionsKaons.cxx:58
 AliGenParamPionsKaons.cxx:59
 AliGenParamPionsKaons.cxx:60
 AliGenParamPionsKaons.cxx:61
 AliGenParamPionsKaons.cxx:62
 AliGenParamPionsKaons.cxx:63
 AliGenParamPionsKaons.cxx:64
 AliGenParamPionsKaons.cxx:65
 AliGenParamPionsKaons.cxx:66
 AliGenParamPionsKaons.cxx:67
 AliGenParamPionsKaons.cxx:68
 AliGenParamPionsKaons.cxx:69
 AliGenParamPionsKaons.cxx:70
 AliGenParamPionsKaons.cxx:71
 AliGenParamPionsKaons.cxx:72
 AliGenParamPionsKaons.cxx:73
 AliGenParamPionsKaons.cxx:74
 AliGenParamPionsKaons.cxx:75
 AliGenParamPionsKaons.cxx:76
 AliGenParamPionsKaons.cxx:77
 AliGenParamPionsKaons.cxx:78
 AliGenParamPionsKaons.cxx:79
 AliGenParamPionsKaons.cxx:80
 AliGenParamPionsKaons.cxx:81
 AliGenParamPionsKaons.cxx:82
 AliGenParamPionsKaons.cxx:83
 AliGenParamPionsKaons.cxx:84
 AliGenParamPionsKaons.cxx:85
 AliGenParamPionsKaons.cxx:86
 AliGenParamPionsKaons.cxx:87
 AliGenParamPionsKaons.cxx:88
 AliGenParamPionsKaons.cxx:89
 AliGenParamPionsKaons.cxx:90
 AliGenParamPionsKaons.cxx:91
 AliGenParamPionsKaons.cxx:92
 AliGenParamPionsKaons.cxx:93
 AliGenParamPionsKaons.cxx:94
 AliGenParamPionsKaons.cxx:95
 AliGenParamPionsKaons.cxx:96
 AliGenParamPionsKaons.cxx:97
 AliGenParamPionsKaons.cxx:98
 AliGenParamPionsKaons.cxx:99
 AliGenParamPionsKaons.cxx:100
 AliGenParamPionsKaons.cxx:101
 AliGenParamPionsKaons.cxx:102
 AliGenParamPionsKaons.cxx:103
 AliGenParamPionsKaons.cxx:104
 AliGenParamPionsKaons.cxx:105
 AliGenParamPionsKaons.cxx:106
 AliGenParamPionsKaons.cxx:107
 AliGenParamPionsKaons.cxx:108
 AliGenParamPionsKaons.cxx:109
 AliGenParamPionsKaons.cxx:110
 AliGenParamPionsKaons.cxx:111
 AliGenParamPionsKaons.cxx:112
 AliGenParamPionsKaons.cxx:113
 AliGenParamPionsKaons.cxx:114
 AliGenParamPionsKaons.cxx:115
 AliGenParamPionsKaons.cxx:116
 AliGenParamPionsKaons.cxx:117
 AliGenParamPionsKaons.cxx:118
 AliGenParamPionsKaons.cxx:119
 AliGenParamPionsKaons.cxx:120
 AliGenParamPionsKaons.cxx:121
 AliGenParamPionsKaons.cxx:122
 AliGenParamPionsKaons.cxx:123
 AliGenParamPionsKaons.cxx:124
 AliGenParamPionsKaons.cxx:125
 AliGenParamPionsKaons.cxx:126
 AliGenParamPionsKaons.cxx:127
 AliGenParamPionsKaons.cxx:128
 AliGenParamPionsKaons.cxx:129
 AliGenParamPionsKaons.cxx:130
 AliGenParamPionsKaons.cxx:131
 AliGenParamPionsKaons.cxx:132
 AliGenParamPionsKaons.cxx:133
 AliGenParamPionsKaons.cxx:134
 AliGenParamPionsKaons.cxx:135
 AliGenParamPionsKaons.cxx:136
 AliGenParamPionsKaons.cxx:137
 AliGenParamPionsKaons.cxx:138
 AliGenParamPionsKaons.cxx:139
 AliGenParamPionsKaons.cxx:140
 AliGenParamPionsKaons.cxx:141
 AliGenParamPionsKaons.cxx:142
 AliGenParamPionsKaons.cxx:143
 AliGenParamPionsKaons.cxx:144
 AliGenParamPionsKaons.cxx:145
 AliGenParamPionsKaons.cxx:146
 AliGenParamPionsKaons.cxx:147
 AliGenParamPionsKaons.cxx:148
 AliGenParamPionsKaons.cxx:149
 AliGenParamPionsKaons.cxx:150
 AliGenParamPionsKaons.cxx:151
 AliGenParamPionsKaons.cxx:152
 AliGenParamPionsKaons.cxx:153
 AliGenParamPionsKaons.cxx:154
 AliGenParamPionsKaons.cxx:155
 AliGenParamPionsKaons.cxx:156
 AliGenParamPionsKaons.cxx:157
 AliGenParamPionsKaons.cxx:158
 AliGenParamPionsKaons.cxx:159
 AliGenParamPionsKaons.cxx:160
 AliGenParamPionsKaons.cxx:161
 AliGenParamPionsKaons.cxx:162
 AliGenParamPionsKaons.cxx:163
 AliGenParamPionsKaons.cxx:164
 AliGenParamPionsKaons.cxx:165
 AliGenParamPionsKaons.cxx:166
 AliGenParamPionsKaons.cxx:167
 AliGenParamPionsKaons.cxx:168
 AliGenParamPionsKaons.cxx:169
 AliGenParamPionsKaons.cxx:170
 AliGenParamPionsKaons.cxx:171
 AliGenParamPionsKaons.cxx:172
 AliGenParamPionsKaons.cxx:173
 AliGenParamPionsKaons.cxx:174
 AliGenParamPionsKaons.cxx:175
 AliGenParamPionsKaons.cxx:176
 AliGenParamPionsKaons.cxx:177
 AliGenParamPionsKaons.cxx:178
 AliGenParamPionsKaons.cxx:179
 AliGenParamPionsKaons.cxx:180
 AliGenParamPionsKaons.cxx:181
 AliGenParamPionsKaons.cxx:182
 AliGenParamPionsKaons.cxx:183
 AliGenParamPionsKaons.cxx:184
 AliGenParamPionsKaons.cxx:185
 AliGenParamPionsKaons.cxx:186
 AliGenParamPionsKaons.cxx:187
 AliGenParamPionsKaons.cxx:188
 AliGenParamPionsKaons.cxx:189
 AliGenParamPionsKaons.cxx:190
 AliGenParamPionsKaons.cxx:191
 AliGenParamPionsKaons.cxx:192
 AliGenParamPionsKaons.cxx:193
 AliGenParamPionsKaons.cxx:194
 AliGenParamPionsKaons.cxx:195
 AliGenParamPionsKaons.cxx:196
 AliGenParamPionsKaons.cxx:197
 AliGenParamPionsKaons.cxx:198
 AliGenParamPionsKaons.cxx:199
 AliGenParamPionsKaons.cxx:200
 AliGenParamPionsKaons.cxx:201
 AliGenParamPionsKaons.cxx:202
 AliGenParamPionsKaons.cxx:203
 AliGenParamPionsKaons.cxx:204
 AliGenParamPionsKaons.cxx:205
 AliGenParamPionsKaons.cxx:206
 AliGenParamPionsKaons.cxx:207
 AliGenParamPionsKaons.cxx:208
 AliGenParamPionsKaons.cxx:209
 AliGenParamPionsKaons.cxx:210
 AliGenParamPionsKaons.cxx:211
 AliGenParamPionsKaons.cxx:212
 AliGenParamPionsKaons.cxx:213
 AliGenParamPionsKaons.cxx:214
 AliGenParamPionsKaons.cxx:215
 AliGenParamPionsKaons.cxx:216
 AliGenParamPionsKaons.cxx:217
 AliGenParamPionsKaons.cxx:218
 AliGenParamPionsKaons.cxx:219
 AliGenParamPionsKaons.cxx:220
 AliGenParamPionsKaons.cxx:221
 AliGenParamPionsKaons.cxx:222
 AliGenParamPionsKaons.cxx:223
 AliGenParamPionsKaons.cxx:224
 AliGenParamPionsKaons.cxx:225
 AliGenParamPionsKaons.cxx:226
 AliGenParamPionsKaons.cxx:227
 AliGenParamPionsKaons.cxx:228
 AliGenParamPionsKaons.cxx:229
 AliGenParamPionsKaons.cxx:230
 AliGenParamPionsKaons.cxx:231
 AliGenParamPionsKaons.cxx:232
 AliGenParamPionsKaons.cxx:233
 AliGenParamPionsKaons.cxx:234
 AliGenParamPionsKaons.cxx:235
 AliGenParamPionsKaons.cxx:236
 AliGenParamPionsKaons.cxx:237
 AliGenParamPionsKaons.cxx:238
 AliGenParamPionsKaons.cxx:239
 AliGenParamPionsKaons.cxx:240
 AliGenParamPionsKaons.cxx:241
 AliGenParamPionsKaons.cxx:242
 AliGenParamPionsKaons.cxx:243
 AliGenParamPionsKaons.cxx:244
 AliGenParamPionsKaons.cxx:245
 AliGenParamPionsKaons.cxx:246
 AliGenParamPionsKaons.cxx:247
 AliGenParamPionsKaons.cxx:248
 AliGenParamPionsKaons.cxx:249
 AliGenParamPionsKaons.cxx:250
 AliGenParamPionsKaons.cxx:251
 AliGenParamPionsKaons.cxx:252
 AliGenParamPionsKaons.cxx:253
 AliGenParamPionsKaons.cxx:254
 AliGenParamPionsKaons.cxx:255
 AliGenParamPionsKaons.cxx:256
 AliGenParamPionsKaons.cxx:257
 AliGenParamPionsKaons.cxx:258
 AliGenParamPionsKaons.cxx:259
 AliGenParamPionsKaons.cxx:260
 AliGenParamPionsKaons.cxx:261