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

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Control class for Alice C++                                              //
//  Only one single instance of this class exists.                           //
//  The object is created in main program aliroot                            //
//  and is pointed by the global gAlice.                                     //
//                                                                           //
//   -Supports the list of all Alice Detectors (fModules).                 //
//   -Supports the list of particles (fParticles).                           //
//   -Supports the Trees.                                                    //
//   -Supports the geometry.                                                 //
//   -Supports the event display.                                            //
//Begin_Html
/*
<img src="picts/AliRunClass.gif">
*/
//End_Html
//Begin_Html
/*
<img src="picts/alirun.gif">
*/
//End_Html
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TROOT.h>
#include <TRandom3.h>
#include <TSystem.h>
#include <TVirtualMC.h>
#include <TGeoManager.h>
#include <TTree.h>
// 
#include "AliLog.h"
#include "AliDetector.h"
#include "AliHeader.h"
#include "AliMC.h"
#include "AliPDG.h"
#include "AliRun.h"
#include "AliStack.h"
#include "AliCDBManager.h"
#include "AliAlignObj.h"
#include "AliSimulation.h"
#include "AliLego.h"

AliRun *gAlice;

ClassImp(AliRun)

//_______________________________________________________________________
AliRun::AliRun():
//  fRun(-1),
  fEventNrInRun(-1),
  fModules(0),
  fMCApp(0),
  fNdets(0),
  fConfigFunction(""),
  fBaseFileName(""),
  fRunLoader(0x0)
{
  //
  // Default constructor for AliRun
  //
  AliConfig::Instance();//skowron 29 Feb 2002
                        //ensures that the folder structure is build

}

//_____________________________________________________________________________
AliRun::AliRun(const char *name, const char *title):
  TNamed(name,title),
  fEventNrInRun(-1),
  fModules(new TObjArray(77)), // Support list for the Detectors
  fMCApp(new AliMC(GetName(),GetTitle())),
  fNdets(0),
  fConfigFunction("Config();"),
  fBaseFileName(""),
  fRunLoader(0x0)
{
  //
  //  Constructor for the main processor.
  //  Creates the geometry
  //  Creates the list of Detectors.
  //  Creates the list of particles.
  //

  gAlice     = this;

  // Set random number generator
  gRandom = new TRandom3();

  if (gSystem->Getenv("CONFIG_SEED")) {
     gRandom->SetSeed(static_cast<UInt_t>(atoi(gSystem->Getenv("CONFIG_SEED"))));
  }

  // Add to list of browsable  
  gROOT->GetListOfBrowsables()->Add(this,name);
  
}

//_______________________________________________________________________
AliRun::~AliRun()
{
  //
  // Default AliRun destructor
  //
  gROOT->GetListOfBrowsables()->Remove(this);

  if (fRunLoader)
   {
    TFolder* evfold = fRunLoader->GetEventFolder();
    TFolder* modfold = dynamic_cast<TFolder*>(evfold->FindObjectAny(AliConfig::GetModulesFolderName()));
    if(!modfold) AliFatal(Form("Folder %s not found\n",AliConfig::GetModulesFolderName().Data()));
    TIter next(fModules);
    AliModule *mod;
    while((mod = (AliModule*)next()))
     { 
       modfold->Remove(mod);
     }
   }
    
  delete fMCApp;
  delete TVirtualMC::GetMC(); //gMC=0;
  if (fModules) {
    fModules->Delete();
    delete fModules;
  }
  
}

//_____________________________________________________________________________
void AliRun::InitLoaders()
{
  //creates list of getters
  AliDebug(1, "");
  TIter next(fModules);
  AliModule *mod;
  while((mod = (AliModule*)next()))
   { 
     mod->SetRunLoader(fRunLoader);
     AliDetector *det = dynamic_cast<AliDetector*>(mod);
     if (det) 
      {
        AliDebug(2, Form("Adding %s", det->GetName()));
        fRunLoader->AddLoader(det);
      }
   }
  AliDebug(1, "Done");
}

