ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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.                  *
 **************************************************************************/


// Generator for muons according to kinematic parametrizations at ALICE
// (not at the surface).
// Origin: andrea.dainese@lnl.infn.it

#include <TParticle.h>
#include <TF1.h>

#include "AliRun.h"
#include "AliESDtrack.h"
#include "AliESDVertex.h"
#include "AliGenCosmicsParam.h"

ClassImp(AliGenCosmicsParam)

//-----------------------------------------------------------------------------
AliGenCosmicsParam::AliGenCosmicsParam():
AliGenerator(),
fParamMI(kFALSE),
fParamACORDE(kFALSE),
fParamDataTPC(kTRUE),
fYOrigin(600.),
fMaxAngleWRTVertical(-99.),
fBkG(0.),
fTPC(kFALSE),
fITS(kFALSE),
fSPDinner(kFALSE),
fSPDouter(kFALSE),
fSDDinner(kFALSE),
fSDDouter(kFALSE),
fSSDinner(kFALSE),
fSSDouter(kFALSE),
fACORDE(kFALSE),
fACORDE4ITS(kFALSE),
fBottomScintillator(kFALSE)
{
  //
  // Default constructor
  //
  SetNumberParticles(1);
}
//-----------------------------------------------------------------------------
void AliGenCosmicsParam::Generate()
{
  //
  // Generate one muon
  //
  
  //
  Float_t origin[3];
  Float_t p[3];
  Int_t nt;
  Double_t ptot=0,pt=0,angleWRTVertical=0;
  Bool_t okMom=kFALSE,okAngle=kFALSE;
  //
  Float_t rtrigger=1000.0,ztrigger=600.0;
  if(fTPC)      { rtrigger=250.0; ztrigger=250.0; }
  if(fITS)      { rtrigger=50.0; ztrigger=50.0; }
  if(fSPDinner) { rtrigger=3.5; ztrigger=14.0; }
  if(fSPDouter) { rtrigger=6.5; ztrigger=14.0; }
  if(fSDDinner) { rtrigger=14.0; ztrigger=21.0; }
  if(fSDDouter) { rtrigger=23.0; ztrigger=29.0; }
  if(fSSDinner) { rtrigger=37.0; ztrigger=42.0; }
  if(fSSDouter) { rtrigger=42.0; ztrigger=48.0; }


  // mu+ or mu-
  Float_t muMinusFraction = 4./9.; // mu+/mu- = 1.25
  Int_t ipart;

  Int_t trials=0;
  Int_t npart=0;

  while (npart<fNpart) {

    if(gRandom->Rndm()<muMinusFraction) {
      ipart = 13; // mu-
    } else {
      ipart = -13; // mu+
    }

    if(fParamACORDE) { // extracted from AliGenACORDE events
      // sample total momentum only once (to speed up)
      TF1 *dNdpACORDE = new TF1("dNdpACORDE","x/(1.+(x/12.8)*(x/12.8))^1.96",fPMin,fPMax);
      ptot = (Double_t)dNdpACORDE->GetRandom();
      delete dNdpACORDE;
      dNdpACORDE = 0;
    } else if(fParamDataTPC) { // extracted from cosmics in TPC (Summer 08) 
      // sample total momentum only once (to speed up)
      TF1 *dNdpTPC = new TF1("dNdpTPC","x/(1.+(x/3.)*(x/3.))^1.",fPMin,fPMax);
      ptot = (Double_t)dNdpTPC->GetRandom();
      delete dNdpTPC;
      dNdpTPC = 0;
    }

    while(1) {
      trials++;
      // origin
      origin[0]  = (fYOrigin*TMath::Tan(fMaxAngleWRTVertical)+rtrigger)*(-1.+2.*gRandom->Rndm());
      origin[1]  = fYOrigin;
      origin[2]  = (fYOrigin*TMath::Tan(fMaxAngleWRTVertical)+ztrigger)*(-1.+2.*gRandom->Rndm());
      
      // momentum
      while(1) {
	okMom=kFALSE; okAngle=kFALSE;
	
	if(fParamMI) { // parametrization by M.Ivanov of LEP cosmics data
	  Float_t	pref  = 1. + gRandom->Exp(30.);
	  p[1] = -pref; 
	  p[0] = gRandom->Gaus(0.0,0.2)*pref;
	  p[2] = gRandom->Gaus(0.0,0.2)*pref;
	  if(gRandom->Rndm()>0.9) {
	    p[0] = gRandom->Gaus(0.0,0.4)*pref;
	    p[2] = gRandom->Gaus(0.0,0.4)*pref;
	  }
	  ptot=TMath::Sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
	  pt=TMath::Sqrt(p[0]*p[0]+p[1]*p[1]);
	} else if(fParamACORDE || fParamDataTPC) {
	  Float_t theta,phi;
	  while(1) {
	    theta = gRandom->Gaus(0.5*TMath::Pi(),0.42);
	    if(TMath::Abs(theta-0.5*TMath::Pi())<fMaxAngleWRTVertical) break;
	  }
	  while(1) {
	    phi = gRandom->Gaus(-0.5*TMath::Pi(),0.42);
	    if(TMath::Abs(phi+0.5*TMath::Pi())<fMaxAngleWRTVertical) break;
	  }
	  pt = ptot*TMath::Sin(theta);
	  p[0] = pt*TMath::Cos(phi); 
	  p[1] = pt*TMath::Sin(phi); 
	  p[2] = ptot*TMath::Cos(theta);
	} else {
	  AliFatal("Parametrization not set: use SetParamDataTPC, SetParamMI, or SetParamACORDE");
	}
	
	
	// check kinematic cuts
	if(TestBit(kMomentumRange)) {
	  if(ptot>fPMin && ptot<fPMax) okMom=kTRUE;
	} else {
	  okMom=kTRUE;
	}

	angleWRTVertical=TMath::ACos(TMath::Abs(p[1])/ptot); // acos(|py|/ptot)
	if(angleWRTVertical<fMaxAngleWRTVertical) okAngle=kTRUE;
	
	if(okAngle&&okMom) break;
      }

      // acceptance trigger
      if(IntersectCylinder(rtrigger,ztrigger,ipart,origin,p)) {
	if(fACORDE && !fBottomScintillator) {
	  if(IntersectACORDE(ipart,origin,p)) break;
	} else if(!fACORDE && fBottomScintillator) {
	  if(IntersectBottomScintillator(ipart,origin,p)) break;
	} else if(fACORDE && fBottomScintillator) {
	  if(IntersectACORDE(ipart,origin,p) &&
	     IntersectBottomScintillator(ipart,origin,p)) break;
	} else { // !fACORDE && !fBottomScintillator
	  break;
	}
      }
      //
    }

    Float_t polarization[3]= {0,0,0};
    PushTrack(fTrackIt,-1,ipart,p,origin,polarization,0,kPPrimary,nt);
    npart++; 
    //printf("TRIALS %d\n",trials);
  }

  return;
}
//-----------------------------------------------------------------------------
void AliGenCosmicsParam::Init()
{
  // 
  // Initialisation, check consistency of selected ranges
  //
  if(TestBit(kPtRange)) 
    AliFatal("You cannot set the pt range for this generator! Only momentum range");
  Double_t pmin=8.; // fParamACORDE
  if(fParamDataTPC) pmin=0.5;
  if(fPMin<pmin) { 
    fPMin=pmin; 
    if(TestBit(kMomentumRange)) 
      AliWarning(Form("Minimum momentum cannot be < %f GeV/c",pmin)); 
  }
  if(fMaxAngleWRTVertical<0.) 
    AliFatal("You must use SetMaxAngleWRTVertical() instead of SetThetaRange(), SetPhiRange()");

  printf("************ AliGenCosmicsParam ****************\n");
  printf("***** Muons generated at Y = %f cm\n",fYOrigin);
  printf("************************************************\n");

  return;
}
//-----------------------------------------------------------------------------
Bool_t AliGenCosmicsParam::IntersectCylinder(Float_t r,Float_t z,Int_t pdg,
					     Float_t o[3],Float_t p[3]) const
{
  //
  // Intersection between muon and cylinder [-z,+z] with radius r
  //

  Float_t en = TMath::Sqrt(0.105*0.105+p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
  TParticle part(pdg,0,0,0,0,0,p[0],p[1],p[2],en,o[0],o[1],o[2],0);
  AliESDtrack track(&part);
  Double_t pos[3]={0.,0.,0.},sigma[3]={0.,0.,0.};
  AliESDVertex origin(pos,sigma);

  track.RelateToVertex(&origin,fBkG,10000.);

  Float_t d0z0[2],covd0z0[3];
  track.GetImpactParameters(d0z0,covd0z0);

  // check rphi 
  if(TMath::Abs(d0z0[0])>r) return kFALSE;
  // check z
  if(TMath::Abs(d0z0[1])>z) return kFALSE;

  /*
    if(TMath::Abs(fB)<0.01) {  // NO FIELD
    Float_t drphi = TMath::Abs(o[1]-p[1]/p[0]*o[0])/
    TMath::Sqrt(p[1]*p[1]/p[0]/p[0]+1.);
    if(drphi>r) return kFALSE;
    Float_t dz = o[2]-p[2]/p[0]*o[0]+p[2]/p[0]*
    (p[1]*p[1]/p[0]/p[0]*o[0]-p[1]/p[0]*o[1])/(1.+p[1]*p[1]/p[0]/p[0]);
    if(TMath::Abs(dz)>z) return kFALSE;
    }
  */

  return kTRUE;
}
//-----------------------------------------------------------------------------
Bool_t AliGenCosmicsParam::IntersectACORDE(Int_t pdg,
					   Float_t o[3],Float_t p[3]) const
{
  //
  // Intersection between muon and ACORDE (very rough)
  //

  Float_t en = TMath::Sqrt(0.105*0.105+p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
  TParticle part(pdg,0,0,0,0,0,-p[0],-p[1],-p[2],en,o[0],o[1],o[2],0);
  AliESDtrack track(&part);

  Float_t rACORDE=800.0,xACORDE=750.0/*250.0*/,zACORDE=500.0;
  if(fACORDE4ITS) { xACORDE=100.0; zACORDE=100.0; }

  Double_t planepoint[3]={0.,rACORDE,0.};
  Double_t planenorm[3]={0.,1.,0.};

  if(!track.Intersect(planepoint,planenorm,fBkG)) return kFALSE;

  Double_t xyz[3]={planepoint[0],planepoint[1],planepoint[2]};
  //printf("XYZ = %f %f  %f\n",xyz[0],xyz[1],xyz[2]);

  // check global x 
  if(TMath::Abs(xyz[0]) > xACORDE) return kFALSE;
  // check global z
  if(TMath::Abs(xyz[2]) > zACORDE) return kFALSE;

  return kTRUE;
}
//-----------------------------------------------------------------------------
Bool_t AliGenCosmicsParam::IntersectBottomScintillator(Int_t pdg,
					   Float_t o[3],Float_t p[3]) const
{
  //
  // Intersection between muon and ACORDE (very rough)
  //

  Float_t en = TMath::Sqrt(0.105*0.105+p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
  TParticle part(pdg,0,0,0,0,0,-p[0],-p[1],-p[2],en,o[0],o[1],o[2],0);
  AliESDtrack track(&part);

  Double_t xSc=40.,ySc=-350.,zSc=40.;

  Double_t planepoint[3]={0.,ySc,0.};
  Double_t planenorm[3]={0.,1.,0.};

  if(!track.Intersect(planepoint,planenorm,fBkG)) return kFALSE;

  Double_t xyz[3]={planepoint[0],planepoint[1],planepoint[2]};
  //printf("XYZ = %f %f  %f\n",xyz[0],xyz[1],xyz[2]);

  // check global x 
  if(TMath::Abs(xyz[0]) > xSc) return kFALSE;
  // check global z
  if(TMath::Abs(xyz[2]) > zSc) return kFALSE;

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