//_______________________________________________________________________
void AliRun::Announce() const
{
  //
  // Announce the current version of AliRoot
  //
  printf("%70s",
	 "****************************************************************\n");
  printf("%6s","*");printf("%64s","*\n");

  printf("%6s","*");
  printf("    You are running AliRoot version NewIO\n");

  printf("%6s","*");
  printf("    The SVN version for the current program is $Id$\n");

  printf("%6s","*");printf("%64s","*\n");
  printf("%70s",
	 "****************************************************************\n");
}

//_______________________________________________________________________
AliModule *AliRun::GetModule(const char *name) const
{
  //
  // Return pointer to detector from name
  //
  return dynamic_cast<AliModule*>(fModules->FindObject(name));
}
 
//_______________________________________________________________________
AliDetector *AliRun::GetDetector(const char *name) const
{
  //
  // Return pointer to detector from name
  //
  return dynamic_cast<AliDetector*>(fModules->FindObject(name));
}
 
//_______________________________________________________________________
Int_t AliRun::GetModuleID(const char *name) const
{
  //
  // Return galice internal detector identifier from name
  //
  Int_t i=-1;
  TObject *mod=fModules->FindObject(name);
  if(mod) i=fModules->IndexOf(mod);
  return i;
}
 
//_______________________________________________________________________
Int_t AliRun::GetEvent(Int_t event)
{
//
// Reloads data containers in folders # event
// Set branch addresses
//
  if (fRunLoader == 0x0)
   {
     AliError("RunLoader is not set. Can not load data.");
     return -1;
   }
/*****************************************/ 
/****   P R E    R E L O A D I N G    ****/
/*****************************************/ 
// Reset existing structures
  fMCApp->ResetHits();
  fMCApp->ResetTrackReferences();
  fMCApp->ResetDigits();
  fMCApp->ResetSDigits();

/*****************************************/ 
/****       R  E  L  O  A  D          ****/
/*****************************************/

  AliRunLoader::Instance()->GetEvent(event);

/*****************************************/ 
/****  P O S T    R E L O A D I N G   ****/
/*****************************************/ 

  // Set Trees branch addresses
  TIter next(fModules);
  AliDetector *detector;
  while((detector = dynamic_cast<AliDetector*>(next()))) 
   {
     detector->SetTreeAddress();
   }
 
  return AliRunLoader::Instance()->GetHeader()->GetNtrack();
}

//_______________________________________________________________________
void AliRun::SetBaseFile(const char *filename)
{
  fBaseFileName = filename;
}


//_______________________________________________________________________
void AliRun::Hits2Digits(const char *selected)
{

   // Convert Hits to sumable digits
   // 
   for (Int_t nevent=0; nevent<AliRunLoader::Instance()->TreeE()->GetEntries(); nevent++) {
     GetEvent(nevent);
     Hits2SDigits(selected);
     SDigits2Digits(selected);
   }  
}


//_______________________________________________________________________
void AliRun::Tree2Tree(Option_t *option, const char *selected)
{
  //
  // Function to transform the content of
  //  
  // - TreeH to TreeS (option "S")
  // - TreeS to TreeD (option "D")
  // - TreeD to TreeR (option "R")
  // 
  // If multiple options are specified ("SDR"), transformation will be done in sequence for
  // selected detector and for all detectors if none is selected (detector string 
  // can contain blank separated list of detector names). 


   const char *oS = strstr(option,"S");
   const char *oD = strstr(option,"D");
   const char *oR = strstr(option,"R");
   
   TObjArray *detectors = Detectors();

   TIter next(detectors);

   AliDetector *detector = 0;

   while((detector = dynamic_cast<AliDetector*>(next()))) {
     if (selected) 
       if (strcmp(detector->GetName(),selected)) continue;
     if (detector->IsActive())
      { 
       
       AliLoader* loader = detector->GetLoader();
       if (loader == 0x0) continue;
       
       if (oS) 
        {
          AliDebug(1, Form("Processing Hits2SDigits for %s ...", detector->GetName()));
          loader->LoadHits("read");
          if (loader->TreeS() == 0x0) loader->MakeTree("S");
          detector->MakeBranch(option);
          detector->SetTreeAddress();
          detector->Hits2SDigits();
          loader->UnloadHits();
          loader->UnloadSDigits();
        }  
       if (oD) 
        {
          AliDebug(1, Form("Processing SDigits2Digits for %s ...", detector->GetName()));
          loader->LoadSDigits("read");
          if (loader->TreeD() == 0x0) loader->MakeTree("D");
          detector->MakeBranch(option);
          detector->SetTreeAddress();
          detector->SDigits2Digits();
          loader->UnloadSDigits();
          loader->UnloadDigits();
        } 
       if (oR) 
        {
          AliDebug(1, Form("Processing Digits2Reco for %s ...", detector->GetName()));
          loader->LoadDigits("read");
          if (loader->TreeR() == 0x0) loader->MakeTree("R");
          detector->MakeBranch(option);
          detector->SetTreeAddress();
          detector->Digits2Reco(); 
          loader->UnloadDigits();
          loader->UnloadRecPoints();

        }
     }   
   }
}


//_______________________________________________________________________
void AliRun::Streamer(TBuffer &R__b)
{
  // Stream an object of class AliRun.

  if (R__b.IsReading()) {
    if (!gAlice) gAlice = this;
    AliRun::Class()->ReadBuffer(R__b, this);
    gROOT->GetListOfBrowsables()->Add(this,"Run");
    gRandom = new TRandom3();
  } else {
    AliRun::Class()->WriteBuffer(R__b, this);
  }
}

//_______________________________________________________________________
void AliRun::SetGenEventHeader(AliGenEventHeader* header)
{
  AliRunLoader::Instance()->GetHeader()->SetGenEventHeader(header);
}


//_______________________________________________________________________
Int_t AliRun::GetEvNumber() const
{ 
//Returns number of current event  
  if (fRunLoader == 0x0)
   {
     AliError("RunLoader is not set. Can not load data.");
     return -1;
   }

  return fRunLoader->GetEventNumber();
}

//_______________________________________________________________________
void AliRun::SetRunLoader(AliRunLoader* rloader)
{
  //
  // Set the loader of the run
  //
  fRunLoader = rloader;
  if (fRunLoader == 0x0) return;
  
  TString evfoldname;
  TFolder* evfold = fRunLoader->GetEventFolder();
  if (evfold) evfoldname = evfold->GetName();
  else AliFatal("Did not get Event Folder from Run Loader");
  
  if ( fRunLoader->GetAliRun() )
   {//if alrun already exists in folder
    if (fRunLoader->GetAliRun() != this )
     {//and is different than this - crash
       AliFatal("AliRun is already in Folder and it is not this object");
       return;//pro forma
     }//else do nothing
   }
  else
   {
     evfold->Add(this);//Post this AliRun to Folder
   }
  
  TIter next(fModules);
  AliModule *module;
  while((module = (AliModule*)next())) 
   {
     if (evfold) AliConfig::Instance()->Add(module,evfoldname);
     module->SetRunLoader(fRunLoader);
     AliDetector* detector = dynamic_cast<AliDetector*>(module);
     if (detector)
      {
        AliLoader* loader = fRunLoader->GetLoader(detector);
        if (loader == 0x0)
         {
           AliError(Form("Can not get loader for detector %s", detector->GetName()));
         }
        else
         {
           AliDebug(1, Form("Setting loader for detector %s", detector->GetName()));
           detector->SetLoader(loader);
         }
      }
   }
}

//_______________________________________________________________________
void AliRun::AddModule(AliModule* mod)
{
  //
  // Add a module to the module list
  //
  if (mod == 0x0) return;
  if (strlen(mod->GetName()) == 0) return;
  if (GetModuleID(mod->GetName()) >= 0) return;
  
  AliDebug(1, mod->GetName());
  if (fRunLoader == 0x0) AliConfig::Instance()->Add(mod);
  else AliConfig::Instance()->Add(mod,fRunLoader->GetEventFolder()->GetName());

  Modules()->Add(mod);
  
  fNdets++;
}

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